Files
SMTPProxy/smtpproxy.net/Program.cs

66 lines
2.6 KiB
C#

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 <folder>");
}
}
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 <path>");
break;
}
}
else
{
ServiceBase[] servicesToRun = new ServiceBase[] { smtpProxy };
ServiceBase.Run(servicesToRun);
}
}
}
}