Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        public IPAddressRange(IIPAddressRangeValidator rangeValidator)
        {
            if (rangeValidator == null)
            {
                throw new ArgumentNullException(nameof(rangeValidator));
            }

            _validator = rangeValidator;
        }
Example #4
0
        public IPAddressRange(string range)
        {
            if (range == null)
            {
                throw new ArgumentNullException(nameof(range));
            }

            _validator = ParseCore(range);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }