Program.cs 4.8 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;

using Microsoft.Web.Administration;
using System.Management;
using System.Diagnostics;

using Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS;
using Vrh.Log4Pro.MaintenanceConsole.MenuNS;
using Vrh.Log4Pro.MaintenanceConsole.ToolsNS;

using Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS;
using Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS;
using Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS;
using Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS;
using Vrh.Log4Pro.MaintenanceConsole.ScheduledTaskManagerNS;
using Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS;
using Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS;
using Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS;
using Vrh.Log4Pro.MaintenanceConsole.UserManagerNS;
using Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS;

using Vrh.Log4Pro.MaintenanceConsole.CommandLineParserNS;

using Vrh.XmlProcessing;
using VRH.Common;
using System.Xml.Linq;
using System.Reflection;

namespace Vrh.Log4Pro.MaintenanceConsole
{
	class Program
	{
		static void Main(string[] args)
		{
			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.SilentMode=silentmode;
			
			if (ColorConsole.SilentMode) { Thread.Sleep(20000); } // ez azért van, hogy ha a schedulerben elindítjuk az ütemmezett taskot, akkor rá tudjunk kapcsolódni a debuggerrel
			
			var startassystemstr = CommandLine.GetCommandLineArgument(args, CLP.CMD_STARTASSYSTEM);
			var startassystem = startassystemstr != null && startassystemstr.ToLower() == "yes";
			OtherTools.StartAsAdmin();
			OtherTools.StartAsSystem(!startassystem);

			Menu.SetCommandMode(commandmode);

			var appconfigpath = CommandLine.GetCommandLineArgument(args, CLP.CMD_APPCONFIG);
			CommandLine.SetAppConfigFile(appconfigpath);

			try { ColorConsole.SetWindowSize(120, 64); } 
			catch
			{
				ColorConsole.WriteLine("Change the size of the console fonts smaller!");
				ColorConsole.ReadKey();
				return;
			}
			if (!Tools.IsElevated)
			{
				ColorConsole.WriteLine("Run as administartor!");
				ColorConsole.ReadKey();
				return;
			}

			var mm = new Menu("Log4ProIS Maintenance Console")
				.AddMenuItem(new Menu.Item(CLP.Module.WebApplicationManager.KEY, "Web Application Manager", WebApplicationManager.Execute, new Menu.ExecutorParameter(args: args)))
				.AddMenuItem(new Menu.Item(CLP.Module.WindowsServiceManager.KEY, "Windows Service Manager", WindowsServiceManager.Execute, new Menu.ExecutorParameter(args: args)))
				.AddMenuItem(new Menu.Item(CLP.Module.FileCleanerManager.KEY, "File Cleaner Manager", FileCleanerManager.Execute, new Menu.ExecutorParameter(args: args)))
				.AddMenuItem(new Menu.Item(CLP.Module.ScheduledTaskManager.KEY, "Scheduled Task Manager", ScheduledTaskManager.Execute, new Menu.ExecutorParameter(args: args)))
				.AddMenuItem(new Menu.Item(CLP.Module.MSMQManager.KEY, "MS MessageQueue (MSMQ) Manager", MSMQManager.Execute, new Menu.ExecutorParameter(args: args)))
				.AddMenuItem(new Menu.Item(CLP.Module.BackupPackageManager.KEY, "Backup Package Manager", BackupPackageManager.Execute, new Menu.ExecutorParameter(args: args)))
				.AddMenuItem(new Menu.Item(CLP.Module.SQLDataBaseManager.KEY, "SQL Database Manager", SQLDataBaseManager.Execute, new Menu.ExecutorParameter(args: args)))
				.AddMenuItem(new Menu.Item(CLP.Module.Log4ProUserManager.KEY, "Log4Pro User Manager", UserManager.Execute, new Menu.ExecutorParameter(args: args)))
				.AddMenuItem(new Menu.Item(CLP.Module.InstallManager.KEY, "Install Manager", InstallManager.Execute, new Menu.ExecutorParameter(args: args)))
				.AddMenuItem(new Menu.ItemSeparator('-'))
				.AddMenuItem(new Menu.Item(CLP.Module.MaintenanceToolManager.KEY, "Maintenance tools", MaintenanceToolManager.Execute, new Menu.ExecutorParameter(args: args)))
				.SetMenuHeaderDisplayer(ComputerInfo.DisplayThis)
				.SetSelectionMode(Menu.SelectionMode.Single);

			mm.ExecuteMenu(forcedmodulekey);

			ColorConsole.PressAnykeyToContinue();
		}
	}

	#region MaintenanceConsoleXmlProcessor class
	public class MaintenanceConsoleXmlProcessor : XmlParser
	{
		public string Xml_Header;
		#region constructor
		public MaintenanceConsoleXmlProcessor(string xmlcs, string basefolder, string lcid) : base(xmlcs, basefolder, lcid, null)
		{
			Xml_Header = GetValue(GetXElement(nameof(XmlStructure.Header)),"");
		}
		#endregion constructor
		#region XmlStructure
		public static class XmlStructure
		{
			public static class Header { }
		}
		#endregion XmlStructure
	}
	#endregion MaintenanceConsoleXmlProcessor class
}