Beispiel #1
0
        public ActionResult Index()
        {
            var webGen      = new WebGenerator();
            var azureRegion = webGen.GetRegions();
            var o365Service = webGen.GetO365Services();

            ViewData["AppVersion"]   = ConfigurationManager.AppSettings["AppVersion"];
            ViewData["Regions"]      = azureRegion;
            ViewData["O365services"] = o365Service;

            return(View());
        }
Beispiel #2
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 #3
0
        public static void TimerJob([TimerTrigger("01:00:00")] TimerInfo timerInfo) //, TextWriter log)
        {
            Console.WriteLine("Startup of background refresh task... \n");

            var webGen     = new WebGenerator();
            var prefixList = new List <IPPrefix>();

            // Delete temp files...
            var filepath = Path.GetTempPath() + "\\ranges.txt";

            if (File.Exists(filepath))
            {
                File.Delete(filepath);
                Console.WriteLine("Deleted " + filepath + " succesfully");
            }
            filepath = Path.GetTempPath() + "\\AzureRegions.txt";
            if (File.Exists(filepath))
            {
                File.Delete(filepath);
                Console.WriteLine("Deleted " + filepath + " succesfully");
            }
            filepath = Path.GetTempPath() + "\\O365Services.txt";
            if (File.Exists(filepath))
            {
                File.Delete(filepath);
                Console.WriteLine("Deleted " + filepath + " succesfully");
            }
            // retrieves, downloads and save the prefix list on temp storage (local disk)
            Console.WriteLine("Retreiving prefixes...");
            prefixList = webGen.CachedList;
            Console.WriteLine("Retreiving Azure regions...");
            webGen.GetRegions();      // will save region file on disk
            Console.WriteLine("Retreiving o365 services...");
            webGen.GetO365Services(); // will save o365 file on disk
            Console.WriteLine("Background refresh tasks done for now. Will restart soon.");
        }
        internal static string Generate(string[] regions, string[] o365services, string outputformat, bool complement, out int resultCount)
        {
            var resultString = string.Empty;

            resultCount = 0;

            var webGen = new WebGenerator();

            var regionsAndServices = new string[(regions == null ? 0 : regions.Length) + (o365services == null ? 0 : o365services.Length)];

            if (regions != null)
            {
                // add regions to the array
                Array.Copy(regions, 0, regionsAndServices, 0, regions.Length);
            }
            if (o365services != null)
            {
                // Add o365 services to the array
                Array.Copy(o365services, 0, regionsAndServices, regions == null ? 0 : regions.Length, o365services.Length);
            }

            var result = webGen.GetPrefixList(regionsAndServices.ToList(), complement);

            resultCount = result.Count();

            switch (outputformat)
            {
            case "cisco-ios":
                resultString = _ciscoIOSPrefixBGPConfig + Environment.NewLine +
                               string.Join(string.Empty,
                                           result.Select(r => "ip route " + r.ToStringLongMask() + " null0" + Environment.NewLine
                                                         ).ToArray());
                break;

            case "cisco-asa":
                resultString = _ciscoASAPrefixBGPConfig + Environment.NewLine;
                resultString = resultString + string.Join(string.Empty,
                                                          result.Select(r => "route <interface_name> " + r.ToStringLongMask() + " <interface_name_IP>" + Environment.NewLine
                                                                        ).ToArray());
                resultString = resultString
                               + "!" + Environment.NewLine
                               + "! Prefix-List to filter outgoing update to be restricted to the list below" + Environment.NewLine
                               + "!" + Environment.NewLine;
                var prefixSeqNumber = 10;
                resultString = resultString + string.Join(string.Empty, result.Select(r => "prefix-list AZURE-OUT seq " + prefixSeqNumber++ *10 + " permit "
                                                                                      + r.ReadableIP + "/" + r.Mask + Environment.NewLine).ToArray());
                break;

            case "list-subnet-masks":
                resultString = string.Join(string.Empty, result.Select(r => r.ToStringLongMask() + Environment.NewLine).ToArray());
                break;

            case "list-cidr":
                resultString = string.Join(string.Empty, result.Select(r => r.ReadableIP + "/" + r.Mask + Environment.NewLine).ToArray());
                break;

            case "csv-subnet-masks":
                resultString = string.Join(string.Empty, result.Select(r => "\"" + r.ToStringLongMask() + "\",").ToArray());
                // need to remove the last ","
                resultString = resultString.Substring(0, resultString.Length - 1);
                break;

            case "csv-cidr":
                resultString = string.Join(string.Empty, result.Select(r => "\"" + r.ReadableIP + "/" + r.Mask + "\",").ToArray());
                // remove the last "\","
                resultString = resultString.Substring(0, resultString.Length - 1);
                break;

            case "cisco-ios-route-list":
                resultString = _ciscoIOSPrefixRouteConfig + Environment.NewLine +
                               string.Join(string.Empty,
                                           result.Select(r => "ip route " + r.ToStringLongMask() + " <selected_interface>" + Environment.NewLine
                                                         ).ToArray());
                break;

            case "cisco-ios-acl-list":
                resultString = _ciscoIOSPrefixACLConfig + string.Join(string.Empty,
                                                                      result.Select(r => " access-list permit ip <any or your VNet address space> " + r.ToStringLongMask() +
                                                                                    Environment.NewLine).ToArray());
                break;

            default:
                break;
            }
            return(resultString);
        }