diff --git a/jdownloader/run.sh b/jdownloader/run.sh index 34dd872..ff4720d 100644 --- a/jdownloader/run.sh +++ b/jdownloader/run.sh @@ -1,28 +1,63 @@ #!/bin/sh -echo "Starte JDownloader Addon Wrapper..." +# Config-Pfad von JDownloader (im antlafarge image) +JD_DIR="/opt/JDownloader" +CFG_DIR="$JD_DIR/cfg" -# 1. Konfiguration aus der HA options.json lesen -# Wir lesen die Werte und exportieren sie als Environment Variables -# die das jaymoulin Image erwartet (MYJD_USER, etc.) -export MYJD_USER=$(jq --raw-output '.myjd_email' /data/options.json) -export MYJD_PASSWORD=$(jq --raw-output '.myjd_password' /data/options.json) -export MYJD_DEVICE_NAME=$(jq --raw-output '.device_name' /data/options.json) +echo "--- Starte JDownloader (Antlafarge Base) ---" -echo "Konfiguration geladen für User: $MYJD_USER" +# 1. Ordner vorbereiten +# Wir verlinken den internen Config-Ordner auf /data, damit Einstellungen +# (wie Download-Listen) auch nach einem Addon-Neustart erhalten bleiben. +if [ ! -d "/data/cfg" ]; then + mkdir -p /data/cfg +fi -# 2. Download-Pfad umbiegen -# Das Image speichert standardmäßig in /opt/JDownloader/Downloads. -# Wir wollen aber, dass es im HA Share Ordner landet. +# Wenn der cfg Ordner im Image existiert, aber kein Link ist, löschen wir ihn +if [ -d "$CFG_DIR" ] && [ ! -L "$CFG_DIR" ]; then + rm -rf "$CFG_DIR" +fi + +# Link erstellen: Image-Config -> HA-Data-Storage +if [ ! -L "$CFG_DIR" ]; then + ln -s /data/cfg "$CFG_DIR" +fi + +# 2. Zugangsdaten aus Home Assistant lesen +EMAIL=$(jq --raw-output '.myjd_email' /data/options.json) +PASS=$(jq --raw-output '.myjd_password' /data/options.json) +DEVICE=$(jq --raw-output '.device_name' /data/options.json) + +echo "Konfiguriere MyJDownloader für: $EMAIL als '$DEVICE'" + +# 3. Die JDownloader Settings-Datei manuell schreiben +# Das ist der Trick: Wir erzeugen die Datei, die JDownloader sonst erst nach Eingabe erstellt. +SETTINGS_FILE="$CFG_DIR/org.jdownloader.api.myjdownloader.MyJDownloaderSettings.json" + +# Wir schreiben ein minimales JSON File für die Anmeldung +cat < "$SETTINGS_FILE" +{ + "email" : "$EMAIL", + "password" : "$PASS", + "devicename" : "$DEVICE", + "autoconnectenabledmanual" : true +} +EOF + +# 4. Download Pfad auf /share/downloads biegen mkdir -p /share/downloads +# Falls Downloads-Ordner existiert (und kein Link ist), weg damit +if [ -d "$JD_DIR/Downloads" ] && [ ! -L "$JD_DIR/Downloads" ]; then + rm -rf "$JD_DIR/Downloads" +fi +# Link setzen +ln -s /share/downloads "$JD_DIR/Downloads" -echo "Setze Download-Pfad auf /share/downloads..." +echo "Berechtigungen korrigieren..." +chown -R root:root "$JD_DIR" -# Falls der Ordner im Container existiert, löschen wir ihn und ersetzen ihn durch einen Link -rm -rf /opt/JDownloader/Downloads -ln -s /share/downloads /opt/JDownloader/Downloads - -# 3. Das eigentliche Programm starten -# Wir rufen den Befehl auf, den das Original-Image eigentlich ausführt -echo "Starte Java Prozess..." -exec java -Djava.awt.headless=true -jar /opt/JDownloader/JDownloader.jar \ No newline at end of file +# 5. Starten +echo "Starte Java..." +# Wir nutzen direkt java, um volle Kontrolle zu haben +cd $JD_DIR +exec java -Djava.awt.headless=true -jar JDownloader.jar \ No newline at end of file