diff --git a/runtime/sync-webdav.sh b/runtime/sync-webdav.sh index 3533033..1218803 100644 --- a/runtime/sync-webdav.sh +++ b/runtime/sync-webdav.sh @@ -59,6 +59,10 @@ for target in (status_file, public_file): PY } +compact_output() { + tail -n 20 | tr '\n' ' ' | sed 's/[[:space:]]\+/ /g; s/^[[:space:]]//; s/[[:space:]]$//' +} + failure() { local code="$1" command="$2" line="$3" trap - ERR @@ -97,7 +101,7 @@ fi if [[ "$PLACEHOLDER_EXIT" -ne 0 ]]; then DETAIL="Exit-Code: $PLACEHOLDER_EXIT" if [[ -n "$PLACEHOLDER_OUTPUT" ]]; then - DETAIL+="; Ausgabe: $(printf '%s\n' "$PLACEHOLDER_OUTPUT" | tail -n 20 | tr '\n' ' ' | sed 's/[[:space:]]\+/ /g; s/^[[:space:]]//; s/[[:space:]]$//')" + DETAIL+="; Ausgabe: $(printf '%s\n' "$PLACEHOLDER_OUTPUT" | compact_output)" fi trap - ERR write_status error "WebDAV-Shadow-Tree fehlgeschlagen" "$DETAIL" @@ -118,7 +122,7 @@ fi if [[ "$SHADOW_EXIT" -ne 0 ]]; then DETAIL="Exit-Code: $SHADOW_EXIT" if [[ -n "$SHADOW_OUTPUT" ]]; then - DETAIL+="; Ausgabe: $(printf '%s\n' "$SHADOW_OUTPUT" | tail -n 20 | tr '\n' ' ' | sed 's/[[:space:]]\+/ /g; s/^[[:space:]]//; s/[[:space:]]$//')" + DETAIL+="; Ausgabe: $(printf '%s\n' "$SHADOW_OUTPUT" | compact_output)" fi trap - ERR write_status error "WebDAV-Shadow-Tree fehlgeschlagen" "$DETAIL" @@ -126,6 +130,28 @@ if [[ "$SHADOW_EXIT" -ne 0 ]]; then fi trap - ERR +PREVIEW_CACHE="$PIWIGO_ROOT/_data/bratonien-tools/nc-webdav-preview/connection-$CONNECTION_ID" +PREVIEW_OUTPUT="" +PREVIEW_EXIT=0 +if PREVIEW_OUTPUT="$(php "$SCRIPT_DIR/lib/precache-webdav-previews.php" \ + --mapping="$WEBDAV_MAPPING_FILE" \ + --base-url="$WEBDAV_BASE_URL" \ + --user="$WEBDAV_USER" \ + --password-file="$WEBDAV_PASSWORD_FILE" \ + --cache-dir="$PREVIEW_CACHE" 2>&1)"; then + PREVIEW_EXIT=0 +else + PREVIEW_EXIT=$? +fi +[[ -z "$PREVIEW_OUTPUT" ]] || printf '%s\n' "$PREVIEW_OUTPUT" +if [[ "$PREVIEW_EXIT" -ne 0 ]]; then + DETAIL="Exit-Code: $PREVIEW_EXIT" + if [[ -n "$PREVIEW_OUTPUT" ]]; then + DETAIL+="; Ausgabe: $(printf '%s\n' "$PREVIEW_OUTPUT" | compact_output)" + fi + write_status error "WebDAV-Vorschaubilder konnten beim Einlesen nicht erzeugt werden" "$DETAIL" + exit "$PREVIEW_EXIT" +fi if [[ "${PIWIGO_SYNC_ENABLED:-0}" == "1" ]]; then PIWIGO_OUTPUT="" @@ -143,7 +169,7 @@ if [[ "${PIWIGO_SYNC_ENABLED:-0}" == "1" ]]; then if [[ "$PIWIGO_EXIT" -ne 0 ]]; then DETAIL="Exit-Code: $PIWIGO_EXIT" if [[ -n "$PIWIGO_OUTPUT" ]]; then - DETAIL+="; Ausgabe: $(printf '%s\n' "$PIWIGO_OUTPUT" | tail -n 12 | tr '\n' ' ' | sed 's/[[:space:]]\+/ /g; s/^[[:space:]]//; s/[[:space:]]$//')" + DETAIL+="; Ausgabe: $(printf '%s\n' "$PIWIGO_OUTPUT" | compact_output)" fi if grep -qi 'Invalid username/password' <<<"$PIWIGO_OUTPUT"; then @@ -170,9 +196,28 @@ if [[ "${PIWIGO_SYNC_ENABLED:-0}" == "1" ]]; then exit "$PIWIGO_EXIT" fi + DERIVATIVE_OUTPUT="" + DERIVATIVE_EXIT=0 + if DERIVATIVE_OUTPUT="$(php "$SCRIPT_DIR/lib/build-webdav-derivatives.php" \ + --piwigo-root="$PIWIGO_ROOT" \ + --connection-id="$CONNECTION_ID" 2>&1)"; then + DERIVATIVE_EXIT=0 + else + DERIVATIVE_EXIT=$? + fi + [[ -z "$DERIVATIVE_OUTPUT" ]] || printf '%s\n' "$DERIVATIVE_OUTPUT" + if [[ "$DERIVATIVE_EXIT" -ne 0 ]]; then + DETAIL="Exit-Code: $DERIVATIVE_EXIT" + if [[ -n "$DERIVATIVE_OUTPUT" ]]; then + DETAIL+="; Ausgabe: $(printf '%s\n' "$DERIVATIVE_OUTPUT" | compact_output)" + fi + write_status error "Piwigo-Derivate für WebDAV-Bilder konnten nicht erzeugt werden" "$DETAIL" + exit "$DERIVATIVE_EXIT" + fi + if grep -q 'Piwigo-Synchronisierung per API erfolgreich' <<<"$PIWIGO_OUTPUT"; then write_status ok \ - "WebDAV eingelesen und Piwigo synchronisiert" \ + "WebDAV eingelesen, Piwigo synchronisiert und Derivate erzeugt" \ "" \ "api" \ "ok" \ @@ -181,7 +226,7 @@ if [[ "${PIWIGO_SYNC_ENABLED:-0}" == "1" ]]; then "Fallback wurde nicht benötigt" elif grep -q 'Piwigo-Datenbanksynchronisierung per Benutzername/Passwort-Fallback erfolgreich' <<<"$PIWIGO_OUTPUT"; then write_status ok \ - "WebDAV eingelesen und Piwigo über Fallback synchronisiert" \ + "WebDAV eingelesen, Piwigo über Fallback synchronisiert und Derivate erzeugt" \ "" \ "fallback" \ "not_used" \ @@ -189,8 +234,8 @@ if [[ "${PIWIGO_SYNC_ENABLED:-0}" == "1" ]]; then "ok" \ "Benutzername/Passwort-Fallback erfolgreich" else - write_status ok "WebDAV eingelesen und Piwigo synchronisiert" + write_status ok "WebDAV eingelesen, Piwigo synchronisiert und Derivate erzeugt" fi else - write_status ok "WebDAV eingelesen; Piwigo-Synchronisierung ist für diese Verbindung deaktiviert" + write_status ok "WebDAV eingelesen und Vorschaubilder erzeugt; Piwigo-Synchronisierung ist für diese Verbindung deaktiviert" fi