mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-31 14:33:54 -04:00
Use config setting to decide if web content should be hosted
Also fail server startup if web content is expected but missing
This commit is contained in:
parent
3f4b9e9a81
commit
29bad073eb
@ -240,13 +240,10 @@ namespace Emby.Server.Implementations
|
|||||||
public int HttpsPort { get; private set; }
|
public int HttpsPort { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the content root for the webhost. If the webhost is not serving static web content, this will be null.
|
/// Gets the content root for the webhost.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string ContentRoot { get; private set; }
|
public string ContentRoot { get; private set; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public bool IsHostingContent => ContentRoot != null;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the server configuration manager.
|
/// Gets the server configuration manager.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -2,7 +2,9 @@ using System.Threading.Tasks;
|
|||||||
using Emby.Server.Implementations.Browser;
|
using Emby.Server.Implementations.Browser;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
|
using MediaBrowser.Controller.Extensions;
|
||||||
using MediaBrowser.Controller.Plugins;
|
using MediaBrowser.Controller.Plugins;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.EntryPoints
|
namespace Emby.Server.Implementations.EntryPoints
|
||||||
{
|
{
|
||||||
@ -36,7 +38,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
|||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_appHost.IsHostingContent)
|
if (_appHost.Resolve<IConfiguration>().IsNoWebContent())
|
||||||
{
|
{
|
||||||
BrowserLauncher.OpenSwaggerPage(_appHost);
|
BrowserLauncher.OpenSwaggerPage(_appHost);
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ using Emby.Server.Implementations.Networking;
|
|||||||
using Jellyfin.Drawing.Skia;
|
using Jellyfin.Drawing.Skia;
|
||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Controller.Drawing;
|
using MediaBrowser.Controller.Drawing;
|
||||||
using MediaBrowser.Model.Globalization;
|
using MediaBrowser.Controller.Extensions;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
@ -177,7 +177,7 @@ namespace Jellyfin.Server
|
|||||||
ServiceCollection serviceCollection = new ServiceCollection();
|
ServiceCollection serviceCollection = new ServiceCollection();
|
||||||
await appHost.InitAsync(serviceCollection).ConfigureAwait(false);
|
await appHost.InitAsync(serviceCollection).ConfigureAwait(false);
|
||||||
|
|
||||||
var host = CreateWebHostBuilder(appHost, serviceCollection).Build();
|
var host = CreateWebHostBuilder(appHost, serviceCollection, appConfig).Build();
|
||||||
|
|
||||||
// A bit hacky to re-use service provider since ASP.NET doesn't allow a custom service collection.
|
// A bit hacky to re-use service provider since ASP.NET doesn't allow a custom service collection.
|
||||||
appHost.ServiceProvider = host.Services;
|
appHost.ServiceProvider = host.Services;
|
||||||
@ -221,7 +221,7 @@ namespace Jellyfin.Server
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IWebHostBuilder CreateWebHostBuilder(ApplicationHost appHost, IServiceCollection serviceCollection)
|
private static IWebHostBuilder CreateWebHostBuilder(ApplicationHost appHost, IServiceCollection serviceCollection, IConfiguration appConfig)
|
||||||
{
|
{
|
||||||
var webhostBuilder = new WebHostBuilder()
|
var webhostBuilder = new WebHostBuilder()
|
||||||
.UseKestrel(options =>
|
.UseKestrel(options =>
|
||||||
@ -268,9 +268,18 @@ namespace Jellyfin.Server
|
|||||||
})
|
})
|
||||||
.UseStartup<Startup>();
|
.UseStartup<Startup>();
|
||||||
|
|
||||||
// Set the root directory for static content, if one exists
|
if (!appConfig.IsNoWebContent())
|
||||||
if (appHost.IsHostingContent)
|
|
||||||
{
|
{
|
||||||
|
// 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);
|
webhostBuilder.UseContentRoot(appHost.ContentRoot);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -404,12 +413,6 @@ namespace Jellyfin.Server
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset webDir if the directory does not exist, or is empty
|
|
||||||
if (!Directory.Exists(webDir) || !Directory.GetFiles(webDir).Any())
|
|
||||||
{
|
|
||||||
webDir = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// logDir
|
// logDir
|
||||||
// IF --logdir
|
// IF --logdir
|
||||||
// ELSE IF $JELLYFIN_LOG_DIR
|
// ELSE IF $JELLYFIN_LOG_DIR
|
||||||
|
@ -16,11 +16,6 @@ namespace MediaBrowser.Controller
|
|||||||
{
|
{
|
||||||
event EventHandler HasUpdateAvailableChanged;
|
event EventHandler HasUpdateAvailableChanged;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets a value indicating whether the server is hosting the static web content from jellyfin-web.
|
|
||||||
/// </summary>
|
|
||||||
bool IsHostingContent { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the system info.
|
/// Gets the system info.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user