diff options
Diffstat (limited to 'OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs')
-rw-r--r-- | OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 49fc566..e50dac6 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -50,6 +50,7 @@ using OpenSim.Region.Framework.Scenes; | |||
50 | using OpenSim.Services.Interfaces; | 50 | using OpenSim.Services.Interfaces; |
51 | using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo; | 51 | using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo; |
52 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | 52 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; |
53 | using PermissionMask = OpenSim.Framework.PermissionMask; | ||
53 | 54 | ||
54 | namespace OpenSim.ApplicationPlugins.RemoteController | 55 | namespace OpenSim.ApplicationPlugins.RemoteController |
55 | { | 56 | { |
@@ -140,6 +141,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
140 | availableMethods["admin_save_heightmap"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcSaveHeightmapMethod); | 141 | availableMethods["admin_save_heightmap"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcSaveHeightmapMethod); |
141 | 142 | ||
142 | // Agent management | 143 | // Agent management |
144 | availableMethods["admin_get_agents"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcGetAgentsMethod); | ||
143 | availableMethods["admin_teleport_agent"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcTeleportAgentMethod); | 145 | availableMethods["admin_teleport_agent"] = (req, ep) => InvokeXmlRpcMethod(req, ep, XmlRpcTeleportAgentMethod); |
144 | 146 | ||
145 | // User management | 147 | // User management |
@@ -1900,6 +1902,71 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1900 | m_log.Info("[RADMIN]: Access List List Request complete"); | 1902 | m_log.Info("[RADMIN]: Access List List Request complete"); |
1901 | } | 1903 | } |
1902 | 1904 | ||
1905 | private void XmlRpcGetAgentsMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) | ||
1906 | { | ||
1907 | Hashtable responseData = (Hashtable)response.Value; | ||
1908 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
1909 | |||
1910 | bool includeChildren = false; | ||
1911 | |||
1912 | if (requestData.Contains("include_children")) | ||
1913 | bool.TryParse((string)requestData["include_children"], out includeChildren); | ||
1914 | |||
1915 | Scene scene; | ||
1916 | GetSceneFromRegionParams(requestData, responseData, out scene); | ||
1917 | |||
1918 | ArrayList xmlRpcRegions = new ArrayList(); | ||
1919 | responseData["regions"] = xmlRpcRegions; | ||
1920 | |||
1921 | Hashtable xmlRpcRegion = new Hashtable(); | ||
1922 | xmlRpcRegions.Add(xmlRpcRegion); | ||
1923 | |||
1924 | xmlRpcRegion["name"] = scene.Name; | ||
1925 | xmlRpcRegion["id"] = scene.RegionInfo.RegionID.ToString(); | ||
1926 | |||
1927 | List<ScenePresence> agents = scene.GetScenePresences(); | ||
1928 | ArrayList xmlrpcAgents = new ArrayList(); | ||
1929 | |||
1930 | foreach (ScenePresence agent in agents) | ||
1931 | { | ||
1932 | if (agent.IsChildAgent && !includeChildren) | ||
1933 | continue; | ||
1934 | |||
1935 | Hashtable xmlRpcAgent = new Hashtable(); | ||
1936 | xmlRpcAgent.Add("name", agent.Name); | ||
1937 | xmlRpcAgent.Add("id", agent.UUID.ToString()); | ||
1938 | xmlRpcAgent.Add("type", agent.PresenceType.ToString()); | ||
1939 | xmlRpcAgent.Add("current_parcel_id", agent.currentParcelUUID.ToString()); | ||
1940 | |||
1941 | Vector3 pos = agent.AbsolutePosition; | ||
1942 | xmlRpcAgent.Add("pos_x", pos.X.ToString()); | ||
1943 | xmlRpcAgent.Add("pos_y", pos.Y.ToString()); | ||
1944 | xmlRpcAgent.Add("pos_z", pos.Z.ToString()); | ||
1945 | |||
1946 | Vector3 lookAt = agent.Lookat; | ||
1947 | xmlRpcAgent.Add("lookat_x", lookAt.X.ToString()); | ||
1948 | xmlRpcAgent.Add("lookat_y", lookAt.Y.ToString()); | ||
1949 | xmlRpcAgent.Add("lookat_z", lookAt.Z.ToString()); | ||
1950 | |||
1951 | Vector3 vel = agent.Velocity; | ||
1952 | xmlRpcAgent.Add("vel_x", vel.X.ToString()); | ||
1953 | xmlRpcAgent.Add("vel_y", vel.Y.ToString()); | ||
1954 | xmlRpcAgent.Add("vel_z", vel.Z.ToString()); | ||
1955 | |||
1956 | xmlRpcAgent.Add("is_flying", agent.Flying.ToString()); | ||
1957 | xmlRpcAgent.Add("is_sat_on_ground", agent.SitGround.ToString()); | ||
1958 | xmlRpcAgent.Add("is_sat_on_object", agent.IsSatOnObject.ToString()); | ||
1959 | |||
1960 | xmlrpcAgents.Add(xmlRpcAgent); | ||
1961 | } | ||
1962 | |||
1963 | m_log.DebugFormat( | ||
1964 | "[REMOTE ADMIN]: XmlRpcGetAgents found {0} agents in {1}", xmlrpcAgents.Count, scene.Name); | ||
1965 | |||
1966 | xmlRpcRegion["agents"] = xmlrpcAgents; | ||
1967 | responseData["success"] = true; | ||
1968 | } | ||
1969 | |||
1903 | private void XmlRpcTeleportAgentMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) | 1970 | private void XmlRpcTeleportAgentMethod(XmlRpcRequest request, XmlRpcResponse response, IPEndPoint remoteClient) |
1904 | { | 1971 | { |
1905 | Hashtable responseData = (Hashtable)response.Value; | 1972 | Hashtable responseData = (Hashtable)response.Value; |