Commit 2a636a7841b0d362be2d74a676d5792d7bedbd9a
1 parent
1eff8934
v1.30.0.0
- Unblock files megvalósítása
Showing
10 changed files
with
223 additions
and
169 deletions
Show diff stats
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - CommandLineParser.cs
... | ... | @@ -245,6 +245,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.CommandLineParserNS |
245 | 245 | { |
246 | 246 | public const string CMD_FOLDERS = "-FOLDERS"; |
247 | 247 | public static class FolderClean { public const string KEY = "CLN"; } |
248 | + public static class UnblockFiles { public const string KEY = "UNB"; } | |
248 | 249 | } |
249 | 250 | } |
250 | 251 | public static class ScheduledTaskManager | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Menu.cs
... | ... | @@ -32,7 +32,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MenuNS |
32 | 32 | /// </param> |
33 | 33 | /// <returns></returns> |
34 | 34 | public delegate Object MenuItemExecutorFunc(Menu.ExecutorParameter p, Object o); |
35 | - public delegate Object MenuItemDisplayerFunc(Object p, int i); | |
35 | + public enum MenuItemDisplayerReturnValue { EXIT, NEXTLINE, SAMELINE ,} | |
36 | + public delegate MenuItemDisplayerReturnValue MenuItemDisplayerFunc(Object p, int i); | |
36 | 37 | public delegate void MenuHeaderDisplayerFunc(); |
37 | 38 | |
38 | 39 | public Menu(string title, string selectionprompt = null) { Title = title; if (!string.IsNullOrWhiteSpace(selectionprompt)) { SelectionPrompt = selectionprompt; } } |
... | ... | @@ -261,9 +262,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MenuNS |
261 | 262 | for (var li = 0; li < 100; li++) |
262 | 263 | { |
263 | 264 | if (li > 0) { ColorConsole.Write(new string(' ', MenuItemIndentWidth)); } |
264 | - var str = (string)MenuItemDisplayer.Invoke(menuitem.Parameters, li); | |
265 | - if (string.IsNullOrEmpty(str)) { ColorConsole.SetCursorPosition(0, ColorConsole.CursorTop); } | |
266 | - if (str == null) { break; }//nincs több kiírandó sor | |
265 | + Menu.MenuItemDisplayerReturnValue rv = (Menu.MenuItemDisplayerReturnValue)MenuItemDisplayer.Invoke(menuitem.Parameters, li); | |
266 | + if (rv== Menu.MenuItemDisplayerReturnValue.EXIT || rv == Menu.MenuItemDisplayerReturnValue.SAMELINE) { ColorConsole.SetCursorPosition(0, ColorConsole.CursorTop); } | |
267 | + if (rv == Menu.MenuItemDisplayerReturnValue.EXIT) { break; }//nincs több kiírandó sor | |
267 | 268 | } |
268 | 269 | } |
269 | 270 | } | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Manager - BackupPackageManager.cs
... | ... | @@ -119,7 +119,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS |
119 | 119 | #endregion private DisplayBackupPackages |
120 | 120 | |
121 | 121 | #region private method: DisplayBackupPackageInfo |
122 | - private static object DisplayBackupPackageInfo(object obj, int lineix) | |
122 | + private static Menu.MenuItemDisplayerReturnValue DisplayBackupPackageInfo(object obj, int lineix) | |
123 | 123 | { |
124 | 124 | BackupPackage xbp = ((obj as Menu.ExecutorParameter).Parameters as BackupPackage); |
125 | 125 | BackupPackage bp = (new BackupPackage(xbp)).ResolveNames(null); |
... | ... | @@ -128,13 +128,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS |
128 | 128 | ColorConsole.Write($"{bp.Xml_PackageName}", ConsoleColor.Black, ConsoleColor.White); |
129 | 129 | ColorConsole.Write($"{bp.Xml_Description}", ConsoleColor.White,prefix:", "); |
130 | 130 | ColorConsole.WriteLine(""); |
131 | - return " "; | |
131 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
132 | 132 | } |
133 | 133 | if (lineix == 1) |
134 | 134 | { |
135 | 135 | ColorConsole.Write($"{bp.Xml_PackageFilePath}", ConsoleColor.White, prefix: "Package:"); |
136 | 136 | ColorConsole.WriteLine(""); |
137 | - return " "; | |
137 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
138 | 138 | } |
139 | 139 | if (lineix == 2) |
140 | 140 | { |
... | ... | @@ -142,9 +142,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS |
142 | 142 | ColorConsole.Write($"{bp.Xml_ExcludeMaskList}", ConsoleColor.White, prefix: " Excl.mask:"); |
143 | 143 | ColorConsole.Write($"{bp.SizePackageTotal}", ConsoleColor.White, prefix: ", Bytes to include:"); |
144 | 144 | ColorConsole.WriteLine(""); |
145 | - return " "; | |
145 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
146 | 146 | } |
147 | - return null; | |
147 | + return Menu.MenuItemDisplayerReturnValue.EXIT; | |
148 | 148 | } |
149 | 149 | #endregion private method: DisplayBackupPackageInfo |
150 | 150 | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Manager - FileCleanerManager.cs
... | ... | @@ -22,6 +22,9 @@ using Vrh.XmlProcessing; |
22 | 22 | using VRH.Common; |
23 | 23 | using System.Xml.Linq; |
24 | 24 | using System.Text.RegularExpressions; |
25 | +using System.Runtime.InteropServices; | |
26 | +using System.Security.Cryptography; | |
27 | +using static System.Net.WebRequestMethods; | |
25 | 28 | |
26 | 29 | namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS |
27 | 30 | { |
... | ... | @@ -41,15 +44,34 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS |
41 | 44 | |
42 | 45 | var menufunctions = new Menu("Manage Folders To Clean", "Select the management function!") |
43 | 46 | .AddMenuItem(new Menu.Item(CLP.Module.FileCleanerManager.Functions.FolderClean.KEY, "Clean folder", FolderClean, ep)) |
47 | + .AddMenuItem(new Menu.Item(CLP.Module.FileCleanerManager.Functions.UnblockFiles.KEY, "Unblock files", UnblockFiles, ep)) | |
44 | 48 | .SetSelectionMode(Menu.SelectionMode.Single) |
45 | 49 | .SetMenuHeaderDisplayer(FolderToCleanListDisplayer); |
46 | 50 | menufunctions.ExecuteMenu(functionkey); |
47 | 51 | return o2; |
48 | 52 | } |
49 | - #endregion Execute | |
53 | + #endregion Execute | |
50 | 54 | |
51 | - #region First level Executors with UI | |
52 | - private static object FolderClean(object parameter, object o) | |
55 | + #region First level Executors with UI | |
56 | + private static object UnblockFiles(object parameter, object o) | |
57 | + { | |
58 | + var config = (parameter as Menu.ExecutorParameter).GetConfig<FileCleanerManagerXmlProcessor>(); | |
59 | + var args = (parameter as Menu.ExecutorParameter).Args; | |
60 | + | |
61 | + var selectedftcindexes = CommandLine.GetCommandLineArgument(args, CLP.Module.FileCleanerManager.Functions.CMD_FOLDERS); | |
62 | + | |
63 | + var menufolders = DisplayFolderMenu(config, $"Select the folder(s) to manage with function '{nameof(UnblockFiles)}'!", silent: true); | |
64 | + | |
65 | + Menu.Selection sr = menufolders.Select(selectedftcindexes); | |
66 | + if (sr.Result == Menu.SelectionResult.Exit) { return o; } | |
67 | + else if (sr.Result == Menu.SelectionResult.None) { return o; } | |
68 | + else if (sr.Result == Menu.SelectionResult.Error) { return o; } | |
69 | + else if (sr.Result == Menu.SelectionResult.Ok) { } | |
70 | + else { } | |
71 | + foreach (var p in sr.SelectedParameterList) { OneFolderClean(p.Parameters as FolderToClean); } | |
72 | + return o; | |
73 | + } | |
74 | + private static object FolderClean(object parameter, object o) | |
53 | 75 | { |
54 | 76 | var config = (parameter as Menu.ExecutorParameter).GetConfig<FileCleanerManagerXmlProcessor>(); |
55 | 77 | var args = (parameter as Menu.ExecutorParameter).Args; |
... | ... | @@ -72,7 +94,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS |
72 | 94 | try |
73 | 95 | { |
74 | 96 | var di = new DirectoryInfo(ftc.Xml_DirectoryPath); |
75 | - var success = FileCleanerManagerCore.CleanFolderFiles(di, ftc, delete: true); | |
97 | + var success = FileCleanerManagerCore.CleanFolderFiles(di, ftc, enableexecute: true); | |
76 | 98 | ColorConsole.WriteLine($"Folder cleaned. Name:{ftc.Xml_DirectoryPath}", ConsoleColor.Green); |
77 | 99 | } |
78 | 100 | catch (Exception ex) { ColorConsole.WriteLine(ex.MessageNested(), ConsoleColor.Red); } |
... | ... | @@ -100,7 +122,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS |
100 | 122 | } |
101 | 123 | #endregion private DisplayFolderMenu |
102 | 124 | #region private method: DisplayFolderInfo |
103 | - private static object DisplayFolderInfo(object obj, int lineix) | |
125 | + private static Menu.MenuItemDisplayerReturnValue DisplayFolderInfo(object obj, int lineix) | |
104 | 126 | { |
105 | 127 | FolderToClean ws = (obj as Menu.ExecutorParameter).Parameters as FolderToClean; |
106 | 128 | if (lineix == 0) |
... | ... | @@ -108,40 +130,39 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS |
108 | 130 | ColorConsole.Write($"{ws.Xml_DirectoryPath}", ConsoleColor.Black, ConsoleColor.White); |
109 | 131 | var existscolor = ws.FolderExists ? ConsoleColor.Green : ConsoleColor.Red; |
110 | 132 | var existstext = ws.FolderExists ? "Exists" : "Missing"; |
111 | - ColorConsole.WriteLine(existstext, existscolor, bracket: "[]", prefix: " ", suffix: ". "); | |
112 | - return " "; | |
113 | - } | |
114 | - else if (lineix == 1) | |
115 | - { | |
116 | - if (ws.FolderExists) | |
117 | - { | |
118 | - ColorConsole.Write(ws.SizeSelectedBeforeClean.ToString(), ConsoleColor.Yellow, prefix: "Size of filtered files now:"); | |
119 | - ColorConsole.Write(ws.SizeSelectedAfterClean.ToString(), ConsoleColor.Yellow, prefix: ", after cleaning:", suffix: ". "); | |
120 | - ColorConsole.Write(ws.SizeSelectedCleaned.ToString(), ConsoleColor.Red, prefix: "To clean:", suffix: "."); | |
121 | - ColorConsole.WriteLine(" "); | |
122 | - return " "; | |
123 | - } | |
124 | - return ""; | |
125 | - } | |
126 | - else if (lineix == 2) | |
127 | - { | |
128 | - var fc2 = ws.Xml_Recurse ? ConsoleColor.Green : ConsoleColor.Yellow; | |
129 | - ColorConsole.Write($"{ws.Xml_Recurse}", fc2, prefix: "Recurse:", bracket: "[]"); | |
130 | - var fc0 = ws.Xml_RemoveEmptyFolder ? ConsoleColor.Green : ConsoleColor.Yellow; | |
131 | - ColorConsole.Write($"{ws.Xml_RemoveEmptyFolder}", fc0, prefix: ", Remove empty folder:", bracket: "[]"); | |
132 | - ColorConsole.Write(ws.Xml_IncludeMask, ConsoleColor.Yellow, prefix: ", Include mask:"); | |
133 | - ColorConsole.WriteLine(ws.Xml_ExcludeMaskList, ConsoleColor.Yellow, prefix: ", Exclude mask:"); | |
134 | - return " "; | |
135 | - } | |
136 | - else if (lineix == 3) | |
133 | + ColorConsole.Write(existstext, existscolor, bracket: "[]", prefix: " ", suffix: ". "); | |
134 | + if (!ws.FolderExists) { ColorConsole.WriteLine(); return Menu.MenuItemDisplayerReturnValue.EXIT; } | |
135 | + | |
136 | + var operationtext = ws.Xml_OperationUnblockEnable ? "UNBLOCK ONLY" : ws.Xml_OperationDeleteEnable ? "DELETE" : "INFO"; | |
137 | + var operationcolor = ws.Xml_OperationUnblockEnable ? ConsoleColor.Yellow : ws.Xml_OperationDeleteEnable ? ConsoleColor.Red : ConsoleColor.Green; | |
138 | + var removeemptyfoldertext = ws.Xml_RemoveEmptyFolder ? " with remove empty folders" : ""; | |
139 | + ColorConsole.Write(operationtext + removeemptyfoldertext, operationcolor, prefix: "Operation:", bracket: "[]", suffix: ". "); | |
140 | + ColorConsole.Write(ws.SizeSelectedBeforeClean.ToString(), ConsoleColor.Yellow, prefix: "Size of filtered files now:"); | |
141 | + if (ws.Xml_OperationDeleteEnable) | |
142 | + { | |
143 | + ColorConsole.Write(ws.SizeSelectedAfterClean.ToString(), ConsoleColor.Yellow, prefix: ", after cleaning:", suffix: ". "); | |
144 | + ColorConsole.Write(ws.SizeSelectedCleaned.ToString(), ConsoleColor.Red, prefix: "To clean:", suffix: "."); | |
145 | + } | |
146 | + ColorConsole.WriteLine(" "); | |
147 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
148 | + } | |
149 | + else if (lineix == 1) | |
150 | + { | |
151 | + var fc2 = ws.Xml_Recurse ? ConsoleColor.Green : ConsoleColor.Yellow; | |
152 | + ColorConsole.Write($"{ws.Xml_Recurse}", fc2, prefix: "Recurse:", bracket: "[]"); | |
153 | + ColorConsole.Write(ws.Xml_IncludeMask, ConsoleColor.Yellow, prefix: ", Include mask:"); | |
154 | + ColorConsole.WriteLine(ws.Xml_ExcludeMaskList, ConsoleColor.Yellow, prefix: ", Exclude mask:"); | |
155 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
156 | + } | |
157 | + else if (lineix == 2) | |
137 | 158 | { |
138 | 159 | ColorConsole.WriteLine(ws.Xml_IncludeFullpathRegexp, ConsoleColor.Yellow, prefix: "Full path regex:"); |
139 | - return " "; | |
160 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
140 | 161 | } |
141 | 162 | else // if (lineix == INDEXBASE) |
142 | 163 | { |
143 | - const int INDEXBASE = 4; // a linex következő indexe kerüljön ide !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | |
144 | - if (ws.Xml_ConditionList.Count <= lineix - INDEXBASE) { return null; } | |
164 | + const int INDEXBASE = 3; // a linex következő indexe kerüljön ide !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | |
165 | + if (ws.Xml_ConditionList.Count <= lineix - INDEXBASE) { return Menu.MenuItemDisplayerReturnValue.EXIT; } | |
145 | 166 | var c = ws.Xml_ConditionList.ElementAt(lineix- INDEXBASE); |
146 | 167 | if (c != null) |
147 | 168 | { |
... | ... | @@ -161,10 +182,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS |
161 | 182 | ColorConsole.Write(climit.ToString(), ConsoleColor.Yellow, prefix: ", Limit:", suffix: "days"); |
162 | 183 | } |
163 | 184 | ColorConsole.WriteLine(); |
164 | - return " "; | |
185 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
165 | 186 | } |
166 | 187 | } |
167 | - return null; | |
188 | + return Menu.MenuItemDisplayerReturnValue.EXIT; | |
168 | 189 | } |
169 | 190 | #endregion private method: DisplayFolderInfo |
170 | 191 | #region private CollectFolderInfo |
... | ... | @@ -179,7 +200,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS |
179 | 200 | var di = new DirectoryInfo(ftc.Xml_DirectoryPath); |
180 | 201 | ftc.SizeFolderTotal = FileCleanerManagerCore.DirSize(di,"*","","",ftc.Xml_Recurse); |
181 | 202 | ftc.SizeSelectedBeforeClean = FileCleanerManagerCore.DirSize(di, ftc.Xml_IncludeMask,ftc.Xml_ExcludeMaskList, ftc.Xml_IncludeFullpathRegexp, ftc.Xml_Recurse); |
182 | - ftc.SizeSelectedCleaned = FileCleanerManagerCore.CleanFolderFiles(di,ftc,delete:false); | |
203 | + ftc.SizeSelectedCleaned = FileCleanerManagerCore.CleanFolderFiles(di,ftc,enableexecute:false); | |
183 | 204 | } |
184 | 205 | return ftc; |
185 | 206 | } |
... | ... | @@ -287,9 +308,25 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS |
287 | 308 | } |
288 | 309 | return false; |
289 | 310 | } |
290 | - #endregion public FileIsToDelete | |
291 | - #region public CleanFiles | |
292 | - public static long CleanFolderFiles(DirectoryInfo d,FolderToClean ftc, bool delete) | |
311 | + #endregion public FileIsToDelete | |
312 | + #region public UnblockMany,UnblockOne | |
313 | + [DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)] | |
314 | + [return: MarshalAs(UnmanagedType.Bool)] | |
315 | + private static extern bool DeleteFile(string name); | |
316 | + | |
317 | + public static bool UnblockOne(string fileName) | |
318 | + { | |
319 | + return DeleteFile(fileName + ":Zone.Identifier"); | |
320 | + } | |
321 | + public static void UnblockMany(string path, string pattern) | |
322 | + { | |
323 | + var fullmask = Path.Combine(path, pattern); | |
324 | + string[] files = Directory.GetFiles(path, pattern, SearchOption.AllDirectories); | |
325 | + foreach (string file in files) { UnblockOne(file); } | |
326 | + } | |
327 | + #endregion public UnblockMany,UnblockOne | |
328 | + #region public CleanFolderFiles | |
329 | + public static long CleanFolderFiles(DirectoryInfo d,FolderToClean ftc, bool enableexecute) | |
293 | 330 | { |
294 | 331 | long cleanedsize = 0; |
295 | 332 | // Add file sizes. |
... | ... | @@ -302,8 +339,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS |
302 | 339 | try |
303 | 340 | { |
304 | 341 | if (Regex.Match(fi.Name, ZipTools.FileNameMaskListToRegex(ftc.Xml_ExcludeMaskList)).Success) continue; |
305 | - if (delete) { File.Delete(fi.FullName); } | |
306 | - cleanedsize += fl; | |
342 | + if (enableexecute) | |
343 | + { | |
344 | + if (ftc.Xml_OperationUnblockEnable) { UnblockOne(fi.FullName); } | |
345 | + else if (ftc.Xml_OperationDeleteEnable) { System.IO.File.Delete(fi.FullName); } | |
346 | + ColorConsole.Write(fi.FullName); ColorConsole.SetCursorPosition(0, ColorConsole.CursorTop); | |
347 | + } | |
348 | + cleanedsize += fl; | |
307 | 349 | } |
308 | 350 | catch { } |
309 | 351 | } |
... | ... | @@ -311,7 +353,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS |
311 | 353 | // Add subdirectory sizes. |
312 | 354 | if (ftc.Xml_Recurse) |
313 | 355 | { |
314 | - foreach (DirectoryInfo di in d.GetDirectories()) { cleanedsize += CleanFolderFiles(di, ftc, delete); } | |
356 | + foreach (DirectoryInfo di in d.GetDirectories()) { cleanedsize += /*recursion*/ CleanFolderFiles(di, ftc, enableexecute); } | |
315 | 357 | } |
316 | 358 | if (ftc.Xml_RemoveEmptyFolder && IsDirectoryEmpty(d)) |
317 | 359 | { |
... | ... | @@ -319,12 +361,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS |
319 | 361 | } |
320 | 362 | return cleanedsize; |
321 | 363 | } |
322 | - #endregion public CleanFiles | |
323 | - } | |
324 | - #endregion class FileCleanerManagerCore | |
364 | + #endregion public CleanFolderFiles | |
365 | + } | |
366 | + #endregion class FileCleanerManagerCore | |
325 | 367 | |
326 | - #region FileCleanerManagerCoreXmlProcessor class | |
327 | - public class FileCleanerManagerXmlProcessor : XmlParser | |
368 | + #region FileCleanerManagerCoreXmlProcessor class | |
369 | + public class FileCleanerManagerXmlProcessor : XmlParser | |
328 | 370 | { |
329 | 371 | private List<FolderToClean> _foldertocleanlist; |
330 | 372 | #region constructor |
... | ... | @@ -370,7 +412,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS |
370 | 412 | public string Xml_Key; |
371 | 413 | public string Xml_DirectoryPath; |
372 | 414 | public bool Xml_Recurse; |
373 | - public bool Xml_RemoveEmptyFolder; | |
415 | + public bool Xml_OperationUnblockEnable; | |
416 | + public bool Xml_OperationDeleteEnable; | |
417 | + public bool Xml_RemoveEmptyFolder; | |
374 | 418 | public string Xml_IncludeMask; |
375 | 419 | public string Xml_ExcludeMaskList; |
376 | 420 | public string Xml_IncludeFullpathRegexp; |
... | ... | @@ -404,8 +448,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS |
404 | 448 | Xml_DirectoryPath = foldertocleanxml.Attribute(XName.Get(nameof(XmlStructure.FolderToClean.Attributes.Directory)))?.Value; |
405 | 449 | if (string.IsNullOrWhiteSpace(Xml_DirectoryPath)) { throw new ApplicationException(string.Format(ATTRIBUTEMANDATORY, nameof(XmlStructure.FolderToClean.Attributes.Directory))); } |
406 | 450 | Xml_Recurse = GetValue(nameof(XmlStructure.FolderToClean.Attributes.Recurse), foldertocleanxml, XmlStructure.FolderToClean.Attributes.Recurse.Values.DEFAULT); |
451 | + Xml_OperationDeleteEnable= GetValue(nameof(XmlStructure.FolderToClean.Attributes.Delete), foldertocleanxml, XmlStructure.FolderToClean.Attributes.Delete.Values.DEFAULT); | |
452 | + Xml_OperationUnblockEnable= GetValue(nameof(XmlStructure.FolderToClean.Attributes.UnblockOnly), foldertocleanxml, XmlStructure.FolderToClean.Attributes.UnblockOnly.Values.DEFAULT); | |
407 | 453 | Xml_RemoveEmptyFolder = GetValue(nameof(XmlStructure.FolderToClean.Attributes.RemoveEmptyFolder), foldertocleanxml, XmlStructure.FolderToClean.Attributes.RemoveEmptyFolder.Values.DEFAULT); |
408 | - Xml_IncludeMask = GetValue(nameof(XmlStructure.FolderToClean.Attributes.IncludeMask), foldertocleanxml, XmlStructure.FolderToClean.Attributes.IncludeMask.Values.DEFAULT); | |
454 | + Xml_RemoveEmptyFolder = Xml_RemoveEmptyFolder && Xml_OperationDeleteEnable; | |
455 | + Xml_IncludeMask = GetValue(nameof(XmlStructure.FolderToClean.Attributes.IncludeMask), foldertocleanxml, XmlStructure.FolderToClean.Attributes.IncludeMask.Values.DEFAULT); | |
409 | 456 | Xml_ExcludeMaskList = GetValue(nameof(XmlStructure.FolderToClean.Attributes.ExcludeMaskList), foldertocleanxml, XmlStructure.FolderToClean.Attributes.ExcludeMaskList.Values.DEFAULT); |
410 | 457 | Xml_IncludeFullpathRegexp = GetValue(GetXElement(foldertocleanxml,nameof(XmlStructure.FolderToClean.IncludeFullpathRegexp)), XmlStructure.FolderToClean.IncludeFullpathRegexp.Values.DEFAULT); |
411 | 458 | Xml_IncludeFullpathRegexp = Xml_IncludeFullpathRegexp.Replace("{DTSREGEX}", commondatetimestampregex).Replace("{TSREGEX}", commontimestampregex).Replace("{DSREGEX}", commondatestampregex); |
... | ... | @@ -491,7 +538,21 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS |
491 | 538 | public static class Key { public static class Values { public const string DEFAULT = ""; } } |
492 | 539 | public static class Directory { } |
493 | 540 | public static class LimitDays { public static class Values { public const int DEFAULT = XmlStructure.CommonAttributes.Attributes.LimitDays.Values.DEFAULT; } } |
494 | - public static class Recurse | |
541 | + public static class Delete | |
542 | + { | |
543 | + public static class Values | |
544 | + { | |
545 | + public const bool DEFAULT = false; | |
546 | + } | |
547 | + } | |
548 | + public static class UnblockOnly | |
549 | + { | |
550 | + public static class Values | |
551 | + { | |
552 | + public const bool DEFAULT = false; | |
553 | + } | |
554 | + } | |
555 | + public static class Recurse | |
495 | 556 | { |
496 | 557 | public static class Values |
497 | 558 | { | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Manager - MSMQManager.cs
... | ... | @@ -615,12 +615,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS |
615 | 615 | } |
616 | 616 | #endregion private DisplayTasks |
617 | 617 | #region private method: DisplayTaskInfo |
618 | - private static object DisplayMSMQInfo(object obj, int lineix) | |
618 | + private static Menu.MenuItemDisplayerReturnValue DisplayMSMQInfo(object obj, int lineix) | |
619 | 619 | { |
620 | 620 | MSMQ st = (obj as Menu.ExecutorParameter).Parameters as MSMQ; |
621 | 621 | return st.DisplayShortInfo(lineix); |
622 | 622 | } |
623 | - private static object DisplayMSMQShortInfo(object obj, int lineix) | |
623 | + private static Menu.MenuItemDisplayerReturnValue DisplayMSMQShortInfo(object obj, int lineix) | |
624 | 624 | { |
625 | 625 | MSMQ st = (obj as Menu.ExecutorParameter).Parameters as MSMQ; |
626 | 626 | return st.DisplayVeryShortInfo(lineix); |
... | ... | @@ -1247,7 +1247,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS |
1247 | 1247 | } |
1248 | 1248 | #endregion CollectMSMQInfo |
1249 | 1249 | |
1250 | - public string DisplayVeryShortInfo(int lineix) | |
1250 | + public Menu.MenuItemDisplayerReturnValue DisplayVeryShortInfo(int lineix) | |
1251 | 1251 | { |
1252 | 1252 | MSMQ msmq = this; |
1253 | 1253 | if (lineix == 0) |
... | ... | @@ -1261,7 +1261,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS |
1261 | 1261 | else { statuscolor = ConsoleColor.Red; } |
1262 | 1262 | ColorConsole.Write(msmq.Status, statuscolor, bracket: "[]", prefix: " ", suffix: ". "); |
1263 | 1263 | ColorConsole.WriteLine(); |
1264 | - return " "; | |
1264 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1265 | 1265 | } |
1266 | 1266 | else if (lineix == 1) |
1267 | 1267 | { |
... | ... | @@ -1269,11 +1269,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS |
1269 | 1269 | ColorConsole.Write($"{msmq.Xml_AddressPrefix}", ConsoleColor.Black, ConsoleColor.White, prefix: "Format:", suffix: $" Queue is { privatepublictext }."); |
1270 | 1270 | ColorConsole.Write($"{msmq.Xml_Server}", ConsoleColor.Black, ConsoleColor.White, prefix: "Server:"); |
1271 | 1271 | ColorConsole.WriteLine(); |
1272 | - return " "; | |
1272 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1273 | 1273 | } |
1274 | - return null; | |
1274 | + return Menu.MenuItemDisplayerReturnValue.EXIT; | |
1275 | 1275 | } |
1276 | - public string DisplayShortInfo(int lineix) | |
1276 | + public Menu.MenuItemDisplayerReturnValue DisplayShortInfo(int lineix) | |
1277 | 1277 | { |
1278 | 1278 | MSMQ msmq = this; |
1279 | 1279 | if (lineix == 0) |
... | ... | @@ -1287,7 +1287,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS |
1287 | 1287 | else { statuscolor = ConsoleColor.Red; } |
1288 | 1288 | ColorConsole.Write(msmq.Status, statuscolor, bracket: "[]", prefix: " ", suffix: ". "); |
1289 | 1289 | ColorConsole.WriteLine(); |
1290 | - return " "; | |
1290 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1291 | 1291 | } |
1292 | 1292 | else if (lineix == 1) |
1293 | 1293 | { |
... | ... | @@ -1295,71 +1295,56 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS |
1295 | 1295 | ColorConsole.Write($"{msmq.Xml_AddressPrefix}", ConsoleColor.Black, ConsoleColor.White, prefix: "Format:", suffix: $" Queue is { privatepublictext }."); |
1296 | 1296 | ColorConsole.Write($"{msmq.Xml_Server}", ConsoleColor.Black, ConsoleColor.White, prefix: "Server:", suffix: $" Queue is { privatepublictext }."); |
1297 | 1297 | ColorConsole.WriteLine(); |
1298 | - return " "; | |
1298 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1299 | 1299 | } |
1300 | 1300 | else if (lineix == 2) |
1301 | 1301 | { |
1302 | 1302 | ColorConsole.Write($"{msmq.Path}", ConsoleColor.Yellow, prefix: "Path ", suffix: ", "); |
1303 | 1303 | ColorConsole.WriteLine(); |
1304 | - return " "; | |
1304 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1305 | 1305 | } |
1306 | 1306 | else if (lineix == 3) |
1307 | 1307 | { |
1308 | - if (msmq.StatusDescription != null) | |
1309 | - { | |
1310 | - ConsoleColor color = ConsoleColor.Yellow; | |
1311 | - if (msmq.Status == "Ready") { color = ConsoleColor.Green; } | |
1312 | - else if (msmq.Status == "Error") { color = ConsoleColor.Red; } | |
1313 | - ColorConsole.Write($"{msmq.StatusDescription}", color, prefix: "Status description "); | |
1314 | - ColorConsole.WriteLine(); | |
1315 | - return " "; | |
1316 | - } | |
1317 | - return "";//empty=van még szöveg, de most nem történt kiírás | |
1318 | - } | |
1319 | - else if (lineix == 4) | |
1308 | + if (msmq.StatusDescription == null) return Menu.MenuItemDisplayerReturnValue.SAMELINE;//empty=van még szöveg, de most nem történt kiírás | |
1309 | + ConsoleColor color = ConsoleColor.Yellow; | |
1310 | + if (msmq.Status == "Ready") { color = ConsoleColor.Green; } | |
1311 | + else if (msmq.Status == "Error") { color = ConsoleColor.Red; } | |
1312 | + ColorConsole.Write($"{msmq.StatusDescription}", color, prefix: "Status description "); | |
1313 | + ColorConsole.WriteLine(); | |
1314 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1315 | + } | |
1316 | + else if (lineix == 4) | |
1320 | 1317 | { |
1321 | - if (msmq.Status == "Ready") | |
1322 | - { | |
1323 | - ColorConsole.Write($"{msmq.FormatName}", ConsoleColor.Yellow, prefix: "FormatName "); | |
1324 | - ColorConsole.WriteLine(); | |
1325 | - return " "; | |
1326 | - } | |
1327 | - return ""; | |
1328 | - } | |
1329 | - else if (lineix == 5) | |
1318 | + if (msmq.Status != "Ready") return Menu.MenuItemDisplayerReturnValue.SAMELINE; | |
1319 | + ColorConsole.Write($"{msmq.FormatName}", ConsoleColor.Yellow, prefix: "FormatName "); | |
1320 | + ColorConsole.WriteLine(); | |
1321 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1322 | + } | |
1323 | + else if (lineix == 5) | |
1330 | 1324 | { |
1331 | - if (msmq.Status == "Ready") | |
1332 | - { | |
1333 | - ColorConsole.Write($"{msmq.Id}", ConsoleColor.Yellow, prefix: "Id "); | |
1334 | - ColorConsole.WriteLine(); | |
1335 | - return " "; | |
1336 | - } | |
1337 | - return ""; | |
1338 | - } | |
1339 | - else if (lineix == 6) | |
1325 | + if (msmq.Status != "Ready") return Menu.MenuItemDisplayerReturnValue.SAMELINE; | |
1326 | + ColorConsole.Write($"{msmq.Id}", ConsoleColor.Yellow, prefix: "Id "); | |
1327 | + ColorConsole.WriteLine(); | |
1328 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1329 | + } | |
1330 | + else if (lineix == 6) | |
1340 | 1331 | { |
1341 | - if (msmq.Status == "Ready") | |
1342 | - { | |
1343 | - ColorConsole.Write(msmq.NumOfMessages.ToString(), ConsoleColor.Yellow, prefix: "Num.of msgs in queue ", suffix: ". "); | |
1344 | - ColorConsole.Write($"{msmq.LastModifyTime}", ConsoleColor.Yellow, prefix: "LastModified ", suffix: ", "); | |
1345 | - ColorConsole.WriteLine(); | |
1346 | - return " "; | |
1347 | - } | |
1348 | - return ""; | |
1349 | - } | |
1350 | - else if (lineix == 7) | |
1332 | + if (msmq.Status != "Ready") return Menu.MenuItemDisplayerReturnValue.SAMELINE; | |
1333 | + ColorConsole.Write(msmq.NumOfMessages.ToString(), ConsoleColor.Yellow, prefix: "Num.of msgs in queue ", suffix: ". "); | |
1334 | + ColorConsole.Write($"{msmq.LastModifyTime}", ConsoleColor.Yellow, prefix: "LastModified ", suffix: ", "); | |
1335 | + ColorConsole.WriteLine(); | |
1336 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1337 | + } | |
1338 | + else if (lineix == 7) | |
1351 | 1339 | { |
1352 | - if (msmq.Status == "Ready") | |
1353 | - { | |
1354 | - ColorConsole.Write($"{msmq.AccessMode}", ConsoleColor.Yellow, prefix: "AccessMode ", suffix: ", "); | |
1355 | - ColorConsole.Write($"{msmq.CanRead}", ConsoleColor.Yellow, prefix: "CanRead ", suffix: ", "); | |
1356 | - ColorConsole.Write($"{msmq.CanWrite}", ConsoleColor.Yellow, prefix: "CanWrite ", suffix: ", "); | |
1357 | - ColorConsole.WriteLine(); | |
1358 | - return " "; | |
1359 | - } | |
1360 | - return ""; | |
1361 | - } | |
1362 | - return null; | |
1340 | + if (msmq.Status == "Ready") return Menu.MenuItemDisplayerReturnValue.SAMELINE; | |
1341 | + ColorConsole.Write($"{msmq.AccessMode}", ConsoleColor.Yellow, prefix: "AccessMode ", suffix: ", "); | |
1342 | + ColorConsole.Write($"{msmq.CanRead}", ConsoleColor.Yellow, prefix: "CanRead ", suffix: ", "); | |
1343 | + ColorConsole.Write($"{msmq.CanWrite}", ConsoleColor.Yellow, prefix: "CanWrite ", suffix: ", "); | |
1344 | + ColorConsole.WriteLine(); | |
1345 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1346 | + } | |
1347 | + return Menu.MenuItemDisplayerReturnValue.EXIT; | |
1363 | 1348 | } |
1364 | 1349 | |
1365 | 1350 | #region DisplayInfo | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs
... | ... | @@ -1208,7 +1208,7 @@ GO |
1208 | 1208 | } |
1209 | 1209 | #endregion private DisplaySQLDataBaseMenu |
1210 | 1210 | #region private method: DisplayDataBaseInfo |
1211 | - private static object DisplayDataBaseInfo(object obj, int lineix) | |
1211 | + private static Menu.MenuItemDisplayerReturnValue DisplayDataBaseInfo(object obj, int lineix) | |
1212 | 1212 | { |
1213 | 1213 | SQLDataBase st = (obj as Menu.ExecutorParameter).Parameters as SQLDataBase; |
1214 | 1214 | //SQLDataBaseManagerCore.GetPhysicalFilesLocationAndSize(st.SQLCS,out string dbsizetext,out string dbpathtext); |
... | ... | @@ -1224,44 +1224,44 @@ GO |
1224 | 1224 | } |
1225 | 1225 | if (st.Xml_IsRemoteDB) { ColorConsole.Write("REMOTE", ConsoleColor.Cyan, bracket: "[]", prefix: "", suffix: ""); } |
1226 | 1226 | ColorConsole.WriteLine(); |
1227 | - return " "; | |
1227 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1228 | 1228 | } |
1229 | 1229 | else if (lineix == 1) |
1230 | 1230 | { |
1231 | 1231 | ColorConsole.Write($"{st.Xml_BackupFileNameMask}", ConsoleColor.Yellow, prefix: "Backup to:", suffix: ".xxx"); |
1232 | 1232 | ColorConsole.WriteLine(); |
1233 | - return ""; | |
1233 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1234 | 1234 | } |
1235 | 1235 | else if (lineix == 2) |
1236 | 1236 | { |
1237 | 1237 | ColorConsole.Write($"{st.SQLCS}", ConsoleColor.Yellow, prefix: "SQL DB connection:", suffix: ", "); |
1238 | 1238 | ColorConsole.WriteLine(" "); |
1239 | - return " "; | |
1239 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1240 | 1240 | } |
1241 | 1241 | else if (lineix == 3) |
1242 | 1242 | { |
1243 | 1243 | var PhysicalFilesDirectoryPathcolor = st.PhysicalFilesDirectoryPath.StartsWith("ERR") ? ConsoleColor.Red : ConsoleColor.Yellow; |
1244 | 1244 | ColorConsole.Write($"{st.PhysicalFilesDirectoryPath}", PhysicalFilesDirectoryPathcolor, prefix: "DB files physical location:", suffix: " "); |
1245 | 1245 | ColorConsole.WriteLine(" "); |
1246 | - return " "; | |
1246 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1247 | 1247 | } |
1248 | 1248 | else if (lineix == 4) |
1249 | 1249 | { |
1250 | 1250 | var SizeStringcolor = st.SizeString.StartsWith("ERR") ? ConsoleColor.Red : ConsoleColor.Yellow; |
1251 | 1251 | ColorConsole.Write(st.SizeString, SizeStringcolor, prefix: "DB size:", suffix: " "); |
1252 | 1252 | ColorConsole.WriteLine(" "); |
1253 | - return " "; | |
1253 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1254 | 1254 | } |
1255 | 1255 | else if (5 <= lineix && lineix <= 5 + st.Xml_SQLScriptList.Count) |
1256 | 1256 | { |
1257 | - if (st.Xml_SQLScriptList.Count == 0) { return null; } | |
1258 | - if (st.Xml_SQLScriptList.Count-1 < lineix-5) { return null; } | |
1257 | + if (st.Xml_SQLScriptList.Count == 0) { return Menu.MenuItemDisplayerReturnValue.EXIT; } | |
1258 | + if (st.Xml_SQLScriptList.Count-1 < lineix-5) { return Menu.MenuItemDisplayerReturnValue.EXIT; } | |
1259 | 1259 | var s = st.Xml_SQLScriptList.ToArray()[lineix-5]; |
1260 | 1260 | ColorConsole.Write(s.Key, ConsoleColor.Yellow, bracket: "[]", suffix: " ", prefix: " Script: "); |
1261 | 1261 | ColorConsole.WriteLine($"{s.Description} ({s.Name})", ConsoleColor.Yellow); |
1262 | - return " "; | |
1262 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
1263 | 1263 | } |
1264 | - return null; | |
1264 | + return Menu.MenuItemDisplayerReturnValue.EXIT; | |
1265 | 1265 | } |
1266 | 1266 | #endregion private method: DisplayDataBaseInfo |
1267 | 1267 | #endregion private methods | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Manager - ScheduledTaskManager.cs
... | ... | @@ -272,7 +272,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ScheduledTaskManagerNS |
272 | 272 | } |
273 | 273 | #endregion private DisplayTasks |
274 | 274 | #region private method: DisplayTaskInfo |
275 | - private static object DisplayTaskInfo(object obj, int lineix) | |
275 | + private static Menu.MenuItemDisplayerReturnValue DisplayTaskInfo(object obj, int lineix) | |
276 | 276 | { |
277 | 277 | ScheduledTask st = (obj as Menu.ExecutorParameter).Parameters as ScheduledTask; |
278 | 278 | if (lineix == 0) |
... | ... | @@ -285,7 +285,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ScheduledTaskManagerNS |
285 | 285 | ColorConsole.Write(st.PriorityText(st.Priority), statuscolor, prefix: "Effective priority ", suffix: ". "); |
286 | 286 | } |
287 | 287 | ColorConsole.WriteLine(); |
288 | - return " "; | |
288 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
289 | 289 | } |
290 | 290 | else if (lineix == 1) |
291 | 291 | { |
... | ... | @@ -295,14 +295,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ScheduledTaskManagerNS |
295 | 295 | ColorConsole.Write($"{st.Xml_Enable}", ConsoleColor.Yellow, prefix: "After install: Enable=", suffix: ","); |
296 | 296 | ColorConsole.Write($"{st.Xml_Run}", ConsoleColor.Yellow, prefix: "Run=", suffix: ". "); |
297 | 297 | ColorConsole.WriteLine(" "); |
298 | - return " "; | |
298 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
299 | 299 | } |
300 | 300 | else if (lineix == 2) |
301 | 301 | { |
302 | 302 | ColorConsole.WriteLine($"{st.Xml_Commandname}", ConsoleColor.Yellow, prefix: "Command: "); |
303 | - return " "; | |
303 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
304 | 304 | } |
305 | - return null; | |
305 | + return Menu.MenuItemDisplayerReturnValue.EXIT; | |
306 | 306 | } |
307 | 307 | #endregion private method: DisplayTaskInfo |
308 | 308 | #endregion private methods | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Manager - WebApplicationManager.cs
... | ... | @@ -595,7 +595,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
595 | 595 | #endregion 1st level Executors |
596 | 596 | |
597 | 597 | #region private method: DisplayWebAppInfo |
598 | - private static object DisplayWebAppInfo(object obj, int lineix) | |
598 | + private static Menu.MenuItemDisplayerReturnValue DisplayWebAppInfo(object obj, int lineix) | |
599 | 599 | { |
600 | 600 | WebApplication wa = (obj as Menu.ExecutorParameter).Parameters as WebApplication; |
601 | 601 | var numofvd = wa.Xml_VirtualDirectoryList?.Count()??0; |
... | ... | @@ -605,8 +605,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
605 | 605 | if (lineix == 0) |
606 | 606 | { |
607 | 607 | ColorConsole.WriteLine($"{wa.Xml_Description}", ConsoleColor.Black, ConsoleColor.White); |
608 | - } | |
609 | - else if (lineix == 1) | |
608 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
609 | + } | |
610 | + else if (lineix == 1) | |
610 | 611 | { |
611 | 612 | ColorConsole.Write($"Web app:"); |
612 | 613 | ColorConsole.Write($"{wa.Xml_AppName}", ConsoleColor.Cyan); |
... | ... | @@ -616,13 +617,15 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
616 | 617 | ColorConsole.Write($"{wa.ApplicationPath}", ConsoleColor.White); |
617 | 618 | ColorConsole.Write($", Phy.path:"); |
618 | 619 | ColorConsole.WriteLine($"{wa.Xml_AppPhysicalPath}", ConsoleColor.White); |
619 | - } | |
620 | - else if (lineix == 2) | |
620 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
621 | + } | |
622 | + else if (lineix == 2) | |
621 | 623 | { |
622 | 624 | ColorConsole.Write($"impersonate identity:"); |
623 | 625 | ColorConsole.WriteLine($"{wa.AppImpersonateIdentity}", ConsoleColor.White); |
624 | - } | |
625 | - else if (lineix == 3) | |
626 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
627 | + } | |
628 | + else if (lineix == 3) | |
626 | 629 | { |
627 | 630 | ColorConsole.Write($"Site:"); |
628 | 631 | ColorConsole.Write($"{wa.Xml_SiteName}", ConsoleColor.Cyan); |
... | ... | @@ -635,8 +638,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
635 | 638 | ColorConsole.Write($"{wa.SitePortList}", ConsoleColor.White); |
636 | 639 | ColorConsole.Write($", Phy.path:"); |
637 | 640 | ColorConsole.WriteLine($"{wa.Xml_SitePhysicalPath}", ConsoleColor.White); |
638 | - } | |
639 | - else if (lineix == 4) | |
641 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
642 | + } | |
643 | + else if (lineix == 4) | |
640 | 644 | { |
641 | 645 | ColorConsole.Write($"Pool:"); |
642 | 646 | ColorConsole.Write($"{wa.Xml_PoolName}", ConsoleColor.Cyan); |
... | ... | @@ -648,8 +652,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
648 | 652 | ColorConsole.Write($"{waps}", fc1, bracket: "()"); |
649 | 653 | ColorConsole.Write($", identity:"); |
650 | 654 | ColorConsole.WriteLine($"{wa.PoolAccount}", ConsoleColor.White); |
651 | - } | |
652 | - else if (5 <= lineix && lineix < 5+numofvd) | |
655 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
656 | + } | |
657 | + else if (5 <= lineix && lineix < 5+numofvd) | |
653 | 658 | { |
654 | 659 | var elementindex = lineix - 5; |
655 | 660 | var currentelement = wa.Xml_VirtualDirectoryList.ElementAt(elementindex); |
... | ... | @@ -658,8 +663,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
658 | 663 | ColorConsole.Write($", ("); |
659 | 664 | ColorConsole.Write($"{currentelement.PhysicalPath}", ConsoleColor.Cyan); |
660 | 665 | ColorConsole.WriteLine($")"); |
661 | - } | |
662 | - else if (5+numofvd <= lineix && lineix < 5 + numofvd + numofwp) | |
666 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
667 | + } | |
668 | + else if (5+numofvd <= lineix && lineix < 5 + numofvd + numofwp) | |
663 | 669 | { |
664 | 670 | var elementindex = lineix - (5 + numofvd); |
665 | 671 | if (numofwp == 0 || elementindex > numofwp - 1) { ColorConsole.WriteLine(); } |
... | ... | @@ -683,13 +689,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS |
683 | 689 | } |
684 | 690 | ColorConsole.WriteLine(); |
685 | 691 | } |
686 | - } | |
687 | - else | |
692 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
693 | + } | |
694 | + else | |
688 | 695 | { |
689 | 696 | ColorConsole.WriteLine(); |
690 | - return null; | |
697 | + return Menu.MenuItemDisplayerReturnValue.EXIT; | |
691 | 698 | } |
692 | - return ""; | |
693 | 699 | } |
694 | 700 | #endregion private method: DisplayWebAppInfo |
695 | 701 | } | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs
... | ... | @@ -293,11 +293,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS |
293 | 293 | #endregion DisplayServices |
294 | 294 | |
295 | 295 | #region private method: DisplayServiceInfo |
296 | - private static object DisplayServiceInfo(object obj, int lineix) | |
296 | + private static Menu.MenuItemDisplayerReturnValue DisplayServiceInfo(object obj, int lineix) | |
297 | 297 | { |
298 | - if (obj == null) { return null; } | |
298 | + if (obj == null) { return Menu.MenuItemDisplayerReturnValue.EXIT; } | |
299 | 299 | WindowsService ws = (obj as Menu.ExecutorParameter).Parameters as WindowsService; |
300 | - if (ws == null) { return null; } | |
300 | + if (ws == null) { return Menu.MenuItemDisplayerReturnValue.EXIT; } | |
301 | 301 | if (lineix == 0) |
302 | 302 | { |
303 | 303 | ColorConsole.Write($"{ws.Description}", ConsoleColor.Black, ConsoleColor.White); |
... | ... | @@ -305,8 +305,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS |
305 | 305 | ColorConsole.Write($", User:"); |
306 | 306 | ColorConsole.Write($"{ws.StartName}", ConsoleColor.White); |
307 | 307 | ColorConsole.WriteLine(); |
308 | - return ws.DisplayName + ws.Description; | |
309 | - } | |
308 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
309 | + } | |
310 | 310 | else if (lineix == 1) |
311 | 311 | { |
312 | 312 | ColorConsole.Write($"Win service:"); |
... | ... | @@ -339,7 +339,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS |
339 | 339 | ColorConsole.Write($"{ws.ProcessId}", ConsoleColor.White); |
340 | 340 | } |
341 | 341 | ColorConsole.WriteLine(); |
342 | - return ws.Name; | |
342 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
343 | 343 | } |
344 | 344 | else if (lineix == 2) |
345 | 345 | { |
... | ... | @@ -371,32 +371,32 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS |
371 | 371 | ColorConsole.Write(downtimetext, ConsoleColor.Red); |
372 | 372 | } |
373 | 373 | ColorConsole.WriteLine(); |
374 | - return " "; | |
374 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
375 | 375 | } |
376 | 376 | else if (lineix == 3) |
377 | 377 | { |
378 | - if (string.IsNullOrEmpty(ws.PathName)) { return ""; } | |
378 | + if (string.IsNullOrWhiteSpace(ws.PathName)) { return Menu.MenuItemDisplayerReturnValue.SAMELINE; } | |
379 | 379 | var cmdarray = CommandLineParser.SplitArgs(ws.PathName).ToArray(); |
380 | 380 | ColorConsole.Write($"Start command:"); |
381 | 381 | ColorConsole.WriteLine($"{cmdarray[0]}", ConsoleColor.White); |
382 | - return ws.PathName; | |
382 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
383 | 383 | } |
384 | 384 | else if (lineix == 4) |
385 | 385 | { |
386 | - if (string.IsNullOrEmpty(ws.PathName)) { return ""; } | |
386 | + if (string.IsNullOrWhiteSpace(ws.PathName)) { return Menu.MenuItemDisplayerReturnValue.SAMELINE; } | |
387 | 387 | var cmdparams = CommandLineParser.SplitArgs(ws.PathName).Skip(1).ToArray(); |
388 | - if (cmdparams.Length == 0) { return ""; } | |
388 | + if (cmdparams.Length == 0) { return Menu.MenuItemDisplayerReturnValue.SAMELINE;} | |
389 | 389 | var cmdparamsstr = "["+string.Join("][", cmdparams)+"]"; |
390 | 390 | ColorConsole.Write($"Start arguments:"); |
391 | 391 | ColorConsole.WriteLine(cmdparamsstr, ConsoleColor.White); |
392 | - return cmdparamsstr; | |
392 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
393 | 393 | } |
394 | 394 | else if (lineix == 5) |
395 | 395 | { |
396 | 396 | ColorConsole.WriteLine(); |
397 | - return " "; | |
397 | + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; | |
398 | 398 | } |
399 | - return null; | |
399 | + return Menu.MenuItemDisplayerReturnValue.EXIT; | |
400 | 400 | } |
401 | 401 | #endregion private method: DisplayServiceInfo |
402 | 402 | ... | ... |
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.29.3.0")] | |
36 | -[assembly: AssemblyFileVersion("1.29.3.0")] | |
35 | +[assembly: AssemblyVersion("1.30.0.0")] | |
36 | +[assembly: AssemblyFileVersion("1.30.0.0")] | ... | ... |