diff options
author | Rory& <root@rory.gay> | 2024-05-14 17:49:09 +0200 |
---|---|---|
committer | Rory& <root@rory.gay> | 2024-05-14 17:49:09 +0200 |
commit | 41c5a84dacfd036b8d8f01f72226ac5a519995e3 (patch) | |
tree | a4bfc76541692cbbb0fc18f34463cf31a57440f5 /MatrixUtils.Web/Pages/Tools/MediaLocator.razor | |
parent | Improve the heatmap layout (diff) | |
download | MatrixUtils-41c5a84dacfd036b8d8f01f72226ac5a519995e3.tar.xz |
Organise tools somewhat, set proper icons for nav menu
Diffstat (limited to 'MatrixUtils.Web/Pages/Tools/MediaLocator.razor')
-rw-r--r-- | MatrixUtils.Web/Pages/Tools/MediaLocator.razor | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/MatrixUtils.Web/Pages/Tools/MediaLocator.razor b/MatrixUtils.Web/Pages/Tools/MediaLocator.razor deleted file mode 100644 index 6e87926..0000000 --- a/MatrixUtils.Web/Pages/Tools/MediaLocator.razor +++ /dev/null @@ -1,109 +0,0 @@ -@page "/Tools/MediaLocator" -@inject HttpClient Http -<h3>Media locator</h3> -<hr/> - -<b>This is going to expose your IP address to all these homeservers!</b> -<details> - <summary>Checked homeserver list (@homeservers.Count entries)</summary> - <ul> - @foreach (var hs in homeservers) { - <li>@hs</li> - } - </ul> -</details> -<button @onclick="addMoreHomeservers">Add more homeservers</button> -<br/> -<span>MXC URL: </span> -<input type="text" @bind="mxcUrl"/> -<button @onclick="executeSearch">Search</button> - -@if (successResults.Count > 0) { - <h4>Successes</h4> - <ul> - @foreach (var result in successResults) { - <li>@result</li> - } - </ul> -} - -@if (errorResults.Count > 0) { - <h4>Errors</h4> - <ul> - @foreach (var result in errorResults) { - <li>@result</li> - } - </ul> -} - - -@code { - string mxcUrl { get; set; } - readonly List<string> successResults = new(); - readonly List<string> errorResults = new(); - readonly List<string> homeservers = new(); - - protected override async Task OnInitializedAsync() { - await base.OnInitializedAsync(); - homeservers.AddRange(new[] { - "matrix.org", - "feline.support", - "rory.gay", - "the-apothecary.club", - "envs.net", - "projectsegfau.lt" - }); - } - - Task executeSearch() { - var sem = new SemaphoreSlim(128, 128); - homeservers.ForEach(async hs => { - await sem.WaitAsync(); - var httpClient = new HttpClient { BaseAddress = new Uri(hs) }; - httpClient.Timeout = TimeSpan.FromSeconds(5); - var rmu = mxcUrl.Replace("mxc://", $"{hs}/_matrix/media/v3/download/"); - try { - var res = await httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Head, rmu)); - if (res.IsSuccessStatusCode) { - successResults.Add($"{hs}: found - {res.Content.Headers.ContentLength} bytes"); - StateHasChanged(); - return; - } - errorResults.Add($"Error: {hs} - {res.StatusCode}\n" + await res.Content.ReadAsStringAsync()); - } - catch (Exception e) { - errorResults.Add($"Error: {e}"); - } - finally { - sem.Release(); - } - StateHasChanged(); - }); - return Task.CompletedTask; - } - - async Task addMoreHomeservers() { - var res = await Http.GetAsync("/homeservers.txt"); - var content = await res.Content.ReadAsStringAsync(); - homeservers.Clear(); - var lines = content.Split("\n"); - - var sem = new SemaphoreSlim(128, 128); - lines.ToList().ForEach(async line => { - await sem.WaitAsync(); - try { - homeservers.Add((await hsResolver.ResolveHomeserverFromWellKnown(line)).Client); - StateHasChanged(); - } - catch (Exception e) { - Console.WriteLine(e); - } - finally { - sem.Release(); - } - }); - - StateHasChanged(); - } - -} |