Ejemplo n.º 1
0
        private static void Orb_Command_Maintenence_Group_Users_Rank_Common_Method(Server.NetObject NetObj, Database.UserDB.User TargetUser, Database.GroupDB.Group TargetGroup, Database.GroupDB.Group.Rank TargetRank, string Reason)
        {
            if (TargetUser.Groups.First(x => x.Group == TargetGroup).Rank == TargetRank)
            {
                NetObj.ClientObject.SendMessage("User: \"" + TargetUser.Name + "\" is already Rank \"" + TargetRank.Name + "\" in Group: \"" + TargetGroup.Name + "\".");
                return;
            }
            TargetUser.Groups.First(x => x.Group == TargetGroup).PreviousRank = TargetUser.Groups.First(x => x.Group == TargetGroup).Rank;
            TargetUser.Groups.First(x => x.Group == TargetGroup).Rank         = TargetRank;
            TargetUser.Groups.First(x => x.Group == TargetGroup).RankDate     = DateTime.Now;
            TargetUser.Groups.First(x => x.Group == TargetGroup).RankedBy     = NetObj.UserObject;
            TargetUser.Groups.First(x => x.Group == TargetGroup).RankReason   = Reason;
            TargetUser.SaveAll();
            string RankType;

            if (TargetUser.Groups.First(x => x.Group == TargetGroup).Group.Ranks.IndexOf(TargetUser.Groups.First(y => y.Group == TargetGroup).PreviousRank) <
                TargetUser.Groups.First(a => a.Group == TargetGroup).Group.Ranks.IndexOf(TargetUser.Groups.First(y => y.Group == TargetGroup).Rank))
            {
                //Complex Lamba Much? This just menas if previous rank was lower then current rank...
                RankType = "Promoted";
            }
            else
            {
                RankType = "Demoted";
            }
            Server.EmptyClientList.Include(TargetUser).SendMessage("You were " + RankType + " from Rank: \"" + TargetUser.Groups.First(x => x.Group == TargetGroup).PreviousRank.Name + "\" to Rank: \"" + TargetUser.Groups.First(x => x.Group == TargetGroup).Rank.Name + "\" in Group: \"" + TargetGroup.Name + "\" by \"" + NetObj.UserObject.Name + "\".");
            Server.AllClients.Except(TargetUser).SendMessage("User: \"" + TargetUser.Name + "\" was " + RankType + " from Rank: \"" + TargetUser.Groups.First(x => x.Group == TargetGroup).PreviousRank.Name + "\" to Rank: \"" + TargetUser.Groups.First(x => x.Group == TargetGroup).Rank.Name + "\" in Group: \"" + TargetGroup.Name + "\" by \"" + NetObj.UserObject.Name + "\".");
            if (Reason.Length > 0)
            {
                Server.EmptyClientList.Include(TargetUser).SendMessage("Reason: \"" + Reason + "\".");
                Server.AllClients.Except(TargetUser).SendMessage("Reason: \"" + Reason + "\".");
            }
            return;
        }
Ejemplo n.º 2
0
        public static bool Orb_Command_Maintenence_Group_Users_Remove_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_DemoteableRank < 0) //<0 No Member.
                    {
                        NetObj.ClientObject.SendMessage("You are not able to remove members from the group as you do not have permission to demote 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 remove members. (Group founders are excepted from this rule.)");
                    return(false);
                }
            }
            #endregion

            if (TargetGroup.Leavable == false)
            {
                NetObj.ClientObject.SendMessage("Failed to remove User: \"" + TargetUser.Name + "\" from Group: \"" + TargetGroup.Name + "\". The Group is set to un-leaveable.");
                return(false);
            }
            if (!(TargetUser.Groups.Select(x => x.Group).Contains(TargetGroup)))
            {
                NetObj.ClientObject.SendMessage("User: \"" + TargetUser.Name + "\" is already not a member of Group: \"" + TargetGroup.Name + "\".");
                return(false);
            }
            TargetUser.RemoveFromGroup(TargetGroup);
            TargetUser.SaveAll();
            Server.EmptyClientList.Include(TargetUser).SendMessage("You were removed from Group: \"" + TargetGroup.Name + "\" by \"" + NetObj.UserObject.Name + "\".");
            Server.AllClients.Except(TargetUser).SendMessage("User: \"" + TargetUser.Name + "\" was removed from Group: \"" + TargetGroup.Name + "\" by \"" + NetObj.UserObject.Name + "\".");
            return(true);
        }
Ejemplo n.º 3
0
        public static bool Orb_Command_Moderation_User_Kick_Method(Server.NetObject NetObj, CommandReader Command)
        {
            Database.UserDB.User TargetUser = Database.UserDB.Nobody;
            string Reason = "";

            #region FindTargetUser
            if (Command._CmdElements()[1] == "-")
            {
                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._CmdElements()[1]) != Database.UserDB.Nobody)
                {
                    TargetUser = Database.UserDB.Find(Command._CmdElements()[1]);
                }
                else
                {
                    NetObj.ClientObject.SendMessage("User not found: \"" + Command._CmdElements()[1] + "\".");
                    return(false);
                }
            }
            #endregion
            #region GetKickReason
            if (Command._CmdArguments.Count() < 1)
            {
                //Ban reason not given.
            }
            else
            {
                Reason = Command._CmdRawArguments;
            }
            #endregion
            #region SuperUser Override
            if (NetObj.UserObject == Database.UserDB.SuperUser || NetObj.UserObject.Can(Database.PermissionDB.Strings.Kick))
            {
                //continue
            }
            else
            {
                NetObj.ClientObject.SendMessage("You do not have permission to kick users from the server.");
                return(false);
            }
            #endregion

            if (TargetUser == NetObj.UserObject)
            {
                NetObj.ClientObject.SendMessage("You are not able to kick yourself!");
                return(false);
            }
            if (!Server.ClientList.Select(x => x.UserObject).Contains(TargetUser))
            {
                NetObj.ClientObject.SendMessage("User: \"" + TargetUser.Name + "\" is not online.");
                return(false);
            }
            TargetUser.TimesKicked++;
            TargetUser.KickedBy   = NetObj.UserObject;
            TargetUser.KickReason = Reason;
            TargetUser.SaveAll();
            Server.EmptyClientList.Include(TargetUser).SendMessage("&cYou have been KICKED by \"" + NetObj.UserObject.Name + "\".");
            Server.AllClients.Except(TargetUser).SendMessage("&cUser: \"" + TargetUser.Name + "\" was KICKED by \"" + NetObj.UserObject.Name + "\".");
            if (TargetUser.KickReason != "")
            {
                Server.AllClients.SendMessage("&cKick Reason: \"" + TargetUser.KickReason + "\".");
            }
            foreach (Server.NetObject ThisClient in Server.ClientList.Where(x => x.UserObject == TargetUser).ToArray())
            {
                ThisClient.Close(); //Kicks the target user.
            }
            return(true);
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 5
0
        public static bool Orb_Command_Moderation_User_UnMute_Method(Server.NetObject NetObj, CommandReader Command)
        {
            Database.UserDB.User TargetUser = Database.UserDB.Nobody;
            string Reason = "";

            #region FindTargetUser
            if (Command._CmdElements()[1] == "-")
            {
                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._CmdElements()[1]) != Database.UserDB.Nobody)
                {
                    TargetUser = Database.UserDB.Find(Command._CmdElements()[1]);
                }
                else
                {
                    NetObj.ClientObject.SendMessage("User not found: \"" + Command._CmdElements()[1] + "\".");
                    return(false);
                }
            }
            #endregion
            #region GetMuteReason
            if (Command._CmdArguments.Count() < 1)
            {
                //Mute reason not given.
            }
            else
            {
                Reason = Command._CmdArguments[0];
            }
            #endregion
            #region SuperUser Override
            if (NetObj.UserObject == Database.UserDB.SuperUser || NetObj.UserObject.Can(Database.PermissionDB.Strings.Mute))
            {
                //continue
            }
            else
            {
                NetObj.ClientObject.SendMessage("You do not have permission to unmute users on the server.");
                return(false);
            }
            #endregion

            if (TargetUser == NetObj.UserObject)
            {
                NetObj.ClientObject.SendMessage("You are not able to unmute yourself!");
                return(false);
            }
            if (!TargetUser.Muted)
            {
                NetObj.ClientObject.SendMessage("User: \"" + TargetUser.Name + "\" is not muted.");
                return(false);
            }
            TargetUser.MuteExpires = new DateTime();
            TargetUser.Muted       = false;
            TargetUser.MutedBy     = NetObj.UserObject;
            TargetUser.MuteReason  = Reason;
            TargetUser.SaveAll();
            Server.EmptyClientList.Include(TargetUser).SendMessage("&eYou have been &aUNMUTED&e by \"" + NetObj.UserObject.Name + "\".");
            Server.AllClients.Except(TargetUser).SendMessage("&eUser: \"" + TargetUser.Name + "\" was &aUNMUTED&e by \"" + NetObj.UserObject.Name + "\".");
            if (TargetUser.MuteReason != "")
            {
                Server.AllClients.SendMessage("&aUnMute &eReason: \"" + TargetUser.MuteReason + "\".");
            }
            return(true);
        }
Ejemplo n.º 6
0
        public static bool Orb_Command_Moderation_User_Mute_Method(Server.NetObject NetObj, CommandReader Command)
        {
            Database.UserDB.User TargetUser = Database.UserDB.Nobody;
            DateTime             MuteEnds   = new DateTime();
            TimeSpan             Duration   = new TimeSpan();
            string Reason = "";

            #region FindTargetUser
            if (Command._CmdElements()[1] == "-")
            {
                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._CmdElements()[1]) != Database.UserDB.Nobody)
                {
                    TargetUser = Database.UserDB.Find(Command._CmdElements()[1]);
                }
                else
                {
                    NetObj.ClientObject.SendMessage("User not found: \"" + Command._CmdElements()[1] + "\".");
                    return(false);
                }
            }
            #endregion
            #region GetMutexpiry
            if (Command._CmdArguments.Count() < 1)
            {
                //Mute is Permanent by default
            }
            else
            {
                if (Command._CmdArguments[0].ToUpperInvariant() == "INF" ||
                    Command._CmdArguments[0].ToUpperInvariant() == "INFINITE" ||
                    Command._CmdArguments[0].ToUpperInvariant() == "INFINITY" ||
                    Command._CmdArguments[0].ToUpperInvariant() == "0" ||
                    Command._CmdArguments[0].ToUpperInvariant() == "-" ||
                    Command._CmdArguments[0].ToUpperInvariant() == "FOREVER" ||
                    Command._CmdArguments[0].ToUpperInvariant() == "PERMANENT" ||
                    Command._CmdArguments[0].ToUpperInvariant() == "PERM" ||
                    Command._CmdArguments[0].ToUpperInvariant() == "!")
                {
                    //New Date Time == Permanent Mute.
                    //This is already set, we don't need to do anything.
                }
                else
                {
                    if (!Utilities.DateTimeUtilities.TryParseMiniTimespan(Command._CmdArguments[0], out Duration))
                    {
                        NetObj.ClientObject.SendMessage("Mute Duration Format Invalid. Acceptable Format/s: \"*w*d*h*m*s\" eg: \"1w2d5h3m2s\" or \"7w2m\" or even \"5s\".");
                        return(false);
                    }
                    MuteEnds = DateTime.Now + Duration;
                }
            }
            #endregion
            #region GetMuteReason
            if (Command._CmdArguments.Count() < 2)
            {
                //Mute reason not given.
            }
            else
            {
                Reason = Command._CmdRawArguments.Split(new string[] { " " }, 2, StringSplitOptions.None)[1];
            }
            #endregion
            #region SuperUser Override
            if (NetObj.UserObject == Database.UserDB.SuperUser || NetObj.UserObject.Can(Database.PermissionDB.Strings.Mute))
            {
                //continue
            }
            else
            {
                NetObj.ClientObject.SendMessage("You do not have permission to mute users on the server.");
                return(false);
            }
            #endregion

            if (DateTime.Now - TimeSpan.FromSeconds(30) > MuteEnds && MuteEnds != new DateTime())
            {
                NetObj.ClientObject.SendMessage("MuteTime is in the past! Unable to mute the target!");
                return(false);
            }
            if (TargetUser == NetObj.UserObject)
            {
                NetObj.ClientObject.SendMessage("You are not able to mute yourself!");
                return(false);
            }
            if (TargetUser.Muted)
            {
                NetObj.ClientObject.SendMessage("User: \"" + TargetUser.Name + "\" is already muted.");
                return(false);
            }
            TargetUser.TimesMuted++;
            TargetUser.MuteExpires = MuteEnds;
            TargetUser.Muted       = true;
            TargetUser.MutedBy     = NetObj.UserObject;
            TargetUser.MuteReason  = Reason;
            TargetUser.SaveAll();
            if (TargetUser.MuteExpires == new DateTime())
            {
                Server.EmptyClientList.Include(TargetUser).SendMessage("&cYou have been PERMANTENTLY MUTED by \"" + NetObj.UserObject.Name + "\".");
                Server.AllClients.Except(TargetUser).SendMessage("&cUser: \"" + TargetUser.Name + "\" was PERMANTENTLY MUTED by \"" + NetObj.UserObject.Name + "\".");
                if (TargetUser.MuteReason != "")
                {
                    Server.AllClients.SendMessage("&cMute Reason: \"" + TargetUser.MuteReason + "\".");
                }
            }
            else
            {
                Server.EmptyClientList.Include(TargetUser).SendMessage("&cYou have been MUTED by \"" + NetObj.UserObject.Name + "\" until " + Utilities.DateTimeUtilities.ToYearTimeDescending(Utilities.DateTimeUtilities.FormatDateTime(TargetUser.MuteExpires)) + ".");
                Server.AllClients.Except(TargetUser).SendMessage("&cUser: \"" + TargetUser.Name + "\" was MUTED by \"" + NetObj.UserObject.Name + "\" until " + Utilities.DateTimeUtilities.ToYearTimeDescending(Utilities.DateTimeUtilities.FormatDateTime(TargetUser.MuteExpires)) + ".");
                if (TargetUser.MuteReason != "")
                {
                    Server.AllClients.SendMessage("&cMute Reason: \"" + TargetUser.MuteReason + "\".");
                }
            }
            return(true);
        }