Browse Source

another attempt at fixing separate ports behind reverse proxy (#1994)

pull/2000/head
Jason Dove 2 months ago committed by GitHub
parent
commit
8f1b57eb88
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      CHANGELOG.md
  2. 3
      ErsatzTV.Core/Settings.cs
  3. 16
      ErsatzTV/Program.cs
  4. 2
      ErsatzTV/Properties/launchSettings.json
  5. 105
      ErsatzTV/Startup.cs

2
CHANGELOG.md

@ -12,8 +12,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). @@ -12,8 +12,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Add environment variables to allow ETV to run UI and streaming on separate ports
- `ETV_STREAMING_PORT`: port used for streaming requests, defaults to 8409
- `ETV_UI_PORT`: port used for admin UI, defaults to 8409
- `ETV_PUBLIC_STREAMING_PORT`: port used for streaming requests at reverse proxy, defaults to 8409
- `ETV_PUBLIC_UI_PORT`: port used for admin UI at reverse proxy, defaults to 8409
### Fixed
- Fix error message about synchronizing Plex collections from a Plex server that has zero collections

3
ErsatzTV.Core/Settings.cs

@ -4,7 +4,4 @@ public static class Settings @@ -4,7 +4,4 @@ public static class Settings
{
public static int UiPort { get; set; }
public static int StreamingPort { get; set; }
public static int PublicUiPort { get; set; }
public static int PublicStreamingPort { get; set; }
}

16
ErsatzTV/Program.cs

@ -141,14 +141,6 @@ public class Program @@ -141,14 +141,6 @@ public class Program
Settings.UiPort = uiPort;
string publicUiPortVariable = Environment.GetEnvironmentVariable("ETV_PUBLIC_UI_PORT");
if (!int.TryParse(publicUiPortVariable, out int publicUiPort))
{
publicUiPort = 8409;
}
Settings.PublicUiPort = publicUiPort;
string streamingPortVariable = Environment.GetEnvironmentVariable("ETV_STREAMING_PORT");
if (!int.TryParse(streamingPortVariable, out int streamingPort))
{
@ -157,14 +149,6 @@ public class Program @@ -157,14 +149,6 @@ public class Program
Settings.StreamingPort = streamingPort;
string publicStreamingPortVariable = Environment.GetEnvironmentVariable("ETV_PUBLIC_STREAMING_PORT");
if (!int.TryParse(publicStreamingPortVariable, out int publicStreamingPort))
{
publicStreamingPort = 8409;
}
Settings.PublicStreamingPort = publicStreamingPort;
return Host.CreateDefaultBuilder(args)
.ConfigureServices(services => services.AddSingleton(LoggingLevelSwitches))
.ConfigureWebHostDefaults(

2
ErsatzTV/Properties/launchSettings.json

@ -8,8 +8,6 @@ @@ -8,8 +8,6 @@
"DOTNET_ENVIRONMENT": "Development",
"ETV_STREAMING_PORT": "8409",
"ETV_UI_PORT": "8410",
"ETV_PUBLIC_STREAMING_PORT": "8409",
"ETV_PUBLIC_UI_PORT": "8410"
}
}
}

105
ErsatzTV/Startup.cs

@ -556,86 +556,49 @@ public class Startup @@ -556,86 +556,49 @@ public class Startup
app.UseResponseCompression();
if (Settings.StreamingPort == Settings.UiPort)
{
app.MapWhen(
ctx => !ctx.Request.Path.StartsWithSegments("/iptv"),
blazor =>
app.Use(
async (context, next) =>
{
if (!context.Request.Path.StartsWithSegments("/iptv") &&
context.Connection.LocalPort != Settings.UiPort)
{
blazor.UseRouting();
context.Response.StatusCode = 404;
return;
}
if (OidcHelper.IsEnabled)
{
blazor.UseAuthentication();
#pragma warning disable ASP0001
blazor.UseAuthorization();
#pragma warning restore ASP0001
}
await next(context);
});
blazor.UseEndpoints(
endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
});
app.MapWhen(
ctx => !ctx.Request.Path.StartsWithSegments("/iptv"),
blazor =>
{
blazor.UseRouting();
app.MapWhen(
ctx => ctx.Request.Path.StartsWithSegments("/iptv"),
iptv =>
{
iptv.UseRouting();
iptv.UseEndpoints(endpoints => endpoints.MapControllers());
});
}
else
{
app.MapWhen(
ctx => ctx.Request.Host.Port == Settings.UiPort || ctx.Request.Host.Port == Settings.PublicUiPort,
uiApp =>
if (OidcHelper.IsEnabled)
{
uiApp.UseRouting();
if (OidcHelper.IsEnabled)
{
uiApp.UseAuthentication();
blazor.UseAuthentication();
#pragma warning disable ASP0001
uiApp.UseAuthorization();
blazor.UseAuthorization();
#pragma warning restore ASP0001
}
uiApp.UseEndpoints(
endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
});
app.MapWhen(
ctx => ctx.Request.Host.Port == Settings.StreamingPort || ctx.Request.Host.Port == Settings.PublicStreamingPort,
streamingApp =>
{
streamingApp.UseRouting();
streamingApp.UseWhen(
c => !c.Request.Path.StartsWithSegments("/iptv"),
a =>
{
a.Run(
c =>
{
c.Response.StatusCode = 404;
return Task.CompletedTask;
});
});
}
streamingApp.UseEndpoints(endpoints => endpoints.MapControllers());
blazor.UseEndpoints(
endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
});
});
}
app.MapWhen(
ctx => ctx.Request.Path.StartsWithSegments("/iptv"),
iptv =>
{
iptv.UseRouting();
iptv.UseEndpoints(endpoints => endpoints.MapControllers());
});
}
private static void CustomServices(IServiceCollection services)

Loading…
Cancel
Save