Ejemplo n.º 1
0
            public static bool Delete(Group Target)
            {
                string Name = Target.Name;

                if (Target == GroupDB.NoGroup)
                {
                    return(false);
                }
                else
                {
                    foreach (UserDB.User ThisUser in UserDB.List)
                    {
                        if (ThisUser.Groups.Select(x => x.Group).Contains(Target))
                        {
                            Server.ClientList.Where(x => x.UserObject == ThisUser).ToList().SendMessage("You were removed from Group: \"" + Target.Name + "\" because the group has been removed from the server.");
                            ThisUser.RemoveFromGroup(Target);
                            ThisUser.SaveAll();
                        }
                    }
                    Logger.Log.SystemMessage(String.Format("Deleted Group \"{0}\"", Name));
                    GroupDB.List.Remove(Target);
                    try
                    {
                        var deletable = new DirectoryInfo("./Database/Group/" + Name);
                        deletable.Delete(true);
                    }
                    catch (Exception e)
                    {
                        Logger.Log.Bug(e, "Directory \"" + "./Database/Group/" + Name + "\" is in use or does not exist!");
                    }
                    return(true);
                }
            }
Ejemplo n.º 2
0
 public static void SaveAll()
 {
     foreach (User ThisUser in List)
     {
         if (ThisUser == UserDB.Nobody)
         {
             continue;
         }
         if (ThisUser == UserDB.Connecting)
         {
             continue;
         }
         if (ThisUser == UserDB.SuperUser)
         {
             continue;
         }
         ThisUser.SaveAll();
     }
 }
Ejemplo n.º 3
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.º 4
0
                public bool RemoveRankFromGroup(Rank RankToRemove)
                {
                    try
                    {
                        List <Rank> RankCache = Ranks.ToArray().ToList();
                        Rank        NewRank   = NoRank;
                        if (RankCache.IndexOf(RankToRemove) > 0)
                        {
                            NewRank = RankCache[RankCache.IndexOf(RankToRemove) - 1];
                        }
                        else if (RankCache.IndexOf(RankToRemove) < RankCache.Count() - 1)
                        {
                            NewRank = RankCache[RankCache.IndexOf(RankToRemove) + 1];
                        }
                        else
                        {
                            NewRank = NoRank;
                        }
                        string RankType = "Demoted";
                        if (RankCache.IndexOf(RankToRemove) == 0)
                        {
                            RankType = "Promoted";
                        }
                        //We need to iterate over EVERY user and remove their reference to the rank we are trying to destory.

                        //Itereate over the userlist, look for a user who has this rank in thier groups:
                        List <UserDB.User> UserListCache = UserDB.List.ToArray().ToList();
                        foreach (UserDB.User ThisUser in UserListCache)
                        {
                            foreach (UserDB.User.GroupReference ThisGroupReference in ThisUser.Groups.ToArray())
                            {
                                if (ThisGroupReference.Group == this)
                                //This means that only the current group is rank adjusted. Though it shouldn't happen, groups COULD share the same object?
                                {
                                    if (ThisGroupReference.Rank == RankToRemove)
                                    {
                                        ThisGroupReference.PreviousRank = NoRank;
                                        ThisGroupReference.Rank         = NewRank;
                                        if (NewRank != NoRank)
                                        {
                                            //only message online users.
                                            Server.ClientList.Where(x => x.UserObject == ThisUser).ToList().SendMessage("Your rank in Group: \"" + ThisGroupReference.Group.Name + "\" has been removed. You have been " + RankType + " to Rank: \"" + NewRank.Name + "\".");
                                        }
                                        else
                                        {
                                            //only message online users.
                                            Server.ClientList.Where(x => x.UserObject == ThisUser).ToList().SendMessage("Your rank in Group: \"" + ThisGroupReference.Group.Name + "\" has been removed. As it was the last rank, You have been removed from the group.");
                                            ThisUser.RemoveFromGroup(this);
                                            ThisUser.SaveAll();
                                            continue;
                                        }
                                        ThisGroupReference.RankDate   = DateTime.Now;
                                        ThisGroupReference.RankedBy   = UserDB.SuperUser;
                                        ThisGroupReference.RankReason = "Previous Rank Deleted.";
                                        ThisUser.SaveAll();
                                    }
                                }
                            }
                        }
                        Ranks.Remove(RankToRemove);
                        return(true);
                    }
                    catch (Exception e)
                    {
                        Logger.Log.Bug(e, "Error removing a rank from a group");
                        return(false);
                    }
                }