From dea1a0ffb21428f2fa7de21e800213f60cf96e8e Mon Sep 17 00:00:00 2001 From: Terranom674 Date: Wed, 19 Aug 2026 18:55:30 +0200 Subject: [PATCH 1/3] 0.9.6.26: Bildaufbereitung aus Connector-Hauptlauf auslagern --- runtime/build-webdav-media.sh | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 runtime/build-webdav-media.sh diff --git a/runtime/build-webdav-media.sh b/runtime/build-webdav-media.sh new file mode 100644 index 0000000..b2eecf2 --- /dev/null +++ b/runtime/build-webdav-media.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +CONFIG_FILE="${PIWIGO_CONFIG:-}" +[[ -n "$CONFIG_FILE" && -r "$CONFIG_FILE" ]] || { echo "WebDAV-Konfiguration fehlt: ${CONFIG_FILE:-}" >&2; exit 1; } + +# shellcheck source=/dev/null +source "$CONFIG_FILE" + +: "${PIWIGO_ROOT:?PIWIGO_ROOT fehlt}" +: "${CONNECTION_ID:?CONNECTION_ID fehlt}" +: "${WEBDAV_BASE_URL:?WEBDAV_BASE_URL fehlt}" +: "${WEBDAV_USER:?WEBDAV_USER fehlt}" +: "${WEBDAV_PASSWORD_FILE:?WEBDAV_PASSWORD_FILE fehlt}" +: "${WEBDAV_MAPPING_FILE:?WEBDAV_MAPPING_FILE fehlt}" +: "${STATE_DIR:?STATE_DIR fehlt}" + +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +LOCK_FILE="$STATE_DIR/webdav-media.lock" +mkdir -p -- "$STATE_DIR" +exec 9>"$LOCK_FILE" +flock -n 9 || exit 0 + +PREVIEW_CACHE="$PIWIGO_ROOT/_data/bratonien-tools/nc-webdav-preview/connection-$CONNECTION_ID" + +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" + +php "$SCRIPT_DIR/lib/build-webdav-derivatives.php" \ + --piwigo-root="$PIWIGO_ROOT" \ + --connection-id="$CONNECTION_ID" From 030634c39d373e030cd0402c4eabab31ddaace1d Mon Sep 17 00:00:00 2001 From: Terranom674 Date: Wed, 19 Aug 2026 18:55:50 +0200 Subject: [PATCH 2/3] 0.9.6.26: Connector-Lauf nicht mehr durch Bildaufbereitung blockieren --- runtime/sync-webdav.sh | 63 ++++++++++-------------------------------- 1 file changed, 15 insertions(+), 48 deletions(-) diff --git a/runtime/sync-webdav.sh b/runtime/sync-webdav.sh index ab6a4ea..628f72b 100644 --- a/runtime/sync-webdav.sh +++ b/runtime/sync-webdav.sh @@ -59,10 +59,6 @@ for target in (status_file, public_file): PY } -compact_output() { - tail -n 12 | tr '\n' ' ' | sed 's/[[:space:]]\+/ /g; s/^[[:space:]]//; s/[[:space:]]$//' -} - failure() { local code="$1" command="$2" line="$3" trap - ERR @@ -94,28 +90,6 @@ python3 "$SCRIPT_DIR/lib/shadow_tree.py" \ --state "$SHADOW_MAP_FILE" 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="" @@ -133,7 +107,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" | compact_output)" + DETAIL+="; Ausgabe: $(printf '%s\n' "$PIWIGO_OUTPUT" | tail -n 12 | tr '\n' ' ' | sed 's/[[:space:]]\+/ /g; s/^[[:space:]]//; s/[[:space:]]$//')" fi if grep -qi 'Invalid username/password' <<<"$PIWIGO_OUTPUT"; then @@ -160,28 +134,21 @@ 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" + MEDIA_UNIT="bratonien-nc-media-${CONNECTION_ID}-$(date +%s)" + if ! systemd-run \ + --quiet \ + --collect \ + --unit="$MEDIA_UNIT" \ + --property=RuntimeMaxSec=30min \ + --setenv="PIWIGO_CONFIG=$CONFIG_FILE" \ + /usr/bin/env bash "$SCRIPT_DIR/build-webdav-media.sh"; then + write_status error "Bildaufbereitung konnte nicht im Hintergrund gestartet werden" + exit 1 fi if grep -q 'Piwigo-Synchronisierung per API erfolgreich' <<<"$PIWIGO_OUTPUT"; then write_status ok \ - "WebDAV eingelesen, Piwigo synchronisiert und Derivate erzeugt" \ + "WebDAV eingelesen und Piwigo synchronisiert; Bildaufbereitung läuft im Hintergrund" \ "" \ "api" \ "ok" \ @@ -190,7 +157,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, Piwigo über Fallback synchronisiert und Derivate erzeugt" \ + "WebDAV eingelesen und Piwigo über Fallback synchronisiert; Bildaufbereitung läuft im Hintergrund" \ "" \ "fallback" \ "not_used" \ @@ -198,8 +165,8 @@ if [[ "${PIWIGO_SYNC_ENABLED:-0}" == "1" ]]; then "ok" \ "Benutzername/Passwort-Fallback erfolgreich" else - write_status ok "WebDAV eingelesen, Piwigo synchronisiert und Derivate erzeugt" + write_status ok "WebDAV eingelesen und Piwigo synchronisiert; Bildaufbereitung läuft im Hintergrund" fi else - write_status ok "WebDAV eingelesen und Vorschaubilder erzeugt; Registrierung erfolgt über den bestehenden produktiven Piwigo-Sync" + write_status ok "WebDAV eingelesen; Piwigo-Synchronisierung ist für diese Verbindung deaktiviert" fi From 074aa8d99a840e7921017999fbaec5ddb1a21f47 Mon Sep 17 00:00:00 2001 From: Terranom674 Date: Wed, 19 Aug 2026 18:56:13 +0200 Subject: [PATCH 3/3] 0.9.6.26: Version anheben --- main.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.inc.php b/main.inc.php index 9a118ab..b0063c1 100644 --- a/main.inc.php +++ b/main.inc.php @@ -1,7 +1,7 @@