private static void Main(string[] args) { Helper.SetupConsole(120, Console.BufferHeight); var configFile = new FileInfo(Path.Combine(Environment.CurrentDirectory, "Config", ModuleName + ".xml")); using (var stream = configFile.OpenRead()) { var serializer = new XmlSerializer(typeof(CertificationConfig)); var config = serializer.Deserialize(stream) as CertificationConfig; if (config == null) { Logger.Error("Failed to deserialize config"); Console.ReadLine(); } certificationManager = new CertificationManager(config); billingManager = new BillingManager(config.Billing); } certificationManager.Load(ModuleName); billingManager.Load(); var network = new AsyncServer(); network.Accept(certificationManager.CertificationMachine.PrivateIP, certificationManager.CertificationBody.BindPort, 5, new ServerInterface(), certificationManager); Logger.Info($"Certification server started on {certificationManager.CertificationMachine.PrivateIP}:{certificationManager.CertificationBody.BindPort}"); Logger.Info("Press ESC to exit..."); while (true) { if (Console.KeyAvailable) { var keyInfo = Console.ReadKey(true); if (keyInfo.Key == ConsoleKey.Escape) { break; } } network.Tick(); Thread.Sleep(1); } certificationManager.CertificationBody.State = ServerBodyState.Exit; }