From 8123f0ffd1b54cd9d31d44f95ba901f4707c55c0 Mon Sep 17 00:00:00 2001 From: Rory& Date: Fri, 28 Feb 2025 02:26:44 +0100 Subject: Work on rewriting homeserver resolution --- LibMatrix | 2 +- MatrixUtils.Web/Pages/Dev/DevUtilities.razor | 1 + MatrixUtils.Web/Pages/Dev/WellKnownRes.razor | 88 ++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 MatrixUtils.Web/Pages/Dev/WellKnownRes.razor diff --git a/LibMatrix b/LibMatrix index 4928d96..49bb14a 160000 --- a/LibMatrix +++ b/LibMatrix @@ -1 +1 @@ -Subproject commit 4928d96d74d5bb559c83caeff33329fa629999dc +Subproject commit 49bb14a7f0906b6e88b7613ac1bc508d1709c06d diff --git a/MatrixUtils.Web/Pages/Dev/DevUtilities.razor b/MatrixUtils.Web/Pages/Dev/DevUtilities.razor index d81a790..636c0f9 100644 --- a/MatrixUtils.Web/Pages/Dev/DevUtilities.razor +++ b/MatrixUtils.Web/Pages/Dev/DevUtilities.razor @@ -4,6 +4,7 @@

Debug Tools


+Well known res tests @if (Rooms.Count == 0) {

You are not in any rooms!

@*

Loading progress: @checkedRoomCount/@totalRoomCount

*@ diff --git a/MatrixUtils.Web/Pages/Dev/WellKnownRes.razor b/MatrixUtils.Web/Pages/Dev/WellKnownRes.razor new file mode 100644 index 0000000..36fa247 --- /dev/null +++ b/MatrixUtils.Web/Pages/Dev/WellKnownRes.razor @@ -0,0 +1,88 @@ +@page "/Dev/WellKnownRes" +@using ArcaneLibs.Extensions +@using LibMatrix.Services.WellKnownResolvers +@inject HomeserverResolverService legacyResolver +@inject WellKnownResolverService rewriteResolver +@inject ClientWellKnownResolver rewriteClientResolver +

Known Homeserver List

+
+ +Room ID: Execute + + + + + + + + + @foreach (var entry in entries) { + + + + + + } +
HomeserverLegacy client URLRewrite client URL
@entry.Homeserver@(entry.LegacyClientUrl ?? "null")@(entry.RewriteClientUrl ?? "null")
+ +@code { + private List entries = new(); + + [SupplyParameterFromQuery] + public string? RoomId { get; set; } + + AuthenticatedHomeserverGeneric? hs { get; set; } + + protected override async Task OnInitializedAsync() { + hs = await RmuStorage.GetCurrentSessionOrNavigate(); + if (hs is null) return; + + if (RoomId is not null) { + await Execute(); + } + } + + private class TableEntry { + public required string Homeserver { get; set; } + public string? LegacyClientUrl { get; set; } + public string? RewriteClientUrl { get; set; } + } + + private async Task Execute() { + var members = await hs!.GetRoom(RoomId!).GetMembersListAsync(); + var homeservers = members.Select(x => x.StateKey!.Split(':', 2)[1]).Distinct().ToList(); + var entries = new List(); + foreach (var homeserver in homeservers) { + var e = new TableEntry() { Homeserver = homeserver }; + _ = TryResolveLegacy(e); + _ = TryResolveRewrite(e); + entries.Add(e); + } + + this.entries = entries; + StateHasChanged(); + } + + private async Task TryResolveLegacy(TableEntry entry) { + try { + entry.LegacyClientUrl = (await legacyResolver.ResolveHomeserverFromWellKnown(entry.Homeserver, enableServer: false)).Client; + StateHasChanged(); + } + catch { } + } + + private async Task TryResolveRewrite(TableEntry entry) { + try { + entry.RewriteClientUrl = (await rewriteClientResolver.TryResolveClientWellKnown(entry.Homeserver)).WellKnown.Homeserver.BaseUrl; + 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"; + return "#ff0000"; + } + +} \ No newline at end of file -- cgit 1.5.1