Пример #1
0
 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");
     }
 }
Пример #2
0
            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();
                }
            }
Пример #3
0
            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
            }
Пример #4
0
        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);
        }
Пример #5
0
                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;
                        }
                    }
                }