Skip to content

Commit 68f0aa9

Browse files
committed
Chore: Add validation
1 parent efcad84 commit 68f0aa9

File tree

4 files changed

+14
-15
lines changed

4 files changed

+14
-15
lines changed

Source/NETworkManager.Models/Network/SNTPLookup.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public void QueryAsync(IEnumerable<ServerConnectionInfo> servers, bool dnsResolv
101101
// NTP requires an IP address to connect to
102102
IPAddress serverIP = null;
103103

104-
if (IPAddress.TryParse(server.Server, out var address) && (address.AddressFamily == AddressFamily.InterNetwork || address.AddressFamily == AddressFamily.InterNetworkV6))
104+
if (IPAddress.TryParse(server.Server, out var address) && address.AddressFamily is AddressFamily.InterNetwork or AddressFamily.InterNetworkV6)
105105
{
106106
serverIP = address;
107107
}

Source/NETworkManager.Validators/IPAddressOrHostnameAsRangeValidator.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Globalization;
2+
using System.Net;
23
using System.Text.RegularExpressions;
34
using System.Windows.Controls;
45
using NETworkManager.Localization.Resources;
@@ -19,11 +20,10 @@ public override ValidationResult Validate(object value, CultureInfo cultureInfo)
1920
{
2021
var localItem = item.Trim();
2122

22-
// Check if it is a valid IPv4 address like 192.168.0.1, a valid IPv6 address like ::1 or a valid hostname like server-01 or server-01.example.com
23-
var isValid = Regex.IsMatch(localItem, RegexHelper.IPv4AddressRegex) ||
24-
Regex.IsMatch(localItem, RegexHelper.IPv6AddressRegex) ||
23+
// Check if it is a valid IPv4 address like 192.168.0.1, a valid IPv6 address like "::1" or a valid hostname like "server-01" or "server-01.example.com"
24+
var isValid = (IPAddress.TryParse(localItem, out var ipAddress) && ipAddress.AddressFamily is System.Net.Sockets.AddressFamily.InterNetwork or System.Net.Sockets.AddressFamily.InterNetworkV6) ||
2525
Regex.IsMatch(localItem, RegexHelper.HostnameOrDomainRegex);
26-
26+
2727
if (!isValid)
2828
return new ValidationResult(false, Strings.EnterValidHostnameOrIPAddress);
2929
}

Source/NETworkManager.Validators/MultipleIPAddressesValidator.cs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
11
using System.Globalization;
2-
using System.Text.RegularExpressions;
2+
using System.Net;
33
using System.Windows.Controls;
44
using NETworkManager.Localization.Resources;
5-
using NETworkManager.Utilities;
65

76
namespace NETworkManager.Validators;
87

98
public class MultipleIPAddressesValidator : ValidationRule
109
{
1110
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
1211
{
13-
if (value == null)
14-
return ValidationResult.ValidResult;
15-
16-
for (var index = 0; index < ((string)value).Split(';').Length; index++)
12+
var ipAddresses = (value as string)?.Split(';');
13+
14+
if (ipAddresses == null || ipAddresses.Length == 0)
15+
return new ValidationResult(false, Strings.EnterOneOrMoreValidIPAddresses);
16+
17+
foreach (var ipAddress in ipAddresses)
1718
{
18-
var ipAddress = ((string)value).Split(';')[index];
19-
20-
if (!Regex.IsMatch(ipAddress.Trim(), RegexHelper.IPv4AddressRegex) &&
21-
!Regex.IsMatch(ipAddress.Trim(), RegexHelper.IPv6AddressRegex))
19+
if(!(IPAddress.TryParse(ipAddress, out var ip) && ip.AddressFamily is System.Net.Sockets.AddressFamily.InterNetwork or System.Net.Sockets.AddressFamily.InterNetworkV6))
2220
return new ValidationResult(false, Strings.EnterOneOrMoreValidIPAddresses);
2321
}
2422

Source/NETworkManager/Views/SettingsNetworkView.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<TextBox.Text>
2121
<Binding Path="CustomDNSServer" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
2222
<Binding.ValidationRules>
23+
<validators:EmptyValidator ValidatesOnTargetUpdated="True" />
2324
<validators:MultipleIPAddressesValidator ValidatesOnTargetUpdated="True" />
2425
</Binding.ValidationRules>
2526
</Binding>

0 commit comments

Comments
 (0)