/// <summary> /// The main entry point for the application. /// </summary> static void Main(string[] args) { // Check for service mode or console mode if ((Environment.UserInteractive) || OSUtils.IsUnix) { // Console mode, check for arguments if (args.Length > 0) { try { // Check entire parameter string for service install or uninstall request string ParameterString = string.Concat(args).TrimStart('/').TrimStart('-'); switch (ParameterString) { case "i": case "install": Console.WriteLine("Installing service..."); ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location }); Console.WriteLine("Service installed successfully!"); return; case "u": case "uninstall": Console.WriteLine("Uninstalling service..."); ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location }); Console.WriteLine("Service uninstalled successfully!"); return; } } catch (Exception ex) { Console.WriteLine("Error handling service request: " + ex.Message); return; } } // If we get here, we're running as console app using (var fTelnetProxy = new fTelnetProxy()) { fTelnetProxy.Start(); Console.WriteLine("Press A for Active Connections or Q to Quit..."); while (true) { if (Console.KeyAvailable) { var Ch = Console.ReadKey(true).Key; if (Ch == ConsoleKey.A) { fTelnetProxy.DisplayActiveConnections(); } else if (Ch == ConsoleKey.Q) { break; } else { Console.WriteLine(fTelnetProxy.ClientConnectionCount.ToString() + " active connections"); Console.WriteLine("Press A for Active Connections or Q to Quit..."); } } else { Thread.Sleep(100); } } Console.WriteLine("Exiting..."); fTelnetProxy.Stop(); } } else { // Service mode using (var fTelnetProxyService = new Service()) { ServiceBase.Run(fTelnetProxyService); } } }
protected override void OnStop() { _fTelnetProxy.Stop(); }