Esempio n. 1
0
        public static bool Orb_Command_Maintenence_Group_Users_Add_Method(Server.NetObject NetObj, CommandReader Command)
        {
            Database.UserDB.User   TargetUser  = Database.UserDB.Nobody;
            Database.GroupDB.Group TargetGroup = Database.GroupDB.NoGroup;
            #region FindTargetUser
            if (Command._CmdArguments.Count() < 1)
            {
                NetObj.ClientObject.SendMessage("No user specified to change group ownership to.");
                return(false);
            }
            if (Command._CmdArguments[0] == "-")
            {
                if (NetObj.CommandHandling.PreviousUser == Database.UserDB.Nobody)
                {
                    NetObj.ClientObject.SendMessage("No previous users iterated over.");
                    return(false);
                }
                else
                {
                    TargetUser = NetObj.CommandHandling.PreviousUser;
                }
            }
            else
            {
                if (Database.UserDB.Find(Command._CmdArguments[0]) != Database.UserDB.Nobody)
                {
                    TargetUser = Database.UserDB.Find(Command._CmdArguments[0]);
                }
                else
                {
                    NetObj.ClientObject.SendMessage("User not found: \"" + Command._CmdArguments[0] + "\".");
                    return(false);
                }
            }
            #endregion
            #region FindTargetGroup
            if (Command._CmdElements()[1] == "-")
            {
                if (NetObj.CommandHandling.PreviousGroup == Database.GroupDB.NoGroup)
                {
                    NetObj.ClientObject.SendMessage("No previous groups iterated over.");
                    return(false);
                }
                else
                {
                    TargetGroup = NetObj.CommandHandling.PreviousGroup;
                }
            }
            else
            {
                if (Database.GroupDB.FindGroup(Command._CmdElements()[1]) == Database.GroupDB.NoGroup)
                {
                    NetObj.ClientObject.SendMessage("Group not found: \"" + Command._CmdElements()[1] + "\".");
                    return(false);
                }
                TargetGroup = Database.GroupDB.FindGroup(Command._CmdElements()[1]);
            }
            #endregion
            #region SuperUser Override
            if (NetObj.UserObject == Database.UserDB.SuperUser || NetObj.UserObject == TargetGroup.Founder)
            {
                //continue
            }
            #endregion
            #region Standard Testing
            else
            {
                if (NetObj.UserObject.Groups.Select(x => x.Group).Contains(TargetGroup))
                {
                    //THIS User is a member of the group. (Required to be able to modify the group.
                    Database.UserDB.User.GroupReference ThisGroupReference = NetObj.UserObject.Groups.Where(x => x.Group == TargetGroup).ToArray()[0];
                    if (ThisGroupReference.Rank.Permissions.Group_ManageMembers <= 0)
                    {
                        NetObj.ClientObject.SendMessage("Your rank does not have permission to manage group memebers in this group.");
                        return(false);
                    }
                    if (ThisGroupReference.Rank.Permissions.Group_PromoteableRank < 0) //<0 No Member.
                    {
                        NetObj.ClientObject.SendMessage("You are not able to add members to the group as you do not have permission to promote to the lowest rank in the group.");
                        return(false);
                    }
                    //continue
                }
                else
                {
                    NetObj.ClientObject.SendMessage("You need to be a member of the group yourself in order to add members. (Group founders are excepted from this rule.)");
                    return(false);
                }
            }
            #endregion

            if (TargetGroup.Joinable == false)
            {
                NetObj.ClientObject.SendMessage("Failed to add User: \"" + TargetUser.Name + "\" to Group: \"" + TargetGroup.Name + "\". The Group is set to un-joinable.");
                return(false);
            }
            if (TargetUser.Groups.Select(x => x.Group).Contains(TargetGroup))
            {
                NetObj.ClientObject.SendMessage("User: \"" + TargetUser.Name + "\" is already a member of Group: \"" + TargetGroup.Name + "\".");
                return(false);
            }
            TargetUser.AddToGroup(TargetGroup);
            if (TargetUser.GroupRepresented == Database.GroupDB.NoGroup)
            {
                TargetUser.GroupRepresented = TargetGroup;
            }
            TargetUser.SaveAll();
            Server.EmptyClientList.Include(TargetUser).SendMessage("You were added to Group: \"" + TargetGroup.Name + "\" by \"" + NetObj.UserObject.Name + "\".");
            Server.AllClients.Except(TargetUser).SendMessage("User: \"" + TargetUser.Name + "\" was added to Group: \"" + TargetGroup.Name + "\" by \"" + NetObj.UserObject.Name + "\".");
            return(true);
        }
Esempio n. 2
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);
        }