#!/bin/bash # # Purpose : Nextcloud app passwords for configure.d items. Source this file. # Basic auth header for curl, read from stdin (-H @-) so the password isn't # in the process list auth_header() { printf 'Authorization: Basic %s\n' "$(printf '%s:%s' "$1" "$2" | base64 -w0)" } # Create a Nextcloud app password, so what MiniServer sets up doesn't keep # your Core password. It shows in Nextcloud under Settings > Security with the # name given, where it can be revoked. Uses CORE_USER, PASSWORD and NEXTCLOUD; # sets APP_PASSWORD. Returns 2 if Nextcloud says the password is wrong. nextcloud_app_password() { local name="$1" response code response="$(auth_header "$CORE_USER" "$PASSWORD" | curl -s -w '\n%{http_code}' -H @- \ -H 'OCS-APIRequest: true' -A "$name" \ "$NEXTCLOUD/ocs/v2.php/core/getapppassword?format=json")" code="${response##*$'\n'}" case "$code" in 200) APP_PASSWORD="$(jq -r '.ocs.data.apppassword // empty' <<< "${response%$'\n'*}")" [ -n "$APP_PASSWORD" ] ;; 401) return 2 ;; *) return 1 ;; esac }