about summary refs log tree commit diff
path: root/MatrixUtils.Web
diff options
context:
space:
mode:
Diffstat (limited to 'MatrixUtils.Web')
-rw-r--r--MatrixUtils.Web/Pages/Dev/DevUtilities.razor1
-rw-r--r--MatrixUtils.Web/Pages/Dev/WellKnownRes.razor88
2 files changed, 89 insertions, 0 deletions
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 @@ <h3>Debug Tools</h3> <hr/> +<LinkButton href="/Dev/WellKnownRes">Well known res tests</LinkButton> @if (Rooms.Count == 0) { <p>You are not in any rooms!</p> @* <p>Loading progress: @checkedRoomCount/@totalRoomCount</p> *@ 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 +<h3>Known Homeserver List</h3> +<hr/> + +<span>Room ID: <FancyTextBox @bind-Value="@RoomId"/><LinkButton OnClick="@Execute">Execute</LinkButton></span> + + +<table class="table-bordered"> + <thead> + <td>Homeserver</td> + <td>Legacy client URL</td> + <td>Rewrite client URL</td> + </thead> + @foreach (var entry in entries) { + <tr style="background-color: @GetColor(entry)"> + <td>@entry.Homeserver</td> + <td>@(entry.LegacyClientUrl ?? "null")</td> + <td>@(entry.RewriteClientUrl ?? "null")</td> + </tr> + } +</table> + +@code { + private List<TableEntry> 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<TableEntry>(); + 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