Commit e9ee2f8b120b5210e16d824fe60fe896048deb8e

Authored by Schwirg László
1 parent 7e23fb05

v1.8.4

- IP Pinger felület fejlesztése
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")]
... ...