diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Grid/UserServer/Main.cs | 1 | ||||
-rw-r--r-- | OpenSim/Grid/UserServer/UserLoginService.cs | 43 |
2 files changed, 44 insertions, 0 deletions
diff --git a/OpenSim/Grid/UserServer/Main.cs b/OpenSim/Grid/UserServer/Main.cs index 55e681a..7fb664f 100644 --- a/OpenSim/Grid/UserServer/Main.cs +++ b/OpenSim/Grid/UserServer/Main.cs | |||
@@ -146,6 +146,7 @@ namespace OpenSim.Grid.UserServer | |||
146 | m_httpServer.AddXmlRPCHandler("logout_of_simulator", m_userManager.XmlRPCLogOffUserMethodUUID); | 146 | m_httpServer.AddXmlRPCHandler("logout_of_simulator", m_userManager.XmlRPCLogOffUserMethodUUID); |
147 | m_httpServer.AddXmlRPCHandler("get_agent_by_uuid", m_userManager.XmlRPCGetAgentMethodUUID); | 147 | m_httpServer.AddXmlRPCHandler("get_agent_by_uuid", m_userManager.XmlRPCGetAgentMethodUUID); |
148 | m_httpServer.AddXmlRPCHandler("check_auth_session", m_userManager.XmlRPCCheckAuthSession); | 148 | m_httpServer.AddXmlRPCHandler("check_auth_session", m_userManager.XmlRPCCheckAuthSession); |
149 | m_httpServer.AddXmlRPCHandler("set_login_params", m_loginService.XmlRPCSetLoginParams); | ||
149 | // Message Server ---> User Server | 150 | // Message Server ---> User Server |
150 | m_httpServer.AddXmlRPCHandler("register_messageserver", m_messagesService.XmlRPCRegisterMessageServer); | 151 | m_httpServer.AddXmlRPCHandler("register_messageserver", m_messagesService.XmlRPCRegisterMessageServer); |
151 | m_httpServer.AddXmlRPCHandler("agent_change_region", m_messagesService.XmlRPCUserMovedtoRegion); | 152 | m_httpServer.AddXmlRPCHandler("agent_change_region", m_messagesService.XmlRPCUserMovedtoRegion); |
diff --git a/OpenSim/Grid/UserServer/UserLoginService.cs b/OpenSim/Grid/UserServer/UserLoginService.cs index 573e546..bfa454c 100644 --- a/OpenSim/Grid/UserServer/UserLoginService.cs +++ b/OpenSim/Grid/UserServer/UserLoginService.cs | |||
@@ -437,5 +437,48 @@ namespace OpenSim.Grid.UserServer | |||
437 | "A root inventory folder for user {0} could not be retrieved from the inventory service", | 437 | "A root inventory folder for user {0} could not be retrieved from the inventory service", |
438 | userID)); | 438 | userID)); |
439 | } | 439 | } |
440 | |||
441 | public XmlRpcResponse XmlRPCSetLoginParams(XmlRpcRequest request) | ||
442 | { | ||
443 | XmlRpcResponse response = new XmlRpcResponse(); | ||
444 | Hashtable requestData = (Hashtable) request.Params[0]; | ||
445 | UserProfileData userProfile; | ||
446 | Hashtable responseData = new Hashtable(); | ||
447 | |||
448 | UUID uid; | ||
449 | string pass = requestData["password"].ToString(); | ||
450 | |||
451 | if(!UUID.TryParse((string) requestData["avatar_uuid"], out uid)) | ||
452 | { | ||
453 | responseData["error"] = "No authorization"; | ||
454 | response.Value = responseData; | ||
455 | return response; | ||
456 | } | ||
457 | |||
458 | userProfile = m_userManager.GetUserProfile(uid); | ||
459 | |||
460 | if (userProfile == null || | ||
461 | (!AuthenticateUser(userProfile, pass)) || | ||
462 | userProfile.GodLevel < 200) | ||
463 | { | ||
464 | responseData["error"] = "No authorization"; | ||
465 | response.Value = responseData; | ||
466 | return response; | ||
467 | } | ||
468 | |||
469 | if (requestData.ContainsKey("login_level")) | ||
470 | { | ||
471 | m_minLoginLevel = Convert.ToInt32(requestData["login_level"]); | ||
472 | } | ||
473 | |||
474 | if (requestData.ContainsKey("login_motd")) | ||
475 | { | ||
476 | m_welcomeMessage = requestData["login_motd"].ToString(); | ||
477 | } | ||
478 | |||
479 | response.Value = responseData; | ||
480 | return response; | ||
481 | } | ||
482 | |||
440 | } | 483 | } |
441 | } | 484 | } |