martin
e5d87bd1cb
Merge pull request 'Refaktorierung: Common-Library mit generischen Funktionen' ( #2 ) from refactor/darktable-common-extraction into main
2026-04-19 20:36:58 +02:00
martin
6fd8a8c308
Refaktorierung: Common-Library mit generischen Funktionen
...
- Neue `darktable_common.sh` mit wiederverwendbaren Shell-Funktionen (Locking, Logging, Validierung)
- `darktable_sync.sh` nutzt jetzt Common-Library statt eingebettete Logik
- `darktable_wrapper.sh` vereinfacht durch Nutzung von Common-Funktionen
- Eliminiert Code-Duplikation zwischen Sync und Wrapper
- Verbessert Wartbarkeit und Testbarkeit
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-19 20:35:56 +02:00
martin
0cd9679767
Merge pull request 'Robuste Darktable-Synchronisation: sequenzieller Ablauf, Sicherheitshaertung' ( #1 ) from feature/robust-sync into main
...
Robuste Darktable-Synchronisation: sequenzieller Ablauf, Sicherheitshaertung
2026-04-19 20:00:32 +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
46664ab3b6
Code-Vereinfachung: Redundanzen entfernen und Wiederverwendung verbessern
...
- log() Funktion in darktable_common.sh ausgelagert (war doppelt vorhanden)
- ssh_server() Hilfsfunktion für wiederholte SSH-Aufrufe mit konsistenten Optionen
- ssh_server() nutzen statt inline SSH-Befehle in darktable_sync.sh und darktable_wrapper.sh
- Reduzierung von SSH-Optionswiederbholungen (ConnectTimeout, BatchMode, Port)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-19 19:45:11 +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
martin
3bdd26ed81
First step into separated scripts
2026-01-03 10:47:27 +01:00
martin
ced8ac8dc0
Add execution lock
2025-11-18 16:06:50 +01:00
martin
8d75bbd5f8
Disable background synchronisation
2025-11-18 13:40:29 +01:00
martin
b933b1900d
Ensure that only newer files will be synchronized, no matter which size they have
2025-11-18 12:20:06 +01:00
martin
3a6c4e28b3
Rename NAS to server to make it more general
2025-06-09 16:39:19 +02:00
martin
d7ca1fa2a8
First complete version
2025-06-09 16:26:18 +02:00
MaTr74
6eb94d9077
Initial commit
2025-06-09 15:59:37 +02:00