namespace Holo { using Holo.Managers; using Holo.Socketservers; using Holo.Source.Managers; using Ion.Storage; using Microsoft.VisualBasic; using System; using System.IO; using System.Runtime.CompilerServices; using System.Threading; public class Eucalypt { public static Database database; public static string dbHost; public static DatabaseManager dbManager; public static uint dbMaxConnections; public static string dbName; public static string dbPassword; public static int dbPool; public static uint dbPort; public static string dbUsername; public static int serverInviteAccepted; public static int serverInviteAnswered; public static int serverInviteID; public static string serverInviteName; public static int serverInviteSenderID; public static int serverInviteSendTo; private static Thread serverMonitor = new Thread(new ThreadStart(Eucalypt.monitorServer)); public static string serverVersion = "GoldX Server Emulator!"; private static void Boot() { ThreadPool.SetMaxThreads(300, 400); DateTime now = DateTime.Now; Out.WriteLine("Server Sicuro al 100%"); Out.WriteLine("Fix effettuati da Vinnythebest"); Out.WriteLine("Caricamento server..."); Out.WriteLine("Effettuato , caricamento altri sistemi!"); string path = IO.workingDirectory + @"\bin\mysql.ini"; if (!File.Exists(path)) { Out.WriteError("mysql.ini non trovato " + path); Shutdown(); } else { int num; int num2; int num3; string str2; Out.WriteLine("mysql.ini trovato in " + path); Out.WriteBlank(); dbHost = IO.readINI("mysql", "host", path); dbPort = uint.Parse(IO.readINI("mysql", "port", path)); dbUsername = IO.readINI("mysql", "username", path); dbPassword = IO.readINI("mysql", "password", path); dbName = IO.readINI("mysql", "database", path); dbMaxConnections = uint.Parse(IO.readINI("mysql", "clientamount", path)); Out.WriteBlank(); dbManager = new DatabaseManager(dbHost, dbPort, dbUsername, dbPassword, dbName, 1, 100); dbManager.SetClientAmount(dbMaxConnections); dbManager.StartMonitor(); try { num = int.Parse(Config.getTableEntry("server_game_port")); num2 = int.Parse(Config.getTableEntry("server_game_maxconnections")); num3 = int.Parse(Config.getTableEntry("server_mus_port")); int num4 = int.Parse(Config.getTableEntry("server_mus_maxconnections")); str2 = Config.getTableEntry("server_mus_host"); } catch { Out.WriteError("system_config table contains invalid values for socket server configuration!"); Shutdown(); return; } string langExtension = Config.getTableEntry("lang"); if (langExtension == "") { Out.WriteError("No valid language extension [field: lang] was set in the system_config table!"); Shutdown(); } else { stringManager.Init(langExtension, false); Out.WriteBlank(); stringManager.initFilter(false); Out.WriteBlank(); catalogueManager.Init(false); Out.WriteBlank(); navigatorManager.Init(); Out.WriteBlank(); Out.WriteBlank(); recyclerManager.Init(false); Out.WriteBlank(); rankManager.Init(false); Out.WriteBlank(); Config.Init(false); Out.WriteBlank(); userManager.Init(); eventManager.Init(); if (!gameSocketServer.Init(num, num2)) { Shutdown(); } else { Out.WriteBlank(); if (!musSocketServer.Init(num3, str2)) { Shutdown(); } else { Out.WriteBlank(); resetDynamics(); printDatabaseStats(); Out.WriteBlank(); TimeSpan span = (TimeSpan) (DateTime.Now - now); Out.WriteLine("GoldX Server Emulatore! - \x00e8 stato avviato in: " + span.TotalMilliseconds.ToString() + "."); GC.Collect(); Out.WriteLine("GoldX Server Emulator! - Pronto all'uso!"); Out.WriteBlank(); string str4 = DateAndTime.Now.ToString(); Out.minimumImportance = Out.logFlags.MehAction; serverMonitor.Priority = ThreadPriority.Lowest; serverMonitor.Start(); } } } } } private static void Main() { Console.WindowHeight = Console.LargestWindowHeight - 0x19; Console.WindowWidth = Console.LargestWindowWidth - 0x19; Console.CursorVisible = false; Console.Title = "GoldX Server Emulator!"; Out.WritePlain(serverVersion); Boot(); } private static void monitorServer() { while (true) { int userCount = userManager.userCount; int peakUserCount = userManager.peakUserCount; int roomCount = roomManager.roomCount; int peakRoomCount = roomManager.peakRoomCount; int num5 = dbManager.getStarvationNumber(); int acceptedConnections = gameSocketServer.acceptedConnections; long num7 = GC.GetTotalMemory(false) / 0x400L; Console.Title = string.Concat(new object[] { "GoldX Server Emulator : | Utenti Connessi: ", userCount, " | Stanze Caricate: ", roomCount, " | RAM: ", num7, "KB | Connessioni Max: ", peakUserCount, " | SQL attive: ", num5, " | SQL Connesse: ", dbManager.databaseClients }); using (DatabaseClient client = dbManager.GetClient()) { client.runQuery(string.Concat(new object[] { "UPDATE system SET onlinecount = '", userCount, "',onlinecount_peak = '", peakUserCount, "',activerooms = '", roomCount, "',activerooms_peak = '", peakRoomCount, "',connections_accepted = '", acceptedConnections, "'" })); } Thread.Sleep(0x2710); } } private static void printDatabaseStats() { int num; int num2; int num3; using (DatabaseClient client = dbManager.GetClient()) { num = client.getInt("SELECT COUNT(*) FROM users"); num2 = client.getInt("SELECT COUNT(*) FROM rooms"); num3 = client.getInt("SELECT COUNT(*) FROM furniture"); } Out.WriteLine(string.Concat(new object[] { "Result: ", num, " users, ", num2, " rooms and ", num3, " furnitures." })); } private static void resetDynamics() { using (DatabaseClient client = dbManager.GetClient()) { client.runQuery("UPDATE system SET onlinecount = '0',onlinecount_peak = '" + client.getInt("SELECT onlinecount_peak FROM system") + "',connections_accepted = '0',activerooms = '0'"); client.runQuery("UPDATE users SET ticket_sso = NULL"); client.runQuery("UPDATE rooms SET visitors_now = '0'"); } Out.WriteLine("Connections - (Reset!)"); Out.WriteLine("Counters - (Reset!)."); Out.WriteLine("Tickets - (Reset!)s"); } public static void Shutdown() { Out.WriteBlank(); if (serverMonitor.IsAlive) { serverMonitor.Abort(); } Out.WriteLine("GoldX Server Emulator! Spento!"); Console.ReadKey(true); Console.Beep(0x578, 0x3e8); Environment.Exit(2); } public delegate void commonDelegate(); } }