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 details0.7.4-extended
							parent
							
								
									0f569d2359
								
							
						
					
					
						commit
						44434e8200
					
				|  | @ -136,6 +136,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 | ||||||
|  | @ -1753,6 +1754,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
	
	 Justin Clark-Casey (justincc)
						Justin Clark-Casey (justincc)