public static void WriteLine(string MessageIn) { if (Database.Settings.GUIMode) { try { ServerGUI.Write(MessageIn + "\n"); } catch { //GUI not loaded... Console.Write(MessageIn + "\n"); } return; } else { Console.Write(MessageIn + "\n"); } }
public void Close() { //Console.WriteLine("Close() has been called."); try { ClientObject.ClientSocket.Shutdown(SocketShutdown.Send); } catch (Exception e) { /*Logger.Log.Bug(e, "ClientSocket.Shutdown");*/ } try { HostObject.HostSocket.Shutdown(SocketShutdown.Send); } catch (Exception e) { /*Logger.Log.Bug(e, "HostSocket.Shutdown");*/ } try { ClientObject.ClientSocket.Close(); } catch (Exception e) { /*Logger.Log.Bug(e, "ClientSocket.Close");*/ } try { HostObject.HostSocket.Close(); } catch (Exception e) { /*Logger.Log.Bug(e, "HostSocket.Close");*/ } bool WasOnline = false; while (Server.ClientList.Contains(this)) { WasOnline = true; try { Server.ClientList.Remove(this); } catch (Exception e) { Logger.Log.Bug(e, "ClientList.Remove"); } } if (WasOnline) { if (Username.ToUpperInvariant() != "PHP BOT") { ClientList.SendMessage(this.Username + " has left the server."); Logger.Console.WriteLine("&eClient " + this.Username + " disconnected."); } ServerGUI.RefreshUsers(); } }
public static void Start() { Orb.Version.TestVersionWarningAlpha(); //Console.WriteLine("Orb.Server.ConnectionMainFrame.Start():Prepare"); #region Prepare Proxy Socket if (Database.Settings.Get(Database.Settings.Strings.LocalTestMode).Equals(true)) { Logger.Console.WriteLine("WARNING: PROXY SERVICE IS IN 'LOCALTESTMODE'"); Logger.Log.SystemMessage("WARNING: PROXY SERVICE IS IN 'LOCALTESTMODE'"); //ServerAddress = new IPEndPoint(IPAddress.Any, 7915); ServerAddress = new IPEndPoint(IPAddress.Parse("127.0.0.1"), Database.Settings.OrbPort); } else { //ServerAddress = new IPEndPoint(IPAddress.Any, 7915); ServerAddress = new IPEndPoint(IPAddress.Any, Database.Settings.OrbPort); } #endregion //Console.WriteLine("Orb.Server.ConnectionMainFrame.Start():Bind"); #region Bind Proxy Socket To Port try { ListenerSocket.Bind(ServerAddress); } catch (Exception e) { Logger.Log.Bug(e, String.Format("Orb Server could not start on {0}:{1}. Something else may be using the port.", ServerAddress.Address.ToString(), ServerAddress.Port.ToString())); Server.Shutdown.MasterClose("CRITICAL ERROR: FAILED TO START THE SERVER.\n(PORT &f" + Database.Settings.OrbPort.ToString() + "&c IS IN USE BY ANOTHER PROCESS!)", 30); } //Logger.Console.WriteLine("Managed To Bind."); #endregion //Console.WriteLine("Orb.Server.ConnectionMainFrame.Start():Listen..."); #region Accept and Hand Off Clients ListenerSocket.Listen(1); Logger.Console.WriteLine("&3Listening For Clients..."); ServerGUI.LockInput(false); Logger.Console.LockInput(false); //Logger.Console.WriteLine(DateTime.Now.ToString()); //Pass ServerSocket to ClientReceiver as new thread. //ClientReceiver: while (true) { Socket ConnectingClientSocket; try { ConnectingClientSocket = ListenerSocket.Accept(); //Logger.Console.WriteLine("Got a New Client from " + (ConnectingClientSocket.RemoteEndPoint as IPEndPoint).Address.ToString()); NetObject ConnectingObject = new NetObject(); ConnectingObject.Create(ConnectingClientSocket); } catch (Exception e) { Logger.Log.Bug(e, "Could Not Add A Client OR Socket Closed."); //Socket has been closed, we should break now. break; } } //Pass ClientSocket to new client thread. #endregion }
static void Main(string[] args) { //PRE OPERATION EVENTS try { Console.Title = "Orb for YSFlight"; Console.CursorVisible = false; Server.ConsoleMode = true; Logger.Console.LockInput(true); } catch { Database.Settings.Set(Database.Settings.Strings.GUIMode, true); Server.ConsoleMode = false; //Console is not enabled } //LOAD SETTINGS Database.Settings.LoadAll(); //GUI LOADING #region Disable Console if (Database.Settings.GUIMode == true) { var handle = GetConsoleWindow(); // Hide ShowWindow(handle, SW_HIDE); Server.ConsoleMode = false; // Show //ShowWindow(handle, SW_SHOW); } #endregion //Database.Settings.Set(Database.Settings.Strings.GUIMode, true); //Database.Settings.Set(Database.Settings.Strings.ProxyMode, true); Logger.Console.Initialise(); //Logger.Console.WriteLine(DateTime.Now.ToString()); ServerGUI.Start(); ServerGUI.LockInput(true); //DATABASE LOADING Logger.Log.Silent = false; Logger.Log.SystemMessage("LOADING DATABASE"); Logger.Console.WriteLine("&9LOADING DATABASE..."); Logger.Log.SystemMessage("Loading Salt."); Logger.Console.WriteLine("&5 Loading Salt..."); Database.LoadSalt(); Logger.Log.SystemMessage("Loading Settings."); Logger.Console.WriteLine("&5 Loading Settings..."); Database.Settings.LoadAll(); Database.Security.StartLock.Run(); Logger.Log.SystemMessage("Loading Groups, Ranks, and their Permissions."); Logger.Console.WriteLine("&5 Loading Groups, Ranks, and their Permissions...."); Database.GroupDB.LoadAll(); Logger.Log.SystemMessage("Loading Users, Group References and their Permissions."); Logger.Console.WriteLine("&5 Loading Users, Group References and their Permissions..."); Database.UserDB.LoadAll(); Logger.Console.WriteLine("&5 Loading Commands."); Commands.LoadAll(); if (Database.NewSaltGenerated) { foreach (Database.UserDB.User ThisUser in Database.UserDB.List) { ThisUser.Password = ""; ThisUser.UsePassword = false; ThisUser.SaveAll(); } if (Database.UserDB.List.Count() > 0) { Logger.Console.WriteLine("&d Because new Salt was generated, all passwords for all users have been reset!"); } else { if (Database.UserDB.List.Count() == 0 && Database.GroupDB.List.Count() == 0) { #region Create Defaults //No Users or Groups in the database, and no orb.dll? sound like a first launch to me! //Create The ADMIN Database.UserDB.User AdminUser = Database.UserDB.New("Admin"); Database.UserDB.User ModUser = Database.UserDB.New("Mod"); Database.GroupDB.Group ServerGroup = Database.GroupDB.New("SERVER"); Database.GroupDB.Group.Rank AdminRank = ServerGroup.NewRank("ADMIN"); Database.GroupDB.Group.Rank ModRank = ServerGroup.NewRank("MOD"); AdminRank.Permissions.MakeSuper(); ModRank.Permissions.MakeModerator(); Database.UserDB.User.GroupReference AdminUserGR = AdminUser.AddToGroup(ServerGroup); Database.UserDB.User.GroupReference ModUserGR = ModUser.AddToGroup(ServerGroup); AdminUserGR.Rank = AdminRank; ModUserGR.Rank = ModRank; AdminUser.GroupRepresented = ServerGroup; ModUser.GroupRepresented = ServerGroup; AdminUser.SaveAll(); ModUser.SaveAll(); ServerGroup.Founder = AdminUser; ServerGroup.SaveAll(); #endregion Logger.Console.WriteLine("&d Default Groups/Users instated!"); Version.WriteNewToOrbHelpFile(); } } } Logger.Console.WriteLine("&5 Loading Complete!"); Utilities.WelcomeFile.WriteDefault(); //Thread.Sleep(5000); //Logger.Console.WriteLine(DateTime.Now.ToString()); //DISPLAY DATABASE RESULTS //Logger.Console.Write(Utilities.IO.GetAllGroupsRanks()); //Logger.Console.WriteLine(); //Logger.Console.Write(Utilities.IO.GetAllUsersGroups()); //Logger.Console.WriteLine(); //Database.PermissionDB.PermissionsCore.CheckPermission(Database.UserDB.Find("BAWB"), "Default"); //SAVE DATABASE //Database.GroupDB.SaveAll(); //Database.UserDB.SaveAll(); //Database.Settings.SaveAll(); //RUN SERVER //ServerGUI.ClearLog(); //Logger.Console.WriteLine("&bLAGSWITCH100SECONDSIMPLEMENTED"); //Thread.Sleep(100000); #if !DEBUG Logger.Log.SystemMessage("STARTING SERVER"); Logger.Console.WriteLine("&9STARTING SERVER."); Thread.Sleep(1000); Logger.Console.ClearLine(); Logger.Console.WriteLine("&9STARTING SERVER.."); Thread.Sleep(1000); Logger.Console.ClearLine(); Logger.Console.WriteLine("&9STARTING SERVER..."); Thread.Sleep(1000); Logger.Console.ClearLine(); //Thread.Sleep(50000); #endif Logger.Console.Clear(); //Logger.Console.WriteLine(Database.Settings.ServerIP.ToString()); //Logger.Console.WriteLine(Database.Settings.ServerPort.ToString()); Server.Start(); //SHUTDOWN //Server.Shutdown.MasterClose("Test Complete", 10); }
public static void Run() { Authenticated = false; if (!Database.Settings.StartLock) { Logger.Log.SystemMessage("The Servers Start Lock is not in place."); Authenticated = true; return; } if (Database.Settings.StartPass == "") { Authenticated = true; } double Error = 0; string Password = ""; int WaitTime = 0; Logger.Log.SystemMessage("The Servers Start Lock is in place."); Logger.Console.WriteLine("Please enter the password to start the server."); Logger.Console.WriteLine("============================================="); Logger.Console.WriteLine(""); while (Database.Settings.StartLock && !Authenticated) { Logger.Console.Write("Enter Password: "******"Password Incorrect, Please try again."); } else { ServerGUI.LockInput(true); //Blocks the user from entering more passwords and flooding the feed. WaitTime = (int)Math.Pow(10d, (Error / 3)); Console.WriteLine(""); for (int i = WaitTime; i > 0; i--) { Logger.Console.Write(String.Format("\rPassword Incorrect. Please wait {0} seconds before trying again.", i)); Thread.Sleep(1000); Logger.Console.ClearLine(); } ServerGUI.LockInput(false); //Allows the user to enter passwords again. Logger.Console.WriteLine("\rPassword Incorrect. Please try again."); } } else { Logger.Console.WriteLine("Password Correct."); for (int i = 3; i < 0; i--) { Logger.Console.Write(String.Format("Server Launching in {0} Seconds.", i)); } Logger.Console.Clear(); Authenticated = true; return; } } }