Add admin_get_agents xmlrpc method.
This allows one to retrieve information about agents from a particular region (name, id, position, etc.) Similar to output from "show users" See http://opensimulator.org/wiki/Remoteadmin:admin_get_agents for more detailsuser_profiles
parent
3072f257f5
commit
da5dbaf1d0
|
@ -137,6 +137,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
|
||||||
availableMethods["admin_save_heightmap"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcSaveHeightmapMethod);
|
availableMethods["admin_save_heightmap"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcSaveHeightmapMethod);
|
||||||
|
|
||||||
// Agent management
|
// Agent management
|
||||||
|
availableMethods["admin_get_agents"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcGetAgentsMethod);
|
||||||
availableMethods["admin_teleport_agent"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcTeleportAgentMethod);
|
availableMethods["admin_teleport_agent"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcTeleportAgentMethod);
|
||||||
|
|
||||||
// User management
|
// User management
|
||||||
|
@ -1760,6 +1761,71 @@ namespace OpenSim.ApplicationPlugins.RemoteController
|
||||||
m_log.Info("[RADMIN]: Access List List Request complete");
|
m_log.Info("[RADMIN]: Access List List Request complete");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void XmlRpcGetAgentsMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
|
||||||
|
{
|
||||||
|
Hashtable responseData = (Hashtable)response.Value;
|
||||||
|
Hashtable requestData = (Hashtable)request.Params[0];
|
||||||
|
|
||||||
|
bool includeChildren = false;
|
||||||
|
|
||||||
|
if (requestData.Contains("include_children"))
|
||||||
|
bool.TryParse((string)requestData["include_children"], out includeChildren);
|
||||||
|
|
||||||
|
Scene scene;
|
||||||
|
GetSceneFromRegionParams(requestData, responseData, out scene);
|
||||||
|
|
||||||
|
ArrayList xmlRpcRegions = new ArrayList();
|
||||||
|
responseData["regions"] = xmlRpcRegions;
|
||||||
|
|
||||||
|
Hashtable xmlRpcRegion = new Hashtable();
|
||||||
|
xmlRpcRegions.Add(xmlRpcRegion);
|
||||||
|
|
||||||
|
xmlRpcRegion["name"] = scene.Name;
|
||||||
|
xmlRpcRegion["id"] = scene.RegionInfo.RegionID.ToString();
|
||||||
|
|
||||||
|
List<ScenePresence> agents = scene.GetScenePresences();
|
||||||
|
ArrayList xmlrpcAgents = new ArrayList();
|
||||||
|
|
||||||
|
foreach (ScenePresence agent in agents)
|
||||||
|
{
|
||||||
|
if (agent.IsChildAgent && !includeChildren)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
Hashtable xmlRpcAgent = new Hashtable();
|
||||||
|
xmlRpcAgent.Add("name", agent.Name);
|
||||||
|
xmlRpcAgent.Add("id", agent.UUID.ToString());
|
||||||
|
xmlRpcAgent.Add("type", agent.PresenceType.ToString());
|
||||||
|
xmlRpcAgent.Add("current_parcel_id", agent.currentParcelUUID.ToString());
|
||||||
|
|
||||||
|
Vector3 pos = agent.AbsolutePosition;
|
||||||
|
xmlRpcAgent.Add("pos_x", pos.X.ToString());
|
||||||
|
xmlRpcAgent.Add("pos_y", pos.Y.ToString());
|
||||||
|
xmlRpcAgent.Add("pos_z", pos.Z.ToString());
|
||||||
|
|
||||||
|
Vector3 lookAt = agent.Lookat;
|
||||||
|
xmlRpcAgent.Add("lookat_x", lookAt.X.ToString());
|
||||||
|
xmlRpcAgent.Add("lookat_y", lookAt.Y.ToString());
|
||||||
|
xmlRpcAgent.Add("lookat_z", lookAt.Z.ToString());
|
||||||
|
|
||||||
|
Vector3 vel = agent.Velocity;
|
||||||
|
xmlRpcAgent.Add("vel_x", vel.X.ToString());
|
||||||
|
xmlRpcAgent.Add("vel_y", vel.Y.ToString());
|
||||||
|
xmlRpcAgent.Add("vel_z", vel.Z.ToString());
|
||||||
|
|
||||||
|
xmlRpcAgent.Add("is_flying", agent.Flying.ToString());
|
||||||
|
xmlRpcAgent.Add("is_sat_on_ground", agent.SitGround.ToString());
|
||||||
|
xmlRpcAgent.Add("is_sat_on_object", agent.IsSatOnObject.ToString());
|
||||||
|
|
||||||
|
xmlrpcAgents.Add(xmlRpcAgent);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_log.DebugFormat(
|
||||||
|
"[REMOTE ADMIN]: XmlRpcGetAgents found {0} agents in {1}", xmlrpcAgents.Count, scene.Name);
|
||||||
|
|
||||||
|
xmlRpcRegion["agents"] = xmlrpcAgents;
|
||||||
|
responseData["success"] = true;
|
||||||
|
}
|
||||||
|
|
||||||
private void XmlRpcTeleportAgentMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
|
private void XmlRpcTeleportAgentMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient)
|
||||||
{
|
{
|
||||||
Hashtable responseData = (Hashtable)response.Value;
|
Hashtable responseData = (Hashtable)response.Value;
|
||||||
|
|
Loading…
Reference in New Issue