aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services/UserAccountService/UserAccountService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services/UserAccountService/UserAccountService.cs')
-rw-r--r--OpenSim/Services/UserAccountService/UserAccountService.cs182
1 files changed, 132 insertions, 50 deletions
diff --git a/OpenSim/Services/UserAccountService/UserAccountService.cs b/OpenSim/Services/UserAccountService/UserAccountService.cs
index dacfa51..90077d8 100644
--- a/OpenSim/Services/UserAccountService/UserAccountService.cs
+++ b/OpenSim/Services/UserAccountService/UserAccountService.cs
@@ -26,25 +26,62 @@
26 */ 26 */
27 27
28using System; 28using System;
29using System.Collections.Generic;
29using System.Reflection; 30using System.Reflection;
30using Nini.Config; 31using Nini.Config;
31using OpenSim.Data; 32using OpenSim.Data;
32using OpenSim.Framework.Console;
33using OpenSim.Services.Interfaces; 33using OpenSim.Services.Interfaces;
34using System.Collections.Generic; 34using OpenSim.Framework.Console;
35using GridRegion = OpenSim.Services.Interfaces.GridRegion;
36
35using OpenMetaverse; 37using OpenMetaverse;
38using log4net;
36 39
37namespace OpenSim.Services.UserAccountService 40namespace OpenSim.Services.UserAccountService
38{ 41{
39 public class UserAccountService : UserAccountServiceBase, IUserAccountService 42 public class UserAccountService : UserAccountServiceBase, IUserAccountService
40 { 43 {
44 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
45 private static UserAccountService m_RootInstance;
46
47 protected IGridService m_GridService;
48 protected IAuthenticationService m_AuthenticationService;
49 protected IPresenceService m_PresenceService;
50
41 public UserAccountService(IConfigSource config) 51 public UserAccountService(IConfigSource config)
42 : base(config) 52 : base(config)
43 { 53 {
44 MainConsole.Instance.Commands.AddCommand("UserService", false, 54 IConfig userConfig = config.Configs["UserAccountService"];
45 "create user", 55 if (userConfig == null)
46 "create user [<first> [<last> [<pass> [<x> <y> [<email>]]]]]", 56 throw new Exception("No UserAccountService configuration");
47 "Create a new user", HandleCreateUser); 57
58 // In case there are several instances of this class in the same process,
59 // the console commands are only registered for the root instance
60 if (m_RootInstance == null)
61 {
62 m_RootInstance = this;
63 string gridServiceDll = userConfig.GetString("GridService", string.Empty);
64 if (gridServiceDll != string.Empty)
65 m_GridService = LoadPlugin<IGridService>(gridServiceDll, new Object[] { config });
66
67 string authServiceDll = userConfig.GetString("AuthenticationService", string.Empty);
68 if (authServiceDll != string.Empty)
69 m_AuthenticationService = LoadPlugin<IAuthenticationService>(authServiceDll, new Object[] { config });
70
71 string presenceServiceDll = userConfig.GetString("PresenceService", string.Empty);
72 if (presenceServiceDll != string.Empty)
73 m_PresenceService = LoadPlugin<IPresenceService>(presenceServiceDll, new Object[] { config });
74
75 MainConsole.Instance.Commands.AddCommand("UserService", false,
76 "create user",
77 "create user [<first> [<last> [<pass> [<email>]]]]",
78 "Create a new user", HandleCreateUser);
79 MainConsole.Instance.Commands.AddCommand("UserService", false, "reset user password",
80 "reset user password [<first> [<last> [<password>]]]",
81 "Reset a user password", HandleResetUserPassword);
82
83 }
84
48 } 85 }
49 86
50 #region IUserAccountService 87 #region IUserAccountService
@@ -202,52 +239,97 @@ namespace OpenSim.Services.UserAccountService
202 string lastName; 239 string lastName;
203 string password; 240 string password;
204 string email; 241 string email;
205 uint regX = 1000; 242
206 uint regY = 1000; 243 if (cmdparams.Length < 3)
207 244 firstName = MainConsole.Instance.CmdPrompt("First name", "Default");
208 // IConfig standalone; 245 else firstName = cmdparams[2];
209 // if ((standalone = m_config.Source.Configs["StandAlone"]) != null) 246
210 // { 247 if (cmdparams.Length < 4)
211 // regX = (uint)standalone.GetInt("default_location_x", (int)regX); 248 lastName = MainConsole.Instance.CmdPrompt("Last name", "User");
212 // regY = (uint)standalone.GetInt("default_location_y", (int)regY); 249 else lastName = cmdparams[3];
213 // } 250
214 251 if (cmdparams.Length < 5)
215 252 password = MainConsole.Instance.PasswdPrompt("Password");
216 // if (cmdparams.Length < 3) 253 else password = cmdparams[4];
217 // firstName = MainConsole.Instance.CmdPrompt("First name", "Default"); 254
218 // else firstName = cmdparams[2]; 255 if (cmdparams.Length < 6)
219 256 email = MainConsole.Instance.CmdPrompt("Email", "");
220 // if (cmdparams.Length < 4) 257 else email = cmdparams[5];
221 // lastName = MainConsole.Instance.CmdPrompt("Last name", "User"); 258
222 // else lastName = cmdparams[3]; 259 UserAccount account = GetUserAccount(UUID.Zero, firstName, lastName);
223 260 if (null == account)
224 // if (cmdparams.Length < 5) 261 {
225 // password = MainConsole.Instance.PasswdPrompt("Password"); 262 account = new UserAccount(UUID.Zero, firstName, lastName, email);
226 // else password = cmdparams[4]; 263 if (StoreUserAccount(account))
227 264 {
228 // if (cmdparams.Length < 6) 265 bool success = false;
229 // regX = Convert.ToUInt32(MainConsole.Instance.CmdPrompt("Start Region X", regX.ToString())); 266 if (m_AuthenticationService != null)
230 // else regX = Convert.ToUInt32(cmdparams[5]); 267 success = m_AuthenticationService.SetPassword(account.PrincipalID, password);
231 268 if (!success)
232 // if (cmdparams.Length < 7) 269 m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to set password for account {0} {1}.",
233 // regY = Convert.ToUInt32(MainConsole.Instance.CmdPrompt("Start Region Y", regY.ToString())); 270 firstName, lastName);
234 // else regY = Convert.ToUInt32(cmdparams[6]); 271
235 272 GridRegion home = null;
236 // if (cmdparams.Length < 8) 273 if (m_GridService != null)
237 // email = MainConsole.Instance.CmdPrompt("Email", ""); 274 {
238 // else email = cmdparams[7]; 275 List<GridRegion> defaultRegions = m_GridService.GetDefaultRegions(UUID.Zero);
239 276 if (defaultRegions != null && defaultRegions.Count >= 1)
240 // if (null == m_commsManager.UserProfileCacheService.GetUserDetails(firstName, lastName)) 277 home = defaultRegions[0];
241 // { 278
242 // m_commsManager.UserAdminService.AddUser(firstName, lastName, password, email, regX, regY); 279 if (m_PresenceService != null && home != null)
243 // } 280 m_PresenceService.SetHomeLocation(account.PrincipalID.ToString(), home.RegionID, new Vector3(128, 128, 0), new Vector3(0, 1, 0));
244 // else 281 else
245 // { 282 m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to set home for account {0} {1}.",
246 // m_log.ErrorFormat("[CONSOLE]: A user with the name {0} {1} already exists!", firstName, lastName); 283 firstName, lastName);
247 // } 284
248 //} 285 }
286 else
287 m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to retrieve home region for account {0} {1}.",
288 firstName, lastName);
289
290 m_log.InfoFormat("[USER ACCOUNT SERVICE]: Account {0} {1} created successfully", firstName, lastName);
291 }
292 }
293 else
294 {
295 m_log.ErrorFormat("[USER ACCOUNT SERVICE]: A user with the name {0} {1} already exists!", firstName, lastName);
296 }
249 297
250 } 298 }
299
300 protected void HandleResetUserPassword(string module, string[] cmdparams)
301 {
302 string firstName;
303 string lastName;
304 string newPassword;
305
306 if (cmdparams.Length < 4)
307 firstName = MainConsole.Instance.CmdPrompt("First name");
308 else firstName = cmdparams[3];
309
310 if (cmdparams.Length < 5)
311 lastName = MainConsole.Instance.CmdPrompt("Last name");
312 else lastName = cmdparams[4];
313
314 if (cmdparams.Length < 6)
315 newPassword = MainConsole.Instance.PasswdPrompt("New password");
316 else newPassword = cmdparams[5];
317
318 UserAccount account = GetUserAccount(UUID.Zero, firstName, lastName);
319 if (account == null)
320 m_log.ErrorFormat("[USER ACCOUNT SERVICE]: No such user");
321
322 bool success = false;
323 if (m_AuthenticationService != null)
324 success = m_AuthenticationService.SetPassword(account.PrincipalID, newPassword);
325 if (!success)
326 m_log.ErrorFormat("[USER ACCOUNT SERVICE]: Unable to reset password for account {0} {1}.",
327 firstName, lastName);
328 else
329 m_log.InfoFormat("[USER ACCOUNT SERVICE]: Password reset for user {0} {1}", firstName, lastName);
330 }
331
251 #endregion 332 #endregion
333
252 } 334 }
253} 335}