aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server/Startup.cs
diff options
context:
space:
mode:
authorcrobibero <cody@robibe.ro>2020-09-03 07:48:34 -0600
committercrobibero <cody@robibe.ro>2020-09-03 07:48:34 -0600
commit1de22af6466a691e023dd70b2032d5e3af3bdc6b (patch)
treef87f0be301324f87b6931619d7565901d2f0b2f2 /Jellyfin.Server/Startup.cs
parent65d05f92ac7f7e5398fa49d5a5fdf0d984ce6989 (diff)
parenta2d6ea2eed58b5cd1ecb519e3eda820f336d5485 (diff)
Merge remote-tracking branch 'upstream/master' into dynamic-cors
Diffstat (limited to 'Jellyfin.Server/Startup.cs')
-rw-r--r--Jellyfin.Server/Startup.cs44
1 files changed, 29 insertions, 15 deletions
diff --git a/Jellyfin.Server/Startup.cs b/Jellyfin.Server/Startup.cs
index 63f704556..c3ca86383 100644
--- a/Jellyfin.Server/Startup.cs
+++ b/Jellyfin.Server/Startup.cs
@@ -5,7 +5,6 @@ using Jellyfin.Api.TypeConverters;
using Jellyfin.Server.Extensions;
using Jellyfin.Server.Middleware;
using Jellyfin.Server.Models;
-using MediaBrowser.Common;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
@@ -23,17 +22,19 @@ namespace Jellyfin.Server
public class Startup
{
private readonly IServerConfigurationManager _serverConfigurationManager;
- private readonly IApplicationHost _applicationHost;
+ private readonly IServerApplicationHost _serverApplicationHost;
/// <summary>
/// Initializes a new instance of the <see cref="Startup" /> class.
/// </summary>
/// <param name="serverConfigurationManager">The server configuration manager.</param>
- /// <param name="applicationHost">The application host.</param>
- public Startup(IServerConfigurationManager serverConfigurationManager, IApplicationHost applicationHost)
+ /// <param name="serverApplicationHost">The server application host.</param>
+ public Startup(
+ IServerConfigurationManager serverConfigurationManager,
+ IServerApplicationHost serverApplicationHost)
{
_serverConfigurationManager = serverConfigurationManager;
- _applicationHost = applicationHost;
+ _serverApplicationHost = serverApplicationHost;
}
/// <summary>
@@ -44,9 +45,13 @@ namespace Jellyfin.Server
{
services.AddResponseCompression();
services.AddHttpContextAccessor();
+ services.AddHttpsRedirection(options =>
+ {
+ options.HttpsPort = _serverApplicationHost.HttpsPort;
+ });
services.AddJellyfinApi(
_serverConfigurationManager.Configuration.BaseUrl.TrimStart('/'),
- _applicationHost.GetApiPluginAssemblies(),
+ _serverApplicationHost.GetApiPluginAssemblies(),
_serverConfigurationManager.Configuration.CorsHosts);
services.AddJellyfinApiSwagger();
@@ -56,7 +61,9 @@ namespace Jellyfin.Server
services.AddJellyfinApiAuthorization();
- var productHeader = new ProductInfoHeaderValue(_applicationHost.Name.Replace(' ', '-'), _applicationHost.ApplicationVersionString);
+ var productHeader = new ProductInfoHeaderValue(
+ _serverApplicationHost.Name.Replace(' ', '-'),
+ _serverApplicationHost.ApplicationVersionString);
services
.AddHttpClient(NamedClient.Default, c =>
{
@@ -67,7 +74,7 @@ namespace Jellyfin.Server
services.AddHttpClient(NamedClient.MusicBrainz, c =>
{
c.DefaultRequestHeaders.UserAgent.Add(productHeader);
- c.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue($"({_applicationHost.ApplicationUserAgentAddress})"));
+ c.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue($"({_serverApplicationHost.ApplicationUserAgentAddress})"));
})
.ConfigurePrimaryHttpMessageHandler(x => new DefaultHttpClientHandler());
}
@@ -77,11 +84,9 @@ namespace Jellyfin.Server
/// </summary>
/// <param name="app">The application builder.</param>
/// <param name="env">The webhost environment.</param>
- /// <param name="serverApplicationHost">The server application host.</param>
public void Configure(
IApplicationBuilder app,
- IWebHostEnvironment env,
- IServerApplicationHost serverApplicationHost)
+ IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
@@ -96,12 +101,17 @@ namespace Jellyfin.Server
app.UseResponseCompression();
- // TODO app.UseMiddleware<WebSocketMiddleware>();
+ app.UseCors(ServerCorsPolicy.DefaultPolicyName);
+
+ if (_serverConfigurationManager.Configuration.RequireHttps
+ && _serverApplicationHost.ListenWithHttps)
+ {
+ app.UseHttpsRedirection();
+ }
app.UseAuthentication();
app.UseJellyfinApiSwagger(_serverConfigurationManager);
app.UseRouting();
- app.UseCors(ServerCorsPolicy.DefaultPolicyName);
app.UseAuthorization();
if (_serverConfigurationManager.Configuration.EnableMetrics)
{
@@ -109,6 +119,12 @@ namespace Jellyfin.Server
app.UseHttpMetrics();
}
+ app.UseLanFiltering();
+ app.UseIpBasedAccessValidation();
+ app.UseBaseUrlRedirection();
+ app.UseWebSocketHandler();
+ app.UseServerStartupMessage();
+
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
@@ -118,8 +134,6 @@ namespace Jellyfin.Server
}
});
- app.Use(serverApplicationHost.ExecuteHttpHandlerAsync);
-
// Add type descriptor for legacy datetime parsing.
TypeDescriptor.AddAttributes(typeof(DateTime?), new TypeConverterAttribute(typeof(DateTimeTypeConverter)));
}