Forráskód Böngészése

Merge pull request #1588 from dkanada/url

Add base url option to server configuration
Anthony Lavado 5 éve
szülő
commit
af3c4e0ce8

+ 11 - 96
Emby.Server.Implementations/HttpServer/HttpListenerHost.cs

@@ -7,6 +7,7 @@ using System.Net.Sockets;
 using System.Reflection;
 using System.Threading;
 using System.Threading.Tasks;
+using Emby.Server.Implementations.Configuration;
 using Emby.Server.Implementations.Net;
 using Emby.Server.Implementations.Services;
 using MediaBrowser.Common.Extensions;
@@ -470,64 +471,10 @@ namespace Emby.Server.Implementations.HttpServer
 
                 urlToLog = GetUrlToLog(urlString);
 
-                if (string.Equals(localPath, "/emby/", StringComparison.OrdinalIgnoreCase) ||
-                    string.Equals(localPath, "/mediabrowser/", StringComparison.OrdinalIgnoreCase))
+                if (string.Equals(localPath, "/" + _config.Configuration.BaseUrl + "/", StringComparison.OrdinalIgnoreCase)
+                    || string.Equals(localPath, "/" + _config.Configuration.BaseUrl, StringComparison.OrdinalIgnoreCase))
                 {
-                    httpRes.Redirect(_defaultRedirectPath);
-                    return;
-                }
-
-                if (string.Equals(localPath, "/emby", StringComparison.OrdinalIgnoreCase) ||
-                    string.Equals(localPath, "/mediabrowser", StringComparison.OrdinalIgnoreCase))
-                {
-                    httpRes.Redirect("emby/" + _defaultRedirectPath);
-                    return;
-                }
-
-                if (localPath.IndexOf("mediabrowser/web", StringComparison.OrdinalIgnoreCase) != -1)
-                {
-                    httpRes.StatusCode = 200;
-                    httpRes.ContentType = "text/html";
-                    var newUrl = urlString.Replace("mediabrowser", "emby", StringComparison.OrdinalIgnoreCase)
-                        .Replace("/dashboard/", "/web/", StringComparison.OrdinalIgnoreCase);
-
-                    if (!string.Equals(newUrl, urlString, StringComparison.OrdinalIgnoreCase))
-                    {
-                        await httpRes.WriteAsync(
-                            "<!doctype html><html><head><title>Emby</title></head><body>Please update your Emby bookmark to <a href=\"" +
-                            newUrl + "\">" + newUrl + "</a></body></html>",
-                            cancellationToken).ConfigureAwait(false);
-                        return;
-                    }
-                }
-
-                if (localPath.IndexOf("dashboard/", StringComparison.OrdinalIgnoreCase) != -1 &&
-                    localPath.IndexOf("web/dashboard", StringComparison.OrdinalIgnoreCase) == -1)
-                {
-                    httpRes.StatusCode = 200;
-                    httpRes.ContentType = "text/html";
-                    var newUrl = urlString.Replace("mediabrowser", "emby", StringComparison.OrdinalIgnoreCase)
-                        .Replace("/dashboard/", "/web/", StringComparison.OrdinalIgnoreCase);
-
-                    if (!string.Equals(newUrl, urlString, StringComparison.OrdinalIgnoreCase))
-                    {
-                        await httpRes.WriteAsync(
-                            "<!doctype html><html><head><title>Emby</title></head><body>Please update your Emby bookmark to <a href=\"" +
-                            newUrl + "\">" + newUrl + "</a></body></html>",
-                            cancellationToken).ConfigureAwait(false);
-                        return;
-                    }
-                }
-
-                if (string.Equals(localPath, "/web", StringComparison.OrdinalIgnoreCase))
-                {
-                    httpRes.Redirect(_defaultRedirectPath);
-                    return;
-                }
-
-                if (string.Equals(localPath, "/web/", StringComparison.OrdinalIgnoreCase))
-                {
-                    httpRes.Redirect("../" + _defaultRedirectPath);
+                    httpRes.Redirect("/" + _config.Configuration.BaseUrl + "/" + _defaultRedirectPath);
                     return;
                 }
 
@@ -543,19 +490,6 @@ namespace Emby.Server.Implementations.HttpServer
                     return;
                 }
 
-                if (!string.Equals(httpReq.QueryString["r"], "0", StringComparison.OrdinalIgnoreCase))
-                {
-                    if (localPath.EndsWith("web/dashboard.html", StringComparison.OrdinalIgnoreCase))
-                    {
-                        httpRes.Redirect("index.html#!/dashboard.html");
-                    }
-
-                    if (localPath.EndsWith("web/home.html", StringComparison.OrdinalIgnoreCase))
-                    {
-                        httpRes.Redirect("index.html");
-                    }
-                }
-
                 if (!string.IsNullOrEmpty(GlobalResponse))
                 {
                     // We don't want the address pings in ApplicationHost to fail
@@ -569,7 +503,6 @@ namespace Emby.Server.Implementations.HttpServer
                 }
 
                 var handler = GetServiceHandler(httpReq);
-
                 if (handler != null)
                 {
                     await handler.ProcessRequestAsync(this, httpReq, httpRes, _logger, cancellationToken).ConfigureAwait(false);
@@ -663,22 +596,14 @@ namespace Emby.Server.Implementations.HttpServer
 
             foreach (var route in clone)
             {
-                routes.Add(new RouteAttribute(NormalizeEmbyRoutePath(route.Path), route.Verbs)
+                routes.Add(new RouteAttribute(NormalizeCustomRoutePath(_config.Configuration.BaseUrl, route.Path), route.Verbs)
                 {
                     Notes = route.Notes,
                     Priority = route.Priority,
                     Summary = route.Summary
                 });
 
-                routes.Add(new RouteAttribute(NormalizeMediaBrowserRoutePath(route.Path), route.Verbs)
-                {
-                    Notes = route.Notes,
-                    Priority = route.Priority,
-                    Summary = route.Summary
-                });
-
-                // needed because apps add /emby, and some users also add /emby, thereby double prefixing
-                routes.Add(new RouteAttribute(DoubleNormalizeEmbyRoutePath(route.Path), route.Verbs)
+                routes.Add(new RouteAttribute(NormalizeOldRoutePath(route.Path), route.Verbs)
                 {
                     Notes = route.Notes,
                     Priority = route.Priority,
@@ -719,8 +644,8 @@ namespace Emby.Server.Implementations.HttpServer
             return _socketListener.ProcessWebSocketRequest(context);
         }
 
-        //TODO Add Jellyfin Route Path Normalizer
-        private static string NormalizeEmbyRoutePath(string path)
+        // this method was left for compatibility with third party clients
+        private static string NormalizeOldRoutePath(string path)
         {
             if (path.StartsWith("/", StringComparison.OrdinalIgnoreCase))
             {
@@ -730,24 +655,14 @@ namespace Emby.Server.Implementations.HttpServer
             return "emby/" + path;
         }
 
-        private static string NormalizeMediaBrowserRoutePath(string path)
-        {
-            if (path.StartsWith("/", StringComparison.OrdinalIgnoreCase))
-            {
-                return "/mediabrowser" + path;
-            }
-
-            return "mediabrowser/" + path;
-        }
-
-        private static string DoubleNormalizeEmbyRoutePath(string path)
+        private static string NormalizeCustomRoutePath(string baseUrl, string path)
         {
             if (path.StartsWith("/", StringComparison.OrdinalIgnoreCase))
             {
-                return "/emby/emby" + path;
+                return "/" + baseUrl + path;
             }
 
-            return "emby/emby/" + path;
+            return baseUrl + "/" + path;
         }
 
         /// <inheritdoc />

+ 2 - 0
MediaBrowser.Model/Configuration/ServerConfiguration.cs

@@ -163,6 +163,7 @@ namespace MediaBrowser.Model.Configuration
 
         public string ServerName { get; set; }
         public string WanDdns { get; set; }
+        public string BaseUrl { get; set; }
 
         public string UICulture { get; set; }
 
@@ -243,6 +244,7 @@ namespace MediaBrowser.Model.Configuration
             SortRemoveCharacters = new[] { ",", "&", "-", "{", "}", "'" };
             SortRemoveWords = new[] { "the", "a", "an" };
 
+            BaseUrl = "jellyfin";
             UICulture = "en-US";
 
             MetadataOptions = new[]