public bool TryParse(string range, out IIPAddressRangeValidator rangeValidator) { if (range == null) { throw new ArgumentNullException(nameof(range)); } var addresses = range.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); var list = new List <IPAddress>(); foreach (string address in addresses) { var match = UniAddressRegex.Match(address); if (match.Success) { list.Add(IPAddress.Parse(match.Groups["adr"].Value)); } } if (list.Count > 0) { rangeValidator = new IPAddressList(list); return(true); } rangeValidator = null; return(false); }
public bool TryParse(string range, out IIPAddressRangeValidator rangeValidator) { if (range == null) { throw new ArgumentNullException(nameof(range)); } var cidrMatch = CidrBlockRegex.Match(range); if (cidrMatch.Success) { var baseAdrBytes = IPAddress.Parse(cidrMatch.Groups["adr"].Value).GetAddressBytes(); var maskLen = int.Parse(cidrMatch.Groups["maskLen"].Value, CultureInfo.InvariantCulture); if (baseAdrBytes.Length * 8 < maskLen) { rangeValidator = null; return(false); } var maskBytes = BitMaskHelper.GetBitMask(baseAdrBytes.Length, maskLen); baseAdrBytes = baseAdrBytes.And(maskBytes).ToArray(); rangeValidator = new IPAddressRangeValidator(new IPAddress(baseAdrBytes), new IPAddress(baseAdrBytes.Or(maskBytes.Not()).ToArray())); return(true); } rangeValidator = null; return(false); }
public IPAddressRange(IIPAddressRangeValidator rangeValidator) { if (rangeValidator == null) { throw new ArgumentNullException(nameof(rangeValidator)); } _validator = rangeValidator; }
public IPAddressRange(string range) { if (range == null) { throw new ArgumentNullException(nameof(range)); } _validator = ParseCore(range); }
private static bool TryParseCore(string range, out IIPAddressRangeValidator rangeValidator) { // remove all spaces. range = range.Replace(" ", string.Empty); foreach (var pattern in Patterns) { if (pattern.TryParse(range, out rangeValidator)) { return(true); } } rangeValidator = null; return(false); }
public bool TryParse(string range, out IIPAddressRangeValidator rangeValidator) { if (range == null) { throw new ArgumentNullException(nameof(range)); } var beginEndMatch = BeginEndRangeRegex.Match(range); if (beginEndMatch.Success) { rangeValidator = new IPAddressRangeValidator(IPAddress.Parse(beginEndMatch.Groups["begin"].Value), IPAddress.Parse(beginEndMatch.Groups["end"].Value)); return(true); } rangeValidator = null; return(false); }
public bool TryParse(string range, out IIPAddressRangeValidator rangeValidator) { if (range == null) { throw new ArgumentNullException(nameof(range)); } var uniMatch = UniAddressRegex.Match(range); if (uniMatch.Success) { var address = IPAddress.Parse(range); rangeValidator = new IPSingleAddress(address); return(true); } rangeValidator = null; return(false); }
public bool TryParse(string range, out IIPAddressRangeValidator rangeValidator) { if (range == null) { throw new ArgumentNullException(nameof(range)); } var bitMaskMatch = BitMaskRangeRegex.Match(range); if (bitMaskMatch.Success) { var baseAdrBytes = IPAddress.Parse(bitMaskMatch.Groups["adr"].Value).GetAddressBytes(); IEnumerable <byte> maskBytes = IPAddress.Parse(bitMaskMatch.Groups["bitmask"].Value).GetAddressBytes(); baseAdrBytes = baseAdrBytes.And(maskBytes).ToArray(); rangeValidator = new IPAddressRangeValidator(new IPAddress(baseAdrBytes), new IPAddress(baseAdrBytes.Or(maskBytes.Not()).ToArray())); return(true); } rangeValidator = null; return(false); }