diff --git a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - CommandLineParser.cs b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - CommandLineParser.cs index e70d7d7..83dc5c9 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - CommandLineParser.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - CommandLineParser.cs @@ -245,6 +245,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.CommandLineParserNS { public const string CMD_FOLDERS = "-FOLDERS"; public static class FolderClean { public const string KEY = "CLN"; } + public static class UnblockFiles { public const string KEY = "UNB"; } } } public static class ScheduledTaskManager diff --git a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Menu.cs b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Menu.cs index ef30d4f..16e72d3 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Menu.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Menu.cs @@ -32,7 +32,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MenuNS /// /// public delegate Object MenuItemExecutorFunc(Menu.ExecutorParameter p, Object o); - public delegate Object MenuItemDisplayerFunc(Object p, int i); + public enum MenuItemDisplayerReturnValue { EXIT, NEXTLINE, SAMELINE ,} + public delegate MenuItemDisplayerReturnValue MenuItemDisplayerFunc(Object p, int i); public delegate void MenuHeaderDisplayerFunc(); public Menu(string title, string selectionprompt = null) { Title = title; if (!string.IsNullOrWhiteSpace(selectionprompt)) { SelectionPrompt = selectionprompt; } } @@ -261,9 +262,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MenuNS for (var li = 0; li < 100; li++) { if (li > 0) { ColorConsole.Write(new string(' ', MenuItemIndentWidth)); } - var str = (string)MenuItemDisplayer.Invoke(menuitem.Parameters, li); - if (string.IsNullOrEmpty(str)) { ColorConsole.SetCursorPosition(0, ColorConsole.CursorTop); } - if (str == null) { break; }//nincs több kiírandó sor + Menu.MenuItemDisplayerReturnValue rv = (Menu.MenuItemDisplayerReturnValue)MenuItemDisplayer.Invoke(menuitem.Parameters, li); + if (rv== Menu.MenuItemDisplayerReturnValue.EXIT || rv == Menu.MenuItemDisplayerReturnValue.SAMELINE) { ColorConsole.SetCursorPosition(0, ColorConsole.CursorTop); } + if (rv == Menu.MenuItemDisplayerReturnValue.EXIT) { break; }//nincs több kiírandó sor } } } diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - BackupPackageManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - BackupPackageManager.cs index d649979..fe7faa3 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Manager - BackupPackageManager.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - BackupPackageManager.cs @@ -119,7 +119,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS #endregion private DisplayBackupPackages #region private method: DisplayBackupPackageInfo - private static object DisplayBackupPackageInfo(object obj, int lineix) + private static Menu.MenuItemDisplayerReturnValue DisplayBackupPackageInfo(object obj, int lineix) { BackupPackage xbp = ((obj as Menu.ExecutorParameter).Parameters as BackupPackage); BackupPackage bp = (new BackupPackage(xbp)).ResolveNames(null); @@ -128,13 +128,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS ColorConsole.Write($"{bp.Xml_PackageName}", ConsoleColor.Black, ConsoleColor.White); ColorConsole.Write($"{bp.Xml_Description}", ConsoleColor.White,prefix:", "); ColorConsole.WriteLine(""); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } if (lineix == 1) { ColorConsole.Write($"{bp.Xml_PackageFilePath}", ConsoleColor.White, prefix: "Package:"); ColorConsole.WriteLine(""); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } if (lineix == 2) { @@ -142,9 +142,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS ColorConsole.Write($"{bp.Xml_ExcludeMaskList}", ConsoleColor.White, prefix: " Excl.mask:"); ColorConsole.Write($"{bp.SizePackageTotal}", ConsoleColor.White, prefix: ", Bytes to include:"); ColorConsole.WriteLine(""); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } - return null; + return Menu.MenuItemDisplayerReturnValue.EXIT; } #endregion private method: DisplayBackupPackageInfo diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - FileCleanerManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - FileCleanerManager.cs index f0dcfb9..697a3fa 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Manager - FileCleanerManager.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - FileCleanerManager.cs @@ -22,6 +22,9 @@ using Vrh.XmlProcessing; using VRH.Common; using System.Xml.Linq; using System.Text.RegularExpressions; +using System.Runtime.InteropServices; +using System.Security.Cryptography; +using static System.Net.WebRequestMethods; namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS { @@ -41,15 +44,34 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS var menufunctions = new Menu("Manage Folders To Clean", "Select the management function!") .AddMenuItem(new Menu.Item(CLP.Module.FileCleanerManager.Functions.FolderClean.KEY, "Clean folder", FolderClean, ep)) + .AddMenuItem(new Menu.Item(CLP.Module.FileCleanerManager.Functions.UnblockFiles.KEY, "Unblock files", UnblockFiles, ep)) .SetSelectionMode(Menu.SelectionMode.Single) .SetMenuHeaderDisplayer(FolderToCleanListDisplayer); menufunctions.ExecuteMenu(functionkey); return o2; } - #endregion Execute + #endregion Execute - #region First level Executors with UI - private static object FolderClean(object parameter, object o) + #region First level Executors with UI + private static object UnblockFiles(object parameter, object o) + { + var config = (parameter as Menu.ExecutorParameter).GetConfig(); + var args = (parameter as Menu.ExecutorParameter).Args; + + var selectedftcindexes = CommandLine.GetCommandLineArgument(args, CLP.Module.FileCleanerManager.Functions.CMD_FOLDERS); + + var menufolders = DisplayFolderMenu(config, $"Select the folder(s) to manage with function '{nameof(UnblockFiles)}'!", silent: true); + + Menu.Selection sr = menufolders.Select(selectedftcindexes); + if (sr.Result == Menu.SelectionResult.Exit) { return o; } + else if (sr.Result == Menu.SelectionResult.None) { return o; } + else if (sr.Result == Menu.SelectionResult.Error) { return o; } + else if (sr.Result == Menu.SelectionResult.Ok) { } + else { } + foreach (var p in sr.SelectedParameterList) { OneFolderClean(p.Parameters as FolderToClean); } + return o; + } + private static object FolderClean(object parameter, object o) { var config = (parameter as Menu.ExecutorParameter).GetConfig(); var args = (parameter as Menu.ExecutorParameter).Args; @@ -72,7 +94,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS try { var di = new DirectoryInfo(ftc.Xml_DirectoryPath); - var success = FileCleanerManagerCore.CleanFolderFiles(di, ftc, delete: true); + var success = FileCleanerManagerCore.CleanFolderFiles(di, ftc, enableexecute: true); ColorConsole.WriteLine($"Folder cleaned. Name:{ftc.Xml_DirectoryPath}", ConsoleColor.Green); } catch (Exception ex) { ColorConsole.WriteLine(ex.MessageNested(), ConsoleColor.Red); } @@ -100,7 +122,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS } #endregion private DisplayFolderMenu #region private method: DisplayFolderInfo - private static object DisplayFolderInfo(object obj, int lineix) + private static Menu.MenuItemDisplayerReturnValue DisplayFolderInfo(object obj, int lineix) { FolderToClean ws = (obj as Menu.ExecutorParameter).Parameters as FolderToClean; if (lineix == 0) @@ -108,40 +130,39 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS ColorConsole.Write($"{ws.Xml_DirectoryPath}", ConsoleColor.Black, ConsoleColor.White); var existscolor = ws.FolderExists ? ConsoleColor.Green : ConsoleColor.Red; var existstext = ws.FolderExists ? "Exists" : "Missing"; - ColorConsole.WriteLine(existstext, existscolor, bracket: "[]", prefix: " ", suffix: ". "); - return " "; - } - else if (lineix == 1) - { - if (ws.FolderExists) - { - ColorConsole.Write(ws.SizeSelectedBeforeClean.ToString(), ConsoleColor.Yellow, prefix: "Size of filtered files now:"); - ColorConsole.Write(ws.SizeSelectedAfterClean.ToString(), ConsoleColor.Yellow, prefix: ", after cleaning:", suffix: ". "); - ColorConsole.Write(ws.SizeSelectedCleaned.ToString(), ConsoleColor.Red, prefix: "To clean:", suffix: "."); - ColorConsole.WriteLine(" "); - return " "; - } - return ""; - } - else if (lineix == 2) - { - var fc2 = ws.Xml_Recurse ? ConsoleColor.Green : ConsoleColor.Yellow; - ColorConsole.Write($"{ws.Xml_Recurse}", fc2, prefix: "Recurse:", bracket: "[]"); - var fc0 = ws.Xml_RemoveEmptyFolder ? ConsoleColor.Green : ConsoleColor.Yellow; - ColorConsole.Write($"{ws.Xml_RemoveEmptyFolder}", fc0, prefix: ", Remove empty folder:", bracket: "[]"); - ColorConsole.Write(ws.Xml_IncludeMask, ConsoleColor.Yellow, prefix: ", Include mask:"); - ColorConsole.WriteLine(ws.Xml_ExcludeMaskList, ConsoleColor.Yellow, prefix: ", Exclude mask:"); - return " "; - } - else if (lineix == 3) + ColorConsole.Write(existstext, existscolor, bracket: "[]", prefix: " ", suffix: ". "); + if (!ws.FolderExists) { ColorConsole.WriteLine(); return Menu.MenuItemDisplayerReturnValue.EXIT; } + + var operationtext = ws.Xml_OperationUnblockEnable ? "UNBLOCK ONLY" : ws.Xml_OperationDeleteEnable ? "DELETE" : "INFO"; + var operationcolor = ws.Xml_OperationUnblockEnable ? ConsoleColor.Yellow : ws.Xml_OperationDeleteEnable ? ConsoleColor.Red : ConsoleColor.Green; + var removeemptyfoldertext = ws.Xml_RemoveEmptyFolder ? " with remove empty folders" : ""; + ColorConsole.Write(operationtext + removeemptyfoldertext, operationcolor, prefix: "Operation:", bracket: "[]", suffix: ". "); + ColorConsole.Write(ws.SizeSelectedBeforeClean.ToString(), ConsoleColor.Yellow, prefix: "Size of filtered files now:"); + if (ws.Xml_OperationDeleteEnable) + { + ColorConsole.Write(ws.SizeSelectedAfterClean.ToString(), ConsoleColor.Yellow, prefix: ", after cleaning:", suffix: ". "); + ColorConsole.Write(ws.SizeSelectedCleaned.ToString(), ConsoleColor.Red, prefix: "To clean:", suffix: "."); + } + ColorConsole.WriteLine(" "); + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } + else if (lineix == 1) + { + var fc2 = ws.Xml_Recurse ? ConsoleColor.Green : ConsoleColor.Yellow; + ColorConsole.Write($"{ws.Xml_Recurse}", fc2, prefix: "Recurse:", bracket: "[]"); + ColorConsole.Write(ws.Xml_IncludeMask, ConsoleColor.Yellow, prefix: ", Include mask:"); + ColorConsole.WriteLine(ws.Xml_ExcludeMaskList, ConsoleColor.Yellow, prefix: ", Exclude mask:"); + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } + else if (lineix == 2) { ColorConsole.WriteLine(ws.Xml_IncludeFullpathRegexp, ConsoleColor.Yellow, prefix: "Full path regex:"); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else // if (lineix == INDEXBASE) { - const int INDEXBASE = 4; // a linex következő indexe kerüljön ide !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - if (ws.Xml_ConditionList.Count <= lineix - INDEXBASE) { return null; } + const int INDEXBASE = 3; // a linex következő indexe kerüljön ide !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + if (ws.Xml_ConditionList.Count <= lineix - INDEXBASE) { return Menu.MenuItemDisplayerReturnValue.EXIT; } var c = ws.Xml_ConditionList.ElementAt(lineix- INDEXBASE); if (c != null) { @@ -161,10 +182,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS ColorConsole.Write(climit.ToString(), ConsoleColor.Yellow, prefix: ", Limit:", suffix: "days"); } ColorConsole.WriteLine(); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } } - return null; + return Menu.MenuItemDisplayerReturnValue.EXIT; } #endregion private method: DisplayFolderInfo #region private CollectFolderInfo @@ -179,7 +200,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS var di = new DirectoryInfo(ftc.Xml_DirectoryPath); ftc.SizeFolderTotal = FileCleanerManagerCore.DirSize(di,"*","","",ftc.Xml_Recurse); ftc.SizeSelectedBeforeClean = FileCleanerManagerCore.DirSize(di, ftc.Xml_IncludeMask,ftc.Xml_ExcludeMaskList, ftc.Xml_IncludeFullpathRegexp, ftc.Xml_Recurse); - ftc.SizeSelectedCleaned = FileCleanerManagerCore.CleanFolderFiles(di,ftc,delete:false); + ftc.SizeSelectedCleaned = FileCleanerManagerCore.CleanFolderFiles(di,ftc,enableexecute:false); } return ftc; } @@ -287,9 +308,25 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS } return false; } - #endregion public FileIsToDelete - #region public CleanFiles - public static long CleanFolderFiles(DirectoryInfo d,FolderToClean ftc, bool delete) + #endregion public FileIsToDelete + #region public UnblockMany,UnblockOne + [DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool DeleteFile(string name); + + public static bool UnblockOne(string fileName) + { + return DeleteFile(fileName + ":Zone.Identifier"); + } + public static void UnblockMany(string path, string pattern) + { + var fullmask = Path.Combine(path, pattern); + string[] files = Directory.GetFiles(path, pattern, SearchOption.AllDirectories); + foreach (string file in files) { UnblockOne(file); } + } + #endregion public UnblockMany,UnblockOne + #region public CleanFolderFiles + public static long CleanFolderFiles(DirectoryInfo d,FolderToClean ftc, bool enableexecute) { long cleanedsize = 0; // Add file sizes. @@ -302,8 +339,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS try { if (Regex.Match(fi.Name, ZipTools.FileNameMaskListToRegex(ftc.Xml_ExcludeMaskList)).Success) continue; - if (delete) { File.Delete(fi.FullName); } - cleanedsize += fl; + if (enableexecute) + { + if (ftc.Xml_OperationUnblockEnable) { UnblockOne(fi.FullName); } + else if (ftc.Xml_OperationDeleteEnable) { System.IO.File.Delete(fi.FullName); } + ColorConsole.Write(fi.FullName); ColorConsole.SetCursorPosition(0, ColorConsole.CursorTop); + } + cleanedsize += fl; } catch { } } @@ -311,7 +353,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS // Add subdirectory sizes. if (ftc.Xml_Recurse) { - foreach (DirectoryInfo di in d.GetDirectories()) { cleanedsize += CleanFolderFiles(di, ftc, delete); } + foreach (DirectoryInfo di in d.GetDirectories()) { cleanedsize += /*recursion*/ CleanFolderFiles(di, ftc, enableexecute); } } if (ftc.Xml_RemoveEmptyFolder && IsDirectoryEmpty(d)) { @@ -319,12 +361,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS } return cleanedsize; } - #endregion public CleanFiles - } - #endregion class FileCleanerManagerCore + #endregion public CleanFolderFiles + } + #endregion class FileCleanerManagerCore - #region FileCleanerManagerCoreXmlProcessor class - public class FileCleanerManagerXmlProcessor : XmlParser + #region FileCleanerManagerCoreXmlProcessor class + public class FileCleanerManagerXmlProcessor : XmlParser { private List _foldertocleanlist; #region constructor @@ -370,7 +412,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS public string Xml_Key; public string Xml_DirectoryPath; public bool Xml_Recurse; - public bool Xml_RemoveEmptyFolder; + public bool Xml_OperationUnblockEnable; + public bool Xml_OperationDeleteEnable; + public bool Xml_RemoveEmptyFolder; public string Xml_IncludeMask; public string Xml_ExcludeMaskList; public string Xml_IncludeFullpathRegexp; @@ -404,8 +448,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS Xml_DirectoryPath = foldertocleanxml.Attribute(XName.Get(nameof(XmlStructure.FolderToClean.Attributes.Directory)))?.Value; if (string.IsNullOrWhiteSpace(Xml_DirectoryPath)) { throw new ApplicationException(string.Format(ATTRIBUTEMANDATORY, nameof(XmlStructure.FolderToClean.Attributes.Directory))); } Xml_Recurse = GetValue(nameof(XmlStructure.FolderToClean.Attributes.Recurse), foldertocleanxml, XmlStructure.FolderToClean.Attributes.Recurse.Values.DEFAULT); + Xml_OperationDeleteEnable= GetValue(nameof(XmlStructure.FolderToClean.Attributes.Delete), foldertocleanxml, XmlStructure.FolderToClean.Attributes.Delete.Values.DEFAULT); + Xml_OperationUnblockEnable= GetValue(nameof(XmlStructure.FolderToClean.Attributes.UnblockOnly), foldertocleanxml, XmlStructure.FolderToClean.Attributes.UnblockOnly.Values.DEFAULT); Xml_RemoveEmptyFolder = GetValue(nameof(XmlStructure.FolderToClean.Attributes.RemoveEmptyFolder), foldertocleanxml, XmlStructure.FolderToClean.Attributes.RemoveEmptyFolder.Values.DEFAULT); - Xml_IncludeMask = GetValue(nameof(XmlStructure.FolderToClean.Attributes.IncludeMask), foldertocleanxml, XmlStructure.FolderToClean.Attributes.IncludeMask.Values.DEFAULT); + Xml_RemoveEmptyFolder = Xml_RemoveEmptyFolder && Xml_OperationDeleteEnable; + Xml_IncludeMask = GetValue(nameof(XmlStructure.FolderToClean.Attributes.IncludeMask), foldertocleanxml, XmlStructure.FolderToClean.Attributes.IncludeMask.Values.DEFAULT); Xml_ExcludeMaskList = GetValue(nameof(XmlStructure.FolderToClean.Attributes.ExcludeMaskList), foldertocleanxml, XmlStructure.FolderToClean.Attributes.ExcludeMaskList.Values.DEFAULT); Xml_IncludeFullpathRegexp = GetValue(GetXElement(foldertocleanxml,nameof(XmlStructure.FolderToClean.IncludeFullpathRegexp)), XmlStructure.FolderToClean.IncludeFullpathRegexp.Values.DEFAULT); Xml_IncludeFullpathRegexp = Xml_IncludeFullpathRegexp.Replace("{DTSREGEX}", commondatetimestampregex).Replace("{TSREGEX}", commontimestampregex).Replace("{DSREGEX}", commondatestampregex); @@ -491,7 +538,21 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS public static class Key { public static class Values { public const string DEFAULT = ""; } } public static class Directory { } public static class LimitDays { public static class Values { public const int DEFAULT = XmlStructure.CommonAttributes.Attributes.LimitDays.Values.DEFAULT; } } - public static class Recurse + public static class Delete + { + public static class Values + { + public const bool DEFAULT = false; + } + } + public static class UnblockOnly + { + public static class Values + { + public const bool DEFAULT = false; + } + } + public static class Recurse { public static class Values { diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - MSMQManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - MSMQManager.cs index d06bd17..2491989 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Manager - MSMQManager.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - MSMQManager.cs @@ -615,12 +615,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS } #endregion private DisplayTasks #region private method: DisplayTaskInfo - private static object DisplayMSMQInfo(object obj, int lineix) + private static Menu.MenuItemDisplayerReturnValue DisplayMSMQInfo(object obj, int lineix) { MSMQ st = (obj as Menu.ExecutorParameter).Parameters as MSMQ; return st.DisplayShortInfo(lineix); } - private static object DisplayMSMQShortInfo(object obj, int lineix) + private static Menu.MenuItemDisplayerReturnValue DisplayMSMQShortInfo(object obj, int lineix) { MSMQ st = (obj as Menu.ExecutorParameter).Parameters as MSMQ; return st.DisplayVeryShortInfo(lineix); @@ -1247,7 +1247,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS } #endregion CollectMSMQInfo - public string DisplayVeryShortInfo(int lineix) + public Menu.MenuItemDisplayerReturnValue DisplayVeryShortInfo(int lineix) { MSMQ msmq = this; if (lineix == 0) @@ -1261,7 +1261,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS else { statuscolor = ConsoleColor.Red; } ColorConsole.Write(msmq.Status, statuscolor, bracket: "[]", prefix: " ", suffix: ". "); ColorConsole.WriteLine(); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (lineix == 1) { @@ -1269,11 +1269,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS ColorConsole.Write($"{msmq.Xml_AddressPrefix}", ConsoleColor.Black, ConsoleColor.White, prefix: "Format:", suffix: $" Queue is { privatepublictext }."); ColorConsole.Write($"{msmq.Xml_Server}", ConsoleColor.Black, ConsoleColor.White, prefix: "Server:"); ColorConsole.WriteLine(); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } - return null; + return Menu.MenuItemDisplayerReturnValue.EXIT; } - public string DisplayShortInfo(int lineix) + public Menu.MenuItemDisplayerReturnValue DisplayShortInfo(int lineix) { MSMQ msmq = this; if (lineix == 0) @@ -1287,7 +1287,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS else { statuscolor = ConsoleColor.Red; } ColorConsole.Write(msmq.Status, statuscolor, bracket: "[]", prefix: " ", suffix: ". "); ColorConsole.WriteLine(); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (lineix == 1) { @@ -1295,71 +1295,56 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS ColorConsole.Write($"{msmq.Xml_AddressPrefix}", ConsoleColor.Black, ConsoleColor.White, prefix: "Format:", suffix: $" Queue is { privatepublictext }."); ColorConsole.Write($"{msmq.Xml_Server}", ConsoleColor.Black, ConsoleColor.White, prefix: "Server:", suffix: $" Queue is { privatepublictext }."); ColorConsole.WriteLine(); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (lineix == 2) { ColorConsole.Write($"{msmq.Path}", ConsoleColor.Yellow, prefix: "Path ", suffix: ", "); ColorConsole.WriteLine(); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (lineix == 3) { - if (msmq.StatusDescription != null) - { - ConsoleColor color = ConsoleColor.Yellow; - if (msmq.Status == "Ready") { color = ConsoleColor.Green; } - else if (msmq.Status == "Error") { color = ConsoleColor.Red; } - ColorConsole.Write($"{msmq.StatusDescription}", color, prefix: "Status description "); - ColorConsole.WriteLine(); - return " "; - } - return "";//empty=van még szöveg, de most nem történt kiírás - } - else if (lineix == 4) + if (msmq.StatusDescription == null) return Menu.MenuItemDisplayerReturnValue.SAMELINE;//empty=van még szöveg, de most nem történt kiírás + ConsoleColor color = ConsoleColor.Yellow; + if (msmq.Status == "Ready") { color = ConsoleColor.Green; } + else if (msmq.Status == "Error") { color = ConsoleColor.Red; } + ColorConsole.Write($"{msmq.StatusDescription}", color, prefix: "Status description "); + ColorConsole.WriteLine(); + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } + else if (lineix == 4) { - if (msmq.Status == "Ready") - { - ColorConsole.Write($"{msmq.FormatName}", ConsoleColor.Yellow, prefix: "FormatName "); - ColorConsole.WriteLine(); - return " "; - } - return ""; - } - else if (lineix == 5) + if (msmq.Status != "Ready") return Menu.MenuItemDisplayerReturnValue.SAMELINE; + ColorConsole.Write($"{msmq.FormatName}", ConsoleColor.Yellow, prefix: "FormatName "); + ColorConsole.WriteLine(); + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } + else if (lineix == 5) { - if (msmq.Status == "Ready") - { - ColorConsole.Write($"{msmq.Id}", ConsoleColor.Yellow, prefix: "Id "); - ColorConsole.WriteLine(); - return " "; - } - return ""; - } - else if (lineix == 6) + if (msmq.Status != "Ready") return Menu.MenuItemDisplayerReturnValue.SAMELINE; + ColorConsole.Write($"{msmq.Id}", ConsoleColor.Yellow, prefix: "Id "); + ColorConsole.WriteLine(); + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } + else if (lineix == 6) { - if (msmq.Status == "Ready") - { - ColorConsole.Write(msmq.NumOfMessages.ToString(), ConsoleColor.Yellow, prefix: "Num.of msgs in queue ", suffix: ". "); - ColorConsole.Write($"{msmq.LastModifyTime}", ConsoleColor.Yellow, prefix: "LastModified ", suffix: ", "); - ColorConsole.WriteLine(); - return " "; - } - return ""; - } - else if (lineix == 7) + if (msmq.Status != "Ready") return Menu.MenuItemDisplayerReturnValue.SAMELINE; + ColorConsole.Write(msmq.NumOfMessages.ToString(), ConsoleColor.Yellow, prefix: "Num.of msgs in queue ", suffix: ". "); + ColorConsole.Write($"{msmq.LastModifyTime}", ConsoleColor.Yellow, prefix: "LastModified ", suffix: ", "); + ColorConsole.WriteLine(); + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } + else if (lineix == 7) { - if (msmq.Status == "Ready") - { - ColorConsole.Write($"{msmq.AccessMode}", ConsoleColor.Yellow, prefix: "AccessMode ", suffix: ", "); - ColorConsole.Write($"{msmq.CanRead}", ConsoleColor.Yellow, prefix: "CanRead ", suffix: ", "); - ColorConsole.Write($"{msmq.CanWrite}", ConsoleColor.Yellow, prefix: "CanWrite ", suffix: ", "); - ColorConsole.WriteLine(); - return " "; - } - return ""; - } - return null; + if (msmq.Status == "Ready") return Menu.MenuItemDisplayerReturnValue.SAMELINE; + ColorConsole.Write($"{msmq.AccessMode}", ConsoleColor.Yellow, prefix: "AccessMode ", suffix: ", "); + ColorConsole.Write($"{msmq.CanRead}", ConsoleColor.Yellow, prefix: "CanRead ", suffix: ", "); + ColorConsole.Write($"{msmq.CanWrite}", ConsoleColor.Yellow, prefix: "CanWrite ", suffix: ", "); + ColorConsole.WriteLine(); + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } + return Menu.MenuItemDisplayerReturnValue.EXIT; } #region DisplayInfo diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs index 419d2e2..51ba6f4 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs @@ -1208,7 +1208,7 @@ GO } #endregion private DisplaySQLDataBaseMenu #region private method: DisplayDataBaseInfo - private static object DisplayDataBaseInfo(object obj, int lineix) + private static Menu.MenuItemDisplayerReturnValue DisplayDataBaseInfo(object obj, int lineix) { SQLDataBase st = (obj as Menu.ExecutorParameter).Parameters as SQLDataBase; //SQLDataBaseManagerCore.GetPhysicalFilesLocationAndSize(st.SQLCS,out string dbsizetext,out string dbpathtext); @@ -1224,44 +1224,44 @@ GO } if (st.Xml_IsRemoteDB) { ColorConsole.Write("REMOTE", ConsoleColor.Cyan, bracket: "[]", prefix: "", suffix: ""); } ColorConsole.WriteLine(); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (lineix == 1) { ColorConsole.Write($"{st.Xml_BackupFileNameMask}", ConsoleColor.Yellow, prefix: "Backup to:", suffix: ".xxx"); ColorConsole.WriteLine(); - return ""; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (lineix == 2) { ColorConsole.Write($"{st.SQLCS}", ConsoleColor.Yellow, prefix: "SQL DB connection:", suffix: ", "); ColorConsole.WriteLine(" "); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (lineix == 3) { var PhysicalFilesDirectoryPathcolor = st.PhysicalFilesDirectoryPath.StartsWith("ERR") ? ConsoleColor.Red : ConsoleColor.Yellow; ColorConsole.Write($"{st.PhysicalFilesDirectoryPath}", PhysicalFilesDirectoryPathcolor, prefix: "DB files physical location:", suffix: " "); ColorConsole.WriteLine(" "); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (lineix == 4) { var SizeStringcolor = st.SizeString.StartsWith("ERR") ? ConsoleColor.Red : ConsoleColor.Yellow; ColorConsole.Write(st.SizeString, SizeStringcolor, prefix: "DB size:", suffix: " "); ColorConsole.WriteLine(" "); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (5 <= lineix && lineix <= 5 + st.Xml_SQLScriptList.Count) { - if (st.Xml_SQLScriptList.Count == 0) { return null; } - if (st.Xml_SQLScriptList.Count-1 < lineix-5) { return null; } + if (st.Xml_SQLScriptList.Count == 0) { return Menu.MenuItemDisplayerReturnValue.EXIT; } + if (st.Xml_SQLScriptList.Count-1 < lineix-5) { return Menu.MenuItemDisplayerReturnValue.EXIT; } var s = st.Xml_SQLScriptList.ToArray()[lineix-5]; ColorConsole.Write(s.Key, ConsoleColor.Yellow, bracket: "[]", suffix: " ", prefix: " Script: "); ColorConsole.WriteLine($"{s.Description} ({s.Name})", ConsoleColor.Yellow); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } - return null; + return Menu.MenuItemDisplayerReturnValue.EXIT; } #endregion private method: DisplayDataBaseInfo #endregion private methods diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - ScheduledTaskManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - ScheduledTaskManager.cs index 663526b..3869fde 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Manager - ScheduledTaskManager.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - ScheduledTaskManager.cs @@ -272,7 +272,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ScheduledTaskManagerNS } #endregion private DisplayTasks #region private method: DisplayTaskInfo - private static object DisplayTaskInfo(object obj, int lineix) + private static Menu.MenuItemDisplayerReturnValue DisplayTaskInfo(object obj, int lineix) { ScheduledTask st = (obj as Menu.ExecutorParameter).Parameters as ScheduledTask; if (lineix == 0) @@ -285,7 +285,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ScheduledTaskManagerNS ColorConsole.Write(st.PriorityText(st.Priority), statuscolor, prefix: "Effective priority ", suffix: ". "); } ColorConsole.WriteLine(); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (lineix == 1) { @@ -295,14 +295,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ScheduledTaskManagerNS ColorConsole.Write($"{st.Xml_Enable}", ConsoleColor.Yellow, prefix: "After install: Enable=", suffix: ","); ColorConsole.Write($"{st.Xml_Run}", ConsoleColor.Yellow, prefix: "Run=", suffix: ". "); ColorConsole.WriteLine(" "); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (lineix == 2) { ColorConsole.WriteLine($"{st.Xml_Commandname}", ConsoleColor.Yellow, prefix: "Command: "); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } - return null; + return Menu.MenuItemDisplayerReturnValue.EXIT; } #endregion private method: DisplayTaskInfo #endregion private methods diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - WebApplicationManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - WebApplicationManager.cs index 4c06a13..f31df27 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Manager - WebApplicationManager.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - WebApplicationManager.cs @@ -595,7 +595,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS #endregion 1st level Executors #region private method: DisplayWebAppInfo - private static object DisplayWebAppInfo(object obj, int lineix) + private static Menu.MenuItemDisplayerReturnValue DisplayWebAppInfo(object obj, int lineix) { WebApplication wa = (obj as Menu.ExecutorParameter).Parameters as WebApplication; var numofvd = wa.Xml_VirtualDirectoryList?.Count()??0; @@ -605,8 +605,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS if (lineix == 0) { ColorConsole.WriteLine($"{wa.Xml_Description}", ConsoleColor.Black, ConsoleColor.White); - } - else if (lineix == 1) + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } + else if (lineix == 1) { ColorConsole.Write($"Web app:"); ColorConsole.Write($"{wa.Xml_AppName}", ConsoleColor.Cyan); @@ -616,13 +617,15 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS ColorConsole.Write($"{wa.ApplicationPath}", ConsoleColor.White); ColorConsole.Write($", Phy.path:"); ColorConsole.WriteLine($"{wa.Xml_AppPhysicalPath}", ConsoleColor.White); - } - else if (lineix == 2) + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } + else if (lineix == 2) { ColorConsole.Write($"impersonate identity:"); ColorConsole.WriteLine($"{wa.AppImpersonateIdentity}", ConsoleColor.White); - } - else if (lineix == 3) + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } + else if (lineix == 3) { ColorConsole.Write($"Site:"); ColorConsole.Write($"{wa.Xml_SiteName}", ConsoleColor.Cyan); @@ -635,8 +638,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS ColorConsole.Write($"{wa.SitePortList}", ConsoleColor.White); ColorConsole.Write($", Phy.path:"); ColorConsole.WriteLine($"{wa.Xml_SitePhysicalPath}", ConsoleColor.White); - } - else if (lineix == 4) + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } + else if (lineix == 4) { ColorConsole.Write($"Pool:"); ColorConsole.Write($"{wa.Xml_PoolName}", ConsoleColor.Cyan); @@ -648,8 +652,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS ColorConsole.Write($"{waps}", fc1, bracket: "()"); ColorConsole.Write($", identity:"); ColorConsole.WriteLine($"{wa.PoolAccount}", ConsoleColor.White); - } - else if (5 <= lineix && lineix < 5+numofvd) + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } + else if (5 <= lineix && lineix < 5+numofvd) { var elementindex = lineix - 5; var currentelement = wa.Xml_VirtualDirectoryList.ElementAt(elementindex); @@ -658,8 +663,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS ColorConsole.Write($", ("); ColorConsole.Write($"{currentelement.PhysicalPath}", ConsoleColor.Cyan); ColorConsole.WriteLine($")"); - } - else if (5+numofvd <= lineix && lineix < 5 + numofvd + numofwp) + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } + else if (5+numofvd <= lineix && lineix < 5 + numofvd + numofwp) { var elementindex = lineix - (5 + numofvd); if (numofwp == 0 || elementindex > numofwp - 1) { ColorConsole.WriteLine(); } @@ -683,13 +689,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS } ColorConsole.WriteLine(); } - } - else + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } + else { ColorConsole.WriteLine(); - return null; + return Menu.MenuItemDisplayerReturnValue.EXIT; } - return ""; } #endregion private method: DisplayWebAppInfo } diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs index d0582c6..4e7a46a 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs @@ -293,11 +293,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS #endregion DisplayServices #region private method: DisplayServiceInfo - private static object DisplayServiceInfo(object obj, int lineix) + private static Menu.MenuItemDisplayerReturnValue DisplayServiceInfo(object obj, int lineix) { - if (obj == null) { return null; } + if (obj == null) { return Menu.MenuItemDisplayerReturnValue.EXIT; } WindowsService ws = (obj as Menu.ExecutorParameter).Parameters as WindowsService; - if (ws == null) { return null; } + if (ws == null) { return Menu.MenuItemDisplayerReturnValue.EXIT; } if (lineix == 0) { ColorConsole.Write($"{ws.Description}", ConsoleColor.Black, ConsoleColor.White); @@ -305,8 +305,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS ColorConsole.Write($", User:"); ColorConsole.Write($"{ws.StartName}", ConsoleColor.White); ColorConsole.WriteLine(); - return ws.DisplayName + ws.Description; - } + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; + } else if (lineix == 1) { ColorConsole.Write($"Win service:"); @@ -339,7 +339,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS ColorConsole.Write($"{ws.ProcessId}", ConsoleColor.White); } ColorConsole.WriteLine(); - return ws.Name; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (lineix == 2) { @@ -371,32 +371,32 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS ColorConsole.Write(downtimetext, ConsoleColor.Red); } ColorConsole.WriteLine(); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (lineix == 3) { - if (string.IsNullOrEmpty(ws.PathName)) { return ""; } + if (string.IsNullOrWhiteSpace(ws.PathName)) { return Menu.MenuItemDisplayerReturnValue.SAMELINE; } var cmdarray = CommandLineParser.SplitArgs(ws.PathName).ToArray(); ColorConsole.Write($"Start command:"); ColorConsole.WriteLine($"{cmdarray[0]}", ConsoleColor.White); - return ws.PathName; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (lineix == 4) { - if (string.IsNullOrEmpty(ws.PathName)) { return ""; } + if (string.IsNullOrWhiteSpace(ws.PathName)) { return Menu.MenuItemDisplayerReturnValue.SAMELINE; } var cmdparams = CommandLineParser.SplitArgs(ws.PathName).Skip(1).ToArray(); - if (cmdparams.Length == 0) { return ""; } + if (cmdparams.Length == 0) { return Menu.MenuItemDisplayerReturnValue.SAMELINE;} var cmdparamsstr = "["+string.Join("][", cmdparams)+"]"; ColorConsole.Write($"Start arguments:"); ColorConsole.WriteLine(cmdparamsstr, ConsoleColor.White); - return cmdparamsstr; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } else if (lineix == 5) { ColorConsole.WriteLine(); - return " "; + return Menu.MenuItemDisplayerReturnValue.NEXTLINE; } - return null; + return Menu.MenuItemDisplayerReturnValue.EXIT; } #endregion private method: DisplayServiceInfo diff --git a/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs b/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs index 3262511..6695bd3 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.29.3.0")] -[assembly: AssemblyFileVersion("1.29.3.0")] +[assembly: AssemblyVersion("1.30.0.0")] +[assembly: AssemblyFileVersion("1.30.0.0")] -- libgit2 0.21.2