namespace Holo { using Holo.GameConnectionSystem; using Holo.Managers; using Holo.Socketservers; using Holo.Source.Managers; using Holo.Source.Managers.User; using Ion.Storage; using Holo; 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 DatabaseManager dblicenza; private static string _hotel; private static string __email; private static string _licenza; private static Thread serverMonitor = new Thread(new ThreadStart(Eucalypt.monitorServer)); private static bool check() { string dbHostli = "localhost"; int dbPortli = int.Parse("3306"); string dbUsernameli = "root"; string dbPasswordli = "sasa12"; string dbNameli = "holo_37"; string iniLocation = IO.workingDirectory + @"\Config\Account.ini"; if (!File.Exists(iniLocation )) { Out.WriteError("Il file Acccount.ini non è presente in " + iniLocation ); Shutdown(); } string str2 = IO.readINI("account", "nomeutente", iniLocation); string str3 = IO.readINI("account", "password", iniLocation); Out.Writelicenza("Licenza Created By Max090"); Out.Writelicenza ("Avvio controllo per " + str2 + " con la seguente password " + str3); dblicenza = new DatabaseManager("127.0.0.1", 3306, "root", "sasa12", "holo_37", 1, 100); Out.Writelicenza("Connessione al database... in attesa di autenticazione..."); dblicenza.SetClientAmount(dbMaxConnections); DatabaseClient client = Eucalypt.dblicenza.GetClient(); bool query = client.findsResult("Select * from licenza where username = '" + str2 + "' and password = '" + str3 + "'"); if (query) { Out.Writelicenza("Carico le informazzioni...."); _hotel = client.getString ("Select nome_hotel from licenza where username = '" + str2+"'") ; Out.Writelicenza(""); Out.Writelicenza(""); Out.Writelicenza(""); Out.Writelicenza ("Nome Hotel " + _hotel ); Out.Writelicenza(""); Out.Writelicenza(""); Out.Writelicenza(""); __email = client.getString("Select email from licenza where username = '" + str2 + "'"); Out.Writelicenza(""); Out.Writelicenza(""); Out.Writelicenza(""); Out.Writelicenza("Email Utilizzata " + __email); Out.Writelicenza(""); Out.Writelicenza(""); Out.Writelicenza(""); _licenza = client.getString("Select licenza from licenza where username = '" + str2 + "'"); Out.Writelicenza (""); Out.Writelicenza(""); Out.Writelicenza(""); Out.Writelicenza("LA TUA LICENZA E' " + _licenza ); Out.Writelicenza(""); Out.Writelicenza(""); Out.Writelicenza(""); Out.Writelicenza("Nome utente e licenza autenticati con successo"); Out.Writelicenza("BENVENUTO " + str2); return true; } else return false; } private static void Boot() { ThreadPool.SetMaxThreads(300, 400); DateTime now = DateTime.Now; Out.WriteLine ("IFusions Server si sta aprendo in " + Environment.UserName + "..."); string path = IO.workingDirectory + @"\Config\Config.ini"; if (!File.Exists(path)) { Out.WriteError("Il config.ini non e in " + path); Shutdown(); } if (check()) { string str2; int num; 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)); string nome_utente = IO.readINI("mysql", "nomeutente", path); string licenza = IO.readINI("mysql", "licenza", path); //using (DatabaseClient client1 = dblicenza.GetClient ()) //{ // client1.runQuery("SELECT * FROM licenza WHERE username = '" + nome_utente + "' AND licenza = '" + licenza + "'"); // Out.WriteLine("Autenticato come " + nome_utente + " con la seguente licenza " + licenza); //} dbManager = new DatabaseManager(dbHost, dbPort, dbUsername, dbPassword, dbName, 1, 100); dbManager.SetClientAmount(dbMaxConnections); dbManager.StartMonitor(); try { int.Parse(Config.getTableEntry("server_game_port")); int.Parse(Config.getTableEntry("server_game_maxconnections")); num = int.Parse(Config.getTableEntry("server_mus_port")); 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 == "")) { stringManager.Init(langExtension, false); stringManager.initFilter(false); eventManager.Init(); catalogueManager.Init(false); modeldataManager.Init(false); FuserightManager.Init(false); navigatorManager.Init(); recyclerManager.Init(false); rankManager.Init(false); roomManager.Init(); Config.Init(false); userManager.Init(); if (!musSocketServer.Init(num, str2)) { Shutdown(); } else { gameSocketServer.SetupSocket(); resetDynamics(); DateTime time1 = DateTime.Now; Out.WriteLine("IFusions Server: Avviato"); GC.Collect(); Out.minimumImportance = Out.logFlags.MehAction; serverMonitor.Priority = ThreadPriority.Lowest; serverMonitor.Start(); } } else { Out.WriteError("No valid language extension [field: lang] was set in the system_config table!"); Shutdown(); } } else { Out.WriteError("Dati d'accesso errati"); Thread.Sleep(5000); Environment.Exit(2); } } private static void Main() { Console.WindowHeight = Console.LargestWindowHeight - 0x19; Console.WindowWidth = Console.LargestWindowWidth - 0x19; Console.CursorVisible = false; Out.WriteLine("# ########## # # ########### # ######## # #"); Out.WriteLine("# # # # # # # # # # #"); Out.WriteLine("# # # # # # # # # # #"); Out.WriteLine("# # # # # # # # # # # "); Out.WriteLine("# #### # # # # # # # # #"); Out.WriteLine("# # # # # # # # # # #"); Out.WriteLine("# # # # # # # # # # #"); Out.WriteLine("# # ######### ######### # ######## # #"); Out.WriteLine(""); Out.WriteLine("IFusions Server V46 "); Out.WriteLine("Copyright : HoloGrah Emulator"); Out.WriteLine ("Base: Holograph Emulator"); Out.WriteLine(""); 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) / 0x7faL; Console.Title = string.Concat(new object[] { "IFusions Server | Utenti Connessi: ", userCount, " | Stanze Caricate: ", roomCount, " | RAM usata: ", num7, "KB | Connessioni Max: ", peakUserCount, " | SQL: ", num5, " | Connessioni SQL: ", 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 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'"); } } public static void Shutdown() { try { gameSocketServer.Destroy(); } catch { } if (serverMonitor.IsAlive) { serverMonitor.Abort(); } Out.WriteLine("IFusions Server: Chiuso!"); Console.ReadKey(true); Environment.Exit(0); } public delegate void commonDelegate(); } }