/Source/NETworkManager.Validators/IPv4IPv6SubnetmaskOrCIDRValidator.cs
https://github.com/BornToBeRoot/NETworkManager · C# · 33 lines · 25 code · 7 blank · 1 comment · 11 complexity · fce409f7c1fc2ffa31aaa1ee4d9feb3c MD5 · raw file
- using System.Globalization;
- using System.Text.RegularExpressions;
- using System.Windows.Controls;
- using NETworkManager.Utilities;
- namespace NETworkManager.Validators
- {
- // ReSharper disable once InconsistentNaming
- public class IPv4IPv6SubnetmaskOrCIDRValidator : ValidationRule
- {
- public override ValidationResult Validate(object value, CultureInfo cultureInfo)
- {
- if (value == null)
- return new ValidationResult(false, Localization.Resources.Strings.EnterValidSubnetmaskOrCIDR);
- var subnetmaskOrCidr = value as string;
- if (subnetmaskOrCidr != null && Regex.IsMatch(subnetmaskOrCidr, RegexHelper.SubnetmaskRegex))
- return ValidationResult.ValidResult;
- if (subnetmaskOrCidr == null || !subnetmaskOrCidr.StartsWith("/"))
- return new ValidationResult(false, Localization.Resources.Strings.EnterValidSubnetmaskOrCIDR);
- if (!int.TryParse(subnetmaskOrCidr.TrimStart('/'), out var cidr))
- return new ValidationResult(false, Localization.Resources.Strings.EnterValidSubnetmaskOrCIDR);
- if (cidr >= 0 && cidr < 129)
- return ValidationResult.ValidResult;
- return new ValidationResult(false, Localization.Resources.Strings.EnterValidSubnetmaskOrCIDR);
- }
- }
- }