aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Server/Handlers/Login
diff options
context:
space:
mode:
authorMelanie Thielker2010-05-05 23:06:36 +0200
committerMelanie2010-05-05 20:46:53 +0100
commitfe8399d1bf6ed84435c41d495b04feb25fb9a988 (patch)
treec1e9ceee956f445134d64fbf2a41061f5e892bdb /OpenSim/Server/Handlers/Login
parentRemoved a test for a "can't happen" case. ParentGroup is never null anymore. (diff)
downloadopensim-SC_OLD-fe8399d1bf6ed84435c41d495b04feb25fb9a988.zip
opensim-SC_OLD-fe8399d1bf6ed84435c41d495b04feb25fb9a988.tar.gz
opensim-SC_OLD-fe8399d1bf6ed84435c41d495b04feb25fb9a988.tar.bz2
opensim-SC_OLD-fe8399d1bf6ed84435c41d495b04feb25fb9a988.tar.xz
Add a XMLRPC method to remotely set the login level for the LLLoginService.
This requires a special XMLRPC call, which has to supply the credentials of a god user (User level >= 200). Disabled by default. Also Adds a configuration option to set the initial permitted login level.
Diffstat (limited to 'OpenSim/Server/Handlers/Login')
-rw-r--r--OpenSim/Server/Handlers/Login/LLLoginHandlers.cs37
-rw-r--r--OpenSim/Server/Handlers/Login/LLLoginServiceInConnector.cs1
2 files changed, 38 insertions, 0 deletions
diff --git a/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs b/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs
index daf2704..83b3e31 100644
--- a/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs
+++ b/OpenSim/Server/Handlers/Login/LLLoginHandlers.cs
@@ -99,6 +99,43 @@ namespace OpenSim.Server.Handlers.Login
99 99
100 } 100 }
101 101
102 public XmlRpcResponse HandleXMLRPCSetLoginLevel(XmlRpcRequest request, IPEndPoint remoteClient)
103 {
104 Hashtable requestData = (Hashtable)request.Params[0];
105
106 if (requestData != null)
107 {
108 if (requestData.ContainsKey("first") && requestData["first"] != null &&
109 requestData.ContainsKey("last") && requestData["last"] != null &&
110 requestData.ContainsKey("level") && requestData["level"] != null &&
111 requestData.ContainsKey("passwd") && requestData["passwd"] != null)
112 {
113 string first = requestData["first"].ToString();
114 string last = requestData["last"].ToString();
115 string passwd = requestData["passwd"].ToString();
116 int level = Int32.Parse(requestData["level"].ToString());
117
118 m_log.InfoFormat("[LOGIN]: XMLRPC Set Level to {2} Requested by {0} {1}", first, last, level);
119
120 Hashtable reply = m_LocalService.SetLevel(first, last, passwd, level, remoteClient);
121
122 XmlRpcResponse response = new XmlRpcResponse();
123 response.Value = reply;
124
125 return response;
126
127 }
128 }
129
130 XmlRpcResponse failResponse = new XmlRpcResponse();
131 Hashtable failHash = new Hashtable();
132 failHash["success"] = "false";
133 failResponse.Value = failHash;
134
135 return failResponse;
136
137 }
138
102 public OSD HandleLLSDLogin(OSD request, IPEndPoint remoteClient) 139 public OSD HandleLLSDLogin(OSD request, IPEndPoint remoteClient)
103 { 140 {
104 if (request.Type == OSDType.Map) 141 if (request.Type == OSDType.Map)
diff --git a/OpenSim/Server/Handlers/Login/LLLoginServiceInConnector.cs b/OpenSim/Server/Handlers/Login/LLLoginServiceInConnector.cs
index e24055b..67e8392 100644
--- a/OpenSim/Server/Handlers/Login/LLLoginServiceInConnector.cs
+++ b/OpenSim/Server/Handlers/Login/LLLoginServiceInConnector.cs
@@ -88,6 +88,7 @@ namespace OpenSim.Server.Handlers.Login
88 { 88 {
89 LLLoginHandlers loginHandlers = new LLLoginHandlers(m_LoginService); 89 LLLoginHandlers loginHandlers = new LLLoginHandlers(m_LoginService);
90 server.AddXmlRPCHandler("login_to_simulator", loginHandlers.HandleXMLRPCLogin, false); 90 server.AddXmlRPCHandler("login_to_simulator", loginHandlers.HandleXMLRPCLogin, false);
91 server.AddXmlRPCHandler("set_login_level", loginHandlers.HandleXMLRPCSetLoginLevel, false);
91 server.SetDefaultLLSDHandler(loginHandlers.HandleLLSDLogin); 92 server.SetDefaultLLSDHandler(loginHandlers.HandleLLSDLogin);
92 } 93 }
93 94