mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-05-30 12:28:27 +01:00
Merge remote-tracking branch 'upstream/master' into api-doc-css
This commit is contained in:
@@ -1,7 +1,12 @@
|
||||
using System.Net.Http;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Net.Http.Headers;
|
||||
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;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
@@ -18,14 +23,19 @@ namespace Jellyfin.Server
|
||||
public class Startup
|
||||
{
|
||||
private readonly IServerConfigurationManager _serverConfigurationManager;
|
||||
private readonly IServerApplicationHost _serverApplicationHost;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="Startup" /> class.
|
||||
/// </summary>
|
||||
/// <param name="serverConfigurationManager">The server configuration manager.</param>
|
||||
public Startup(IServerConfigurationManager serverConfigurationManager)
|
||||
/// <param name="serverApplicationHost">The server application host.</param>
|
||||
public Startup(
|
||||
IServerConfigurationManager serverConfigurationManager,
|
||||
IServerApplicationHost serverApplicationHost)
|
||||
{
|
||||
_serverConfigurationManager = serverConfigurationManager;
|
||||
_serverApplicationHost = serverApplicationHost;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -36,7 +46,13 @@ namespace Jellyfin.Server
|
||||
{
|
||||
services.AddResponseCompression();
|
||||
services.AddHttpContextAccessor();
|
||||
services.AddJellyfinApi(_serverConfigurationManager.Configuration.BaseUrl.TrimStart('/'));
|
||||
services.AddHttpsRedirection(options =>
|
||||
{
|
||||
options.HttpsPort = _serverApplicationHost.HttpsPort;
|
||||
});
|
||||
services.AddJellyfinApi(
|
||||
_serverConfigurationManager.Configuration.BaseUrl.TrimStart('/'),
|
||||
_serverApplicationHost.GetApiPluginAssemblies());
|
||||
|
||||
services.AddJellyfinApiSwagger();
|
||||
|
||||
@@ -44,7 +60,23 @@ namespace Jellyfin.Server
|
||||
services.AddCustomAuthentication();
|
||||
|
||||
services.AddJellyfinApiAuthorization();
|
||||
services.AddHttpClient();
|
||||
|
||||
var productHeader = new ProductInfoHeaderValue(
|
||||
_serverApplicationHost.Name.Replace(' ', '-'),
|
||||
_serverApplicationHost.ApplicationVersionString);
|
||||
services
|
||||
.AddHttpClient(NamedClient.Default, c =>
|
||||
{
|
||||
c.DefaultRequestHeaders.UserAgent.Add(productHeader);
|
||||
})
|
||||
.ConfigurePrimaryHttpMessageHandler(x => new DefaultHttpClientHandler());
|
||||
|
||||
services.AddHttpClient(NamedClient.MusicBrainz, c =>
|
||||
{
|
||||
c.DefaultRequestHeaders.UserAgent.Add(productHeader);
|
||||
c.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue($"({_serverApplicationHost.ApplicationUserAgentAddress})"));
|
||||
})
|
||||
.ConfigurePrimaryHttpMessageHandler(x => new DefaultHttpClientHandler());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -52,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())
|
||||
{
|
||||
@@ -71,13 +101,18 @@ namespace Jellyfin.Server
|
||||
|
||||
app.UseResponseCompression();
|
||||
|
||||
// TODO app.UseMiddleware<WebSocketMiddleware>();
|
||||
app.UseCors(ServerCorsPolicy.DefaultPolicyName);
|
||||
|
||||
if (_serverConfigurationManager.Configuration.RequireHttps
|
||||
&& _serverApplicationHost.ListenWithHttps)
|
||||
{
|
||||
app.UseHttpsRedirection();
|
||||
}
|
||||
|
||||
app.UseStaticFiles();
|
||||
app.UseAuthentication();
|
||||
app.UseJellyfinApiSwagger(_serverConfigurationManager);
|
||||
app.UseRouting();
|
||||
app.UseCors(ServerCorsPolicy.DefaultPolicyName);
|
||||
app.UseAuthorization();
|
||||
if (_serverConfigurationManager.Configuration.EnableMetrics)
|
||||
{
|
||||
@@ -85,6 +120,12 @@ namespace Jellyfin.Server
|
||||
app.UseHttpMetrics();
|
||||
}
|
||||
|
||||
app.UseLanFiltering();
|
||||
app.UseIpBasedAccessValidation();
|
||||
app.UseBaseUrlRedirection();
|
||||
app.UseWebSocketHandler();
|
||||
app.UseServerStartupMessage();
|
||||
|
||||
app.UseEndpoints(endpoints =>
|
||||
{
|
||||
endpoints.MapControllers();
|
||||
@@ -94,7 +135,8 @@ namespace Jellyfin.Server
|
||||
}
|
||||
});
|
||||
|
||||
app.Use(serverApplicationHost.ExecuteHttpHandlerAsync);
|
||||
// Add type descriptor for legacy datetime parsing.
|
||||
TypeDescriptor.AddAttributes(typeof(DateTime?), new TypeConverterAttribute(typeof(DateTimeTypeConverter)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user