From 56dcc5109486e6ef721f065135b8c87c3501d8e2 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 24 Jun 2011 23:54:37 +0100 Subject: Add a command "show account " to the user account service that will show the given user details --- .../UserAccountService/UserAccountService.cs | 39 +++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'OpenSim/Services/UserAccountService') diff --git a/OpenSim/Services/UserAccountService/UserAccountService.cs b/OpenSim/Services/UserAccountService/UserAccountService.cs index f376cf8..3525912 100644 --- a/OpenSim/Services/UserAccountService/UserAccountService.cs +++ b/OpenSim/Services/UserAccountService/UserAccountService.cs @@ -83,9 +83,16 @@ namespace OpenSim.Services.UserAccountService "create user", "create user [ [ [ []]]]", "Create a new user", HandleCreateUser); - MainConsole.Instance.Commands.AddCommand("UserService", false, "reset user password", + + MainConsole.Instance.Commands.AddCommand("UserService", false, + "reset user password", "reset user password [ [ []]]", "Reset a user password", HandleResetUserPassword); + + MainConsole.Instance.Commands.AddCommand("UserService", false, + "show account", + "show account ", + "Show account details for the given user", HandleShowAccount); } } @@ -318,6 +325,36 @@ namespace OpenSim.Services.UserAccountService CreateUser(firstName, lastName, password, email); } + protected void HandleShowAccount(string module, string[] cmdparams) + { + if (cmdparams.Length != 4) + { + MainConsole.Instance.Output("Usage: show account "); + return; + } + + string firstName = cmdparams[2]; + string lastName = cmdparams[3]; + + UserAccount ua = GetUserAccount(UUID.Zero, firstName, lastName); + + if (ua == null) + { + MainConsole.Instance.OutputFormat("No user named {0} {1}", firstName, lastName); + return; + } + + MainConsole.Instance.OutputFormat("Name: {0}", ua.Name); + MainConsole.Instance.OutputFormat("ID: {0}", ua.PrincipalID); + MainConsole.Instance.OutputFormat("Title: {0}", ua.UserTitle); + MainConsole.Instance.OutputFormat("E-mail: {0}", ua.Email); + MainConsole.Instance.OutputFormat("Created: {0}", Utils.UnixTimeToDateTime(ua.Created)); + MainConsole.Instance.OutputFormat("Level: {0}", ua.UserLevel); + MainConsole.Instance.OutputFormat("Flags: {0}", ua.UserFlags); + foreach (KeyValuePair kvp in ua.ServiceURLs) + MainConsole.Instance.OutputFormat("{0}: {1}", kvp.Key, kvp.Value); + } + protected void HandleResetUserPassword(string module, string[] cmdparams) { string firstName; -- cgit v1.1 From 296774495b8544cbb3463e0a0694d7de910a5d7c Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 25 Jun 2011 00:03:34 +0100 Subject: Implement "set user level" console command to set the user level (which determines whether a user has a god account) Adapted from Makopoppo's patch in http://opensimulator.org/mantis/view.php?id=5552. Thanks! --- .../UserAccountService/UserAccountService.cs | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'OpenSim/Services/UserAccountService') diff --git a/OpenSim/Services/UserAccountService/UserAccountService.cs b/OpenSim/Services/UserAccountService/UserAccountService.cs index 3525912..a65c04b 100644 --- a/OpenSim/Services/UserAccountService/UserAccountService.cs +++ b/OpenSim/Services/UserAccountService/UserAccountService.cs @@ -90,6 +90,14 @@ namespace OpenSim.Services.UserAccountService "Reset a user password", HandleResetUserPassword); MainConsole.Instance.Commands.AddCommand("UserService", false, + "set user level", + "set user level [ [ []]]", + "Set user level. If >= 200 and 'allow_grid_gods = true' in OpenSim.ini, " + + "this account will be treated as god-moded. " + + "It will also affect the 'login level' command. ", + HandleSetUserLevel); + + MainConsole.Instance.Commands.AddCommand("UserService", false, "show account", "show account ", "Show account details for the given user", HandleShowAccount); @@ -387,6 +395,45 @@ namespace OpenSim.Services.UserAccountService m_log.InfoFormat("[USER ACCOUNT SERVICE]: Password reset for user {0} {1}", firstName, lastName); } + protected void HandleSetUserLevel(string module, string[] cmdparams) + { + string firstName; + string lastName; + string rawLevel; + int level; + + if (cmdparams.Length < 4) + firstName = MainConsole.Instance.CmdPrompt("First name"); + else firstName = cmdparams[3]; + + if (cmdparams.Length < 5) + lastName = MainConsole.Instance.CmdPrompt("Last name"); + else lastName = cmdparams[4]; + + UserAccount account = GetUserAccount(UUID.Zero, firstName, lastName); + if (account == null) { + MainConsole.Instance.OutputFormat("No such user"); + return; + } + + if (cmdparams.Length < 6) + rawLevel = MainConsole.Instance.CmdPrompt("User level"); + else rawLevel = cmdparams[5]; + + if(int.TryParse(rawLevel, out level) == false) { + MainConsole.Instance.OutputFormat("Invalid user level"); + return; + } + + account.UserLevel = level; + + bool success = StoreUserAccount(account); + if (!success) + MainConsole.Instance.OutputFormat("Unable to set user level for account {0} {1}.", firstName, lastName); + else + MainConsole.Instance.OutputFormat("User level set for user {0} {1} to {2}", firstName, lastName, level); + } + #endregion /// -- cgit v1.1 From 5daac0584aed1a6764060b6c6a0a1f74360859f1 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 25 Jun 2011 00:08:14 +0100 Subject: Fix bug in reset user password where entering an invalid name would cause an exception. Also, convert this commands log output to console output. Console output is more appropriate for console commands. The log only gets one side of the conversation anyway (since it doesn't necessarily record command inputs). --- OpenSim/Services/UserAccountService/UserAccountService.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'OpenSim/Services/UserAccountService') diff --git a/OpenSim/Services/UserAccountService/UserAccountService.cs b/OpenSim/Services/UserAccountService/UserAccountService.cs index a65c04b..8b8a8f9 100644 --- a/OpenSim/Services/UserAccountService/UserAccountService.cs +++ b/OpenSim/Services/UserAccountService/UserAccountService.cs @@ -383,16 +383,19 @@ namespace OpenSim.Services.UserAccountService UserAccount account = GetUserAccount(UUID.Zero, firstName, lastName); if (account == null) - m_log.ErrorFormat("[USER ACCOUNT SERVICE]: No such user"); + { + MainConsole.Instance.OutputFormat("No such user as {0} {1}", firstName, lastName); + return; + } bool success = false; if (m_AuthenticationService != null) success = m_AuthenticationService.SetPassword(account.PrincipalID, newPassword); + if (!success) - m_log.ErrorFormat("[USER ACCOUNT SERVICE]: Unable to reset password for account {0} {1}.", - firstName, lastName); + MainConsole.Instance.OutputFormat("Unable to reset password for account {0} {1}.", firstName, lastName); else - m_log.InfoFormat("[USER ACCOUNT SERVICE]: Password reset for user {0} {1}", firstName, lastName); + MainConsole.Instance.OutputFormat("Password reset for user {0} {1}", firstName, lastName); } protected void HandleSetUserLevel(string module, string[] cmdparams) -- cgit v1.1