Beispiel #1
0
        private static void Main(string[] args)
        {
            if (string.Join(" ", args).Contains("logo"))
            {
                ConsoleUtil.ShowAppHeader(Assembly.GetExecutingAssembly());
            }
            var appInfo = new ApplicationInfo
            {
                AssemblyInfo             = Assembly.GetExecutingAssembly(),
                CommandlineArgumentInfos = GetArguments(),
                ParameterDelimiter       = '=',
                ParameterPraefix         = '-'
            };

            if (!AppUtil.AreCommandArgumentsValid(args, appInfo))
            {
                ConsoleUtil.PrintArgumentError(appInfo, string.Join("\n", AppUtil.CheckCommandArguments(args, appInfo).AsEnumerable()));
            }
            else
            {
                var    list   = AppUtil.MapCommandArguments(args, appInfo);
                var    result = 0;
                string givenValue;
                var    ports = new List <int>();
                string portValue;
                int    timeout;
                int    repeats;
                bool   autoStop;
                bool   useUdp;
                bool   detailledState;
                try
                {
                    givenValue = list.First(a => a.Abbreviation == "a").GivenValue;
                    portValue  = list.First(a => a.Abbreviation == "p").GivenValue;
                    if (portValue.Contains(","))
                    {
                        portValue.Split(',').ToList().ForEach(p => ports.Add(int.Parse(p.Trim())));
                    }
                    else
                    {
                        if (portValue.Contains('-'))
                        {
                            var portsRanged = portValue.Split('-');
                            var from        = int.Parse(portsRanged[0]);
                            var to          = int.Parse(portsRanged[1]);
                            for (var p = from; p <= to; p++)
                            {
                                ports.Add(p);
                            }
                        }
                        else
                        {
                            ports.Add(int.Parse(portValue));
                        }
                    }
                    timeout        = int.Parse(list.First(a => a.Abbreviation == "tim").ResolvedValue);
                    repeats        = int.Parse(list.First(a => a.Abbreviation == "r").ResolvedValue);
                    autoStop       = list.SingleOrDefault(a => a.Abbreviation == "as") != null;
                    useUdp         = list.SingleOrDefault(a => a.Abbreviation == "u") != null;
                    detailledState = list.SingleOrDefault(a => a.Abbreviation == "d") != null;
                    if (list.SingleOrDefault(a => a.Abbreviation == "t") != null)
                    {
                        repeats = int.MaxValue;
                    }
                    var commandlineArgumentInfo = list.SingleOrDefault(a => a.Abbreviation == "w");
                    if (commandlineArgumentInfo != null)
                    {
                        int.TryParse(commandlineArgumentInfo.ResolvedValue, out result);
                    }
                }
                catch (Exception ex)
                {
                    ConsoleUtil.WriteLine($"Error during parsing input parameters: {ex.Message}", ConsoleColor.Red);
                    return;
                }
                if (string.IsNullOrEmpty(givenValue) || ports.Any(p => p <= 0))
                {
                    return;
                }
                Console.WriteLine(
                    "Starting pinging host {0} on {3} port(s) {1} {2} times:",
                    givenValue,
                    portValue,
                    repeats == int.MaxValue ? "infinite" : repeats.ToString(CultureInfo.InvariantCulture),
                    useUdp ? "UDP" : "TCP");
                var reachablePorts = 0;
                var closedPorts    = 0;
                var hostIp         = "-";
                if (list.FirstOrDefault(a => a.Abbreviation == "res") != null)
                {
                    // we have to perform address resolution
                    Dns.BeginGetHostEntry(
                        givenValue,
                        ar =>
                    {
                        IPHostEntry local0 = null;
                        try
                        {
                            local0 = Dns.EndGetHostEntry(ar);
                        }
                        catch
                        {
                            // empty catch
                        }
                        if (local0 == null || !local0.AddressList.Any())
                        {
                            return;
                        }
                        hostIp = local0.AddressList[0].ToString();
                    },
                        null);
                }
                // start the process
                var currentPack = 0;
                for (var i = 0; i < repeats; ++i)
                {
                    var portOpen = true;
                    ports.ForEach(
                        port =>
                    {
                        try
                        {
                            portOpen       &= NetworkUtil.IsPortOpened(givenValue, port, timeout, useUdp);
                            reachablePorts += portOpen ? 1 : 0;
                            closedPorts    += portOpen ? 0 : 1;
                            var printResult = portOpen ? "OPEN" : "CLOSED";
                            if (detailledState && !portOpen)
                            {
                                printResult += $" ({NetworkUtil.LastCheckResult.ToString()})";
                            }
                            Console.Write("#{0,4} -> Pinging host {1} (IP:{2}) on {5} port {3} with timeout {4}: ", ++currentPack, givenValue, hostIp, port, timeout, useUdp ? "UDP" : "TCP");
                            ConsoleUtil.WriteLine(printResult, portOpen ? ConsoleColor.DarkGreen : ConsoleColor.DarkRed);
                        }
                        catch (Exception ex)
                        {
                            ConsoleUtil.WriteLine($"#{++currentPack,4} Error pinging host {givenValue}: {ex.Message}", ConsoleColor.Red);
                        }
                    });
                    if (!autoStop || !portOpen)
                    {
                        if (result > 0)
                        {
                            Thread.Sleep(result);
                        }
                    }
                    else
                    {
                        break;
                    }
                }
                Console.WriteLine("Finished pinging host {0} (IP:{1}). {2} pings sent ({3} OPEN, {4} CLOSED)", givenValue, hostIp, currentPack, reachablePorts, closedPorts);
                if (list.FirstOrDefault(a => a.Abbreviation == "elf") != null)
                {
                    // return error level 1 if all pings where closed and 0 if any of them was open
                    Environment.Exit(reachablePorts > 0 ? 0 : 1);
                }
                if (list.FirstOrDefault(a => a.Abbreviation == "elsc") != null)
                {
                    // return the amount of opened pings as the error level
                    Environment.Exit(reachablePorts);
                }
            }
        }
Beispiel #2
0
        private static void Main(string[] args)
        {
            if (string.Join(" ", args).Contains("logo"))
            {
                ConsoleUtil.ShowAppHeader(Assembly.GetExecutingAssembly());
            }
            var appInfo = new ApplicationInfo
            {
                AssemblyInfo             = Assembly.GetExecutingAssembly(),
                CommandlineArgumentInfos = GetArguments(),
                ParameterDelimiter       = '=',
                ParameterPraefix         = '-'
            };

            if (!AppUtil.AreCommandArgumentsValid(args, appInfo))
            {
                ConsoleUtil.PrintArgumentError(appInfo, string.Join("\n", AppUtil.CheckCommandArguments(args, appInfo).AsEnumerable()));
                WaitForUserInput();
                return;
            }
            var list     = AppUtil.MapCommandArguments(args, appInfo);
            var dirName  = list.First(a => a.Abbreviation == "f").GivenValue;
            var simulate = false;

            if (list.Any(a => a.Abbreviation == "s"))
            {
                simulate = bool.Parse(list.First(a => a.Abbreviation == "s").GivenValue);
            }
            if (simulate)
            {
                ConsoleUtil.WriteLine("!!! SIMULATION MODE !!!", ConsoleColor.Green);
            }
            else
            {
                // get user feedback for security reasons
            }
            if (!Directory.Exists(dirName))
            {
                Console.WriteLine($"Directory {dirName} not found.");
                WaitForUserInput();
                return;
            }
            Console.Write("Directory: ");
            ConsoleUtil.WriteLine(new DirectoryInfo(dirName).FullName, ConsoleColor.DarkGreen);
            Console.Write("Scanning files...");
            var files = GetFiles(dirName);

            ConsoleUtil.Write($"{files.Count}", ConsoleColor.Green);
            Console.WriteLine(" found.");
            try
            {
                InspectNugetFiles(files, !simulate);
                InspectProjectFiles(files, !simulate);
            }
            catch (Exception ex)
            {
                ConsoleUtil.WriteLine($"Error occured during operation: {ex.Message}.", ConsoleColor.Red);
            }
            if (simulate)
            {
                ConsoleUtil.WriteLine("SIM-MODE: NO CHANGES WHERE MADE TO ANY OF THE ELEMENTS!", ConsoleColor.Green);
            }
            WaitForUserInput();
        }