feat: stille Datenverlust-Pfade geschlossen, gemeinsame Shell-Lib (v0.7.0)
Vor dem Rollout durchgesehen und die verbliebenen Stellen geschlossen, an denen etwas schiefgehen konnte, ohne dass es irgendwo sichtbar wurde. Datenverlust: - veraPDF: das in [verapdf].binary konfigurierte Programm wird im Preflight geprueft. Bisher galt bei falschem Pfad JEDE Datei als "nicht konform" — Ergebnis nach error/, Original geloescht (Default delete). run_verapdf() trennt jetzt ausserdem ein echtes FAIL-Urteil von einer Stoerung (VeraPdfUnavailable: nicht startbar, abgestuerzt, kein PASS/FAIL in der Ausgabe). Bei Stoerung wandern Original UND Ergebnis nach error/, das Original wird nicht entsorgt. - Gleichnamige Dateien wurden in outgoing/, error/ und beim Ordner-Upload mit abweichendem target kommentarlos ueberschrieben. Jetzt Zeitstempel daneben, mit Warnung; ProcessResult.output traegt den echten Pfad. Robustheit: - Kaputtes oder nicht lesbares TOML beim Start: Exit 2 statt Traceback. - RestartPreventExitStatus=2 in der Unit — Exit 2 (Config/Preflight) laeuft nicht mehr endlos neu, die Instanz bleibt sichtbar failed stehen. - Toter watchdog-Observer wird erkannt: Exit 3, systemd setzt den Watch neu auf. Vorher blieb die Unit "active" und verarbeitete nichts mehr. - Relative Pfade in [paths]/archive_dir/target sind ein Config-Fehler statt still unter /opt zu landen. - Fehler beim Archivieren entwertet den Durchlauf nicht mehr: Upload und Mail laufen, Sichtbarkeit ueber log.error + "OK mit Warnung"-Mail. - Nicht-PDFs in incoming/ werden beim Start-Scan gesammelt gemeldet. - Logging explizit nach stdout (die Doku versprach das schon). Struktur: - Neue lib/common.sh, von install.sh und update.sh gesourct. Die doppelte venv_is_healthy() gibt es nur noch einmal, in der gruendlichen Fassung — die schlanke in install.sh haette eine nach einem Distro-Sprung kaputte venv als gesund durchgewunken (nachgewiesen). - install.sh warnt in Containern, wenn systemd-journald nicht laeuft. Doku: Dateisystem-Festlegung (ext4/xfs/zfs, kein CIFS/NFS wegen inotify), Debian 13 in LXC auf Proxmox scheitert an journald (243/CREDENTIALS, AppArmor blockiert sd-mkdcreds) inkl. Abhilfe, echte Speicher-Messwerte, Exit-Code-Tabelle. 254 Tests gruen (vorher 152). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+17
-2
@@ -2,6 +2,11 @@
|
||||
# Vorlage — install.sh erzeugt daraus pro Instanz /etc/pdf-ocr-hotfolder/<instanz>.toml
|
||||
|
||||
[paths]
|
||||
# ACHTUNG: Alle Pfade MUESSEN absolut sein. Ein relativer Pfad wuerde gegen
|
||||
# das Arbeitsverzeichnis des Dienstes aufgeloest (WorkingDirectory der
|
||||
# systemd-Unit), nicht gegen das Verzeichnis dieser Datei — der Scanner
|
||||
# schriebe dann woanders hin als der Dienst schaut. Der Dienst startet
|
||||
# deshalb mit einem relativen Pfad gar nicht erst.
|
||||
# Eingangsverzeichnis: hier landen gescannte PDFs
|
||||
incoming = "/var/lib/pdf-ocr-hotfolder/incoming"
|
||||
# Ausgangsverzeichnis: fertige durchsuchbare PDFs
|
||||
@@ -60,11 +65,19 @@ name_tag = "OCR_"
|
||||
# "delete" : Original wird gelöscht (alter Standard)
|
||||
# "archive" : Original wird in archive_dir verschoben
|
||||
original_on_success = "delete"
|
||||
# Absoluter Pfad; nur relevant wenn original_on_success = "archive"
|
||||
# Absoluter Pfad (Pflicht, relativ wird abgelehnt); nur relevant wenn
|
||||
# original_on_success = "archive"
|
||||
archive_dir = ""
|
||||
|
||||
[verapdf]
|
||||
# PDF/A-Validierung (optional)
|
||||
# ACHTUNG: Mit enabled = true muss "binary" auf ein vorhandenes, ausfuehrbares
|
||||
# Programm zeigen. Der Preflight prueft das und laesst den Dienst sonst gar
|
||||
# nicht erst starten (--check-config meldet Exit 2). Grund: ein nicht
|
||||
# aufrufbares veraPDF wuerde jede einzelne PDF als ungueltig werten, das
|
||||
# OCR-Ergebnis nach error/ schieben und das Original laut
|
||||
# original_on_success entsorgen — bei "delete" also Scan fuer Scan die
|
||||
# Vorlage vernichten, waehrend der Dienst als "laeuft" dasteht.
|
||||
enabled = false
|
||||
binary = "/opt/verapdf/verapdf"
|
||||
flavour = "1b"
|
||||
@@ -74,7 +87,9 @@ flavour = "1b"
|
||||
|
||||
[upload.folder]
|
||||
enabled = true
|
||||
# Wenn leer, wird [paths].outgoing verwendet
|
||||
# Wenn leer, wird [paths].outgoing verwendet. Sonst: absoluter Pfad (Pflicht,
|
||||
# relativ wird abgelehnt). Liegt im Ziel schon eine gleichnamige Datei, wird
|
||||
# die neue mit Zeitstempel abgelegt statt die alte zu ueberschreiben.
|
||||
target = ""
|
||||
|
||||
[upload.nextcloud]
|
||||
|
||||
Reference in New Issue
Block a user