aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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>