mirror of
https://github.com/opensim/opensim.git
synced 2026-08-08 18:25:33 +08:00
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.
This commit is contained in:
committed by
Melanie
parent
7aed89a8d0
commit
fe8399d1bf
@@ -99,6 +99,43 @@ namespace OpenSim.Server.Handlers.Login
|
||||
|
||||
}
|
||||
|
||||
public XmlRpcResponse HandleXMLRPCSetLoginLevel(XmlRpcRequest request, IPEndPoint remoteClient)
|
||||
{
|
||||
Hashtable requestData = (Hashtable)request.Params[0];
|
||||
|
||||
if (requestData != null)
|
||||
{
|
||||
if (requestData.ContainsKey("first") && requestData["first"] != null &&
|
||||
requestData.ContainsKey("last") && requestData["last"] != null &&
|
||||
requestData.ContainsKey("level") && requestData["level"] != null &&
|
||||
requestData.ContainsKey("passwd") && requestData["passwd"] != null)
|
||||
{
|
||||
string first = requestData["first"].ToString();
|
||||
string last = requestData["last"].ToString();
|
||||
string passwd = requestData["passwd"].ToString();
|
||||
int level = Int32.Parse(requestData["level"].ToString());
|
||||
|
||||
m_log.InfoFormat("[LOGIN]: XMLRPC Set Level to {2} Requested by {0} {1}", first, last, level);
|
||||
|
||||
Hashtable reply = m_LocalService.SetLevel(first, last, passwd, level, remoteClient);
|
||||
|
||||
XmlRpcResponse response = new XmlRpcResponse();
|
||||
response.Value = reply;
|
||||
|
||||
return response;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
XmlRpcResponse failResponse = new XmlRpcResponse();
|
||||
Hashtable failHash = new Hashtable();
|
||||
failHash["success"] = "false";
|
||||
failResponse.Value = failHash;
|
||||
|
||||
return failResponse;
|
||||
|
||||
}
|
||||
|
||||
public OSD HandleLLSDLogin(OSD request, IPEndPoint remoteClient)
|
||||
{
|
||||
if (request.Type == OSDType.Map)
|
||||
|
||||
@@ -88,6 +88,7 @@ namespace OpenSim.Server.Handlers.Login
|
||||
{
|
||||
LLLoginHandlers loginHandlers = new LLLoginHandlers(m_LoginService);
|
||||
server.AddXmlRPCHandler("login_to_simulator", loginHandlers.HandleXMLRPCLogin, false);
|
||||
server.AddXmlRPCHandler("set_login_level", loginHandlers.HandleXMLRPCSetLoginLevel, false);
|
||||
server.SetDefaultLLSDHandler(loginHandlers.HandleLLSDLogin);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user