diff --git a/jdownloader/run.sh b/jdownloader/run.sh index 082f52d..5529c19 100644 --- a/jdownloader/run.sh +++ b/jdownloader/run.sh @@ -1,25 +1,36 @@ #!/bin/sh -echo "--- Starte JDownloader (JLesage Wrapper) ---" +echo "--- Starte JDownloader (JLesage Wrapper mit Fixed Persistence) ---" -# 1. ORDNERSYSTEM ANPASSEN -# Das Image nutzt /config für Einstellungen. Wir biegen das auf /data um, -# damit Einstellungen erhalten bleiben. +# --- 1. PERSISTENZ REPARIEREN --- +# Wir nutzen /data/cfg als den wahren Speicherort. +mkdir -p /data/cfg -# Wenn /config ein echter Ordner ist (und kein Link), verschieben wir den Inhalt nach /data -# (nur beim allerersten Start relevant) -if [ ! -L "/config" ]; then - echo "Richte persistente Konfiguration ein..." - cp -rn /config/* /data/ 2>/dev/null - rm -rf /config - ln -s /data /config +# Wir prüfen, ob /config/cfg bereits ein Link ist. Wenn nicht, müssen wir es umbiegen. +if [ ! -L "/config/cfg" ]; then + echo "Richte persistenten 'cfg' Ordner ein..." + + # Falls schon Daten im Container-Ordner sind (vom Image), retten wir sie nach /data + # aber nur, wenn /data/cfg noch leer ist. + if [ -z "$(ls -A /data/cfg)" ]; then + echo "Kopiere Standard-Konfiguration nach /data..." + cp -rn /config/cfg/* /data/cfg/ 2>/dev/null + fi + + # Jetzt löschen wir den FLÜCHTIGEN Ordner im Container + rm -rf /config/cfg + + # Und erstellen den Link zum PERSISTENTEN Ordner + ln -s /data/cfg /config/cfg fi -# Berechtigungen korrigieren (jlesage nutzt user app:1000) -# Wir müssen sicherstellen, dass der User 'app' auf /data schreiben darf +# Berechtigungen: Der User 'app' (ID 1000) im Container muss /data gehören +echo "Setze Berechtigungen für /data..." chown -R 1000:1000 /data +chmod -R u+rw /data -# 2. DOWNLOAD ORDNER ANPASSEN + +# --- 2. DOWNLOAD ORDNER --- # Das Image nutzt /output. Wir biegen das auf /share/downloads um. mkdir -p /share/downloads if [ -d "/output" ] && [ ! -L "/output" ]; then @@ -31,19 +42,22 @@ fi # Schreibrechte für Share sicherstellen chmod 777 /share/downloads -# 3. ZUGANGSDATEN INJIZIEREN (Optional) + +# --- 3. ZUGANGSDATEN (Optional) --- EMAIL=$(jq --raw-output '.myjd_email // empty' /data/options.json) PASS=$(jq --raw-output '.myjd_password // empty' /data/options.json) DEVICE=$(jq --raw-output '.device_name' /data/options.json) DARK_MODE=$(jq --raw-output '.dark_mode' /data/options.json) -CFG_FILE="/data/cfg/org.jdownloader.api.myjdownloader.MyJDownloaderSettings.json" -mkdir -p /data/cfg +# Die Datei liegt jetzt physikalisch in /data/cfg, aber wir sprechen sie via /config/cfg an +CFG_FILE="/config/cfg/org.jdownloader.api.myjdownloader.MyJDownloaderSettings.json" -# Nur wenn Email UND Passwort ausgefüllt sind, schreiben wir die Config +# Wir schreiben die Config nur, wenn sie noch NICHT existiert oder leer ist, +# damit wir deine manuellen Änderungen nicht bei jedem Neustart überschreiben. if [ ! -z "$EMAIL" ] && [ ! -z "$PASS" ]; then - echo "Setze MyJDownloader Zugangsdaten..." - cat < "$CFG_FILE" + if [ ! -f "$CFG_FILE" ] || [ ! -s "$CFG_FILE" ]; then + echo "Schreibe initiale MyJDownloader Zugangsdaten..." + cat < "$CFG_FILE" { "email" : "$EMAIL", "password" : "$PASS", @@ -51,19 +65,20 @@ if [ ! -z "$EMAIL" ] && [ ! -z "$PASS" ]; then "autoconnectenabledmanual" : true } EOF - # Wichtig: Datei muss dem Container-User gehören! - chown 1000:1000 "$CFG_FILE" + chown 1000:1000 "$CFG_FILE" + else + echo "Konfigurationsdatei existiert bereits. Überspringe Auto-Config, um manuelle Änderungen zu schützen." + fi fi -# 4. DARK MODE (Optional) -# Setze Environment Variable für das jlesage Image + +# --- 4. DARK MODE --- if [ "$DARK_MODE" = "true" ]; then export DARK_MODE=1 else export DARK_MODE=0 fi -# 5. STARTEN -# Wir rufen das originale Init-System des Containers auf +# --- 5. STARTEN --- echo "Übergabe an jlesage init..." exec /init \ No newline at end of file