public static bool Orb_Command_Maintenence_Group_Add_Method(Server.NetObject NetObj, CommandReader Command) { Database.GroupDB.Group TargetGroup = Database.GroupDB.NoGroup; if (Command._CmdArguments.Count() < 1) { NetObj.ClientObject.SendMessage("Please specify a group name when adding a new group."); return(false); } string NewGroupName = Command._CmdArguments[0]; #region FindTargetGroup TargetGroup = Database.GroupDB.FindGroup(Command._CmdArguments[0]); if (TargetGroup != Database.GroupDB.NoGroup) { NetObj.ClientObject.SendMessage("Group: \"" + TargetGroup + "\" already exists. You cannot make duplicate groups."); return(false); } #endregion #region Test Permissions if (NetObj.UserObject == Database.UserDB.SuperUser || NetObj.UserObject.Can(Database.PermissionDB.Strings.ManageServer)) { //Continue } else { NetObj.ClientObject.SendMessage("Unable to add new Group: \"" + NewGroupName + "\" as you do not have permission to manage the server."); return(false); } #endregion #region Add Group Database.GroupDB.Group NewGroup = Database.GroupDB.New(NewGroupName); NewGroup.DateCreated = DateTime.Now; NewGroup.DateLastModified = DateTime.Now; NewGroup.DisplayedName = NewGroupName; NewGroup.Founder = NetObj.UserObject; NewGroup.Joinable = true; NewGroup.Leavable = true; NewGroup.Name = NewGroupName; NewGroup.SaveAll(); Server.EmptyClientList.Include(NetObj.UserObject).SendMessage("You created a new Group: \"" + NewGroup.Name + "\"."); Server.AllClients.Except(NetObj.UserObject).SendMessage("User: \"" + NetObj.UserObject.Name + "\" created a new Group: \"" + NewGroup.Name + "\"."); return(true); #endregion }
public static bool Orb_Command_Maintenence_Group_Ranks_Add_Method(Server.NetObject NetObj, CommandReader Command) { Database.GroupDB.Group TargetGroup = Database.GroupDB.NoGroup; string TargetRankName = ""; #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 FindTargetRank if (Command._CmdArguments.Count() < 1) { NetObj.ClientObject.SendMessage("No rank specified to be added to the group."); return(false); } else { TargetRankName = Command._CmdArguments[1].ToUpperInvariant(); if (TargetGroup.Ranks.Count() == 0) { } else if (TargetGroup.Ranks.Select(x => x.Name.ToUpperInvariant()).Contains(TargetRankName)) { NetObj.ClientObject.SendMessage("Rank: \"" + TargetRankName + "\" already exists in Group: \"" + TargetGroup.Name + "\"."); return(false); } } #endregion #region SuperUser Override if (NetObj.UserObject == Database.UserDB.SuperUser || NetObj.UserObject == TargetGroup.Founder) { //continue } #endregion #region Standard Testing 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 ranks in this group."); return(false); } //continue } else { NetObj.ClientObject.SendMessage("You need to be a member of the group yourself in order to add ranks. (Group founders are excepted from this rule.)"); return(false); } #endregion if (TargetGroup.Ranks.Select(x => x.Name).Contains(TargetRankName)) { NetObj.ClientObject.SendMessage("Rank: \"" + TargetRankName + "\" is already in Group: \"" + TargetGroup.Name + "\"."); return(false); } TargetGroup.NewRank(TargetRankName); TargetGroup.SaveAll(); Server.EmptyClientList.Include(NetObj).SendMessage("You added a new Rank: \"" + TargetRankName + "\" to Group: \"" + TargetGroup.Name + "\"."); Server.AllClients.Except(NetObj).SendMessage("New Rank: \"" + TargetRankName + "\" was added to Group: \"" + TargetGroup.Name + "\" by \"" + NetObj.UserObject.Name + "\"."); return(true); }
public static bool Orb_Command_Maintenence_Group_Ranks_Decrement_Method(Server.NetObject NetObj, CommandReader Command) { string TargetRankName = ""; Database.GroupDB.Group.Rank TargetRank = Database.GroupDB.NoRank; Database.GroupDB.Group TargetGroup = Database.GroupDB.NoGroup; #region FindTargetGroup 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 FindTargetRank if (Command._CmdArguments.Count() < 1) { NetObj.ClientObject.SendMessage("No rank specified to be decremented in the group."); return(false); } else { TargetRankName = Command._CmdArguments[1].ToUpperInvariant(); if (!(TargetGroup.Ranks.Select(x => x.Name.ToUpperInvariant()).Contains(TargetRankName))) { NetObj.ClientObject.SendMessage("Rank: \"" + TargetRankName + "\" not found in Group: \"" + TargetGroup.Name + "\"."); return(false); } else { TargetRank = TargetGroup.Ranks.First(x => x.Name.ToUpperInvariant() == TargetRankName); } } #endregion #region SuperUser Override if (NetObj.UserObject == Database.UserDB.SuperUser || NetObj.UserObject == TargetGroup.Founder) { //Continue } #endregion #region Standard Testing 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 ranks in this group."); return(false); } //Continue } else { NetObj.ClientObject.SendMessage("You need to be a member of the group yourself in order to move ranks. (Group founders are excepted from this rule.)"); return(false); } #endregion if (TargetGroup.Ranks.IndexOf(TargetRank) == 0) { NetObj.ClientObject.SendMessage("Unable to decrement Rank: \"" + TargetRank.Name + "\" in Group: \"" + TargetGroup.Name + "\" any lower. It is the lowest rank already."); return(false); } int CurrentPosition = TargetGroup.Ranks.IndexOf(TargetRank); int NextPosition = CurrentPosition - 1; Database.GroupDB.Group.Rank SwapContainer = TargetGroup.Ranks[NextPosition]; TargetGroup.Ranks[NextPosition] = TargetRank; TargetGroup.Ranks[CurrentPosition] = SwapContainer; TargetGroup.SaveAll(); Server.EmptyClientList.Include(NetObj).SendMessage("Rank: \"" + TargetRank.Name + "\" in Group: \"" + TargetGroup.Name + "\" decremented to position " + NextPosition.ToString() + "."); Server.AllClients.Except(NetObj).SendMessage("User: \"" + NetObj.UserObject.Name + "\" decremented Rank: \"" + TargetRank.Name + "\" in Group: \"" + TargetGroup.Name + "\" to position " + NextPosition.ToString() + "."); return(true); }
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 bool Orb_Command_Maintenence_Group_Ranks_Remove_Method(Server.NetObject NetObj, CommandReader Command) { Database.GroupDB.Group TargetGroup = Database.GroupDB.NoGroup; Database.GroupDB.Group.Rank TargetRank = Database.GroupDB.NoRank; string TargetRankName = ""; #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 FindTargetRank if (Command._CmdArguments.Count() < 1) { NetObj.ClientObject.SendMessage("No rank specified to be removed from the group."); return(false); } else { if (TargetGroup.Ranks.Select(x => x.Name.ToUpperInvariant()).Contains(Command._CmdArguments[0].ToUpperInvariant())) { TargetRank = TargetGroup.Ranks.First(x => x.Name.ToUpperInvariant() == Command._CmdArguments[0].ToUpperInvariant()); } else { NetObj.ClientObject.SendMessage("Rank not found: \"" + Command._CmdArguments[0] + "\"."); return(false); } } #endregion #region SuperUser Override if (NetObj.UserObject == Database.UserDB.SuperUser || NetObj.UserObject == TargetGroup.Founder) { //continue } #endregion #region Standard Testing 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 ranks in this group."); return(false); } //continue } else { NetObj.ClientObject.SendMessage("You need to be a member of the group yourself in order to remove ranks. (Group founders are excepted from this rule.)"); return(false); } #endregion TargetRankName = TargetRank.Name; if (!(TargetGroup.Ranks.Contains(TargetRank))) { NetObj.ClientObject.SendMessage("Rank: \"" + TargetRank.Name + "\" not found in Group: \"" + TargetGroup.Name + "\"."); return(false); } NetObj.ClientObject.SendMessage("You are about to remove Rank: \"" + TargetRank.Name + "\" from Group: \"" + TargetGroup.Name + "\"."); NetObj.ClientObject.SendMessage("THIS IS NOT REVERSABLE!"); NetObj.ClientObject.SendMessage("Please confirm this action by typing \"/OK\"."); if (!NetObj.GetCommandConfirmation(5000)) { NetObj.ClientObject.SendMessage("No response, command cancelled."); return(false); } TargetGroup.RemoveRankFromGroup(TargetRank); TargetGroup.SaveAll(); Server.EmptyClientList.Include(NetObj).SendMessage("You removed Rank: \"" + TargetRankName + "\" from Group: \"" + TargetGroup.Name + "\"."); Server.AllClients.Except(NetObj).SendMessage("Rank: \"" + TargetRankName + "\" was removed from Group: \"" + TargetGroup.Name + "\" by \"" + NetObj.UserObject.Name + "\"."); return(true); }
public static bool Orb_Command_Maintenence_Group_Owner_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 { NetObj.ClientObject.SendMessage("Only Group Owners are able to change ownership of the group. Please contact " + TargetGroup.Founder.Name + " if you wish to take over this group."); return(false); } #endregion if (NetObj.UserObject == TargetUser) { NetObj.ClientObject.SendMessage("You already ARE the founder of this group!"); return(false); } else { NetObj.ClientObject.SendMessage("You are about to relinquish ownership of Group: \"" + TargetGroup.Name + "\" to \"" + TargetUser.Name + "\"."); NetObj.ClientObject.SendMessage("THIS IS NOT REVERSABLE!"); NetObj.ClientObject.SendMessage("Please confirm this action by typing \"/OK\"."); if (!NetObj.GetCommandConfirmation(5000)) { NetObj.ClientObject.SendMessage("No response, command cancelled."); return(false); } } TargetGroup.Founder = TargetUser; TargetGroup.SaveAll(); NetObj.ClientObject.SendMessage("You have relinquished ownership of Group: \"" + TargetGroup.Name + "\" to \"" + TargetUser.Name + "\"."); Server.EmptyClientList.Include(TargetUser).SendMessage("You have been assigned ownership of Group: \"" + TargetGroup.Name + "\" by \"" + NetObj.UserObject.Name + "\"."); Server.AllClients.Except(TargetUser).SendMessage("User: \"" + TargetUser.Name + "\" was assigned ownership of Group: \"" + TargetGroup.Name + "\" by \"" + NetObj.UserObject.Name + "\"."); return(true); }