diff --git a/Server/Components/Pages/ServerConfig.razor.cs b/Server/Components/Pages/ServerConfig.razor.cs index c0c37f99f..0359ae0b5 100644 --- a/Server/Components/Pages/ServerConfig.razor.cs +++ b/Server/Components/Pages/ServerConfig.razor.cs @@ -105,13 +105,34 @@ private void AddBannedDevice() private void AddKnownProxy() { + // Ensure _knownProxyToAdd is not null or empty before proceeding + if (string.IsNullOrEmpty(_knownProxyToAdd)) + { + ToastService.ShowToast2("Input cannot be null or empty.", Enums.ToastType.Warning); + return; + } if (IPAddress.TryParse(_knownProxyToAdd, out _)) { Input.KnownProxies.Add(_knownProxyToAdd); } - else + else + { + // Allow for CIDR in Known Proxies + // If it's not an IP, attempt to parse it as a CIDR block (e.g., 192.168.1.0/24) + try { - ToastService.ShowToast2("Invalid IP address.", Enums.ToastType.Warning); + var network = IPNetwork.Parse(_knownProxyToAdd); + + // Convert the IPNetwork object to a string (CIDR format) + string networkString = network.ToString(); + + Input.KnownProxies.Add(networkString); + } + catch (FormatException) + { + // If it's neither a valid IP nor a valid CIDR block, show a warning toast + ToastService.ShowToast2("Invalid IP address or CIDR format.", Enums.ToastType.Warning); + } } _knownProxyToAdd = string.Empty; diff --git a/Server/Program.cs b/Server/Program.cs index 6f7bdc17d..530ae20c6 100644 --- a/Server/Program.cs +++ b/Server/Program.cs @@ -184,6 +184,22 @@ { options.KnownProxies.Add(ip); } + // Allow for CIDR in Known Proxies + else + { + // Try to parse the CIDR address + try + { + var network = Microsoft.AspNetCore.HttpOverrides.IPNetwork.Parse(proxy); + options.KnownNetworks.Add(network); // Add the network to KnownNetworks + } + catch (FormatException) + { + // Handle invalid CIDR format gracefully + // Log or throw an exception as needed + Console.WriteLine($"Invalid CIDR format: {proxy}"); + } + } } } });