Commit e9ee2f8b120b5210e16d824fe60fe896048deb8e
1 parent
7e23fb05
v1.8.4
- IP Pinger felület fejlesztése
Showing
4 changed files
with
105 additions
and
23 deletions
Show diff stats
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - ColorConsole.cs
| ... | ... | @@ -116,7 +116,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS |
| 116 | 116 | { |
| 117 | 117 | int currentLineCursor = Console.CursorTop; |
| 118 | 118 | int currentColCursor = Console.CursorLeft; |
| 119 | - if (height == 0) { height = Console.WindowHeight; } | |
| 119 | + if (height == 0) { height = Console.WindowHeight- Console.CursorTop; } | |
| 120 | 120 | for (var i=0;i<height;i++) |
| 121 | 121 | { |
| 122 | 122 | ClearLine(width, fillchar); | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Manager - MaintenanceToolManager.cs
| ... | ... | @@ -113,6 +113,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS |
| 113 | 113 | var suppresserroneousipaddresses = false; |
| 114 | 114 | while (true) |
| 115 | 115 | { |
| 116 | + DisplayPingerScreenTitle(); | |
| 116 | 117 | DisplayPingerParameters(pingerconfigxml); |
| 117 | 118 | var cc = ColorConsole.CursorLeft; |
| 118 | 119 | var cr = ColorConsole.CursorTop; |
| ... | ... | @@ -120,7 +121,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS |
| 120 | 121 | DisplayAllPingerStatus(pingerconfigxml, iplist, firstrun, suppresserroneousipaddresses); |
| 121 | 122 | if (!firstrun) |
| 122 | 123 | { |
| 123 | - | |
| 124 | 124 | DisplayPingerCommands(); |
| 125 | 125 | } |
| 126 | 126 | |
| ... | ... | @@ -177,32 +177,78 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS |
| 177 | 177 | ColorConsole.WriteLine($"Set [ip address] to 'ALL' or '*' for action to all ip addresses.", ConsoleColor.Yellow); |
| 178 | 178 | } |
| 179 | 179 | |
| 180 | - private static void DisplayPingerParameters(XElement pingerconfigxml) | |
| 180 | + private static string MARKQ1 = new string((char)9608, 1); | |
| 181 | + private static string MARKQ2 = new string((char)9619, 1); | |
| 182 | + private static string MARKQ3 = new string((char)9618, 1); | |
| 183 | + private static string MARKQ4 = new string((char)9617, 1); | |
| 184 | + private static ConsoleColor CEXCELLENT = ConsoleColor.DarkGreen; | |
| 185 | + private static ConsoleColor CGOOD = ConsoleColor.Green; | |
| 186 | + private static ConsoleColor CACCEPTABLE = ConsoleColor.DarkYellow; | |
| 187 | + private static ConsoleColor CBAD = ConsoleColor.Yellow; | |
| 188 | + private static ConsoleColor CFATAL = ConsoleColor.Red; | |
| 189 | + private static void DisplayPingerScreenTitle() | |
| 181 | 190 | { |
| 182 | 191 | ColorConsole.Clear(); |
| 183 | 192 | var pingertitle = "IP Pinger"; |
| 184 | 193 | ColorConsole.WriteLine(ColorConsole.WideString(pingertitle), ConsoleColor.Yellow); |
| 185 | - ColorConsole.WriteLine(new string('-', 2*pingertitle.Length), ConsoleColor.Yellow); | |
| 194 | + ColorConsole.WriteLine(new string('-', 2 * pingertitle.Length), ConsoleColor.Yellow); | |
| 195 | + } | |
| 196 | + private static void DisplayPingerParameters(XElement pingerconfigxml) | |
| 197 | + { | |
| 186 | 198 | ColorConsole.WriteLine(); |
| 187 | 199 | ColorConsole.WriteLine($"Pinger configuration parameters:", ConsoleColor.Yellow); |
| 188 | 200 | var pconfig = new Pinger("127.0.0.1", pingerconfigxml).Configuration; |
| 189 | - ColorConsole.WriteLine(pconfig.pingtimeout.ToString(), ConsoleColor.Yellow, prefix: " pingtimeout :", suffix: "ms"); | |
| 190 | - ColorConsole.WriteLine(pconfig.pingcyclenumofpackages.ToString(), ConsoleColor.Yellow, prefix: " pings per cycle:", suffix: "pings"); | |
| 191 | - ColorConsole.WriteLine((pconfig.pingcyclefrequency / 1000).ToString(), ConsoleColor.Yellow, prefix: " cycle frequency:", suffix: "sec"); | |
| 192 | - ColorConsole.WriteLine((pconfig.pingeractivlength / 60000).ToString(), ConsoleColor.Yellow, prefix: " pinger liftime :", suffix: "min"); | |
| 193 | - ColorConsole.WriteLine((pconfig.pingerhistorylength / 60000).ToString(), ConsoleColor.Yellow, prefix: " history length :", suffix: "min"); | |
| 194 | - ColorConsole.WriteLine((pconfig.optimizehistorylength).ToString(), ConsoleColor.Yellow, prefix: " optimize history length :", suffix: ""); | |
| 201 | + ColorConsole.WriteLine(pconfig.pingtimeout.ToString(), ConsoleColor.Yellow, prefix: " pingtimeout :", suffix: " ms"); | |
| 202 | + ColorConsole.WriteLine(pconfig.pingcyclenumofpackages.ToString(), ConsoleColor.Yellow, prefix: " pings per cycle:", suffix: " pings"); | |
| 203 | + ColorConsole.WriteLine((pconfig.pingcyclefrequency / 1000).ToString(), ConsoleColor.Yellow, prefix: " cycle frequency:", suffix: " sec"); | |
| 204 | + ColorConsole.WriteLine((pconfig.pingeractivlength / 60000).ToString(), ConsoleColor.Yellow, prefix: " pinger liftime :", suffix: " min"); | |
| 205 | + | |
| 206 | + ColorConsole.Write((pconfig.pingerhistorylength / 60000).ToString(), ConsoleColor.Yellow, prefix: " history length :", suffix: " min"); | |
| 207 | + ColorConsole.Write((pconfig.optimizehistorylength).ToString(), ConsoleColor.Yellow, prefix: " (optimized: ", suffix: ")"); | |
| 208 | + ColorConsole.WriteLine(); | |
| 209 | + | |
| 210 | + DisplayRoundTripTimeIntervalLimitsAndCategories(pconfig); | |
| 211 | + | |
| 212 | + ColorConsole.WriteLine(); | |
| 213 | + ColorConsole.WriteLine($"Pinger history color codes for roundtrip time categories and lost package categories:", ConsoleColor.Yellow); | |
| 214 | + ColorConsole.WriteLine(new string((char)9608, 1), CFATAL,prefix: " TimeOut/no answer/all packages lost :"); | |
| 215 | + ColorConsole.WriteLine( " Roundtrip time categories:Q1 Q2 Q3 Q4", ConsoleColor.Yellow); | |
| 216 | + DisplayHistoryMarksForOneLostPackageCategory(pconfig, CEXCELLENT, " Excellent (lost packages below 10%) :"); | |
| 217 | + DisplayHistoryMarksForOneLostPackageCategory(pconfig, CGOOD, " Good (lost packages between 10-20%):"); | |
| 218 | + DisplayHistoryMarksForOneLostPackageCategory(pconfig, CACCEPTABLE, " Acceptable (lost packages between 20-30%):"); | |
| 219 | + DisplayHistoryMarksForOneLostPackageCategory(pconfig, CBAD, " Bad (lost packages over 30%) :"); | |
| 220 | + } | |
| 221 | + private static void DisplayRoundTripTimeIntervalLimitsAndCategories(Pinger.PingerConfig pconfig) | |
| 222 | + { | |
| 195 | 223 | var rttlstring = (string.Join(",", pconfig.RoundTripTimeLimits)).ToString(); |
| 196 | - ColorConsole.WriteLine(rttlstring.Substring(0, rttlstring.Length>20?20: rttlstring.Length) + (rttlstring.Length > 20 ? "..." : ""), ConsoleColor.Yellow, prefix: " roundtrip time limit values :", suffix: "ms"); | |
| 197 | - ColorConsole.WriteLine((string.Join(",", pconfig.RoundTripTimeyCategoryLimits)).ToString(), ConsoleColor.Yellow, prefix: " roundtrip time category limit values:", suffix: "ms"); | |
| 224 | + ColorConsole.WriteLine(rttlstring.Substring(0, rttlstring.Length > 40 ? 40 : rttlstring.Length) + (rttlstring.Length > 40 ? "..." : ""), ConsoleColor.Yellow, prefix: " roundtrip time interval limit values:", suffix: " ms"); | |
| 225 | + ColorConsole.Write("", ConsoleColor.Yellow, prefix: " roundtrip time category limit values:"); | |
| 226 | + ColorConsole.Write(pconfig.RoundTripTimeyCategoryLimits.ElementAt(0).ToString(), ConsoleColor.Yellow, suffix: "ms <= "); | |
| 227 | + ColorConsole.Write("Q1", ConsoleColor.Yellow, suffix: " < "); | |
| 228 | + ColorConsole.Write(pconfig.RoundTripTimeyCategoryLimits.ElementAt(1).ToString(), ConsoleColor.Yellow, suffix: "ms <= "); | |
| 229 | + ColorConsole.Write("Q2", ConsoleColor.Yellow, suffix: " < "); | |
| 230 | + ColorConsole.Write(pconfig.RoundTripTimeyCategoryLimits.ElementAt(2).ToString(), ConsoleColor.Yellow, suffix: "ms <= "); | |
| 231 | + ColorConsole.Write("Q3", ConsoleColor.Yellow, suffix: " < "); | |
| 232 | + ColorConsole.Write(pconfig.RoundTripTimeyCategoryLimits.ElementAt(3).ToString(), ConsoleColor.Yellow, suffix: "ms <= "); | |
| 233 | + ColorConsole.Write("Q4", ConsoleColor.Yellow, suffix: ""); | |
| 234 | + ColorConsole.WriteLine(); | |
| 235 | + } | |
| 236 | + private static void DisplayHistoryMarksForOneLostPackageCategory(Pinger.PingerConfig pconfig, ConsoleColor c, string text) | |
| 237 | + { | |
| 238 | + ColorConsole.Write("", ConsoleColor.Yellow, prefix: text); | |
| 239 | + ColorConsole.Write(MARKQ1, c, suffix: " "); | |
| 240 | + ColorConsole.Write(MARKQ2, c, suffix: " "); | |
| 241 | + ColorConsole.Write(MARKQ3, c, suffix: " "); | |
| 242 | + ColorConsole.Write(MARKQ4, c, suffix: " "); | |
| 243 | + ColorConsole.WriteLine(); | |
| 198 | 244 | } |
| 199 | 245 | private static void DisplayPingerHistory(List<Pinger> selectedpingers,int firstrow,int cc) |
| 200 | 246 | { |
| 201 | 247 | if (selectedpingers == null || !selectedpingers.Any()) { return; } |
| 202 | 248 | ColorConsole.SetCursorPosition(cc, firstrow); |
| 203 | - | |
| 204 | - ColorConsole.ClearLine();ColorConsole.WriteLine(); | |
| 205 | - ColorConsole.ClearLine();ColorConsole.WriteLine($"Pinger History:", ConsoleColor.Yellow); | |
| 249 | + ColorConsole.ClearArea(0, selectedpingers.Count+ 10); | |
| 250 | + ColorConsole.WriteLine(); | |
| 251 | + ColorConsole.WriteLine($"Pinger History:", ConsoleColor.Yellow); | |
| 206 | 252 | var cursorleftposition = ColorConsole.CursorLeft; |
| 207 | 253 | var cursortopposition = ColorConsole.CursorTop; |
| 208 | 254 | while (true) |
| ... | ... | @@ -213,8 +259,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS |
| 213 | 259 | foreach (var pinger in selectedpingers) { pingcyclefrequency=DisplayOnePingerHistory(pinger); if (ColorConsole.KeyAvailable) { goto finishdisplayhistory; };} |
| 214 | 260 | var elapsed = DateTime.Now.Subtract(monitorcyclestart).TotalMilliseconds; |
| 215 | 261 | if (elapsed < pingcyclefrequency) { Thread.Sleep((int)((double)pingcyclefrequency - elapsed)); } |
| 216 | - ColorConsole.ClearLine(); ColorConsole.WriteLine(); | |
| 217 | - ColorConsole.ClearLine(); ColorConsole.WriteLine($"Press any key to exit from monitoring...", ConsoleColor.Yellow); | |
| 262 | + ColorConsole.WriteLine(); | |
| 263 | + ColorConsole.WriteLine($"Press any key to exit from monitoring...", ConsoleColor.Yellow); | |
| 218 | 264 | } |
| 219 | 265 | finishdisplayhistory:; |
| 220 | 266 | } |
| ... | ... | @@ -249,10 +295,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS |
| 249 | 295 | return h.PingCycleFrequency; |
| 250 | 296 | } |
| 251 | 297 | private static string GetPingCycleDisplayCharacter(Pinger.PingCycle he) |
| 252 | - { | |
| 253 | - return he.StatusCategory != Pinger.PingCycle.IPStatusCategory.Success | |
| 254 | - ? "9" | |
| 255 | - : he.RoundtripTimeCategory.ToString().Substring(1); | |
| 298 | + { | |
| 299 | + return he.StatusCategory != Pinger.PingCycle.IPStatusCategory.Success | |
| 300 | + ? MARKQ1 //"9" | |
| 301 | + : he.RoundtripTimeCategory == Pinger.PingCycle.RoundTripTimeCategory.Q1 ? MARKQ1 | |
| 302 | + : he.RoundtripTimeCategory == Pinger.PingCycle.RoundTripTimeCategory.Q2 ? MARKQ2 | |
| 303 | + : he.RoundtripTimeCategory == Pinger.PingCycle.RoundTripTimeCategory.Q3 ? MARKQ3 | |
| 304 | + : he.RoundtripTimeCategory == Pinger.PingCycle.RoundTripTimeCategory.Q4 ? MARKQ4 | |
| 305 | + : ""; | |
| 256 | 306 | } |
| 257 | 307 | private static ConsoleColor GetPingCycleDisplayColor(Pinger.PingCycle pingcycle) |
| 258 | 308 | { | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Program.cs
| ... | ... | @@ -35,6 +35,38 @@ namespace Vrh.Log4Pro.MaintenanceConsole |
| 35 | 35 | { |
| 36 | 36 | static void Main(string[] args) |
| 37 | 37 | { |
| 38 | + //while (true) | |
| 39 | + //{ | |
| 40 | + // Console.Clear(); | |
| 41 | + // Console.Write("Enter string:"); var cp1 = Console.ReadLine(); | |
| 42 | + // Console.WriteLine(); | |
| 43 | + // Console.ForegroundColor = ConsoleColor.Red; | |
| 44 | + // Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 45 | + // Console.ForegroundColor = ConsoleColor.DarkGreen; | |
| 46 | + // Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 47 | + // Console.ForegroundColor = ConsoleColor.Green; | |
| 48 | + // Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 49 | + // Console.ForegroundColor = ConsoleColor.DarkYellow; | |
| 50 | + // Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 51 | + // Console.ForegroundColor = ConsoleColor.Yellow; | |
| 52 | + // Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 53 | + // Console.ReadKey(); | |
| 54 | + // Console.Clear(); | |
| 55 | + // Console.Write("Enter Code page:"); var cp = Console.ReadLine(); | |
| 56 | + // try | |
| 57 | + // { | |
| 58 | + // Console.OutputEncoding = System.Text.Encoding.GetEncoding(int.Parse(cp)); | |
| 59 | + // for (int i = 0; i < 256; i++) | |
| 60 | + // { | |
| 61 | + // Console.Write((i).ToString().PadLeft(3) + "=> [" + (char)(i) + "] "); | |
| 62 | + // if (i % 6 == 5) { Console.WriteLine(); } | |
| 63 | + // //Console.Write((char)(i*j)); | |
| 64 | + // } | |
| 65 | + // } | |
| 66 | + // catch { Console.WriteLine("Code page is not supported!"); } | |
| 67 | + // Console.ReadKey(); | |
| 68 | + //} | |
| 69 | + | |
| 38 | 70 | var forcedmodulekey = CommandLine.GetCommandLineArgument(args, CLP.CMD_MODULE); |
| 39 | 71 | var commandmode = !string.IsNullOrEmpty(forcedmodulekey); |
| 40 | 72 | var silentmode = commandmode && !string.IsNullOrEmpty(CommandLine.GetCommandLineArgument(args, CLP.CMD_SILENT, switchtype: true)); | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
| ... | ... | @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; |
| 32 | 32 | // You can specify all the values or you can default the Build and Revision Numbers |
| 33 | 33 | // by using the '*' as shown below: |
| 34 | 34 | // [assembly: AssemblyVersion("1.0.*")] |
| 35 | -[assembly: AssemblyVersion("1.8.3.0")] | |
| 36 | -[assembly: AssemblyFileVersion("1.8.3.0")] | |
| 35 | +[assembly: AssemblyVersion("1.8.4.0")] | |
| 36 | +[assembly: AssemblyFileVersion("1.8.4.0")] | ... | ... |