aboutsummaryrefslogtreecommitdiff
path: root/ShareGuard.Web/Components
diff options
context:
space:
mode:
authorTim <contact@bytim.eu>2025-12-29 00:10:49 +0100
committerTim <contact@bytim.eu>2025-12-29 00:10:49 +0100
commit52718691d9b0d5162f37443d187fdfe5e79fd765 (patch)
treee0b2edcfaa69e650a12de79fa7955692a693831a /ShareGuard.Web/Components
parent771b949618bb4e07c09c2fb94a7f92e13f471b9e (diff)
Validate IP Address and Name when generating linkHEADmaster
Diffstat (limited to 'ShareGuard.Web/Components')
-rw-r--r--ShareGuard.Web/Components/Pages/Admin.razor26
1 files changed, 26 insertions, 0 deletions
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
<PageTitle>ShareGuard Admin</PageTitle>
+@if (_error != null)
+{
+ <div class="padding error-container">@_error</div>
+}
+
<h2>ShareGuard Admin</h2>
<h5>Generate Share-Link</h5>
@@ -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();
}