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")] | ... | ... |