Commit Graph

4 Commits

Author SHA1 Message Date
martin c05f323605 feat: Trockenlauf als Standard-Aufruf, --execute/-e für echten Sync
Ohne Flags führt darktable_sync.sh jetzt einen Trockenlauf durch:
- Banner mit Hinweis und Bestätigungsabfrage vor dem Start
- rsync läuft mit --dry-run (keine Dateiänderungen)
- Keine destruktiven Operationen: kein Backup, kein Token-Schreiben,
  kein sync_pending entfernen
- Zusammenfassung nach Richtung (Upload/Download) und Aktion
  (neu/aktualisiert/gelöscht) aufgeschlüsselt
- Optionale Detailansicht: Dateien gruppiert nach Typ (Foto, XMP,
  Datenbank, Video, Sonstiges)

Mit --execute oder -e wird der echte Sync wie bisher ausgeführt.
Desktop-Entry und Systemd-Service auf --execute aktualisiert.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 16:24:31 +02:00
martin 0c5774f695 install.sh: interaktive Abfragen bei Installation verbessert
- .env-Verschiebung aus Projektverzeichnis wird angeboten und bei Bestätigung automatisch ausgeführt
- Lokales Foto-Verzeichnis wird interaktiv abgefragt (mit Hinweis falls es bereits existiert)
- Ausführlicher Hinweis nach Anlegen der Default-.env mit Pflichtfeldern und nächsten Schritten
- bats-Hinweis entfernt (nur für Entwickler relevant)
- Tests: Umlaut-Mismatch in security.bats behoben, teardown() für Lock-Isolation ergänzt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 12:47:10 +02:00
martin 92a5d50082 Sicherheitshaertung: Injection-Schutz, atomares Locking, Pfad-Validierung
- load_config blockiert Shell-Operatoren (;|&`) in .env-Werten
- validate_path prueft Sonderzeichen und Path-Traversal in Pfad-Variablen
- validate_config prüft DARKTABLE_BIN-basename und ruft validate_path auf
- Lockdir-Trap erst nach erfolgreicher Lock-Akquisition registriert
  (verhindert dass externer Lockdir bei gescheitertem Lock entfernt wird)
- uninstall.sh nutzt rmdir statt rm -rf fuer Lockdir
- security.bats mit 10 Tests fuer alle Sicherheitsanforderungen

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 19:57:39 +02:00
martin 6a6ce52cf9 Robuste Darktable-Synchronisation: sequenzieller Ablauf, Versions- und Concurrent-Schutz
- Race Condition behoben: Pre-Sync wird vollstaendig abgewartet bevor Darktable startet
- Post-Sync nach Schliessen von Darktable eingefuehrt (bisher fehlend)
- .env aus festem Pfad ~/.config/darktable-sync/.env geladen (nicht mehr relativ)
- Server-Erreichbarkeit per SSH statt ping (Firewall-sicher)
- Darktable-Versionscheck (Major.Minor) vor Download mit Abbruch bei Konflikt
- DB-Backup vor jedem Download (library.db.bak, data.db.bak)
- sync_pending-Marker bei Offline/Fehler, Hinweis beim naechsten Start
- darktable.active-Marker auf Server fuer Concurrent-Erkennung
- Lock-Dateien vom Sync ausgeschlossen
- systemd-Timer entfernt, Service bleibt als manueller Trigger
- Gemeinsame Hilfsfunktionen in darktable_common.sh extrahiert
- 20 BATS-Tests mit vollstaendigem Stub-System ohne GUI-Dialoge

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-19 19:41:26 +02:00