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