public static void InitEnvironment() { Console.ForegroundColor = ConsoleColor.White; AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler); ButterflyEnvironment.Initialize(); }
private static void MyHandler(object sender, UnhandledExceptionEventArgs args) { Logging.DisablePrimaryWriting(true); Logging.LogCriticalException("SYSTEM CRITICAL EXCEPTION: " + ((Exception)args.ExceptionObject).ToString()); ButterflyEnvironment.PreformShutDown(true); }
internal static void Initialize() { Console.Clear(); DateTime Start = DateTime.Now; SystemMute = false; ServerStarted = DateTime.Now; Console.Title = "Loading Butterfly Emulator"; DefaultEncoding = Encoding.Default; //Logging.rzFlag(); Logging.WriteLine(); Logging.WriteLine(PrettyVersion); cultureInfo = CultureInfo.CreateSpecificCulture("en-GB"); LanguageLocale.Init(); try { ChatCommandRegister.Init(); PetCommandHandeler.Init(); PetLocale.Init(); Configuration = new ConfigurationData(System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, @"Settings/configuration.ini")); if (ButterflyEnvironment.GetConfig().data["db.password"] == "changeme") { throw new ArgumentException("Your MySQL password may not be 'changeme'.\nChange your password to start the server."); } DateTime Starts = DateTime.Now; Logging.WriteLine("Connecting to database..."); dbType = GetConfig().data.ContainsKey("db.mssql") && GetConfig().data["db.mssql"] == "true" ? DatabaseType.MSSQL : DatabaseType.MySQL; manager = new DatabaseManager(uint.Parse(ButterflyEnvironment.GetConfig().data["db.pool.maxsize"]), int.Parse(ButterflyEnvironment.GetConfig().data["db.pool.minsize"]), dbType); manager.setServerDetails( ButterflyEnvironment.GetConfig().data["db.hostname"], uint.Parse(ButterflyEnvironment.GetConfig().data["db.port"]), ButterflyEnvironment.GetConfig().data["db.username"], ButterflyEnvironment.GetConfig().data["db.password"], ButterflyEnvironment.GetConfig().data["db.name"]); manager.init(); TimeSpan TimeUsed2 = DateTime.Now - Starts; Logging.WriteLine("Connected to database! (" + TimeUsed2.Seconds + " s, " + TimeUsed2.Milliseconds + " ms)"); LanguageLocale.InitSwearWord(); Game = new Game(int.Parse(ButterflyEnvironment.GetConfig().data["game.tcp.conlimit"])); Game.ContinueLoading(); ConnectionManager = new ConnectionHandeling(int.Parse(ButterflyEnvironment.GetConfig().data["game.tcp.port"]), int.Parse(ButterflyEnvironment.GetConfig().data["game.tcp.conlimit"]), int.Parse(ButterflyEnvironment.GetConfig().data["game.tcp.conperip"]), ButterflyEnvironment.GetConfig().data["game.tcp.enablenagles"].ToLower() == "true"); ConnectionManager.init(); ConnectionManager.Start(); StaticClientMessageHandler.Initialize(); ClientMessageFactory.Init(); string[] arrayshit = ButterflyEnvironment.GetConfig().data["mus.tcp.allowedaddr"].Split(Convert.ToChar(",")); MusSystem = new MusSocket(ButterflyEnvironment.GetConfig().data["mus.tcp.bindip"], int.Parse(ButterflyEnvironment.GetConfig().data["mus.tcp.port"]), arrayshit, 0); groupsEnabled = false; if (Configuration.data.ContainsKey("groups.enabled")) { if (Configuration.data["groups.enabled"] == "true") { groupsEnabled = true; } } useSSO = true; if (Configuration.data.ContainsKey("auth.ssodisabled")) { if (Configuration.data["auth.ssodisabled"] == "false") { useSSO = false; } } TimeSpan TimeUsed = DateTime.Now - Start; Logging.WriteLine("ENVIRONMENT -> READY! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); isLive = true; if (System.Diagnostics.Debugger.IsAttached || Configuration.data["debug.console"] == "1") { Console.ForegroundColor = ConsoleColor.Yellow; Logging.WriteLine("Server is debugging: Console writing enabled"); Console.ForegroundColor = ConsoleColor.White; } else { Logging.WriteLine("Server is not debugging: Console writing disabled"); Logging.DisablePrimaryWriting(false); } } catch (KeyNotFoundException e) { Logging.WriteLine("Please check your configuration file - some values appear to be missing."); Logging.WriteLine("Press any key to shut down ..."); Logging.WriteLine(e.ToString()); Console.ReadKey(true); ButterflyEnvironment.Destroy(); return; } catch (InvalidOperationException e) { Logging.WriteLine("Failed to initialize ButterflyEmulator: " + e.Message); Logging.WriteLine("Press any key to shut down ..."); Console.ReadKey(true); ButterflyEnvironment.Destroy(); return; } catch (Exception e) { Console.WriteLine("Fatal error during startup: " + e.ToString()); Console.WriteLine("Press a key to exit"); Console.ReadKey(); Environment.Exit(1); } }