From e92af1bc7fe5cd5860206061f4ff261b3339cc51 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 13 Jul 2017 08:40:47 -0400 Subject: SidePanel system, system status, crapton of other neat things --- ShiftOS_TheReturn/KernelWatchdog.cs | 28 ---- ShiftOS_TheReturn/Localization.cs | 2 +- ShiftOS_TheReturn/SaveSystem.cs | 158 +----------------- ShiftOS_TheReturn/Scripting.cs | 4 +- ShiftOS_TheReturn/ServerManager.cs | 4 +- ShiftOS_TheReturn/TerminalBackend.cs | 96 +---------- ShiftOS_TheReturn/UserManagementCommands.cs | 243 +--------------------------- 7 files changed, 11 insertions(+), 524 deletions(-) (limited to 'ShiftOS_TheReturn') diff --git a/ShiftOS_TheReturn/KernelWatchdog.cs b/ShiftOS_TheReturn/KernelWatchdog.cs index 0608c46..ec4ee45 100644 --- a/ShiftOS_TheReturn/KernelWatchdog.cs +++ b/ShiftOS_TheReturn/KernelWatchdog.cs @@ -66,38 +66,10 @@ namespace ShiftOS.Engine } } - public static bool IsSafe(TerminalBackend.TerminalCommand cmd) - { - if (!cmd.RequiresElevation) - return true; - else - { - if (SaveSystem.CurrentUser.Permissions == Objects.UserPermissions.Root) - return true; - else - return false; - } - } - static string regularUsername = ""; //put regular username in here later - public static void EnterKernelMode() - { - regularUsername = SaveSystem.CurrentUser.Username; // k for now put user's username in here for the time being - SaveSystem.CurrentUser = SaveSystem.Users.FirstOrDefault(x => x.Username == "root"); // now their username is root - - } - - public static void LeaveKernelMode() - { - var user = SaveSystem.Users.FirstOrDefault(x => x.Username == regularUsername); //finds username - if (user == null) - throw new Exception("User not in root mode."); // fuck this means the user isnt root quick throw error - SaveSystem.CurrentUser = user; - } - //determines if you can disconnect from mud if there are no applications that currently need to internal static bool CanRunOffline(Type method) { diff --git a/ShiftOS_TheReturn/Localization.cs b/ShiftOS_TheReturn/Localization.cs index 2414bd9..22c5a60 100644 --- a/ShiftOS_TheReturn/Localization.cs +++ b/ShiftOS_TheReturn/Localization.cs @@ -128,7 +128,7 @@ namespace ShiftOS.Engine { try { - usernameReplace = SaveSystem.CurrentUser.Username; + usernameReplace = SaveSystem.CurrentSave.Username; } catch { diff --git a/ShiftOS_TheReturn/SaveSystem.cs b/ShiftOS_TheReturn/SaveSystem.cs index e20bc08..292af41 100644 --- a/ShiftOS_TheReturn/SaveSystem.cs +++ b/ShiftOS_TheReturn/SaveSystem.cs @@ -58,11 +58,6 @@ namespace ShiftOS.Engine /// public static bool ShuttingDown = false; - /// - /// Gets or sets the current logged in client-side user. - /// - public static ClientSave CurrentUser { get; set; } - /// /// Boolean representing whether the save system is ready to be used. /// @@ -206,44 +201,21 @@ namespace ShiftOS.Engine CurrentSave = new Save { IsSandbox = true, - Username = "sandbox", - Password = "sandbox", + Username = "user", SystemName = "shiftos", - Users = new List - { - new ClientSave - { - Username = "user", - Password = "", - Permissions = 0 - } - }, - Class = 0, ID = new Guid(), Upgrades = new Dictionary(), - CurrentLegions = null, - IsMUDAdmin = false, - IsPatreon = false, Language = "english", - LastMonthPaid = 0, - MajorVersion = 1, - MinorVersion = 0, MusicEnabled = false, MusicVolume = 100, - MyShop = "", - PasswordHashed = false, PickupPoint = "", - RawReputation = 0.0f, - Revision = 0, ShiftnetSubscription = 0, SoundEnabled = true, StoriesExperienced = null, StoryPosition = 0, - UniteAuthToken = "", + }; - CurrentUser = CurrentSave.Users.First(); - Localization.SetupTHETRUEDefaultLocals(); Shiftorium.Init(); @@ -358,8 +330,6 @@ namespace ShiftOS.Engine goto Sysname; } - if (CurrentSave.Users == null) - CurrentSave.Users = new List(); Console.WriteLine($@" `-:/++++::.` @@ -376,7 +346,7 @@ namespace ShiftOS.Engine oMM+ sMMMMMMMMMN+` `-/smMMMMMMMMMMM: hMM: sMM+ sMMMMMMMMMMMMds/-` .sMMMMMMMMM/ yMM/ +MMs +MMMMMMMMMMMMMMMMMmhs:` +MMMMMMMM- dMM- {{GEN_SYSTEMNAME}}: {CurrentSave.SystemName.ToUpper()} - .MMm `NMMMMMMMMMMMMMMMMMMMMMo `NMMMMMMd .MMN {{GEN_USERS}}: {Users.Count()}. + .MMm `NMMMMMMMMMMMMMMMMMMMMMo `NMMMMMMd .MMN hMM+ +MMMMMMmsdNMMMMMMMMMMN/ -MMMMMMN- yMM+ `NMN- oMMMMMd `-/+osso+- .mMMMMMN: +MMd -NMN: /NMMMm` :yMMMMMMm- oMMd` @@ -388,118 +358,7 @@ namespace ShiftOS.Engine `:+yhmNNMMMMNNdhs+- ```` "); - if (CurrentSave.Users.Count == 0) - { - CurrentSave.Users.Add(new ClientSave - { - Username = "root", - Password = "", - Permissions = UserPermissions.Root - }); - Console.WriteLine("{MISC_NOUSERS}"); - } TerminalBackend.InStory = false; - - TerminalBackend.PrefixEnabled = false; - - if (LoginManager.ShouldUseGUILogin) - { - Action Completed = null; - Completed += (user) => - { - CurrentUser = user; - LoginManager.LoginComplete -= Completed; - }; - LoginManager.LoginComplete += Completed; - Desktop.InvokeOnWorkerThread(() => - { - LoginManager.PromptForLogin(); - }); - while (CurrentUser == null) - { - Thread.Sleep(10); - } - } - else - { - - Login: - string username = ""; - int progress = 0; - bool goback = false; - TextSentEventHandler ev = null; - string loginstr = Localization.Parse("{GEN_LPROMPT}", new Dictionary - { - ["%sysname"] = CurrentSave.SystemName - }); - ev = (text) => - { - if (progress == 0) - { - string getuser = text.Remove(0, loginstr.Length); - if (!string.IsNullOrWhiteSpace(getuser)) - { - if (CurrentSave.Users.FirstOrDefault(x => x.Username == getuser) == null) - { - Console.WriteLine(); - Console.WriteLine("{ERR_NOUSER}"); - goback = true; - progress++; - TerminalBackend.TextSent -= ev; - return; - } - username = getuser; - progress++; - } - else - { - Console.WriteLine(); - Console.WriteLine("{ERR_NOUSER}"); - TerminalBackend.TextSent -= ev; - goback = true; - progress++; - } - } - else if (progress == 1) - { - string passwordstr = Localization.Parse("{GEN_PASSWORD}: "); - string getpass = text.Remove(0, passwordstr.Length); - var user = CurrentSave.Users.FirstOrDefault(x => x.Username == username); - if (user.Password == getpass) - { - Console.WriteLine(); - Console.WriteLine("{GEN_WELCOME}"); - CurrentUser = user; - progress++; - } - else - { - Console.WriteLine(); - Console.WriteLine("{RES_DENIED}"); - goback = true; - progress++; - } - TerminalBackend.TextSent -= ev; - } - }; - TerminalBackend.TextSent += ev; - Console.WriteLine(); - Console.Write(loginstr); - ConsoleEx.Flush(); - while (progress == 0) - { - Thread.Sleep(10); - } - if (goback) - goto Login; - Console.WriteLine(); - Console.Write("{GEN_PASSWORD}: "); - ConsoleEx.Flush(); - while (progress == 1) - Thread.Sleep(10); - if (goback) - goto Login; - } TerminalBackend.PrefixEnabled = true; Shiftorium.LogOrphanedUpgrades = true; Desktop.InvokeOnWorkerThread(new Action(() => @@ -529,17 +388,6 @@ namespace ShiftOS.Engine /// public delegate void EmptyEventHandler(); - /// - /// Gets a list of all client-side users. - /// - public static List Users - { - get - { - return CurrentSave.Users; - } - } - /// /// Occurs when the engine is loaded and the game can take over. /// diff --git a/ShiftOS_TheReturn/Scripting.cs b/ShiftOS_TheReturn/Scripting.cs index 081a6ae..8dc5d21 100644 --- a/ShiftOS_TheReturn/Scripting.cs +++ b/ShiftOS_TheReturn/Scripting.cs @@ -271,7 +271,7 @@ end"); { Console.WriteLine(""); Lua(lua); - Console.WriteLine($"{SaveSystem.CurrentUser.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "); + Console.WriteLine($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "); } catch (Exception e) { @@ -447,7 +447,7 @@ end"); /// The user's username. public string getUsername() { - return SaveSystem.CurrentUser.Username; + return SaveSystem.CurrentSave.Username; } /// diff --git a/ShiftOS_TheReturn/ServerManager.cs b/ShiftOS_TheReturn/ServerManager.cs index 66a0d37..e2c4e96 100644 --- a/ShiftOS_TheReturn/ServerManager.cs +++ b/ShiftOS_TheReturn/ServerManager.cs @@ -161,7 +161,7 @@ Ping: {ServerManager.DigitalSocietyPing} ms switch(msg.Name) { case "getguid_fromserver": - if(SaveSystem.CurrentUser.Username == msg.Contents) + if(SaveSystem.CurrentSave.Username == msg.Contents) { client.Send(new NetObject("yes_i_am", new ServerMessage { @@ -258,7 +258,7 @@ Ping: {ServerManager.DigitalSocietyPing} ms else if(msg.Name == "update_your_cp") { var args = JsonConvert.DeserializeObject>(msg.Contents); - if(args["username"] as string == SaveSystem.CurrentUser.Username) + if(args["username"] as string == SaveSystem.CurrentSave.Username) { SaveSystem.CurrentSave.Codepoints += (ulong)args["amount"]; Desktop.InvokeOnWorkerThread(new Action(() => diff --git a/ShiftOS_TheReturn/TerminalBackend.cs b/ShiftOS_TheReturn/TerminalBackend.cs index c8c6ba9..db6fde3 100644 --- a/ShiftOS_TheReturn/TerminalBackend.cs +++ b/ShiftOS_TheReturn/TerminalBackend.cs @@ -178,14 +178,6 @@ namespace ShiftOS.Engine public virtual void Invoke(Dictionary args) { List errors = new List(); - bool requiresAuth = false; - if (!KernelWatchdog.IsSafe(this)) - { - if (SaveSystem.CurrentUser.Permissions == Objects.UserPermissions.Admin) - requiresAuth = true; - else - errors.Add("You can't run this command - you do not have permission."); - } if (errors.Count > 0) { foreach (var error in errors) @@ -194,33 +186,6 @@ namespace ShiftOS.Engine } return; } - if (requiresAuth) - { - Infobox.PromptText("Enter your password.", "This command requires you to have elevated permissions. Please enter your password to confirm this action.", (pass) => - { - if (pass == SaveSystem.CurrentUser.Password) - { - var uname = SaveSystem.CurrentUser.Username; - SaveSystem.CurrentUser = SaveSystem.CurrentSave.Users.FirstOrDefault(x => x.Username == "root"); - try - { - var h = CommandHandler; - h.Invoke(null, new[] { args }); - } - catch - { - var h = CommandHandler; - h.Invoke(null, null); - } - SaveSystem.CurrentUser = SaveSystem.CurrentSave.Users.FirstOrDefault(x => x.Username == uname); - } - else - { - Infobox.Show("Access denied.", "Incorrect password provided. The command will not run."); - } - }, true); - } - try { CommandHandler.Invoke(null, new[] { args }); @@ -512,7 +477,7 @@ namespace ShiftOS.Engine public static void PrintPrompt() { Console.WriteLine(); - if (SaveSystem.CurrentSave != null && CurrentUser != null) + if (SaveSystem.CurrentSave != null) { ConsoleEx.BackgroundColor = SkinEngine.LoadedSkin.TerminalBackColorCC; ConsoleEx.Italic = false; @@ -521,7 +486,7 @@ namespace ShiftOS.Engine ConsoleEx.ForegroundColor = ConsoleColor.Magenta; ConsoleEx.Bold = true; - Console.Write(SaveSystem.CurrentUser.Username); + Console.Write(SaveSystem.CurrentSave.Username); ConsoleEx.Bold = false; ConsoleEx.ForegroundColor = ConsoleColor.Gray; Console.Write("@"); @@ -547,63 +512,6 @@ namespace ShiftOS.Engine } } - /// - /// Static constructor for . - /// - static TerminalBackend() - { - ServerMessageReceived onMessageReceived = (msg) => - { - if (msg.Name == "trm_invokecommand") - { - string text3 = ""; - string text4 = msg.Contents; - - if (TerminalBackend.PrefixEnabled) - { - text3 = text4.Remove(0, $"{SaveSystem.CurrentUser.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ".Length); - } - IsForwardingConsoleWrites = true; - if (TerminalBackend.InStory == false) - { - TerminalBackend.InvokeCommand(text3, true); - } - if (TerminalBackend.PrefixEnabled) - { - Console.Write($"{SaveSystem.CurrentUser.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "); - } - IsForwardingConsoleWrites = false; - } - else if (msg.Name == "pleasewrite") - { - Console.Write(msg.Contents); - } - else if (msg.Name == "handshake_from") - { - var a = JsonConvert.DeserializeObject>(msg.Contents); - string uName = a["username"] as string; - string pass = a["password"] as string; - string sys = a["sysname"] as string; - string guid = msg.GUID; - if (SaveSystem.CurrentUser.Username == uName && SaveSystem.CurrentSave.Password == pass && CurrentSave.SystemName == sys) - { - ForwardGUID = guid; - ServerManager.SendMessage("trm_handshake_accept", $@"{{ - guid: ""{ServerManager.thisGuid}"", - target: ""{guid}"" -}}"); - - IsForwardingConsoleWrites = true; - InvokeCommand("sos.status"); - Console.Write($"{SaveSystem.CurrentUser.Username}@{SaveSystem.CurrentSave.SystemName}:~$ "); - IsForwardingConsoleWrites = false; - } - } - }; - - ServerManager.MessageReceived += onMessageReceived; - } - /// /// Gets whether the terminal backend is forwarding console write requests through RTS to a remote client. /// diff --git a/ShiftOS_TheReturn/UserManagementCommands.cs b/ShiftOS_TheReturn/UserManagementCommands.cs index 7936820..5f28270 100644 --- a/ShiftOS_TheReturn/UserManagementCommands.cs +++ b/ShiftOS_TheReturn/UserManagementCommands.cs @@ -1,242 +1 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using ShiftOS.Objects; - -namespace ShiftOS.Engine -{ - /// - /// Administrative user management terminal commands. - /// - [KernelMode] - [RequiresUpgrade("mud_fundamentals")] - public static class AdminUserManagementCommands - { - /// - /// Add a user to the system. - /// - /// Command arguments. - /// Command result. - [Command("adduser", description = "{DESC_ADDUSER}")] - [RequiresArgument("name")] - public static bool AddUser(Dictionary args) - { - string name = args["name"].ToString(); - if (SaveSystem.CurrentSave.Users.FirstOrDefault(x => x.Username == name) != null) - { - Console.WriteLine("{ERR_USERFOUND}"); - return true; - } - - var user = new ClientSave - { - Username = name, - Password = "", - Permissions = UserPermissions.User - }; - SaveSystem.CurrentSave.Users.Add(user); - Console.WriteLine(Localization.Parse("{RES_CREATINGUSER}", new Dictionary - { - { "%name", name } - })); - SaveSystem.SaveGame(); - return true; - } - - /// - /// Remove a user from the system. - /// - /// Command arguments. - /// Command result. - - [Command("removeuser", description = "{DESC_REMOVEUSER}")] - [RequiresArgument("name")] - public static bool RemoveUser(Dictionary args) - { - string name = args["name"].ToString(); - if (SaveSystem.CurrentSave.Users.FirstOrDefault(x => x.Username == name) == null) - { - Console.WriteLine("{ERR_NOUSER}"); - return true; - } - - var user = SaveSystem.CurrentSave.Users.FirstOrDefault(x => x.Username == name); - if (user.Username != SaveSystem.CurrentUser.Username) - { - Console.WriteLine("{ERR_REMOVEYOU}"); - return true; - } - SaveSystem.CurrentSave.Users.Remove(user); - Console.WriteLine(Localization.Parse("{RES_REMOVINGUSER}", new Dictionary - { - ["%name"] = name - })); - SaveSystem.SaveGame(); - return true; - } - - - - /// - /// Set access control level for a user. - /// - /// Command arguments. - /// Command result. - - [Command("setuserpermissions", description = "{DESC_SETUSERPERMISSIONS}")] - [RequiresArgument("user")] - [RequiresArgument("val")] - public static bool SetUserPermission(Dictionary args) - { - int permission = 0; - string username = args["user"].ToString(); - try - { - permission = Convert.ToInt32(args["val"].ToString()); - } - catch - { - Console.WriteLine("{ERR_BADACL}"); - return true; - } - - if(SaveSystem.CurrentSave.Users.FirstOrDefault(x=>x.Username==username) == null) - { - Console.WriteLine("{ERR_NOUSER}"); - return true; - } - - UserPermissions uperm = UserPermissions.Guest; - - switch (permission) - { - case 0: - uperm = UserPermissions.Guest; - break; - case 1: - uperm = UserPermissions.User; - break; - case 2: - uperm = UserPermissions.Admin; - break; - case 3: - uperm = UserPermissions.Root; - break; - default: - Console.WriteLine("{ERR_BADACL}"); - return true; - } - - //Permissions are backwards... oops... - if(uperm < SaveSystem.CurrentUser.Permissions) - { - Console.WriteLine("{ERR_ACLHIGHERVALUE}"); - return true; - } - - var oldperm = SaveSystem.Users.FirstOrDefault(x => x.Username == username).Permissions; - if (SaveSystem.CurrentUser.Permissions > oldperm) - { - Console.WriteLine("{ERR_HIGHERPERMS}"); - return true; - } - - SaveSystem.CurrentSave.Users.FirstOrDefault(x => x.Username == username).Permissions = uperm; - Console.WriteLine("{RES_ACLUPDATED}"); - return true; - } - - /// - /// List all users in the system. - /// - /// Command arguments. - /// Command result. - - [Command("users", description = "{DESC_USERS}")] - public static bool GetUsers() - { - foreach (var u in SaveSystem.CurrentSave.Users) - { - if (u.Username == SaveSystem.CurrentUser.Username) - { - ConsoleEx.ForegroundColor = ConsoleColor.Magenta; - ConsoleEx.Bold = true; - } - else - { - ConsoleEx.ForegroundColor = ConsoleColor.Gray; - ConsoleEx.Bold = false; - } - Console.WriteLine(u.Username); - } - return true; - } - } - - /// - /// Non-administrative user management terminal commands. - /// - [RequiresUpgrade("mud_fundamentals")] - public static class UserManagementCommands - { - /// - /// Log in as another user. - /// - /// Command arguments. - /// Command result. - [Command("su", description = "{DESC_SU}")] - [RequiresArgument("user")] - [RequiresArgument("pass")] - public static bool Login(Dictionary args) - { - string user = args["user"].ToString(); - string pass = args["pass"].ToString(); - - var usr = SaveSystem.CurrentSave.Users.FirstOrDefault(x => x.Username == user); - if(usr==null) - { - Console.WriteLine("{ERR_NOUSER}"); - return true; - } - - if (usr.Password != pass) - { - Console.WriteLine("{RES_DENIED}"); - return true; - } - - SaveSystem.CurrentUser = usr; - Console.WriteLine("{RES_GRANTED}"); - return true; - } - - /// - /// Set the password for the current user. - /// - /// Command arguments. - /// Command result. - [Command("passwd", description ="{DESC_PASSWD}", usage ="old:,new:")] - [RequiresArgument("old")] - [RequiresArgument("new")] - public static bool SetPassword(Dictionary args) - { - string old = args["old"].ToString(); - string newpass = args["new"].ToString(); - - if(old == SaveSystem.CurrentUser.Password) - { - SaveSystem.CurrentUser.Password = newpass; - SaveSystem.CurrentSave.Users.FirstOrDefault(x => x.Username == SaveSystem.CurrentUser.Username).Password = newpass; - Console.WriteLine("{RES_PASSWD_SET}"); - SaveSystem.SaveGame(); - } - else - { - Console.WriteLine("{ERR_PASSWD_MISMATCH}"); - } - return true; - } - } -} + \ No newline at end of file -- cgit v1.2.3