aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS_TheReturn
diff options
context:
space:
mode:
authorMichael <[email protected]>2017-07-13 08:40:47 -0400
committerMichael <[email protected]>2017-07-13 08:40:47 -0400
commite92af1bc7fe5cd5860206061f4ff261b3339cc51 (patch)
tree14b571e2495731d7302b61c56d18ae5e4988587e /ShiftOS_TheReturn
parentaf01804c0fb4286f5975e973aec2b4eaf9752c08 (diff)
downloadshiftos_thereturn-e92af1bc7fe5cd5860206061f4ff261b3339cc51.tar.gz
shiftos_thereturn-e92af1bc7fe5cd5860206061f4ff261b3339cc51.tar.bz2
shiftos_thereturn-e92af1bc7fe5cd5860206061f4ff261b3339cc51.zip
SidePanel system, system status, crapton of other neat things
Diffstat (limited to 'ShiftOS_TheReturn')
-rw-r--r--ShiftOS_TheReturn/KernelWatchdog.cs28
-rw-r--r--ShiftOS_TheReturn/Localization.cs2
-rw-r--r--ShiftOS_TheReturn/SaveSystem.cs158
-rw-r--r--ShiftOS_TheReturn/Scripting.cs4
-rw-r--r--ShiftOS_TheReturn/ServerManager.cs4
-rw-r--r--ShiftOS_TheReturn/TerminalBackend.cs96
-rw-r--r--ShiftOS_TheReturn/UserManagementCommands.cs243
7 files changed, 11 insertions, 524 deletions
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
@@ -59,11 +59,6 @@ namespace ShiftOS.Engine
public static bool ShuttingDown = false;
/// <summary>
- /// Gets or sets the current logged in client-side user.
- /// </summary>
- public static ClientSave CurrentUser { get; set; }
-
- /// <summary>
/// Boolean representing whether the save system is ready to be used.
/// </summary>
public static AutoResetEvent Ready = new AutoResetEvent(false);
@@ -206,44 +201,21 @@ namespace ShiftOS.Engine
CurrentSave = new Save
{
IsSandbox = true,
- Username = "sandbox",
- Password = "sandbox",
+ Username = "user",
SystemName = "shiftos",
- Users = new List<ClientSave>
- {
- new ClientSave
- {
- Username = "user",
- Password = "",
- Permissions = 0
- }
- },
- Class = 0,
ID = new Guid(),
Upgrades = new Dictionary<string, bool>(),
- 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<ClientSave>();
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<ClientSave> 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<string, string>
- {
- ["%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(() =>
@@ -530,17 +389,6 @@ namespace ShiftOS.Engine
public delegate void EmptyEventHandler();
/// <summary>
- /// Gets a list of all client-side users.
- /// </summary>
- public static List<ClientSave> Users
- {
- get
- {
- return CurrentSave.Users;
- }
- }
-
- /// <summary>
/// Occurs when the engine is loaded and the game can take over.
/// </summary>
public static event EmptyEventHandler GameReady;
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");
/// <returns>The user's username.</returns>
public string getUsername()
{
- return SaveSystem.CurrentUser.Username;
+ return SaveSystem.CurrentSave.Username;
}
/// <summary>
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<Dictionary<string, object>>(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<string, object> args)
{
List<string> errors = new List<string>();
- 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("@");
@@ -548,63 +513,6 @@ namespace ShiftOS.Engine
}
/// <summary>
- /// Static constructor for <see cref="TerminalBackend"/>.
- /// </summary>
- 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<Dictionary<string, object>>(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;
- }
-
- /// <summary>
/// Gets whether the terminal backend is forwarding console write requests through RTS to a remote client.
/// </summary>
public static bool IsForwardingConsoleWrites { get; internal set; }
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
-{
- /// <summary>
- /// Administrative user management terminal commands.
- /// </summary>
- [KernelMode]
- [RequiresUpgrade("mud_fundamentals")]
- public static class AdminUserManagementCommands
- {
- /// <summary>
- /// Add a user to the system.
- /// </summary>
- /// <param name="args">Command arguments.</param>
- /// <returns>Command result.</returns>
- [Command("adduser", description = "{DESC_ADDUSER}")]
- [RequiresArgument("name")]
- public static bool AddUser(Dictionary<string, object> 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<string, string>
- {
- { "%name", name }
- }));
- SaveSystem.SaveGame();
- return true;
- }
-
- /// <summary>
- /// Remove a user from the system.
- /// </summary>
- /// <param name="args">Command arguments.</param>
- /// <returns>Command result.</returns>
-
- [Command("removeuser", description = "{DESC_REMOVEUSER}")]
- [RequiresArgument("name")]
- public static bool RemoveUser(Dictionary<string, object> 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<string, string>
- {
- ["%name"] = name
- }));
- SaveSystem.SaveGame();
- return true;
- }
-
-
-
- /// <summary>
- /// Set access control level for a user.
- /// </summary>
- /// <param name="args">Command arguments.</param>
- /// <returns>Command result.</returns>
-
- [Command("setuserpermissions", description = "{DESC_SETUSERPERMISSIONS}")]
- [RequiresArgument("user")]
- [RequiresArgument("val")]
- public static bool SetUserPermission(Dictionary<string, object> 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;
- }
-
- /// <summary>
- /// List all users in the system.
- /// </summary>
- /// <param name="args">Command arguments.</param>
- /// <returns>Command result.</returns>
-
- [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;
- }
- }
-
- /// <summary>
- /// Non-administrative user management terminal commands.
- /// </summary>
- [RequiresUpgrade("mud_fundamentals")]
- public static class UserManagementCommands
- {
- /// <summary>
- /// Log in as another user.
- /// </summary>
- /// <param name="args">Command arguments.</param>
- /// <returns>Command result.</returns>
- [Command("su", description = "{DESC_SU}")]
- [RequiresArgument("user")]
- [RequiresArgument("pass")]
- public static bool Login(Dictionary<string, object> 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;
- }
-
- /// <summary>
- /// Set the password for the current user.
- /// </summary>
- /// <param name="args">Command arguments.</param>
- /// <returns>Command result.</returns>
- [Command("passwd", description ="{DESC_PASSWD}", usage ="old:,new:")]
- [RequiresArgument("old")]
- [RequiresArgument("new")]
- public static bool SetPassword(Dictionary<string, object> 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