Beispiel #1
0
        public void IPPrefixTest()
        {
            var testIPPrefix = new IPPrefix(IpPrefixType.Azure, "NA", "192.168.0.1/24");

            Assert.AreEqual(testIPPrefix.ReadableIP, "192.168.0.1");
            Assert.AreEqual(testIPPrefix.Mask, 24);
        }
Beispiel #2
0
        public void BetweenSimpleTest()
        {
            var lowerBound = new IPPrefix(IpPrefixType.Azure, "na", "192.168.0.0/24");
            var upperBound = new IPPrefix(IpPrefixType.Azure, "na", "192.168.2.0/24");

            var result = Generator.GetPrefixesBetween(lowerBound, upperBound);

            Assert.AreEqual(result.ReadableIP, "192.168.1.0");
            Assert.AreEqual(result.Mask, 24);
        }
Beispiel #3
0
        internal static IPPrefix FindPrefix(IPPrefix p_inputPrefix)
        {
            var containingPrefix = new IPPrefix();
            var webGen           = new WebGenerator();
            // Load the XML file into ranges
            //List<IPPrefix> ipPrefixes = Downloader.Download();
            List <IPPrefix> ipPrefixes = webGen.CachedList;

            containingPrefix = Generator.GetContainingPrefix(p_inputPrefix, ipPrefixes);

            return(containingPrefix);
        }
Beispiel #4
0
        static void Main(string[] args)
        {
            // Variable declaration
            List <IPPrefix> ipPrefixesInput  = new List <IPPrefix>();
            List <IPPrefix> ipPrefixesOutput = new List <IPPrefix>();

            // Load the XML file into ranges
            ipPrefixesInput = Downloader.Download();
            // add default private network prefixes
            //ipPrefixesInput.Add(new IPPrefix("0.0.0.0/8"));
            //ipPrefixesInput.Add(new IPPrefix("10.0.0.0/8"));
            //ipPrefixesInput.Add(new IPPrefix("172.16.0.0/12"));
            //ipPrefixesInput.Add(new IPPrefix("169.254.0.0/16"));
            //ipPrefixesInput.Add(new IPPrefix("192.168.0.0/16"));
            //ipPrefixesInput.Add(new IPPrefix("224.0.0.0/3"));

            //Generator.Dedupe(ipPrefixesInput);
            //ipPrefixesOutput
            ipPrefixesOutput = Generator.Summarize(ipPrefixesInput);
            var testPrefix     = new IPPrefix("216.32.180.38/31");
            var solutionPrefix = Generator.GetContainingPrefix(testPrefix, ipPrefixesOutput);

            // Order the ranges by increasing network ID
            //ipPrefixesOutput = Generator.Not(ipPrefixesInput);

            //foreach (IPPrefix l_currentPrefix in ipPrefixesOutput)
            //{
            //    Console.Write(String.Concat(l_currentPrefix.ReadableIP,"/",l_currentPrefix.Mask,"\n"));
            //}
            if (solutionPrefix != null)
            {
                string prefixLocation;
                if (solutionPrefix.Region != null)
                {
                    prefixLocation = solutionPrefix.Region;
                }
                else
                {
                    prefixLocation = solutionPrefix.O365Service;
                }

                Console.Write("Found " + testPrefix.ToString() + " in : \n" + solutionPrefix.ToString() + ";" + prefixLocation + "\n");
            }
            else
            {
                Console.Write("Unable to find prefix " + testPrefix.ToString() + " in list.\n");
            }

            Console.Write("Done!\n");
            Console.ReadKey();
            //Debugger.Break();
        }
Beispiel #5
0
        public void ValidateNoOverlap()
        {
            var copy = _downloadedContent.Select(item => (IPPrefix)item.Clone()).ToList();

            Generator.Dedupe(copy);

            IPPrefix previousRange = null;

            foreach (var range in copy.OrderBy(t => t.FirstIP))
            {
                if (previousRange != null)
                {
                    Assert.IsTrue(previousRange.LastIP < range.FirstIP, range.O365Service + ": " + previousRange.LastIP + " > " + range.FirstIP);
                }
                previousRange = range;
            }
        }
Beispiel #6
0
        public void BetweenTwoSubnetTest()
        {
            var lowerBound = new IPPrefix(IpPrefixType.Azure, "na", "192.168.0.0/24");
            var upperBound = new IPPrefix(IpPrefixType.Azure, "na", "192.168.3.0/24");

            var result = Generator.GetPrefixesBetween(lowerBound, upperBound);

            Assert.AreEqual(result.ReadableIP, "192.168.2.0");
            Assert.AreEqual(result.Mask, 24);

            result = Generator.GetPrefixesBetween(lowerBound, result);
            Assert.AreEqual(result.ReadableIP, "192.168.1.0");
            Assert.AreEqual(result.Mask, 24);
            Assert.AreEqual(result.ReadableMask, "255.255.255.0");

            result = Generator.GetPrefixesBetween(lowerBound, result);
            Assert.IsNull(result);
        }
Beispiel #7
0
        // GET api/<controller>
        public IEnumerable <string> Get([FromUri] string inputIP)
        {
            try
            {
                // try to resolve the IP address
                IPAddress[] ipAddList = Dns.GetHostAddresses(inputIP);

                // String to build output
                var resultstring = inputIP + " resolves to ..." + System.Environment.NewLine;
                // Look for each IP under the hostname...
                foreach (var ipAdd in ipAddList)
                {
                    var inputPrefix  = new IPPrefix(ipAdd.ToString() + "/32");
                    var outputPrefix = FindPrefixHelper.FindPrefix(inputPrefix);

                    if (outputPrefix != null)
                    {
                        string prefixLocation = string.Empty;
                        // Check if it's part of an Azure region or O365 service
                        if (outputPrefix.Region != null)
                        {
                            prefixLocation = " in region " + outputPrefix.Region;
                        }
                        else
                        {
                            prefixLocation = " in Office 365 service " + outputPrefix.O365Service;
                        }

                        //Build the string result
                        resultstring += (inputPrefix.ToString() + " is part of " + outputPrefix.ToString() + prefixLocation + System.Environment.NewLine);
                    }
                    else
                    {
                        resultstring += (inputPrefix.ToString() + " but isn't part of our prefix lists." + System.Environment.NewLine);
                    }
                }
                return(new string[] { resultstring });
            }
            catch (Exception ex)
            {
                return(new string[] { "Invalid IP address or hostname : " + ex.Message });
            }
        }
Beispiel #8
0
        public void ValidateNoGapsTest()
        {
            var copy = _downloadedContent.Select(item => (IPPrefix)item.Clone()).ToList();

            Generator.Dedupe(copy);

            var results = Generator.Not(copy);

            results.AddRange(copy);

            IPPrefix previousRange = null;

            foreach (var range in results.OrderBy(t => t.FirstIP))
            {
                if (previousRange != null)
                {
                    Assert.AreEqual(previousRange.LastIP + 1, range.FirstIP);
                }
                previousRange = range;
            }
        }