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,7 +116,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS
116 { 116 {
117 int currentLineCursor = Console.CursorTop; 117 int currentLineCursor = Console.CursorTop;
118 int currentColCursor = Console.CursorLeft; 118 int currentColCursor = Console.CursorLeft;
119 - if (height == 0) { height = Console.WindowHeight; } 119 + if (height == 0) { height = Console.WindowHeight- Console.CursorTop; }
120 for (var i=0;i<height;i++) 120 for (var i=0;i<height;i++)
121 { 121 {
122 ClearLine(width, fillchar); 122 ClearLine(width, fillchar);
Vrh.Log4Pro.MaintenanceConsole/Manager - MaintenanceToolManager.cs
@@ -113,6 +113,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS @@ -113,6 +113,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
113 var suppresserroneousipaddresses = false; 113 var suppresserroneousipaddresses = false;
114 while (true) 114 while (true)
115 { 115 {
  116 + DisplayPingerScreenTitle();
116 DisplayPingerParameters(pingerconfigxml); 117 DisplayPingerParameters(pingerconfigxml);
117 var cc = ColorConsole.CursorLeft; 118 var cc = ColorConsole.CursorLeft;
118 var cr = ColorConsole.CursorTop; 119 var cr = ColorConsole.CursorTop;
@@ -120,7 +121,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS @@ -120,7 +121,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
120 DisplayAllPingerStatus(pingerconfigxml, iplist, firstrun, suppresserroneousipaddresses); 121 DisplayAllPingerStatus(pingerconfigxml, iplist, firstrun, suppresserroneousipaddresses);
121 if (!firstrun) 122 if (!firstrun)
122 { 123 {
123 -  
124 DisplayPingerCommands(); 124 DisplayPingerCommands();
125 } 125 }
126 126
@@ -177,32 +177,78 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS @@ -177,32 +177,78 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
177 ColorConsole.WriteLine($"Set [ip address] to 'ALL' or '*' for action to all ip addresses.", ConsoleColor.Yellow); 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 ColorConsole.Clear(); 191 ColorConsole.Clear();
183 var pingertitle = "IP Pinger"; 192 var pingertitle = "IP Pinger";
184 ColorConsole.WriteLine(ColorConsole.WideString(pingertitle), ConsoleColor.Yellow); 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 ColorConsole.WriteLine(); 198 ColorConsole.WriteLine();
187 ColorConsole.WriteLine($"Pinger configuration parameters:", ConsoleColor.Yellow); 199 ColorConsole.WriteLine($"Pinger configuration parameters:", ConsoleColor.Yellow);
188 var pconfig = new Pinger("127.0.0.1", pingerconfigxml).Configuration; 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 var rttlstring = (string.Join(",", pconfig.RoundTripTimeLimits)).ToString(); 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 private static void DisplayPingerHistory(List<Pinger> selectedpingers,int firstrow,int cc) 245 private static void DisplayPingerHistory(List<Pinger> selectedpingers,int firstrow,int cc)
200 { 246 {
201 if (selectedpingers == null || !selectedpingers.Any()) { return; } 247 if (selectedpingers == null || !selectedpingers.Any()) { return; }
202 ColorConsole.SetCursorPosition(cc, firstrow); 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 var cursorleftposition = ColorConsole.CursorLeft; 252 var cursorleftposition = ColorConsole.CursorLeft;
207 var cursortopposition = ColorConsole.CursorTop; 253 var cursortopposition = ColorConsole.CursorTop;
208 while (true) 254 while (true)
@@ -213,8 +259,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS @@ -213,8 +259,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
213 foreach (var pinger in selectedpingers) { pingcyclefrequency=DisplayOnePingerHistory(pinger); if (ColorConsole.KeyAvailable) { goto finishdisplayhistory; };} 259 foreach (var pinger in selectedpingers) { pingcyclefrequency=DisplayOnePingerHistory(pinger); if (ColorConsole.KeyAvailable) { goto finishdisplayhistory; };}
214 var elapsed = DateTime.Now.Subtract(monitorcyclestart).TotalMilliseconds; 260 var elapsed = DateTime.Now.Subtract(monitorcyclestart).TotalMilliseconds;
215 if (elapsed < pingcyclefrequency) { Thread.Sleep((int)((double)pingcyclefrequency - elapsed)); } 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 finishdisplayhistory:; 265 finishdisplayhistory:;
220 } 266 }
@@ -249,10 +295,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS @@ -249,10 +295,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS
249 return h.PingCycleFrequency; 295 return h.PingCycleFrequency;
250 } 296 }
251 private static string GetPingCycleDisplayCharacter(Pinger.PingCycle he) 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 private static ConsoleColor GetPingCycleDisplayColor(Pinger.PingCycle pingcycle) 307 private static ConsoleColor GetPingCycleDisplayColor(Pinger.PingCycle pingcycle)
258 { 308 {
Vrh.Log4Pro.MaintenanceConsole/Program.cs
@@ -35,6 +35,38 @@ namespace Vrh.Log4Pro.MaintenanceConsole @@ -35,6 +35,38 @@ namespace Vrh.Log4Pro.MaintenanceConsole
35 { 35 {
36 static void Main(string[] args) 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 var forcedmodulekey = CommandLine.GetCommandLineArgument(args, CLP.CMD_MODULE); 70 var forcedmodulekey = CommandLine.GetCommandLineArgument(args, CLP.CMD_MODULE);
39 var commandmode = !string.IsNullOrEmpty(forcedmodulekey); 71 var commandmode = !string.IsNullOrEmpty(forcedmodulekey);
40 var silentmode = commandmode && !string.IsNullOrEmpty(CommandLine.GetCommandLineArgument(args, CLP.CMD_SILENT, switchtype: true)); 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,5 +32,5 @@ using System.Runtime.InteropServices;
32 // You can specify all the values or you can default the Build and Revision Numbers 32 // You can specify all the values or you can default the Build and Revision Numbers
33 // by using the '*' as shown below: 33 // by using the '*' as shown below:
34 // [assembly: AssemblyVersion("1.0.*")] 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")]