using System; using System.Configuration.Install; using System.Reflection; using System.ServiceProcess; namespace smtpproxy.net { internal static class Program { private static void Main(string[] args) { SMTPProxy smtpProxy = new SMTPProxy(); if (args.Length != 0) { string command = args[0].ToLowerInvariant(); switch (command) { case "-install": Console.WriteLine("Installing SMTPProxy Windows Service..."); ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location }); Console.WriteLine("Service installed successfully."); break; case "-uninstall": Console.WriteLine("Uninstalling SMTPProxy Windows Service..."); ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location }); Console.WriteLine("Service uninstalled successfully."); break; case "-console": if (args.Length > 1 && args[1].Equals("-reload", StringComparison.OrdinalIgnoreCase)) { if (args.Length > 2) { Console.WriteLine(string.Format("Reloading queued emails from: {0}", args[2])); smtpProxy.Reload(args[2]); } else { Console.WriteLine("Error: Missing target folder path for -reload. Usage: -console -reload "); } } else { Console.WriteLine("Starting SMTPProxy in Interactive Console Mode..."); Console.WriteLine("Press [Enter] or [Ctrl+C] to stop the proxy."); smtpProxy.Start(); Console.ReadLine(); } break; default: Console.WriteLine("Unknown parameter. Valid options: -install, -uninstall, -console, -console -reload "); break; } } else { ServiceBase[] servicesToRun = new ServiceBase[] { smtpProxy }; ServiceBase.Run(servicesToRun); } } } }