0.9.5.1: Runtime nach Verbindungsquelle trennen

This commit is contained in:
Terranom674
2026-08-18 17:05:04 +02:00
parent 73e4b08dbd
commit 3512f60136

View File

@@ -11,6 +11,17 @@ source "$CONFIG_FILE"
NC_ACTIVITY_VIEW="${NC_ACTIVITY_VIEW:-piwigo_showcase_activity}" NC_ACTIVITY_VIEW="${NC_ACTIVITY_VIEW:-piwigo_showcase_activity}"
NC_DB_VIEW="${NC_DB_VIEW:-piwigo_showcase_sources}" NC_DB_VIEW="${NC_DB_VIEW:-piwigo_showcase_sources}"
SOURCE_MODE="${SOURCE_MODE:-showcase-view}"
ACCESS_USER="${ACCESS_USER:-}"
case "$SOURCE_MODE" in
showcase-view|user-filesystem) ;;
*) echo "Unbekannter SOURCE_MODE: $SOURCE_MODE" >&2; exit 1 ;;
esac
if [[ "$SOURCE_MODE" == "user-filesystem" && -z "$ACCESS_USER" ]]; then
echo "ACCESS_USER fehlt fuer die benutzerbezogene Verbindung." >&2
exit 1
fi
if [[ -n "$PIWIGO_SYNC_OVERRIDE_VALUE" ]]; then if [[ -n "$PIWIGO_SYNC_OVERRIDE_VALUE" ]]; then
case "$PIWIGO_SYNC_OVERRIDE_VALUE" in case "$PIWIGO_SYNC_OVERRIDE_VALUE" in
@@ -165,7 +176,13 @@ if [[ "$NEEDS_LOCAL_REPAIR" == "0" && "${PIWIGO_SYNC_ENABLED:-0}" == "1" ]]; the
[[ "$PIWIGO_ALBUMS_INTACT" == "0" ]] || NEEDS_LOCAL_REPAIR=1 [[ "$PIWIGO_ALBUMS_INTACT" == "0" ]] || NEEDS_LOCAL_REPAIR=1
fi fi
if [[ "$NEEDS_LOCAL_REPAIR" == "1" ]]; then if [[ "$SOURCE_MODE" == "user-filesystem" ]]; then
# Benutzerbezogene Verbindungen werden pro Timerlauf aus ihrem eigenen
# lokalen Home-Dateibaum aufgebaut. Die alte globale Showcase-Aktivitaets-
# View darf hier weder Daten anderer Benutzer steuern noch Aenderungen
# dieses Benutzers verschlucken.
GATE_RESULT=0
elif [[ "$NEEDS_LOCAL_REPAIR" == "1" ]]; then
GATE_RESULT=0 GATE_RESULT=0
else else
ERROR_STAGE="Nextcloud-Aktivität prüfen" ERROR_STAGE="Nextcloud-Aktivität prüfen"
@@ -199,13 +216,21 @@ if [[ "$GATE_RESULT" != "0" ]]; then
exit "$GATE_RESULT" exit "$GATE_RESULT"
fi fi
run_stage \ if [[ "$SOURCE_MODE" == "user-filesystem" ]]; then
run_stage \
"Benutzer-Dateiliste lesen" \
"Dateiliste des Nextcloud-Benutzers konnte nicht erstellt werden" \
python3 "$SCRIPT_DIR/lib/build_user_manifest.py" \
--storage-config "$STORAGE_CONFIG" --output "$MANIFEST"
else
run_stage \
"Nextcloud-Dateiliste lesen" \ "Nextcloud-Dateiliste lesen" \
"Dateiliste aus Nextcloud konnte nicht erstellt werden" \ "Dateiliste aus Nextcloud konnte nicht erstellt werden" \
python3 "$SCRIPT_DIR/lib/build_manifest.py" \ python3 "$SCRIPT_DIR/lib/build_manifest.py" \
--host "$NC_DB_HOST" --port "$NC_DB_PORT" --database "$NC_DB_NAME" --user "$NC_DB_USER" \ --host "$NC_DB_HOST" --port "$NC_DB_PORT" --database "$NC_DB_NAME" --user "$NC_DB_USER" \
--password-file "$NC_DB_PASSWORD_FILE" --view "$NC_DB_VIEW" \ --password-file "$NC_DB_PASSWORD_FILE" --view "$NC_DB_VIEW" \
--storage-config "$STORAGE_CONFIG" --output "$MANIFEST" --storage-config "$STORAGE_CONFIG" --output "$MANIFEST"
fi
run_stage \ run_stage \
"Lokalen Galeriebaum aktualisieren" \ "Lokalen Galeriebaum aktualisieren" \
@@ -261,20 +286,21 @@ if [[ "${PIWIGO_SYNC_ENABLED:-0}" == "1" ]]; then
fi fi
fi fi
ERROR_STAGE="Aktivitätsstand speichern" if [[ "$SOURCE_MODE" != "user-filesystem" ]]; then
ERROR_MESSAGE="Aktivitätsstand konnte nicht gespeichert werden" ERROR_STAGE="Aktivitätsstand speichern"
if COMMIT_OUTPUT="$(python3 "$SCRIPT_DIR/lib/activity_gate.py" commit \ ERROR_MESSAGE="Aktivitätsstand konnte nicht gespeichert werden"
if COMMIT_OUTPUT="$(python3 "$SCRIPT_DIR/lib/activity_gate.py" commit \
--state "$ACTIVITY_STATE" --host "$NC_DB_HOST" --port "$NC_DB_PORT" \ --state "$ACTIVITY_STATE" --host "$NC_DB_HOST" --port "$NC_DB_PORT" \
--database "$NC_DB_NAME" --user "$NC_DB_USER" --password-file "$NC_DB_PASSWORD_FILE" \ --database "$NC_DB_NAME" --user "$NC_DB_USER" --password-file "$NC_DB_PASSWORD_FILE" \
--view "$NC_ACTIVITY_VIEW" --source-view "$NC_DB_VIEW" 2>&1)"; then --view "$NC_ACTIVITY_VIEW" --source-view "$NC_DB_VIEW" 2>&1)"; then
COMMIT_EXIT=0 COMMIT_EXIT=0
else else
COMMIT_EXIT=$? COMMIT_EXIT=$?
fi fi
if [[ -n "$COMMIT_OUTPUT" ]]; then if [[ -n "$COMMIT_OUTPUT" ]]; then
printf '%s\n' "$COMMIT_OUTPUT" printf '%s\n' "$COMMIT_OUTPUT"
fi fi
if [[ "$COMMIT_EXIT" -ne 0 ]]; then if [[ "$COMMIT_EXIT" -ne 0 ]]; then
ERROR_DETAIL="Schritt: Aktivitätsstand speichern. Exit-Code: $COMMIT_EXIT." ERROR_DETAIL="Schritt: Aktivitätsstand speichern. Exit-Code: $COMMIT_EXIT."
if [[ -n "$COMMIT_OUTPUT" ]]; then if [[ -n "$COMMIT_OUTPUT" ]]; then
ERROR_DETAIL+=" Ausgabe: $(printf '%s\n' "$COMMIT_OUTPUT" | compact_output)" ERROR_DETAIL+=" Ausgabe: $(printf '%s\n' "$COMMIT_OUTPUT" | compact_output)"
@@ -282,6 +308,7 @@ if [[ "$COMMIT_EXIT" -ne 0 ]]; then
trap - ERR trap - ERR
write_status error "Aktivitätsstand konnte nicht gespeichert werden" write_status error "Aktivitätsstand konnte nicht gespeichert werden"
exit "$COMMIT_EXIT" exit "$COMMIT_EXIT"
fi
fi fi
trap - ERR trap - ERR
@@ -289,6 +316,8 @@ if [[ "$AUTH_MODE" == "fallback" ]]; then
write_status warning "Synchronisierung erfolgreich über Fallback; API war nicht nutzbar" write_status warning "Synchronisierung erfolgreich über Fallback; API war nicht nutzbar"
elif [[ "$AUTH_MODE" == "api" ]]; then elif [[ "$AUTH_MODE" == "api" ]]; then
write_status ok "Synchronisierung erfolgreich über API" write_status ok "Synchronisierung erfolgreich über API"
elif [[ "$SOURCE_MODE" == "user-filesystem" ]]; then
write_status ok "Benutzerbezogene Synchronisierung erfolgreich"
else else
write_status ok "Synchronisierung erfolgreich" write_status ok "Synchronisierung erfolgreich"
fi fi