From d88469724a8e57949e19729190a1f7f64f8b61a1 Mon Sep 17 00:00:00 2001 From: Frank Tovar Date: Thu, 5 Feb 2026 16:45:08 +0100 Subject: [PATCH] Auto-set app-base meta from BasePath config at startup --- Program.cs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/Program.cs b/Program.cs index f54eaa6..339a5b2 100644 --- a/Program.cs +++ b/Program.cs @@ -75,6 +75,7 @@ var basePath = builder.Configuration["BasePath"]; if (!string.IsNullOrWhiteSpace(basePath)) { app.UsePathBase(basePath); + UpdateIndexMetaBase(app.Environment, basePath); } app.UseGlobalExceptionLogging(); @@ -100,3 +101,34 @@ app.MapResultsEndpoints(); app.MapAdminEndpoints(); app.Run(); + +static void UpdateIndexMetaBase(IWebHostEnvironment env, string basePath) +{ + try + { + var indexPath = Path.Combine(env.WebRootPath, "index.html"); + if (!File.Exists(indexPath)) return; + + var text = File.ReadAllText(indexPath); + var marker = "name=\"app-base\""; + var contentKey = "content=\""; + var markerIndex = text.IndexOf(marker, StringComparison.OrdinalIgnoreCase); + if (markerIndex < 0) return; + var contentIndex = text.IndexOf(contentKey, markerIndex, StringComparison.OrdinalIgnoreCase); + if (contentIndex < 0) return; + var valueStart = contentIndex + contentKey.Length; + var valueEnd = text.IndexOf('"', valueStart); + if (valueEnd < 0) return; + + var current = text[valueStart..valueEnd]; + var normalized = basePath.EndsWith('/') ? basePath.TrimEnd('/') : basePath; + if (current == normalized) return; + + var updated = text[..valueStart] + normalized + text[valueEnd..]; + File.WriteAllText(indexPath, updated); + } + catch + { + // If we can't rewrite, continue; frontend can still be set manually. + } +}