/Source/NETworkManager.Validators/IPv4SubnetmaskOrCIDRValidator.cs

https://github.com/BornToBeRoot/NETworkManager · C# · 30 lines · 23 code · 6 blank · 1 comment · 9 complexity · 6b2f675bcf49fec70ce2f1468f5536ae MD5 · raw file

  1. using System.Globalization;
  2. using System.Text.RegularExpressions;
  3. using System.Windows.Controls;
  4. using NETworkManager.Utilities;
  5. namespace NETworkManager.Validators
  6. {
  7. // ReSharper disable once InconsistentNaming
  8. public class IPv4SubnetmaskOrCIDRValidator : ValidationRule
  9. {
  10. public override ValidationResult Validate(object value, CultureInfo cultureInfo)
  11. {
  12. var subnetmaskOrCidr = value as string;
  13. if (subnetmaskOrCidr != null && Regex.IsMatch(subnetmaskOrCidr, RegexHelper.SubnetmaskRegex))
  14. return ValidationResult.ValidResult;
  15. if (subnetmaskOrCidr == null || !subnetmaskOrCidr.StartsWith("/"))
  16. return new ValidationResult(false, Localization.Resources.Strings.EnterValidSubnetmaskOrCIDR);
  17. if (!int.TryParse(subnetmaskOrCidr.TrimStart('/'), out var cidr))
  18. return new ValidationResult(false, Localization.Resources.Strings.EnterValidSubnetmaskOrCIDR);
  19. if (cidr >= 0 && cidr < 33)
  20. return ValidationResult.ValidResult;
  21. return new ValidationResult(false, Localization.Resources.Strings.EnterValidSubnetmaskOrCIDR);
  22. }
  23. }
  24. }