mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-05-24 02:02:29 -04:00
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.
This commit is contained in:
parent
602112fba4
commit
05ab61200a
@ -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>
|
||||
|
@ -236,11 +236,6 @@ namespace Emby.Server.Implementations
|
||||
/// </summary>
|
||||
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>
|
||||
@ -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)
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user