fix(startup): gate SquidWTF checks to SquidWTF service

This commit is contained in:
joshpatra committed 2026-05-05 11:17:17 -04:00
1 parent 7f54a8aa23
commit e39d907462
1 file changed
+18 -13
+18 -13
View File
@@ -20,11 +20,6 @@ using System.IO;
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
RuntimeEnvConfiguration.AddDotEnvOverrides(builder.Configuration, builder.Environment, Console.Out); RuntimeEnvConfiguration.AddDotEnvOverrides(builder.Configuration, builder.Environment, Console.Out);
// Discover SquidWTF API and streaming endpoints from uptime feeds.
var squidWtfEndpointCatalog = await SquidWtfEndpointDiscovery.DiscoverAsync();
var squidWtfApiUrls = squidWtfEndpointCatalog.ApiUrls;
var squidWtfStreamingUrls = squidWtfEndpointCatalog.StreamingUrls;
// Configure forwarded headers for reverse proxy support (nginx, etc.) // Configure forwarded headers for reverse proxy support (nginx, etc.)
// Trust should be explicit: set ForwardedHeaders__KnownProxies and/or // Trust should be explicit: set ForwardedHeaders__KnownProxies and/or
// ForwardedHeaders__KnownNetworks (comma-separated) in deployment config. // ForwardedHeaders__KnownNetworks (comma-separated) in deployment config.
@@ -534,6 +529,13 @@ else
enableExternalPlaylists = builder.Configuration.GetValue<bool>("Subsonic:EnableExternalPlaylists", true); enableExternalPlaylists = builder.Configuration.GetValue<bool>("Subsonic:EnableExternalPlaylists", true);
} }
// Discover SquidWTF endpoints only when SquidWTF is selected as primary music service.
var squidWtfEndpointCatalog = musicService == MusicService.SquidWTF
? await SquidWtfEndpointDiscovery.DiscoverAsync()
: new SquidWtfEndpointCatalog(new List<string>(), new List<string>());
var squidWtfApiUrls = squidWtfEndpointCatalog.ApiUrls;
var squidWtfStreamingUrls = squidWtfEndpointCatalog.StreamingUrls;
// Business services - shared across backends // Business services - shared across backends
builder.Services.AddSingleton(squidWtfEndpointCatalog); builder.Services.AddSingleton(squidWtfEndpointCatalog);
builder.Services.AddSingleton<RedisCacheService>(); builder.Services.AddSingleton<RedisCacheService>();
@@ -641,14 +643,17 @@ builder.Services.AddSingleton<EndpointBenchmarkService>();
builder.Services.AddSingleton<IStartupValidator, DeezerStartupValidator>(); builder.Services.AddSingleton<IStartupValidator, DeezerStartupValidator>();
builder.Services.AddSingleton<IStartupValidator, QobuzStartupValidator>(); builder.Services.AddSingleton<IStartupValidator, QobuzStartupValidator>();
builder.Services.AddSingleton<IStartupValidator>(sp => if (musicService == MusicService.SquidWTF)
new SquidWTFStartupValidator( {
sp.GetRequiredService<Microsoft.Extensions.Options.IOptions<SquidWTFSettings>>(), builder.Services.AddSingleton<IStartupValidator>(sp =>
sp.GetRequiredService<IHttpClientFactory>().CreateClient("SquidWTF"), new SquidWTFStartupValidator(
squidWtfApiUrls, sp.GetRequiredService<Microsoft.Extensions.Options.IOptions<SquidWTFSettings>>(),
squidWtfStreamingUrls, sp.GetRequiredService<IHttpClientFactory>().CreateClient("SquidWTF"),
sp.GetRequiredService<EndpointBenchmarkService>(), squidWtfApiUrls,
sp.GetRequiredService<ILogger<SquidWTFStartupValidator>>())); squidWtfStreamingUrls,
sp.GetRequiredService<EndpointBenchmarkService>(),
sp.GetRequiredService<ILogger<SquidWTFStartupValidator>>()));
}
builder.Services.AddSingleton<IStartupValidator, LyricsStartupValidator>(); builder.Services.AddSingleton<IStartupValidator, LyricsStartupValidator>();
// Register orchestrator as hosted service // Register orchestrator as hosted service