aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Monteiro <marknr.monteiro@protonmail.com>2020-03-15 17:42:57 +0100
committerMark Monteiro <marknr.monteiro@protonmail.com>2020-03-15 17:42:57 +0100
commit05ab61200a181ff39034a5c3ba30a4ee2672971d (patch)
treecfb623d705da1aa6eb59bff958d2a57a00742434
parent602112fba433fa8919133d7ff292b0cd5a912aa2 (diff)
Do not call UseContentRoot() on the web host builder
This call has nothing to do with static web content and should not have ever been called with the web content path: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/?view=aspnetcore-3.1&tabs=windows#content-root Since this call is removed, the ContentRoot property is also removed from ApplicationHost as it is no longer needed. Finally, move validation of the static content path to the DashboardService where it is actually used.
-rw-r--r--Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs10
-rw-r--r--Emby.Server.Implementations/ApplicationHost.cs11
-rw-r--r--Jellyfin.Server/Program.cs20
-rw-r--r--MediaBrowser.Common/Configuration/IApplicationPaths.cs9
-rw-r--r--MediaBrowser.WebDashboard/Api/DashboardService.cs11
5 files changed, 20 insertions, 41 deletions
diff --git a/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs b/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs
index 8bcd08745..bc4781743 100644
--- a/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs
+++ b/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs
@@ -1,8 +1,6 @@
using System;
using System.IO;
using MediaBrowser.Common.Configuration;
-using MediaBrowser.Controller.Extensions;
-using Microsoft.Extensions.Configuration;
namespace Emby.Server.Implementations.AppBase
{
@@ -39,13 +37,7 @@ namespace Emby.Server.Implementations.AppBase
/// <value>The program data path.</value>
public string ProgramDataPath { get; }
- /// <summary>
- /// Gets the path to the web UI resources folder.
- /// </summary>
- /// <value>The web UI resources path.</value>
- /// <remarks>
- /// This value is not relevant if <see cref="ConfigurationExtensions.IsNoWebContent(IConfiguration)"/> is true.
- /// </remarks>
+ /// <inheritdoc/>
public string WebPath { get; }
/// <summary>
diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs
index 7262268a9..52c517627 100644
--- a/Emby.Server.Implementations/ApplicationHost.cs
+++ b/Emby.Server.Implementations/ApplicationHost.cs
@@ -237,11 +237,6 @@ namespace Emby.Server.Implementations
public int HttpsPort { get; private set; }
/// <summary>
- /// Gets the content root for the webhost.
- /// </summary>
- public string ContentRoot { get; private set; }
-
- /// <summary>
/// Gets the server configuration manager.
/// </summary>
/// <value>The server configuration manager.</value>
@@ -614,12 +609,6 @@ namespace Emby.Server.Implementations
DiscoverTypes();
await RegisterServices(serviceCollection, startupConfig).ConfigureAwait(false);
-
- ContentRoot = ServerConfigurationManager.Configuration.DashboardSourcePath;
- if (string.IsNullOrEmpty(ContentRoot))
- {
- ContentRoot = ServerConfigurationManager.ApplicationPaths.WebPath;
- }
}
public async Task ExecuteWebsocketHandlerAsync(HttpContext context, Func<Task> next)
diff --git a/Jellyfin.Server/Program.cs b/Jellyfin.Server/Program.cs
index bfb2fc6b5..67251eb24 100644
--- a/Jellyfin.Server/Program.cs
+++ b/Jellyfin.Server/Program.cs
@@ -243,7 +243,7 @@ namespace Jellyfin.Server
IConfiguration startupConfig,
IApplicationPaths appPaths)
{
- var webhostBuilder = new WebHostBuilder()
+ return new WebHostBuilder()
.UseKestrel(options =>
{
var addresses = appHost.ServerConfigurationManager
@@ -289,24 +289,6 @@ namespace Jellyfin.Server
services.TryAdd(serviceCollection);
})
.UseStartup<Startup>();
-
- // Set up static content hosting unless it has been disabled via config
- if (!startupConfig.NoWebContent())
- {
- // Fail startup if the web content does not exist
- if (!Directory.Exists(appHost.ContentRoot) || !Directory.GetFiles(appHost.ContentRoot).Any())
- {
- throw new InvalidOperationException(
- "The server is expected to host web content, but the provided content directory is either " +
- $"invalid or empty: {appHost.ContentRoot}. If you do not want to host web content with the " +
- $"server, you may set the '{MediaBrowser.Controller.Extensions.ConfigurationExtensions.NoWebContentKey}' flag.");
- }
-
- // Configure the web host to host the static web content
- webhostBuilder.UseContentRoot(appHost.ContentRoot);
- }
-
- return webhostBuilder;
}
/// <summary>
diff --git a/MediaBrowser.Common/Configuration/IApplicationPaths.cs b/MediaBrowser.Common/Configuration/IApplicationPaths.cs
index 5bdea7d8b..870b90796 100644
--- a/MediaBrowser.Common/Configuration/IApplicationPaths.cs
+++ b/MediaBrowser.Common/Configuration/IApplicationPaths.cs
@@ -1,3 +1,5 @@
+using MediaBrowser.Model.Configuration;
+
namespace MediaBrowser.Common.Configuration
{
/// <summary>
@@ -12,9 +14,12 @@ namespace MediaBrowser.Common.Configuration
string ProgramDataPath { get; }
/// <summary>
- /// Gets the path to the web UI resources folder
+ /// Gets the path to the web UI resources folder.
/// </summary>
- /// <value>The web UI resources path.</value>
+ /// <remarks>
+ /// This value is not relevant if the server is configured to not host any static web content. Additionally,
+ /// the value for <see cref="ServerConfiguration.DashboardSourcePath"/> takes precedence over this one.
+ /// </remarks>
string WebPath { get; }
/// <summary>
diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs
index 11901c25f..0114f5d60 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardService.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs
@@ -136,6 +136,17 @@ namespace MediaBrowser.WebDashboard.Api
_resultFactory = resultFactory;
_resourceFileManager = resourceFileManager;
_appConfig = appConfig;
+
+ // Validate web content path
+ string webContentPath = DashboardUIPath;
+ bool webContentPathValid = appConfig.NoWebContent() || (Directory.Exists(webContentPath) && Directory.GetFiles(webContentPath).Any());
+ if (!webContentPathValid)
+ {
+ throw new InvalidOperationException(
+ "The server is expected to host web content, but the provided content directory is either " +
+ $"invalid or empty: {webContentPath}. If you do not want to host web content with the server, " +
+ $"you may set the '{Controller.Extensions.ConfigurationExtensions.NoWebContentKey}' flag.");
+ }
}
/// <summary>