Esempio n. 1
0
        public override String ToString()
        {
            var builder = new StringBuilder();

            builder.Append("Model:    "); builder.AppendLine(ModelFileName);
            builder.Append("Solver:   "); builder.AppendLine(SolverName);
            builder.Append("Config:   "); builder.AppendLine(ConfigFileName);
            // ReSharper disable SpecifyACultureInStringConversionExplicitly
            builder.Append("Duration: "); builder.AppendLine(Duration.ToString());
            builder.Append("Samples:  "); builder.AppendLine(Samples.ToString());
            builder.Append("Runs:     "); builder.AppendLine(Repeats.ToString());
            // ReSharper restore SpecifyACultureInStringConversionExplicitly
            builder.Append("Working Directory: "); builder.AppendLine(WorkingDirectory);

            return(builder.ToString());
        }
Esempio n. 2
0
        protected override byte[] GetSaveData()
        {
            StringBuilder Result = new StringBuilder();

            Result.AppendLine(Delay.ToString());
            Result.AppendLine(Repeats.ToString());
            Result.AppendLine(Proxy?.ToString() ?? "");
            Result.AppendLine(OutputFilePath);
            Result.AppendLine(OutputFormat);
            Result.AppendLine(Filter);
            Result.AppendLine(Format);
            Result.AppendLine(Threads.ToString());
            Result.AppendLine(MoreSettings.Count.ToString());
            foreach (var v in MoreSettings)
            {
                Result.AppendLine(string.Format("{0}|{1}", v.Key, v.Value));
            }
            Result.AppendLine(URLs.Count.ToString());
            foreach (var v in URLs)
            {
                Result.AppendLine(v);
            }
            return(Encoding.UTF8.GetBytes(Result.ToString()));
        }
Esempio n. 3
0
        /// <summary>
        /// Gets called by the logic of the <see cref="CommandAttribute" />.
        /// </summary>
        private async Task <int> OnExecuteAsync()
        {
            if (UseIpV6)
            {
                UseIpV4 = false;
            }
            if (Endless)
            {
                Repeats = int.MaxValue;
            }
            Console.WriteLine($"Starting pinging host {Host} on {ResolvedProtocol} port(s) {PortRange} {(Endless ? "infinite" : Repeats.ToString())} times:");
            var reachablePorts = 0;
            var closedPorts    = 0;
            var hostIp         = "-";

            if (ResvoleAddress)
            {
                // we have to perform address resolution
                var entry = await Dns.GetHostEntryAsync(Host);

                if (entry.AddressList.Any())
                {
                    var target = UseIpV4 ? AddressFamily.InterNetwork : AddressFamily.InterNetworkV6;
                    hostIp = entry.AddressList.FirstOrDefault(he => he.AddressFamily == target)?.ToString() ?? "?";
                }
            }
            // start the process
            var currentPack = 0;

            for (var i = 0; i < Repeats; ++i)
            {
                var portOpen = true;
                Ports.ToList().ForEach(
                    port =>
                {
                    try
                    {
                        portOpen       &= NetworkUtil.IsPortOpened(Host, port, Timeout, UseUdp);
                        reachablePorts += portOpen ? 1 : 0;
                        closedPorts    += portOpen ? 0 : 1;
                        var printResult = portOpen ? "OPEN" : "CLOSED";
                        if (Detailed && !portOpen)
                        {
                            printResult += $" ({NetworkUtil.LastCheckResult.ToString()})";
                        }
                        Console.Write("#{0,4} -> Pinging host {1} (IP:{2}) on {5} port {3} with timeout {4}: ", ++currentPack, Host, hostIp, port, Timeout, ResolvedProtocol);
                        Console.ForegroundColor = portOpen ? ConsoleColor.DarkGreen : ConsoleColor.DarkRed;
                        Console.WriteLine(printResult);
                        Console.ResetColor();
                    }
                    catch (Exception ex)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine($"#{++currentPack,4} Error pinging host {Host}: {ex.Message}");
                        Console.ResetColor();
                    }
                });
                if (!AutoStop || !portOpen)
                {
                    if (WaitTime > 0)
                    {
                        await Task.Delay(WaitTime);
                    }
                }
                else
                {
                    break;
                }
            }
            Console.WriteLine("Finished pinging host {0} (IP:{1}). {2} pings sent ({3} OPEN, {4} CLOSED)", Host, hostIp, currentPack, reachablePorts, closedPorts);
            if (ReportFailedOnExit)
            {
                // return error level 1 if all pings where closed and 0 if any of them was open
                return(reachablePorts > 0 ? 0 : 1);
            }
            if (ReportSucceededOnExit)
            {
                // return the amount of opened pings as the error level
                return(reachablePorts);
            }
            return(0);
        }