static void Main() { ServerStarted = DateTime.Now; if (File.Exists("MOTD.txt")) { MOTD = Encoding.Default.GetBytes($"<pre>\n{File.ReadAllText("MOTD.txt").InsertHrefInUrls()}\n</pre>"); } Console.Write("Initializing Bancho"); if (IsDebug) { Console.Write(" in debug mode"); } Console.WriteLine(".."); Process.GetCurrentProcess().PriorityBoostEnabled = true; Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime; Thread.CurrentThread.Priority = ThreadPriority.Highest; Console.CursorVisible = false; Console.Title = (IsDebug?"[DEBUG] ":"") + "osu!Bancho"; GeoUtil.Initialize(); if (!File.Exists("config.ini")) { File.WriteAllText("config.ini", IniFile.DefaultIni); } IniFile ini = new IniFile("config.ini"); Bancho.IsRestricted = ini.GetValue("Bancho", "Restricted", false); CultureInfo = CultureInfo.CreateSpecificCulture("en-GB"); Console.WriteLine("Initializing Database.."); var connectionString = new MySqlConnectionStringBuilder { ConnectionTimeout = ini.GetValue("DatabaseConnection", "ConnectionTimeout", 10u), Database = ini.GetValue("DatabaseConnection", "Database", "osu!"), DefaultCommandTimeout = ini.GetValue("DatabaseConnection", "CommandTimeout", 30u), Logging = false, MaximumPoolSize = ini.GetValue("DatabaseConnection", "MaximumPoolSize", 250u), MinimumPoolSize = ini.GetValue("DatabaseConnection", "MinimumPoolSize", 10u), Password = ini.GetValue("DatabaseConnection", "Password", ""), Pooling = true, Port = ini.GetValue("DatabaseConnection", "Port", 3306u), Server = ini.GetValue("DatabaseConnection", "Server", "127.0.0.1"), UserID = ini.GetValue("DatabaseConnection", "User", "root"), AllowZeroDateTime = true, ConvertZeroDateTime = true, }; _databaseManager = new DatabaseManager(connectionString.ToString()); if (!_databaseManager.IsConnected()) { Console.Error.WriteLine("Failed to connect to the specified MySQL server."); Console.ReadKey(true); Environment.Exit(1); } workerTimer = new Timer( (state) => { foreach (Player player in PlayerManager.Players .Where(player => (Environment.TickCount - player.LastPacketTime) >= 80000)) { PlayerManager.DisconnectPlayer(player, DisconnectReason.Timeout); } try { UpdateOnlineNow(); } catch (Exception e) { Debug.WriteLine("Can't update onlines_now: " + e.Message); } }, null, 0, 15000); #if DEBUG Debug.Listeners.Add(new ConsoleTraceListener()); #endif Console.WriteLine("Initializing IRC.."); irc = new IrcManager(); irc.Start(); var port = ini.GetValue("Bancho", "Port", 80); Console.WriteLine($"Initializing HTTP in port {port.ToString()}.."); HttpAsyncHost http = new HttpAsyncHost(IsDebug? 1 : 120); http.Run("http://+:" + port.ToString() + "/"); Console.ReadLine(); }