fix: player connectivity and media download pipeline
- nginx: add /api/ shortcut block (no portal auth, X-Script-Name /digiserver, Host $http_host) so players can reach DigiServer API without /digiserver prefix - nginx: use $http_host in /api/ block so Flask host_url includes port — fixes media download URLs missing :8080 (was http://ip/digiserver/... not http://ip:8080/...) - player main.py: fix double-port bug when server_ip already contains a port (e.g. 192.168.0.230:8080 was producing http://192.168.0.230:8080:80) - get_playlists_v2.py: force re-sync when server version differs OR local media files are missing on disk — fixes stale playlist after server reset - digiserver api.py: playlist endpoint builds full media URLs using script_root from X-Script-Name header set by nginx - weblink support, player build/deploy improvements, manage-playlist AJAX prefix fix
This commit is contained in:
@@ -57,6 +57,29 @@ http {
|
||||
proxy_read_timeout 60s;
|
||||
}
|
||||
|
||||
# ── DigiServer — Player device API shortcut (no portal auth) ────────────
|
||||
# Players that call /api/ directly (without the /digiserver/ prefix)
|
||||
# are routed here. Must be declared before the catch-all location /.
|
||||
# X-Script-Name tells Flask its script_root so media URLs in playlist
|
||||
# responses are built as /digiserver/static/uploads/... (routable by nginx).
|
||||
location /api/ {
|
||||
proxy_pass http://digiserver_upstream/api/;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Script-Name /digiserver;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
|
||||
client_max_body_size 256M;
|
||||
proxy_connect_timeout 300s;
|
||||
proxy_send_timeout 300s;
|
||||
proxy_read_timeout 300s;
|
||||
}
|
||||
|
||||
# ── DigiServer — Player device API (no portal auth) ──────────────────
|
||||
# Players use their own Bearer token auth; portal JWT is not involved.
|
||||
# This block MUST be declared before the broader /digiserver/ block.
|
||||
|
||||
Reference in New Issue
Block a user