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,6 +216,13 @@ if [[ "$GATE_RESULT" != "0" ]]; then
exit "$GATE_RESULT" exit "$GATE_RESULT"
fi fi
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 \ run_stage \
"Nextcloud-Dateiliste lesen" \ "Nextcloud-Dateiliste lesen" \
"Dateiliste aus Nextcloud konnte nicht erstellt werden" \ "Dateiliste aus Nextcloud konnte nicht erstellt werden" \
@@ -206,6 +230,7 @@ run_stage \
--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,6 +286,7 @@ if [[ "${PIWIGO_SYNC_ENABLED:-0}" == "1" ]]; then
fi fi
fi fi
if [[ "$SOURCE_MODE" != "user-filesystem" ]]; then
ERROR_STAGE="Aktivitätsstand speichern" ERROR_STAGE="Aktivitätsstand speichern"
ERROR_MESSAGE="Aktivitätsstand konnte nicht gespeichert werden" ERROR_MESSAGE="Aktivitätsstand konnte nicht gespeichert werden"
if COMMIT_OUTPUT="$(python3 "$SCRIPT_DIR/lib/activity_gate.py" commit \ if COMMIT_OUTPUT="$(python3 "$SCRIPT_DIR/lib/activity_gate.py" commit \
@@ -283,12 +309,15 @@ if [[ "$COMMIT_EXIT" -ne 0 ]]; then
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
if [[ "$AUTH_MODE" == "fallback" ]]; then 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