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()); }
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())); }
/// <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); }