Release v1.0.7: OAuth-Server korrekt auf 0.0.0.0 gebunden
Die bisherigen Patches zielten auf Muster, die in oauth/src/lib.rs nicht vorhanden sind. Der tatsächliche Bind-Aufruf ist TcpListener::bind(socket_address) – dieser wird jetzt direkt durch SocketAddrV4::new(Ipv4Addr::UNSPECIFIED, port) ersetzt. Dadurch ist der OAuth-Callback-Server unter http://<ha-ip>:5588 erreichbar. Der Benutzer ersetzt nach der Spotify-Weiterleitung 127.0.0.1 durch die HA-IP in der Adressleiste. run.sh erkennt die HA-IP automatisch und zeigt eine klare Schritt-für-Schritt-Anleitung beim ersten Start. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -23,15 +23,17 @@ RUN apk add --no-cache \
|
||||
RUN git clone --depth 1 --branch v0.7.0 \
|
||||
https://github.com/librespot-org/librespot.git /build && \
|
||||
cd /build && \
|
||||
# OAuth-Server auf allen Interfaces binden (statt nur localhost).
|
||||
# Rust-Code kann die Adresse auf verschiedene Weisen schreiben:
|
||||
# OAuth-Server auf allen Interfaces binden (statt nur 127.0.0.1).
|
||||
# get_authcode_listener() bestimmt die Bind-Adresse aus dem redirect_uri-Parameter.
|
||||
# Wir patchen den TcpListener::bind-Aufruf direkt, sodass er immer an 0.0.0.0
|
||||
# bindet (mit dem gleichen Port wie im redirect_uri angegeben).
|
||||
# Außerdem ersetzen wir die englische Browser-Meldung durch eine deutsche.
|
||||
sed -i \
|
||||
-e 's/127\.0\.0\.1/0.0.0.0/g' \
|
||||
-e 's/\[127, 0, 0, 1\]/[0, 0, 0, 0]/g' \
|
||||
-e 's/Ipv4Addr::LOCALHOST/Ipv4Addr::UNSPECIFIED/g' \
|
||||
-e 's/TcpListener::bind(socket_address)/TcpListener::bind(std::net::SocketAddrV4::new(std::net::Ipv4Addr::UNSPECIFIED, socket_address.port()))/' \
|
||||
-e 's/Go back to your terminal :)/Autorisierung erfolgreich! Du kannst diesen Tab schliessen./' \
|
||||
oauth/src/lib.rs && \
|
||||
echo "--- oauth/src/lib.rs (Addr-Zeilen nach Patch) ---" && \
|
||||
grep -n "0\.0\.0\|UNSPECIFIED\|127\|LOCALHOST" oauth/src/lib.rs || true && \
|
||||
echo "--- oauth/src/lib.rs (Patch-Zeilen) ---" && \
|
||||
grep -n "UNSPECIFIED\|Autorisierung\|SocketAddrV4" oauth/src/lib.rs || true && \
|
||||
cargo build \
|
||||
--release \
|
||||
--locked \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "Busch-Radio Spotify Bridge"
|
||||
version: "1.0.6"
|
||||
version: "1.0.7"
|
||||
slug: busch_radio_spotify
|
||||
description: >
|
||||
Streamt Spotify-Musik als Internet-Radio-Stream für das Busch-Jäger Unterputz-Internetradio.
|
||||
|
||||
@@ -139,6 +139,15 @@ bashio::log.info "Icecast läuft (PID: ${ICECAST_PID})"
|
||||
CREDENTIAL_CACHE="/data/librespot-cache"
|
||||
mkdir -p "${CREDENTIAL_CACHE}"
|
||||
|
||||
# ── IP-Adresse des Hosts ermitteln (für OAuth-Anleitung) ─────────────────────
|
||||
HA_IP=$(ip route get 1 2>/dev/null | awk '{for(i=1;i<=NF;i++) if($i=="src") print $(i+1)}' | head -1)
|
||||
if [ -z "${HA_IP}" ]; then
|
||||
HA_IP=$(hostname -I 2>/dev/null | awk '{print $1}')
|
||||
fi
|
||||
if [ -z "${HA_IP}" ]; then
|
||||
HA_IP="<homeassistant-ip>"
|
||||
fi
|
||||
|
||||
# ── Librespot-Argumente zusammenstellen ───────────────────────────────────────
|
||||
# Zeroconf/mDNS funktioniert nicht zuverlässig in Containern, da Port 5353
|
||||
# vom Host (systemd-resolved/avahi) bereits belegt ist.
|
||||
@@ -162,9 +171,23 @@ else
|
||||
bashio::log.info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
bashio::log.info "ERSTER START – Spotify-Autorisierung erforderlich!"
|
||||
bashio::log.info ""
|
||||
bashio::log.info "librespot gibt gleich eine URL aus. Öffne diese"
|
||||
bashio::log.info "im Browser und melde dich mit deinem Spotify-Konto an."
|
||||
bashio::log.info "Danach startet das Add-on automatisch durch."
|
||||
bashio::log.info "1) librespot gibt gleich eine 'Browse to:'-URL aus."
|
||||
bashio::log.info " Kopiere diese URL und öffne sie im Browser."
|
||||
bashio::log.info ""
|
||||
bashio::log.info "2) Melde dich mit deinem Spotify-Konto an"
|
||||
bashio::log.info " und erteile die Berechtigung."
|
||||
bashio::log.info ""
|
||||
bashio::log.info "3) Dein Browser wird danach weitergeleitet auf:"
|
||||
bashio::log.info " http://127.0.0.1:5588/login?code=..."
|
||||
bashio::log.info " Diese Seite schlägt fehl – das ist normal."
|
||||
bashio::log.info ""
|
||||
bashio::log.info "4) WICHTIG: Ersetze in der Adressleiste"
|
||||
bashio::log.info " '127.0.0.1' durch '${HA_IP}'"
|
||||
bashio::log.info " → http://${HA_IP}:5588/login?code=..."
|
||||
bashio::log.info " und drücke Enter."
|
||||
bashio::log.info ""
|
||||
bashio::log.info "5) Bei Erfolg siehst du: 'Autorisierung erfolgreich!'"
|
||||
bashio::log.info " Das Add-on startet danach automatisch."
|
||||
bashio::log.info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user