diff --git a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - ColorConsole.cs b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - ColorConsole.cs
index 4c555a4..2aa80cf 100644
--- a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - ColorConsole.cs
+++ b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - ColorConsole.cs
@@ -16,7 +16,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS
#region ColorConsole
public static class ColorConsole
{
- private static bool silentMode = false;
+ ///
+ /// true= nem ír semmit a konzolra, és a readline egy előre feltöltött bufferból olvassa az inputokat
+ ///
+ public static bool SilentMode { get; set; } = false;
private static string[] readlineList = null;
/// Üzenet és utána Billentyűzet lenyomásra vár
@@ -28,13 +31,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS
ColorConsole.WriteLine(text ?? "Press any key to continue...", ConsoleColor.Yellow); return ColorConsole.ReadKey();
}
-
- ///
- /// Beállítja a command mode-ot, ami azt jelenti, hogy nem ír semmit a konzolra,
- /// és a readline egy előre feltöltött bufferból olvassa az inputokat
- ///
- ///
- public static void SetSilentMode(bool silentmode=true) { silentMode = silentmode; }
///
/// Feltölti a command mode readline bufferét egy string tömbbel;
/// minden ColorConsole.ReadLine a tömb pillanatnyi első elemét adja vissza, amjd törli azt a tömbből
@@ -58,7 +54,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS
///
/// true, ha van lenyomott billentyű, illetve command mode-ban mindig false
///
- public static bool KeyAvailable { get { if (silentMode) { return false; } else { return Console.KeyAvailable; } } }
+ public static bool KeyAvailable { get { if (SilentMode) { return false; } else { return Console.KeyAvailable; } } }
///
@@ -66,7 +62,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS
///
///
///
- public static void SetWindowSize(int w, int h) { if (!silentMode) { Console.SetWindowSize(w, h); } }
+ public static void SetWindowSize(int w, int h) { if (!SilentMode) { Console.SetWindowSize(w, h); } }
///
/// Visszaadja a lenyomott billentyűt, ha van, commandmode-ban pedig az enter-t
@@ -74,7 +70,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS
///
public static ConsoleKeyInfo ReadKey()
{
- if (silentMode) { return GetConsoleKey(ConsoleKey.Enter); }
+ if (SilentMode) { return GetConsoleKey(ConsoleKey.Enter); }
else { return Console.ReadKey(); }
}
@@ -144,7 +140,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS
while (true)
{
string prompt = text;
- if (silentMode)
+ if (SilentMode)
{
if (readlineList == null || readlineList.Length == 0) { return null; }
else
@@ -179,7 +175,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS
///
public static void SetCursorPosition(int remembercursorleft, int remembercursortop)
{
- if (silentMode) { return; }
+ if (SilentMode) { return; }
Console.SetCursorPosition(remembercursorleft, remembercursortop);
}
public static void SetCursorStartOfLine() { SetCursorPosition(0, ColorConsole.CursorTop); }
@@ -207,7 +203,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS
///
public static void WriteLine(string text = null, ConsoleColor? f = null, ConsoleColor? b = null, string bracket = null,string prefix="", string suffix = "")
{
- if (silentMode) { return; }
+ if (SilentMode) { return; }
Write(text, f, b, bracket,prefix,suffix);
Console.WriteLine();
}
@@ -223,7 +219,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS
///
public static void Write(string text = null, ConsoleColor? f = null, ConsoleColor? b = null, string bracket = null, string prefix = "",string suffix="")
{
- if (silentMode) { return; }
+ if (SilentMode) { return; }
if (!string.IsNullOrEmpty(prefix)) { Write(prefix); }
if (!string.IsNullOrEmpty(bracket) && bracket.Length==1) { bracket = bracket + bracket; }
if (!string.IsNullOrEmpty(bracket)) { Console.Write($"{bracket[0]}"); }
diff --git a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Menu.cs b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Menu.cs
index 74504c8..801a7ca 100644
--- a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Menu.cs
+++ b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Menu.cs
@@ -219,12 +219,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MenuNS
///
///
///
- public void DisplayItems(int columns = 1, int columnlength = 0)
+ public void DisplayItems(int columns = 1, int columnlength = 0,string listheader=null)
{
if (Menu.IsCommandMode()) { return; }
int columncounter = 0;
ColorConsole.WriteLine();
+ if (listheader != null) { ColorConsole.WriteLine(listheader); }
var i = 1;
ColorConsole.SetCursorPosition(0, ColorConsole.CursorTop);
MenuItemIndentWidth = SetMenuItemHeaderWidth(MenuItemList, columns);
diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs
index ae4ed21..09a7522 100644
--- a/Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs
+++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs
@@ -34,35 +34,142 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
public static object Execute(object o1 = null, object o2 = null)
{
var args = (o1 as Menu.ExecutorParameter).Args;
+ var config = new WindowsServiceManagerXmlProcessor(XMLCONNECTIONSTRING, "", "hu-HU");
+ var selectedserviceindexes = CommandLine.GetCommandLineArgument(args, CLP.Module.WindowsServiceManager.Function.CMD_SERVICES);
var functionkey = CommandLine.GetCommandLineArgument(args, CLP.CMD_FUNCTION);
+ while (true) // servicegroup selection
+ {
+ List selectedServicegroups = null;
+ List selectedServices = null;
+ string selectedFunctionkey = null;
- var config = new WindowsServiceManagerXmlProcessor(XMLCONNECTIONSTRING, "", "hu-HU");
- var ep = new Menu.ExecutorParameter(config, args);
- var menufunctions = new Menu("Manage Windows Services", "Select the management function!")
- .AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.Function.Register.KEY, "Register", Register,ep))
- .AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.Function.Unregister.KEY, "Unregister", Unregister, ep))
- .AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.Function.Start.KEY, "Start", Start, ep))
- .AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.Function.Stop.KEY, "Stop", Stop, ep))
- .AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.Function.Kill.KEY, "Kill", Kill, ep))
- .AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.Function.Purge.KEY, "Purge", Purge, ep))
- .AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.Function.SetUserAccount.KEY, "Set user account", SetUserAccount, ep))
- .SetSelectionMode(Menu.SelectionMode.Single)
- .SetMenuHeaderDisplayer(ServiceListDisplayer);
- menufunctions.ExecuteMenu(functionkey);
+ if (!ColorConsole.SilentMode)
+ {
+ var menuservicegroups = DisplayWindowsServiceGroupMenu(config, $"Select the windows service group(s) to manage!");
+ menuservicegroups.AddMenuItem(new Menu.ItemSeparator());
+ menuservicegroups.AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.Function.Purge.KEY, "Purge"));
+ menuservicegroups.AddMenuItem(new Menu.ItemSeparator());
+
+ menuservicegroups.DisplayTitle();
+ menuservicegroups.DisplayItems(1);
+ Menu.Selection srg = menuservicegroups.Select(selectedserviceindexes);
+ if (srg.Result == Menu.SelectionResult.Exit) { break; }
+ else if (srg.Result == Menu.SelectionResult.None) { break; }
+ else if (srg.Result == Menu.SelectionResult.Error) { break; }
+ else if (srg.Result == Menu.SelectionResult.Ok) { }
+ else { }
+ if (srg.SelectedKeyList.Contains(CLP.Module.WindowsServiceManager.Function.Purge.KEY) && srg.SelectedKeyList.Count()>1) { continue; }
+ if (srg.SelectedKeyList.Contains(CLP.Module.WindowsServiceManager.Function.Purge.KEY)) { Purge(); continue; }
+ selectedServicegroups = srg.SelectedParameterList.Select(p => (p.Parameters as WindowsServiceGroup)).ToList();
+ }
+
+ while (true) //service and function selection
+ {
+ var menuservices = DisplayWindowsServiceMenu(config, $"Select the windows service(es) to manage!", selectedServicegroups);
+ //menuservices.DisplayTitle();
+ menuservices.DisplayItems(1, listheader: selectedServicegroups == null ? null : "Services for groups: " + string.Join(",", selectedServicegroups.Select(wsg => $"{wsg.Xml_Description} ({wsg.Xml_Key})")));
+ Menu.Selection sr = menuservices.Select(selectedserviceindexes);
+ if (sr.Result == Menu.SelectionResult.Exit) { break; }
+ else if (sr.Result == Menu.SelectionResult.None) { break; }
+ else if (sr.Result == Menu.SelectionResult.Error) { break; }
+ else if (sr.Result == Menu.SelectionResult.Ok) { }
+ else { }
+ selectedServices = sr.SelectedParameterList.Select(p => (p.Parameters as WindowsService)).ToList();
+
+ var menufunctions = new Menu("Manage Windows Services", "Select the management function!")
+ .AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.Function.Register.KEY, "Register"))
+ .AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.Function.Unregister.KEY, "Unregister"))
+ .AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.Function.Start.KEY, "Start"))
+ .AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.Function.Stop.KEY, "Stop"))
+ .AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.Function.Kill.KEY, "Kill"))
+ .AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.Function.SetUserAccount.KEY, "Set user account"))
+ .SetSelectionMode(Menu.SelectionMode.Single)
+ ;
+ //menufunctions.DisplayTitle();
+ menufunctions.DisplayItems(1);
+ Menu.Selection srf = menufunctions.Select(functionkey);
+ if (srf.Result == Menu.SelectionResult.Exit) { break; }
+ else if (srf.Result == Menu.SelectionResult.None) { break; }
+ else if (srf.Result == Menu.SelectionResult.Error) { break; }
+ else if (srf.Result == Menu.SelectionResult.Ok) { }
+ else { }
+ selectedFunctionkey = srf.SelectedKeyList.First();
+
+ switch (selectedFunctionkey)
+ {
+ case CLP.Module.WindowsServiceManager.Function.Register.KEY:
+ foreach (var ws in selectedServices)
+ {
+ try
+ {
+ var success = WindowsServiceManagerCore.Register(ws, selectedServices.Select(x => x.Name).ToList());
+ ColorConsole.WriteLine($"Service registered. Name:{ws.Name}", ConsoleColor.Green);
+ }
+ catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
+ }
+ break;
+ case CLP.Module.WindowsServiceManager.Function.Unregister.KEY:
+ foreach (var ws in selectedServices)
+ {
+ try
+ {
+ var success = WindowsServiceManagerCore.Unregister(ws);
+ ColorConsole.WriteLine($"Service unregistered. Name:{ws.Name}", ConsoleColor.Green);
+ }
+ catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
+ }
+ break;
+ case CLP.Module.WindowsServiceManager.Function.Start.KEY:
+ foreach (var ws in selectedServices)
+ {
+ try
+ {
+ var success = WindowsServiceManagerCore.Start(ws.Name, ws.Xml_StartTimeout);
+ ColorConsole.WriteLine($"Service started. Name:{ws.Name}", ConsoleColor.Green);
+ }
+ catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
+ }
+ break;
+ case CLP.Module.WindowsServiceManager.Function.Stop.KEY:
+ foreach (var ws in selectedServices)
+ {
+ try
+ {
+ var success = WindowsServiceManagerCore.Stop(ws.Name, ws.Xml_StopTimeout);
+ ColorConsole.WriteLine($"Service stopped. Name:{ws.Name}", ConsoleColor.Green);
+ }
+ catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
+ }
+ break;
+ case CLP.Module.WindowsServiceManager.Function.Kill.KEY:
+ foreach (var ws in selectedServices)
+ {
+ try
+ {
+ var success = WindowsServiceManagerCore.Kill(ws.Name);
+ ColorConsole.WriteLine($"Service killed. Name:{ws.Name}", ConsoleColor.Green);
+ }
+ catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
+ }
+ break;
+ case CLP.Module.WindowsServiceManager.Function.SetUserAccount.KEY: SetUserAccount(config, selectedserviceindexes); break;
+ case CLP.Module.WindowsServiceManager.Function.Purge.KEY: Purge(); break;
+ }
+ }
+ }
return null;
}
#endregion Execute
#region First level Executors with UI
- private static object Purge(object parameter, object o)
+ private static void Purge()
{
- var config = (parameter as Menu.ExecutorParameter).GetConfig();
while (true)
{
ColorConsole.WriteLine($"Enter servicename mask to select from the result list (% and ? are wildchars)...", ConsoleColor.Yellow);
ColorConsole.WriteLine($"...or enter service name directly (put an asterisk (*) before the name).", ConsoleColor.Yellow);
var mask = ColorConsole.ReadLine($" ---> ", ConsoleColor.Yellow).ToUpper();
- if (mask == "EX") { return o; }
+ if (mask == "EX") { return; }
else if (mask == "") { continue; }
if (mask.StartsWith("*") && mask.Length>=2) { DeleteOneService(mask.Substring(1)); }
@@ -86,12 +193,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
{
foreach (var p in ms.SelectedParameterList)
{
- if (DeleteOneService((string)(p.Parameters))) { return o; }
+ if (DeleteOneService((string)(p.Parameters))) { return; }
}
}
}
}
- return o;
+ return;
}
private static bool DeleteOneService(string servicename)
{
@@ -111,150 +218,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
}
return false;
}
- private static object Kill(object parameter, object o)
- {
- var config = (parameter as Menu.ExecutorParameter).GetConfig();
- var args = (parameter as Menu.ExecutorParameter).Args;
-
- var selectedserviceindexes = CommandLine.GetCommandLineArgument(args, CLP.Module.WindowsServiceManager.Function.CMD_SERVICES);
-
- var menuservices = DisplayWindowsServiceMenu(config, $"Select the windows service(es) to manage with function '{nameof(Kill)}'!", silent: true);
-
- Menu.Selection sr = menuservices.Select(selectedserviceindexes);
- 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)
- {
- WindowsService ws = p.Parameters as WindowsService;
- try
- {
- var success = WindowsServiceManagerCore.Kill(ws.Name);
- ColorConsole.WriteLine($"Service killed. Name:{ws.Name}", ConsoleColor.Green);
- }
- catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
- }
- return o;
- }
- private static object Register(object parameter, object o)
- {
- var config = (parameter as Menu.ExecutorParameter).GetConfig();
- var args = (parameter as Menu.ExecutorParameter).Args;
-
- var selectedserviceindexes = CommandLine.GetCommandLineArgument(args, CLP.Module.WindowsServiceManager.Function.CMD_SERVICES);
-
- var menuservices = DisplayWindowsServiceMenu(config, $"Select the windows service(es) to manage with function '{nameof(Register)}'!", silent: true);
-
- Menu.Selection sr = menuservices.Select(selectedserviceindexes);
- 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)
- {
- WindowsService ws = p.Parameters as WindowsService;
- try
- {
- var success = WindowsServiceManagerCore.Register(ws, sr.SelectedParameterList.Select(x => (x.Parameters as WindowsService).Name).ToList());
- ColorConsole.WriteLine($"Service registered. Name:{ws.Name}", ConsoleColor.Green);
- }
- catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
- }
- return o;
- }
- private static object Unregister(object parameter, object o)
- {
- var config = (parameter as Menu.ExecutorParameter).GetConfig();
- var args = (parameter as Menu.ExecutorParameter).Args;
- var selectedserviceindexes = CommandLine.GetCommandLineArgument(args, CLP.Module.WindowsServiceManager.Function.CMD_SERVICES);
-
- var menuservices = DisplayWindowsServiceMenu(config, $"Select the windows service(es) to manage with function '{nameof(Unregister)}'!", silent: true);
-
- Menu.Selection sr = menuservices.Select(selectedserviceindexes);
- 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)
- {
- WindowsService ws = p.Parameters as WindowsService;
- try
- {
- var success = WindowsServiceManagerCore.Unregister(ws);
- ColorConsole.WriteLine($"Service unregistered. Name:{ws.Name}", ConsoleColor.Green);
- }
- catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
- }
- return o;
- }
- private static object Start(object parameter, object o)
- {
- var config = (parameter as Menu.ExecutorParameter).GetConfig();
- var args = (parameter as Menu.ExecutorParameter).Args;
- var selectedserviceindexes = CommandLine.GetCommandLineArgument(args, CLP.Module.WindowsServiceManager.Function.CMD_SERVICES);
-
- var menuservices = DisplayWindowsServiceMenu(config, $"Select the windows service(es) to manage with function '{nameof(Start)}'!", silent: true);
-
- Menu.Selection sr = menuservices.Select(selectedserviceindexes);
- 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)
- {
- WindowsService ws = p.Parameters as WindowsService;
- try
- {
- var success = WindowsServiceManagerCore.Start(ws.Name, ws.Xml_StartTimeout);
- ColorConsole.WriteLine($"Service started. Name:{ws.Name}", ConsoleColor.Green);
- }
- catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
- }
- return o;
- }
- private static object Stop(object parameter, object o)
- {
- var config = (parameter as Menu.ExecutorParameter).GetConfig();
- var args = (parameter as Menu.ExecutorParameter).Args;
- var selectedserviceindexes = CommandLine.GetCommandLineArgument(args, CLP.Module.WindowsServiceManager.Function.CMD_SERVICES);
-
- var menuservices = DisplayWindowsServiceMenu(config, $"Select the windows service(es) to manage with function '{nameof(Stop)}'!", silent: true);
-
- Menu.Selection sr = menuservices.Select(selectedserviceindexes);
- 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)
- {
- WindowsService ws = p.Parameters as WindowsService;
- try
- {
- var success = WindowsServiceManagerCore.Stop(ws.Name, ws.Xml_StopTimeout);
- ColorConsole.WriteLine($"Service stopped. Name:{ws.Name}", ConsoleColor.Green);
- }
- catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
- }
- return o;
- }
- private static object SetUserAccount(object parameter, object o)
+ private static void SetUserAccount(WindowsServiceManagerXmlProcessor config, string selectedserviceindexes)
{
- var config = (parameter as Menu.ExecutorParameter).GetConfig();
- var args = (parameter as Menu.ExecutorParameter).Args;
- var selectedserviceindexes = CommandLine.GetCommandLineArgument(args, CLP.Module.WindowsServiceManager.Function.CMD_SERVICES);
-
- var menuservices = DisplayWindowsServiceMenu(config, $"Select the windows service(es) to manage with function '{nameof(SetUserAccount)}'!", silent: true);
+ var menuservices = DisplayWindowsServiceMenu(config, $"Select the windows service(es) to manage with function '{nameof(SetUserAccount)}'!");
Menu.Selection sr = menuservices.Select(selectedserviceindexes);
- 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; }
+ if (sr.Result == Menu.SelectionResult.Exit) { return; }
+ else if (sr.Result == Menu.SelectionResult.None) { return; }
+ else if (sr.Result == Menu.SelectionResult.Error) { return; }
else if (sr.Result == Menu.SelectionResult.Ok) { }
else { }
@@ -269,7 +240,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
if (username == null)
{
GetUsernameAndPassword(wmiService,ws,out username, out password);
- if (username == "EX" || password == "EX") { return null; }
+ if (username == "EX" || password == "EX") { return; }
}
if (WindowsServiceManagerCore.SetUserAccount(wmiService, username, password)) { ColorConsole.WriteLine($"Service user account changed. Name:{ws.Name}", ConsoleColor.Green); }
else { ColorConsole.WriteLine($"Service user account change FAILED! Name:{ws.Name}", ConsoleColor.Red); }
@@ -277,36 +248,46 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
}
catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
}
- return o;
+ return;
}
#endregion First level Executors with UI
#region DisplayServices
private static void ServiceListDisplayer() { DisplayWindowsServiceMenu(); }
- public static Menu DisplayWindowsServiceMenu(WindowsServiceManagerXmlProcessor config=null,string prompt = null,bool silent=false)
+ public static Menu DisplayWindowsServiceMenu(WindowsServiceManagerXmlProcessor config=null,string prompt = null,List servicegroups=null)
{
if (config==null) { config = new WindowsServiceManagerXmlProcessor(XMLCONNECTIONSTRING, "", "hu-HU"); }
var menuservices = new Menu("Windows services",prompt)
.SetMenuItemDisplayer(DisplayServiceInfo)
- .SetSelectionMode(Menu.SelectionMode.Multi);
+ .SetSelectionMode(Menu.SelectionMode.Multi)
+ .SetMenuHeaderDisplayer(ServiceListDisplayer)
+ ;
menuservices.ClearMenuItemList();
- List wsgdefList = config.GetWindowsServiceGroupDefinitionList();
- foreach (var wsgdef in wsgdefList)
- {
- string menuitemtext = wsgdef.Xml_Description + "(" + string.Join(",", wsgdef.Xml_WindowsServiceKeyList) + ")";
- menuservices.AddMenuItem(new Menu.ItemGroup(wsgdef.Xml_Key, menuitemtext, wsgdef.Xml_WindowsServiceKeyList));
- }
-
- menuservices.AddMenuItem(new Menu.ItemSeparator());// separator
-
- List wsdefList = config.GetWindowsServiceDefinitionList();
+ List wsdefList = config.GetWindowsServiceDefinitionList(servicegroups);
foreach (var wsdef in wsdefList)
{
menuservices.AddMenuItem(new Menu.Item(wsdef.Xml_Key, null, null, new Menu.ExecutorParameter(pars: wsdef.CollectWindowsServiceInfo())));
- }
+ }
+ return menuservices;
+ }
+ public static Menu DisplayWindowsServiceGroupMenu(WindowsServiceManagerXmlProcessor config = null, string prompt = null)
+ {
+ if (config == null) { config = new WindowsServiceManagerXmlProcessor(XMLCONNECTIONSTRING, "", "hu-HU"); }
+ var menuservices = new Menu("Windows services", prompt)
+ .SetMenuItemDisplayer(DisplayServiceInfo)
+ .SetSelectionMode(Menu.SelectionMode.Single)
+ .SetMenuHeaderDisplayer(ServiceListDisplayer)
+ ;
+ menuservices.ClearMenuItemList();
- if (!silent) { menuservices.DisplayItems(1); }
+ List wsgdefList = config.GetWindowsServiceGroupDefinitionList();
+ foreach (var wsgdef in wsgdefList)
+ {
+ //string menuitemtext = wsgdef.Xml_Description + "(" + string.Join(",", wsgdef.Xml_WindowsServiceKeyList) + ")";
+ string menuitemtext = wsgdef.Xml_Description;
+ menuservices.AddMenuItem(new Menu.Item(wsgdef.Xml_Key, menuitemtext, null, new Menu.ExecutorParameter(pars: wsgdef)));
+ }
return menuservices;
}
#endregion DisplayServices
@@ -320,7 +301,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
if (lineix == 0)
{
ColorConsole.Write($"{ws.Description}", ConsoleColor.Black, ConsoleColor.White);
- ColorConsole.WriteLine($"{ws.DisplayName}", bracket: "()");
+ ColorConsole.Write($"{ws.DisplayName}", bracket: "()");
+ ColorConsole.Write($", User:");
+ ColorConsole.Write($"{ws.StartName}", ConsoleColor.White);
+ ColorConsole.WriteLine();
return ws.DisplayName+ws.Description;
}
else if (lineix == 1)
@@ -374,12 +358,6 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
}
else if (lineix == 4)
{
- ColorConsole.Write($"User:");
- ColorConsole.WriteLine($"{ws.StartName}", ConsoleColor.White);
- return ws.StartName;
- }
- else if (lineix == 5)
- {
ColorConsole.WriteLine();
return " ";
}
@@ -728,11 +706,31 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
#region GetWindowsServiceGroupDefinitionList
public WindowsServiceGroup GetWindowsServiceGroup(string key) { return _winservicegrouplist.FirstOrDefault(x => x.Xml_Key == key); }
public List GetWindowsServiceGroupDefinitionList() { return _winservicegrouplist; }
+
+
+ public List GetGroupWindowsServiceKeyList(string groupkey,out string groupdescription)
+ {
+ groupdescription = null;
+ List wsgdefList = GetWindowsServiceGroupDefinitionList().Where(sgr => sgr.Xml_Key == groupkey || groupkey == null).ToList();
+ if (groupkey != null && wsgdefList != null && wsgdefList.Any()) { groupdescription = wsgdefList.First().Xml_Description; }
+ List allwskeys = new List();
+ foreach (var wsg in wsgdefList) { allwskeys = allwskeys.Concat(wsg.Xml_WindowsServiceKeyList).ToList(); }
+ return allwskeys;
+ }
#endregion GetWindowsServiceGroupDefinitionList
#region GetWindowsServiceDefinitionList
public WindowsService GetWindowsService(string key) { return _winservicelist.FirstOrDefault(x => x.Xml_Key == key); }
- public List GetWindowsServiceDefinitionList() { return _winservicelist; }
+ public List GetWindowsServiceDefinitionList(List wsgList=null)
+ {
+ if (wsgList == null) { return _winservicelist; }
+ else
+ {
+ var wsList = new List();
+ foreach (var wsg in wsgList) { wsList = wsList.Concat(wsg.Xml_WindowsServiceKeyList.Select(k=> _winservicelist.FirstOrDefault(ws=>ws.Xml_Key==k))).Where(ws=>ws!=null).ToList(); }
+ return wsList;
+ }
+ }
public List GetWindowsServiceDefinitionListInStartOrder() { return _winservicelistinstartorder; }
public List GetWindowsServiceDefinitionListInStopOrder() { return _winservicelistinstoporder; }
private List ProduceWindowsServiceDefinitionListInStartOrder()
diff --git a/Vrh.Log4Pro.MaintenanceConsole/Program.cs b/Vrh.Log4Pro.MaintenanceConsole/Program.cs
index 9a47cf9..2f2ecb7 100644
--- a/Vrh.Log4Pro.MaintenanceConsole/Program.cs
+++ b/Vrh.Log4Pro.MaintenanceConsole/Program.cs
@@ -70,7 +70,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole
var forcedmodulekey = CommandLine.GetCommandLineArgument(args, CLP.CMD_MODULE);
var commandmode = !string.IsNullOrEmpty(forcedmodulekey);
var silentmode = commandmode && !string.IsNullOrEmpty(CommandLine.GetCommandLineArgument(args, CLP.CMD_SILENT, switchtype: true));
- ColorConsole.SetSilentMode(silentmode);
+ ColorConsole.SilentMode=silentmode;
Menu.SetCommandMode(commandmode);
var appconfigpath = CommandLine.GetCommandLineArgument(args, CLP.CMD_APPCONFIG);
diff --git a/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs b/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
index bceaa7c..09f7ab4 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.8.4.0")]
-[assembly: AssemblyFileVersion("1.8.4.0")]
+[assembly: AssemblyVersion("1.8.5.0")]
+[assembly: AssemblyFileVersion("1.8.5.0")]
--
libgit2 0.21.2