From 771b949618bb4e07c09c2fb94a7f92e13f471b9e Mon Sep 17 00:00:00 2001 From: Tim Date: Thu, 25 Dec 2025 19:59:26 +0100 Subject: Initial commit --- ShareGuard.Web.Client/Pages/Redeem.razor | 53 +++++++++++++++++ ShareGuard.Web.Client/Program.cs | 5 ++ .../Properties/launchSettings.json | 25 ++++++++ ShareGuard.Web.Client/ShareGuard.Web.Client.csproj | 69 ++++++++++++++++++++++ ShareGuard.Web.Client/_Imports.razor | 9 +++ 5 files changed, 161 insertions(+) create mode 100644 ShareGuard.Web.Client/Pages/Redeem.razor create mode 100644 ShareGuard.Web.Client/Program.cs create mode 100644 ShareGuard.Web.Client/Properties/launchSettings.json create mode 100644 ShareGuard.Web.Client/ShareGuard.Web.Client.csproj create mode 100644 ShareGuard.Web.Client/_Imports.razor (limited to 'ShareGuard.Web.Client') diff --git a/ShareGuard.Web.Client/Pages/Redeem.razor b/ShareGuard.Web.Client/Pages/Redeem.razor new file mode 100644 index 0000000..d6abc95 --- /dev/null +++ b/ShareGuard.Web.Client/Pages/Redeem.razor @@ -0,0 +1,53 @@ +@page "/redeem/{Token}/" +@using System.Net +@rendermode @(new InteractiveWebAssemblyRenderMode(false)) +@inject IJSRuntime Js +@inject NavigationManager navigation + +@if (_responseCode == null) +{ +

Loading...

+} +else if (_responseCode == HttpStatusCode.Forbidden) +{ + Invalid invitation! +} +else if (_responseCode == HttpStatusCode.NoContent) +{ + No template providen by admin. +} +else if (_responseCode == HttpStatusCode.BadRequest) +{ + An internal error occured. +} +else +{ + @foreach (var configLine in _config!.Split("\n")) + { +

@configLine

+ } +} + +@code { + private readonly HttpClient _httpClient = new(); + [Parameter] public string Token { get; set; } + private HttpStatusCode? _responseCode; + private string? _config; + + protected override async Task OnInitializedAsync() + { + var keypair = await Js.InvokeAsync>("wireguard.generateKeypair"); + var requestBody = new Dictionary + { + { "PublicKey", keypair["publicKey"] } + }; + var response = await _httpClient.PostAsync($"{navigation.BaseUri}api/redeem/{Token}/", new FormUrlEncodedContent(requestBody)); + _responseCode = response.StatusCode; + var template = await response.Content.ReadAsStringAsync(); + + if (_responseCode == HttpStatusCode.OK) + _config = template.Replace("{publicKey}", keypair["publicKey"]) + .Replace("{privateKey}", keypair["privateKey"]); + } + +} diff --git a/ShareGuard.Web.Client/Program.cs b/ShareGuard.Web.Client/Program.cs new file mode 100644 index 0000000..91db88a --- /dev/null +++ b/ShareGuard.Web.Client/Program.cs @@ -0,0 +1,5 @@ +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; + +var builder = WebAssemblyHostBuilder.CreateDefault(args); + +await builder.Build().RunAsync(); \ No newline at end of file diff --git a/ShareGuard.Web.Client/Properties/launchSettings.json b/ShareGuard.Web.Client/Properties/launchSettings.json new file mode 100644 index 0000000..421d5de --- /dev/null +++ b/ShareGuard.Web.Client/Properties/launchSettings.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "http://localhost:5225", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "https://localhost:7291;http://localhost:5225", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/ShareGuard.Web.Client/ShareGuard.Web.Client.csproj b/ShareGuard.Web.Client/ShareGuard.Web.Client.csproj new file mode 100644 index 0000000..b0dfa37 --- /dev/null +++ b/ShareGuard.Web.Client/ShareGuard.Web.Client.csproj @@ -0,0 +1,69 @@ + + + + net10.0 + enable + enable + true + + + + + + + + + <_ContentIncludedByDefault Remove="Layout\MainLayout.razor"/> + <_ContentIncludedByDefault Remove="Layout\NavMenu.razor"/> + <_ContentIncludedByDefault Remove="wwwroot\css\app.css" /> + <_ContentIncludedByDefault Remove="wwwroot\favicon.png" /> + <_ContentIncludedByDefault Remove="wwwroot\icon-192.png" /> + <_ContentIncludedByDefault Remove="wwwroot\index.html" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.min.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.min.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.rtl.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.rtl.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.rtl.min.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.rtl.min.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.min.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.min.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.rtl.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.rtl.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.rtl.min.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.rtl.min.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.min.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.min.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.rtl.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.rtl.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.rtl.min.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-utilities.rtl.min.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.min.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.min.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.rtl.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.rtl.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.rtl.min.css" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.rtl.min.css.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.js" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.js.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.min.js" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.min.js.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.esm.js" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.esm.js.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.esm.min.js" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.esm.min.js.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.js" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.js.map" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.min.js" /> + <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.min.js.map" /> + <_ContentIncludedByDefault Remove="wwwroot\sample-data\weather.json" /> + + + diff --git a/ShareGuard.Web.Client/_Imports.razor b/ShareGuard.Web.Client/_Imports.razor new file mode 100644 index 0000000..8233d90 --- /dev/null +++ b/ShareGuard.Web.Client/_Imports.razor @@ -0,0 +1,9 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using Microsoft.JSInterop +@using ShareGuard.Web.Client \ No newline at end of file -- cgit v1.2.3