private void RunAs(string username, string command) { if (!UserPass.ContainsKey(username)) { Console.WriteLine("User does not exist"); return; } if (services.Usermanager.CurrentUser.privLevel == services.Usermanager.privilege.User) { Console.Write($"Password for {username}: "); var pass = ReadPass(); if (pass != UserPass[username]) { Console.WriteLine("Wrong password. Try again."); return; } services.Usermanager.User old = services.Usermanager.CurrentUser; if (int.TryParse(File.ReadAllLines($@"0:\System\inf\{username}.usr")[1], out int priv)) { services.Usermanager.CurrentUser = new services.Usermanager.User() { username = username, privLevel = (services.Usermanager.privilege)priv } } ; else { Console.WriteLine($"An error occurred while trying to execute that command as {username}"); } Console.WriteLine($"Forced by: {old.username}"); RunCommand(command); services.Usermanager.CurrentUser = old; } }
private void Privil(string cmd) { if (!isFSloaded) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Filesystem not initialized!\nPlease initialize it with command \"fs load\""); Console.ResetColor(); return; } if (!PrivilElev(services.Usermanager.CurrentUser.username)) { return; } services.Usermanager.User old = services.Usermanager.CurrentUser; services.Usermanager.CurrentUser = new services.Usermanager.User() { username = "******", privLevel = services.Usermanager.privilege.Privileged }; var comm = cmd.Split(' '); if (comm[0] == "-a") { if (comm.Length > 1) { AddPrivil(comm[1]); } else { Console.WriteLine("Syntax error: privil -a (username)"); } } else if (comm[0] == "-r") { if (comm.Length > 1) { RemPrivil(comm[1]); } else { Console.WriteLine("Syntax error: privil -r (username)"); } } else { RunCommand(cmd); } services.Usermanager.CurrentUser = old; }