From 90549fd2bce62723c35cc7d40551f1c5f2d2ba9d Mon Sep 17 00:00:00 2001 From: Rory& Date: Tue, 11 Mar 2025 07:41:46 +0100 Subject: Synapse admin tooling, well known res work --- MatrixUtils.Web/Pages/Dev/WellKnownRes.razor | 67 +++++++++++++++++++++------- 1 file changed, 51 insertions(+), 16 deletions(-) (limited to 'MatrixUtils.Web/Pages/Dev') diff --git a/MatrixUtils.Web/Pages/Dev/WellKnownRes.razor b/MatrixUtils.Web/Pages/Dev/WellKnownRes.razor index 36fa247..9dc9556 100644 --- a/MatrixUtils.Web/Pages/Dev/WellKnownRes.razor +++ b/MatrixUtils.Web/Pages/Dev/WellKnownRes.razor @@ -1,6 +1,7 @@ @page "/Dev/WellKnownRes" @using ArcaneLibs.Extensions -@using LibMatrix.Services.WellKnownResolvers +@using LibMatrix.Services.WellKnownResolver +@using LibMatrix.Services.WellKnownResolver.WellKnownResolvers @inject HomeserverResolverService legacyResolver @inject WellKnownResolverService rewriteResolver @inject ClientWellKnownResolver rewriteClientResolver @@ -9,18 +10,39 @@ Room ID: Execute +Stats:
+Server count: @entries.Count
+Client server resolution rate (N/O/T): @entries.Count(x => x.HasClientWellKnown)/@entries.Count(x => !string.IsNullOrWhiteSpace(x.LegacyResolutionResult?.Client))/@entries.Count +
+Server server resolution rate (N/T): @entries.Count(x => x.HasServerWellKnown)/@entries.Count
+Support resolution rate (N/T): @entries.Count(x => x.HasSupportWellKnown)/@entries.Count
- - + + + @foreach (var entry in entries) { - + - - + + + + + + }
HomeserverLegacy client URLRewrite client URLClient APIServer APIHas support record
@entry.Homeserver@(entry.LegacyClientUrl ?? "null")@(entry.RewriteClientUrl ?? "null") + L: @entry.LegacyResolutionResult?.Client
+ R: @entry.WellKnownResolutionResult?.ClientWellKnown?.Content?.Homeserver.BaseUrl +
+ L: @entry.LegacyResolutionResult?.Server
+ R: @entry.WellKnownResolutionResult?.ServerWellKnown?.Content?.Homeserver +
@(entry.HasSupportWellKnown ? "Y" : "X")
+
+
@(entry.WellKnownResolutionResult?.ToJson() ?? "null")
+
+
@@ -44,8 +66,12 @@ private class TableEntry { public required string Homeserver { get; set; } - public string? LegacyClientUrl { get; set; } - public string? RewriteClientUrl { get; set; } + public HomeserverResolverService.WellKnownUris? LegacyResolutionResult { get; set; } + public WellKnownResolverService.WellKnownRecords? WellKnownResolutionResult { get; set; } + + public bool HasClientWellKnown => WellKnownResolutionResult?.ClientWellKnown is { Content.Homeserver.BaseUrl: { Length: > 0 } }; + public bool HasServerWellKnown => WellKnownResolutionResult?.ServerWellKnown is { Content.Homeserver.Length: > 0 }; + public bool HasSupportWellKnown => WellKnownResolutionResult?.SupportWellKnown?.Content is not null and not { SupportPage: null, Contacts: null or { Count: 0 } }; } private async Task Execute() { @@ -55,7 +81,7 @@ foreach (var homeserver in homeservers) { var e = new TableEntry() { Homeserver = homeserver }; _ = TryResolveLegacy(e); - _ = TryResolveRewrite(e); + _ = TryFullResolveRewrite(e); entries.Add(e); } @@ -65,23 +91,32 @@ private async Task TryResolveLegacy(TableEntry entry) { try { - entry.LegacyClientUrl = (await legacyResolver.ResolveHomeserverFromWellKnown(entry.Homeserver, enableServer: false)).Client; + var cTask = legacyResolver.ResolveHomeserverFromWellKnown(entry.Homeserver, enableServer: false); + var sTask = legacyResolver.ResolveHomeserverFromWellKnown(entry.Homeserver, enableClient: false); + entry.LegacyResolutionResult = (await cTask); + entry.LegacyResolutionResult.Server = (await sTask).Server; StateHasChanged(); } catch { } } - private async Task TryResolveRewrite(TableEntry entry) { + private async Task TryFullResolveRewrite(TableEntry entry) { try { - entry.RewriteClientUrl = (await rewriteClientResolver.TryResolveClientWellKnown(entry.Homeserver)).WellKnown.Homeserver.BaseUrl; + entry.WellKnownResolutionResult = await rewriteResolver.TryResolveWellKnownRecords(entry.Homeserver); StateHasChanged(); } catch { } } - - private string GetColor(TableEntry entry) { - if (entry.LegacyClientUrl == entry.RewriteClientUrl && entry.RewriteClientUrl == null) return "#333333"; - if (entry.LegacyClientUrl == entry.RewriteClientUrl?.TrimEnd('/')) return "#008800"; + + private string GetClientColor(TableEntry entry) { + if (entry.LegacyResolutionResult?.Client == entry.WellKnownResolutionResult?.ClientWellKnown?.Content?.Homeserver?.BaseUrl && entry.WellKnownResolutionResult?.ClientWellKnown?.Content?.Homeserver?.BaseUrl == null) return "#333333"; + if (entry.LegacyResolutionResult?.Client == entry.WellKnownResolutionResult?.ClientWellKnown?.Content?.Homeserver?.BaseUrl?.TrimEnd('/')) return "#008800"; + return "#ff0000"; + } + + private string GetServerColor(TableEntry entry) { + if (entry.LegacyResolutionResult?.Server == entry.WellKnownResolutionResult?.ServerWellKnown?.Content?.Homeserver && entry.WellKnownResolutionResult?.ServerWellKnown?.Content?.Homeserver == null) return "#333333"; + if (entry.LegacyResolutionResult?.Server == entry.WellKnownResolutionResult?.ServerWellKnown?.Content?.Homeserver.TrimEnd('/')) return "#008800"; return "#ff0000"; } -- cgit 1.5.1