aboutsummaryrefslogtreecommitdiff
path: root/ShareGuard.Web.Client
diff options
context:
space:
mode:
Diffstat (limited to 'ShareGuard.Web.Client')
-rw-r--r--ShareGuard.Web.Client/Pages/Redeem.razor53
-rw-r--r--ShareGuard.Web.Client/Program.cs5
-rw-r--r--ShareGuard.Web.Client/Properties/launchSettings.json25
-rw-r--r--ShareGuard.Web.Client/ShareGuard.Web.Client.csproj69
-rw-r--r--ShareGuard.Web.Client/_Imports.razor9
5 files changed, 161 insertions, 0 deletions
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)
+{
+ <p>Loading...</p>
+}
+else if (_responseCode == HttpStatusCode.Forbidden)
+{
+ <b>Invalid invitation!</b>
+}
+else if (_responseCode == HttpStatusCode.NoContent)
+{
+ <b>No template providen by admin.</b>
+}
+else if (_responseCode == HttpStatusCode.BadRequest)
+{
+ <b>An internal error occured.</b>
+}
+else
+{
+ @foreach (var configLine in _config!.Split("\n"))
+ {
+ <p>@configLine</p>
+ }
+}
+
+@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<Dictionary<string, string>>("wireguard.generateKeypair");
+ var requestBody = new Dictionary<string, string>
+ {
+ { "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 @@
+<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
+
+ <PropertyGroup>
+ <TargetFramework>net10.0</TargetFramework>
+ <Nullable>enable</Nullable>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <OverrideHtmlAssetPlaceholders>true</OverrideHtmlAssetPlaceholders>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.1"/>
+ <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="10.0.1" PrivateAssets="all"/>
+ </ItemGroup>
+
+ <ItemGroup>
+ <_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" />
+ </ItemGroup>
+
+</Project>
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