From 52718691d9b0d5162f37443d187fdfe5e79fd765 Mon Sep 17 00:00:00 2001 From: Tim Date: Mon, 29 Dec 2025 00:10:49 +0100 Subject: Validate IP Address and Name when generating link --- README.md | 2 +- ShareGuard.Web/Components/Pages/Admin.razor | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6a5f4bb..deb8fdc 100644 --- a/README.md +++ b/README.md @@ -4,5 +4,5 @@ ## TODOs - [ ] Admin interface: Protect with OAuth -- [ ] Admin interface: validation of IP Address(es) +- [x] Admin interface: validation of IP Address(es) - [ ] Admin interface: Show link and qr code after gernerating diff --git a/ShareGuard.Web/Components/Pages/Admin.razor b/ShareGuard.Web/Components/Pages/Admin.razor index 3884630..1eab4f6 100644 --- a/ShareGuard.Web/Components/Pages/Admin.razor +++ b/ShareGuard.Web/Components/Pages/Admin.razor @@ -1,9 +1,15 @@ @page "/admin/" +@using System.Text.RegularExpressions @using ShareGuard.Web.DbModels @rendermode InteractiveServer ShareGuard Admin +@if (_error != null) +{ +
@_error
+} +

ShareGuard Admin

Generate Share-Link
@@ -74,6 +80,7 @@ @code { private const string TemplateFilePath = "./wg-quick-template.txt"; + private string? _error; private string? _template; private void SaveTemplate() @@ -96,8 +103,26 @@ private string _newName = ""; private string _newIpAddress = ""; + private bool IpInputIsValid(string input) + { + var ipRegex = new Regex("([0-9a-fA-F:.]+\\/[0-9]{1,3}(, ?)?)+"); + return ipRegex.IsMatch(input); + } + private void GenerateNewLink() { + if (!IpInputIsValid(_newIpAddress)) + { + _error = "IP input is not valid."; + return; + } + + if (string.IsNullOrEmpty(_newName)) + { + _error = "Name input is not valid."; + return; + } + using var db = new Database(); db.Links.Add(new Link { @@ -106,6 +131,7 @@ Token = Link.GenerateToken(db) }); db.SaveChanges(); + _error = null; OnInitialized(); } -- cgit v1.2.3