mirror of
https://github.com/Terranom674/Piwigo_Bratonien_Tools.git
synced 2026-09-19 11:44:31 +00:00
Record WebDAV-only connector status
This commit is contained in:
@@ -1,139 +1,62 @@
|
|||||||
# Aktueller Entwicklungsstand
|
# Aktueller Entwicklungsstand
|
||||||
|
|
||||||
Stand: 19.08.2026
|
## Version
|
||||||
|
|
||||||
## Plugin
|
**Bratonien Tools 0.9.6.2**
|
||||||
|
|
||||||
- Aktuelle Plugin-Version: **0.9.6.1**
|
## NC Connector
|
||||||
- Aktueller Entwicklungsblock: **NC Connector – WebDAV-End-to-End-Pfad mit Piwigo-Registrierung, Preview-/Derivatstrecke und sauberem Verbindungs-Lebenszyklus**
|
|
||||||
- GitHub ist das führende Repository.
|
|
||||||
- Der bestehende lokale Connector bleibt vollständig erhalten und wird nicht automatisch migriert.
|
|
||||||
|
|
||||||
## Nicht verhandelbare Architekturregeln
|
Der NC Connector besitzt nur noch einen produktiven Verbindungsweg: **Nextcloud per WebDAV**.
|
||||||
|
|
||||||
- Nextcloud bleibt die Quelle der Originalbilder.
|
### Verbindungsmodell
|
||||||
- Originalbilder werden **nicht dauerhaft nach Piwigo kopiert**.
|
|
||||||
- Der bestehende lokale Produktionsweg bleibt funktionsfähig.
|
|
||||||
- WebDAV benötigt nur Nextcloud-Adresse, Benutzer/App-Passwort und normale WebDAV-Berechtigungen des Benutzers.
|
|
||||||
- Kein Nextcloud-PostgreSQL-Zugriff, kein `occ`, keine Storage-IDs, keine Host-Mounts, kein FUSE, davfs oder rclone als Voraussetzung.
|
|
||||||
- WebDAV-Verbindungen werden voneinander isoliert verarbeitet.
|
|
||||||
- Fehler der WebDAV-Bildverarbeitung dürfen keinen normalen Piwigo-Seitenaufruf zum Absturz bringen.
|
|
||||||
|
|
||||||
## Bestehende Quellenmodi
|
- `adapter=remote`
|
||||||
|
- `source_mode=webdav-placeholder`
|
||||||
|
- Nextcloud-Adresse, Benutzer und Passwort/App-Passwort werden pro Verbindung verschlüsselt gespeichert.
|
||||||
|
- Piwigo-API und Benutzername/Passwort-Fallback werden ebenfalls pro Verbindung gespeichert.
|
||||||
|
- Der Assistent zeigt ausschließlich die Verzeichnisse, auf die der angemeldete Nextcloud-Benutzer per WebDAV zugreifen kann.
|
||||||
|
- Mehrere Verzeichnisse können pro Verbindung ausgewählt werden.
|
||||||
|
|
||||||
Weiterhin vorhanden:
|
### Laufzeit
|
||||||
|
|
||||||
- `legacy-view`
|
Der gemeinsame Runner verarbeitet ausschließlich WebDAV-Verbindungen:
|
||||||
- `user-shares`
|
|
||||||
- `selected-fileids`
|
|
||||||
|
|
||||||
Neuer WebDAV-Modus:
|
1. `runtime/reconcile-webdav.php`
|
||||||
|
2. `runtime/cleanup-webdav-piwigo.php`
|
||||||
|
3. `runtime/sync-webdav.sh` für jede vorhandene WebDAV-Konfiguration
|
||||||
|
|
||||||
- `webdav-placeholder`
|
Die verbindungsspezifischen Runtime-Konfigurationen liegen unter `/etc/bratonien-tools/nc-connector/`. Zustandsdaten liegen unter `/var/lib/bratonien-tools/nc-connector/connection-ID`.
|
||||||
|
|
||||||
Es gibt keine automatische Migration bestehender Verbindungen auf WebDAV.
|
### Shadow Tree und Piwigo
|
||||||
|
|
||||||
## WebDAV-Ablauf in 0.9.6.1
|
`runtime/lib/build_webdav_placeholder_source.py` bildet die ausgewählten Nextcloud-Inhalte als lokale Platzhalterquelle ab. `runtime/lib/shadow_tree.py` erzeugt daraus die Dateisystemstruktur, die Piwigo als physische Site sieht.
|
||||||
|
|
||||||
1. Der Assistent prüft Nextcloud über WebDAV und lässt sichtbare Verzeichnisse auswählen.
|
Jede WebDAV-Verbindung besitzt ihre eigene Piwigo-Site. `runtime/lib/piwigo-sync.php` übergibt genau diese Site an `bratonien.nc.syncProductive` und `bratonien.nc.syncOrphans`. Es gibt keinen zusätzlichen Sync auf Site 1.
|
||||||
2. `runtime/reconcile-webdav.php` erzeugt die verbindungseigene Runtime-Konfiguration.
|
|
||||||
3. `runtime/lib/build_webdav_placeholder_source.py` liest die ausgewählten Verzeichnisse rekursiv per PROPFIND.
|
|
||||||
4. Ordner, Dateinamen, Nextcloud-Datei-ID, MIME-Typ, Größe, ETag und WebDAV-Pfad werden erfasst.
|
|
||||||
5. Eine lokale Platzhalterquelle wird erzeugt, ohne Originalbilder dauerhaft zu speichern.
|
|
||||||
6. `runtime/lib/shadow_tree.py` baut daraus den verbindungseigenen Shadow Tree.
|
|
||||||
7. Der WebDAV-Galeriebaum liegt unter `_data/bratonien-tools/nc-webdav-gallery/connection-ID` und wird als eigene physische Piwigo-Site registriert.
|
|
||||||
8. Dadurch erscheint die ausgewählte Nextcloud-Wurzel als normales Piwigo-Album; technische `bratonien-webdav-ID`-Wrapper werden nicht angezeigt.
|
|
||||||
9. Vorbereitete Arbeitsbilder liegen unter `_data/bratonien-tools/nc-webdav-preview/connection-ID`.
|
|
||||||
10. Arbeitsbilder werden als JPEG beziehungsweise PNG erzeugt und maximal auf 4096 px Kantenlänge begrenzt, damit Piwigos Bildbibliothek sie zuverlässig verarbeiten kann.
|
|
||||||
11. Der CLI-Derivat-Builder korrigiert die Piwigo-Bildabmessungen anhand des Arbeitsbilds und erzeugt die aktuell konfigurierten Standard- und Custom-Derivate.
|
|
||||||
12. Der normale Frontend-Aufruf erzeugt **keine** Derivate. Fehlt ein Derivat, wird das vorbereitete Bild als sicherer Fallback ausgeliefert.
|
|
||||||
13. Originalbilder werden bei echtem Originalabruf serverseitig über `webdav-image.php` aus Nextcloud gestreamt; Nextcloud-Zugangsdaten erscheinen nicht im Browser.
|
|
||||||
|
|
||||||
## Piwigo-Synchronisierung
|
Der Shadow Tree dient ausschließlich dazu, Piwigo die Alben und Bilder als Dateisystemstruktur bereitzustellen. Albumlogik, Dateisynchronisierung und die daraus folgenden Piwigo-Datensätze bleiben Aufgabe von Piwigo.
|
||||||
|
|
||||||
WebDAV verwendet denselben Piwigo-Synchronisationspfad wie der bestehende Connector, aber mit einer verbindungseigenen physischen Site.
|
### Bildauslieferung
|
||||||
|
|
||||||
Nach der Dateisynchronisierung laufen die vorhandenen Piwigo-Nacharbeiten, darunter Metadaten-, Integritäts-, Kategorie-, Pfad-, Rang- und Cache-Aktualisierungen sowie der Orphan-Abgleich.
|
Die Dateien im Shadow Tree sind Platzhalter. `include/webdav_image_runtime.inc.php` erkennt die WebDAV-Zuordnung und ersetzt die Bildquelle bei der Auslieferung durch den zugehörigen Nextcloud-Inhalt. `webdav-image.php` streamt die Bilddaten serverseitig, ohne Nextcloud-Zugangsdaten an den Browser weiterzugeben.
|
||||||
|
|
||||||
Die direkte produktive Synchronisierung ist derzeit ausdrücklich auf **Piwigo 16.4.0** abgestimmt.
|
### Löschen
|
||||||
|
|
||||||
## WebDAV-Bildausgabe und Derivate
|
Eine WebDAV-Verbindung kann unabhängig von ihrer Reihenfolge gelöscht werden. Beim Löschen werden die zugehörige Piwigo-Site und die zugehörigen Piwigo-Datensätze entfernt. Die Originaldateien in Nextcloud bleiben unangetastet. Verwaiste WebDAV-Runtime- und Piwigo-Daten werden vom gemeinsamen Lauf bereinigt.
|
||||||
|
|
||||||
Wichtige Dateien:
|
### Diagnose
|
||||||
|
|
||||||
- `include/webdav_image_runtime.inc.php` – Zuordnung Piwigo-Bild ↔ WebDAV-Quelle, Preview-/Derivat-Helfer und URL-Filter.
|
Der Status wird pro Verbindung geführt. Fehler enthalten Zeitpunkt, betroffene Verbindung, Prozesszustand und technische Details. Die Administration zeigt keine lokalen Datenbank-, Storage- oder Mount-Einstellungen mehr an.
|
||||||
- `webdav-image.php` – berechtigungsgeprüfter serverseitiger Original-/Preview-Abruf.
|
|
||||||
- `runtime/lib/precache-webdav-previews.php` – vorbereitete JPEG-/PNG-Arbeitsbilder ohne dauerhafte Originalkopie.
|
|
||||||
- `runtime/lib/build-webdav-derivatives.php` – CLI-Aufbau der konfigurierten Piwigo-Derivate.
|
|
||||||
|
|
||||||
Der Frontend-Hook führt keine Bildgenerierung mehr aus. Damit bleibt ein Fehler in GD/Imagick/External ImageMagick auf den Hintergrundlauf begrenzt.
|
## Entfernte Connector-Komponenten
|
||||||
|
|
||||||
## Löschen einer WebDAV-Verbindung seit 0.9.6.1
|
Nicht mehr Bestandteil des Plugins sind lokale Nextcloud-Datenbankanbindungen, PostgreSQL-Reader, Source-/Activity-Views, Storage-Mappings, Host-Mounts, lokale Reconcile-/Sync-Skripte, Cutover-/Migrationswerkzeuge und der frühere Simulations-Webservice `bratonien.nc.sync`.
|
||||||
|
|
||||||
Eine gelöschte WebDAV-Verbindung darf keine weiterhin sichtbaren oder über alte Piwigo-Datensätze erreichbaren Bilder hinterlassen.
|
## Prüfpflicht vor Merge
|
||||||
|
|
||||||
Beim Löschen über die Oberfläche:
|
Jede Änderung wird vor dem Merge mindestens mit folgenden GitHub-Actions-Prüfungen validiert:
|
||||||
|
|
||||||
- werden die zur Verbindung gehörende Piwigo-Site, ihre Alben und Bilddatensätze entfernt;
|
- PHP-Syntax für 8.2, 8.3, 8.4 und 8.5
|
||||||
- werden zugehörige Piwigo-Derivate entfernt;
|
- Prüfung auf doppelte globale `bratonien_tools_*`-Funktionen
|
||||||
- bleiben die Nextcloud-Originaldateien unangetastet;
|
- JavaScript-Syntax
|
||||||
- werden Laufzeit- und Preview-Daten anschließend bereinigt.
|
- Python-Syntax/Compile
|
||||||
|
- Shell-Syntax mit `bash -n`
|
||||||
Zusätzlich läuft `runtime/cleanup-webdav-piwigo.php` im gemeinsamen Runner. Er erkennt verwaiste WebDAV-Piwigo-Sites, für die keine Connector-Verbindung mehr existiert, und entfernt deren Piwigo-Inhalte sowie Gallery-, Source-, Preview-, State-, Status- und Runtime-Reste. Damit werden auch bereits vor 0.9.6.1 gelöschte Verbindungen nachträglich bereinigt.
|
|
||||||
|
|
||||||
## Gemeinsamer Runner
|
|
||||||
|
|
||||||
`runtime/run-all.sh` verarbeitet die Schritte in kontrollierter Reihenfolge:
|
|
||||||
|
|
||||||
1. lokale Verbindungen reconciliieren;
|
|
||||||
2. WebDAV-Verbindungen reconciliieren;
|
|
||||||
3. verwaiste WebDAV-Piwigo-Inhalte bereinigen;
|
|
||||||
4. verwaiste allgemeine Runtime-Dateien bereinigen;
|
|
||||||
5. aktive WebDAV-Verbindungen synchronisieren;
|
|
||||||
6. aktive lokale Verbindungen synchronisieren.
|
|
||||||
|
|
||||||
Der vorhandene systemd-Timer ruft direkt die Runtime aus dem installierten Plugin auf.
|
|
||||||
|
|
||||||
## Status- und UI-Regeln
|
|
||||||
|
|
||||||
- Hintergrund-Polling lädt die Admin-Seite nicht neu.
|
|
||||||
- Ein geöffneter Verbindungsassistent bleibt bei Statusaktualisierungen geöffnet.
|
|
||||||
- Fehlgeschlagene Fallback-/Credential-Prüfungen schließen den Assistenten nicht.
|
|
||||||
- Laufzeitfehler unterscheiden WebDAV-Lesen, Piwigo-Synchronisierung, Preview- und Derivatfehler.
|
|
||||||
|
|
||||||
## Sicherheit
|
|
||||||
|
|
||||||
- Connector-Zugangsdaten werden verschlüsselt gespeichert.
|
|
||||||
- WebDAV-Credentials werden nur serverseitig verwendet.
|
|
||||||
- Bildzugriffe über `webdav-image.php` werden gegen Piwigos Zugriffsrechte geprüft.
|
|
||||||
- Nextcloud-Originale werden weder beim Sync noch beim Löschen einer Verbindung verändert.
|
|
||||||
- Derivate und Arbeitsbilder sind lokale Cache-/Arbeitsdaten und dürfen entfernt beziehungsweise neu aufgebaut werden.
|
|
||||||
|
|
||||||
## Aktueller Prüfstand
|
|
||||||
|
|
||||||
Bereits umgesetzt:
|
|
||||||
|
|
||||||
- WebDAV-Verbindungsassistent;
|
|
||||||
- Verzeichnisauswahl;
|
|
||||||
- rekursiver WebDAV-Scan;
|
|
||||||
- Shadow Tree;
|
|
||||||
- separate Piwigo-Site je WebDAV-Verbindung;
|
|
||||||
- sichtbare Albumstruktur ohne technische Wrapper;
|
|
||||||
- echte Bildausgabe aus Nextcloud;
|
|
||||||
- lokale vorbereitete Arbeitsbilder;
|
|
||||||
- CLI-Derivatstrecke;
|
|
||||||
- Piwigo-Nacharbeiten und Orphan-Abgleich;
|
|
||||||
- ETag-basierte Wiederverwendung vorbereiteter Bilder;
|
|
||||||
- Löschen einer Verbindung einschließlich Piwigo-Inhalten;
|
|
||||||
- nachträgliche Bereinigung bereits verwaister WebDAV-Piwigo-Sites.
|
|
||||||
|
|
||||||
Weiter zu prüfen beziehungsweise unter realer Last zu härten:
|
|
||||||
|
|
||||||
- vollständiger Derivataufbau für alle in der Installation vorkommenden Standard- und Custom-Größen;
|
|
||||||
- Verhalten bei großen Bildmengen und vielen gleichzeitig noch nicht vorbereiteten Bildern;
|
|
||||||
- Fehlerfälle verschiedener Bildformate und Bild-Backends;
|
|
||||||
- langfristige Änderungserkennung und Performance im produktiven Einsatz.
|
|
||||||
|
|
||||||
## Versionsregel
|
|
||||||
|
|
||||||
Die aktuelle Versionslinie ist **0.9.6.x**. Weitere Sprünge auf eine neue Minor-/Major-Linie erfolgen nur bewusst und ausdrücklich.
|
|
||||||
|
|||||||
Reference in New Issue
Block a user