Wrap application in baseurl
This commit is contained in:
parent
7504f067ef
commit
4e52fe1060
|
@ -44,11 +44,7 @@ namespace Jellyfin.Server.Middleware
|
||||||
var localPath = httpContext.Request.Path.ToString();
|
var localPath = httpContext.Request.Path.ToString();
|
||||||
var baseUrlPrefix = serverConfigurationManager.Configuration.BaseUrl;
|
var baseUrlPrefix = serverConfigurationManager.Configuration.BaseUrl;
|
||||||
|
|
||||||
if (string.Equals(localPath, baseUrlPrefix + "/", StringComparison.OrdinalIgnoreCase)
|
if (!localPath.StartsWith(baseUrlPrefix, StringComparison.OrdinalIgnoreCase))
|
||||||
|| string.Equals(localPath, baseUrlPrefix, StringComparison.OrdinalIgnoreCase)
|
|
||||||
|| string.Equals(localPath, "/", StringComparison.OrdinalIgnoreCase)
|
|
||||||
|| string.IsNullOrEmpty(localPath)
|
|
||||||
|| !localPath.StartsWith(baseUrlPrefix, StringComparison.OrdinalIgnoreCase))
|
|
||||||
{
|
{
|
||||||
// Always redirect back to the default path if the base prefix is invalid or missing
|
// Always redirect back to the default path if the base prefix is invalid or missing
|
||||||
_logger.LogDebug("Normalizing an URL at {LocalPath}", localPath);
|
_logger.LogDebug("Normalizing an URL at {LocalPath}", localPath);
|
||||||
|
|
|
@ -88,71 +88,78 @@ namespace Jellyfin.Server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="app">The application builder.</param>
|
/// <param name="app">The application builder.</param>
|
||||||
/// <param name="env">The webhost environment.</param>
|
/// <param name="env">The webhost environment.</param>
|
||||||
/// <param name="serverApplicationHost">The server application host.</param>
|
|
||||||
/// <param name="appConfig">The application config.</param>
|
/// <param name="appConfig">The application config.</param>
|
||||||
public void Configure(
|
public void Configure(
|
||||||
IApplicationBuilder app,
|
IApplicationBuilder app,
|
||||||
IWebHostEnvironment env,
|
IWebHostEnvironment env,
|
||||||
IServerApplicationHost serverApplicationHost,
|
|
||||||
IConfiguration appConfig)
|
IConfiguration appConfig)
|
||||||
{
|
{
|
||||||
if (env.IsDevelopment())
|
// Only add base url redirection if a base url is set.
|
||||||
|
if (!string.IsNullOrEmpty(_serverConfigurationManager.Configuration.BaseUrl))
|
||||||
{
|
{
|
||||||
app.UseDeveloperExceptionPage();
|
app.UseBaseUrlRedirection();
|
||||||
}
|
}
|
||||||
|
|
||||||
app.UseMiddleware<ExceptionMiddleware>();
|
// Wrap rest of configuration so everything only listens on BaseUrl.
|
||||||
|
app.Map(_serverConfigurationManager.Configuration.BaseUrl, mainApp =>
|
||||||
app.UseMiddleware<ResponseTimeMiddleware>();
|
|
||||||
|
|
||||||
app.UseWebSockets();
|
|
||||||
|
|
||||||
app.UseResponseCompression();
|
|
||||||
|
|
||||||
app.UseCors(ServerCorsPolicy.DefaultPolicyName);
|
|
||||||
|
|
||||||
if (_serverConfigurationManager.Configuration.RequireHttps
|
|
||||||
&& _serverApplicationHost.ListenWithHttps)
|
|
||||||
{
|
{
|
||||||
app.UseHttpsRedirection();
|
if (env.IsDevelopment())
|
||||||
}
|
|
||||||
|
|
||||||
app.UseStaticFiles();
|
|
||||||
app.UsePathBase(_serverConfigurationManager.Configuration.BaseUrl);
|
|
||||||
if (appConfig.HostWebClient())
|
|
||||||
{
|
|
||||||
app.UseStaticFiles(new StaticFileOptions
|
|
||||||
{
|
{
|
||||||
FileProvider = new PhysicalFileProvider(_serverConfigurationManager.ApplicationPaths.WebPath),
|
mainApp.UseDeveloperExceptionPage();
|
||||||
RequestPath = "/web"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
app.UseAuthentication();
|
|
||||||
app.UseJellyfinApiSwagger(_serverConfigurationManager);
|
|
||||||
app.UseRouting();
|
|
||||||
app.UseAuthorization();
|
|
||||||
if (_serverConfigurationManager.Configuration.EnableMetrics)
|
|
||||||
{
|
|
||||||
// Must be registered after any middleware that could change HTTP response codes or the data will be bad
|
|
||||||
app.UseHttpMetrics();
|
|
||||||
}
|
|
||||||
|
|
||||||
app.UseLanFiltering();
|
|
||||||
app.UseIpBasedAccessValidation();
|
|
||||||
app.UseBaseUrlRedirection();
|
|
||||||
app.UseWebSocketHandler();
|
|
||||||
app.UseServerStartupMessage();
|
|
||||||
|
|
||||||
app.UseEndpoints(endpoints =>
|
|
||||||
{
|
|
||||||
endpoints.MapControllers();
|
|
||||||
if (_serverConfigurationManager.Configuration.EnableMetrics)
|
|
||||||
{
|
|
||||||
endpoints.MapMetrics(_serverConfigurationManager.Configuration.BaseUrl.TrimStart('/') + "/metrics");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
endpoints.MapHealthChecks(_serverConfigurationManager.Configuration.BaseUrl.TrimStart('/') + "/health");
|
mainApp.UseMiddleware<ExceptionMiddleware>();
|
||||||
|
|
||||||
|
mainApp.UseMiddleware<ResponseTimeMiddleware>();
|
||||||
|
|
||||||
|
mainApp.UseWebSockets();
|
||||||
|
|
||||||
|
mainApp.UseResponseCompression();
|
||||||
|
|
||||||
|
mainApp.UseCors(ServerCorsPolicy.DefaultPolicyName);
|
||||||
|
|
||||||
|
if (_serverConfigurationManager.Configuration.RequireHttps
|
||||||
|
&& _serverApplicationHost.ListenWithHttps)
|
||||||
|
{
|
||||||
|
mainApp.UseHttpsRedirection();
|
||||||
|
}
|
||||||
|
|
||||||
|
mainApp.UsePathBase(_serverConfigurationManager.Configuration.BaseUrl);
|
||||||
|
mainApp.UseStaticFiles();
|
||||||
|
if (appConfig.HostWebClient())
|
||||||
|
{
|
||||||
|
mainApp.UseStaticFiles(new StaticFileOptions
|
||||||
|
{
|
||||||
|
FileProvider = new PhysicalFileProvider(_serverConfigurationManager.ApplicationPaths.WebPath),
|
||||||
|
RequestPath = "/web"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
mainApp.UseAuthentication();
|
||||||
|
mainApp.UseJellyfinApiSwagger(_serverConfigurationManager);
|
||||||
|
mainApp.UseRouting();
|
||||||
|
mainApp.UseAuthorization();
|
||||||
|
if (_serverConfigurationManager.Configuration.EnableMetrics)
|
||||||
|
{
|
||||||
|
// Must be registered after any middleware that could change HTTP response codes or the data will be bad
|
||||||
|
mainApp.UseHttpMetrics();
|
||||||
|
}
|
||||||
|
|
||||||
|
mainApp.UseLanFiltering();
|
||||||
|
mainApp.UseIpBasedAccessValidation();
|
||||||
|
mainApp.UseWebSocketHandler();
|
||||||
|
mainApp.UseServerStartupMessage();
|
||||||
|
|
||||||
|
mainApp.UseEndpoints(endpoints =>
|
||||||
|
{
|
||||||
|
endpoints.MapControllers();
|
||||||
|
if (_serverConfigurationManager.Configuration.EnableMetrics)
|
||||||
|
{
|
||||||
|
endpoints.MapMetrics("/metrics");
|
||||||
|
}
|
||||||
|
|
||||||
|
endpoints.MapHealthChecks("/health");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Add type descriptor for legacy datetime parsing.
|
// Add type descriptor for legacy datetime parsing.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user