diff --git a/CHANGELOG.md b/CHANGELOG.md index 26c3abd4..960302d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Better auto-generation of request/response schemas - Improved documentation accuracy with serializer introspection +### Fixed + +- Admin URL Conflict with XC Streams: Updated nginx configuration to only redirect exact `/admin` and `/admin/` paths to login in production, preventing interference with stream URLs that use "admin" as a username (e.g., `/admin/password/stream_id` now properly routes to stream handling instead of being redirected). + ## [0.18.1] - 2026-01-27 ### Fixed diff --git a/dispatcharr/urls.py b/dispatcharr/urls.py index 1ab4ebfb..092fb0cb 100644 --- a/dispatcharr/urls.py +++ b/dispatcharr/urls.py @@ -17,9 +17,6 @@ urlpatterns = [ path("swagger", RedirectView.as_view(url="/api/swagger/", permanent=True)), path("redoc/", RedirectView.as_view(url="/api/redoc/", permanent=True)), path("redoc", RedirectView.as_view(url="/api/redoc/", permanent=True)), - # Admin - path("admin", RedirectView.as_view(url="/admin/", permanent=True)), - path("admin/", admin.site.urls), # Outputs path("output", RedirectView.as_view(url="/output/", permanent=True)), path("output/", include(("apps.output.urls", "output"), namespace="output")), @@ -55,6 +52,9 @@ urlpatterns = [ xc_series_stream, name="xc_series_stream", ), + # Admin + path("admin", RedirectView.as_view(url="/admin/", permanent=True)), + path("admin/", admin.site.urls), # VOD proxy is now handled by the main proxy URLs above # Catch-all routes should always be last diff --git a/docker/nginx.conf b/docker/nginx.conf index 406d587c..e08d08f2 100644 --- a/docker/nginx.conf +++ b/docker/nginx.conf @@ -59,7 +59,7 @@ server { } # admin disabled when not in dev mode - location /admin { + location ~ ^/admin/?$ { return 301 /login; }