diff options
author | Melanie Thielker | 2008-10-10 01:10:33 +0000 |
---|---|---|
committer | Melanie Thielker | 2008-10-10 01:10:33 +0000 |
commit | 96689723e5002075b45d01fe4243bf2d87d916b4 (patch) | |
tree | 5d8f9b35097da6657493db7b01738d55647dd31d | |
parent | Fixed renaming of in-prim items (Mantis #2366) (diff) | |
download | opensim-SC_OLD-96689723e5002075b45d01fe4243bf2d87d916b4.zip opensim-SC_OLD-96689723e5002075b45d01fe4243bf2d87d916b4.tar.gz opensim-SC_OLD-96689723e5002075b45d01fe4243bf2d87d916b4.tar.bz2 opensim-SC_OLD-96689723e5002075b45d01fe4243bf2d87d916b4.tar.xz |
Add the beginnings of a sim health check (through remote admin)
3 files changed, 75 insertions, 0 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 3a64ec2..5744867 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -97,6 +97,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
97 | m_httpd.AddXmlRPCHandler("admin_load_xml", XmlRpcLoadXMLMethod); | 97 | m_httpd.AddXmlRPCHandler("admin_load_xml", XmlRpcLoadXMLMethod); |
98 | m_httpd.AddXmlRPCHandler("admin_save_xml", XmlRpcSaveXMLMethod); | 98 | m_httpd.AddXmlRPCHandler("admin_save_xml", XmlRpcSaveXMLMethod); |
99 | m_httpd.AddXmlRPCHandler("admin_load_oar", XmlRpcLoadOARMethod); | 99 | m_httpd.AddXmlRPCHandler("admin_load_oar", XmlRpcLoadOARMethod); |
100 | m_httpd.AddXmlRPCHandler("admin_region_query", XmlRpcRegionQueryMethod); | ||
100 | } | 101 | } |
101 | } | 102 | } |
102 | catch (NullReferenceException) | 103 | catch (NullReferenceException) |
@@ -1084,6 +1085,61 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1084 | return response; | 1085 | return response; |
1085 | } | 1086 | } |
1086 | 1087 | ||
1088 | public XmlRpcResponse XmlRpcRegionQueryMethod(XmlRpcRequest request) | ||
1089 | { | ||
1090 | m_log.Info("[RADMIN]: Received Save XML Administrator Request"); | ||
1091 | XmlRpcResponse response = new XmlRpcResponse(); | ||
1092 | Hashtable responseData = new Hashtable(); | ||
1093 | |||
1094 | try | ||
1095 | { | ||
1096 | responseData["success"] = "true"; | ||
1097 | |||
1098 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
1099 | |||
1100 | // check completeness | ||
1101 | if (!requestData.Contains("password")) | ||
1102 | throw new Exception(String.Format("missing required parameter")); | ||
1103 | if (!String.IsNullOrEmpty(requiredPassword) && | ||
1104 | (string)requestData["password"] != requiredPassword) throw new Exception("wrong password"); | ||
1105 | |||
1106 | if (requestData.Contains("region_uuid")) | ||
1107 | { | ||
1108 | UUID region_uuid = (UUID)(string)requestData["region_uuid"]; | ||
1109 | if (!m_app.SceneManager.TrySetCurrentScene(region_uuid)) | ||
1110 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | ||
1111 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); | ||
1112 | } | ||
1113 | else if (requestData.Contains("region_name")) | ||
1114 | { | ||
1115 | string region_name = (string)requestData["region_name"]; | ||
1116 | if (!m_app.SceneManager.TrySetCurrentScene(region_name)) | ||
1117 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | ||
1118 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); | ||
1119 | } | ||
1120 | else throw new Exception("neither region_name nor region_uuid given"); | ||
1121 | |||
1122 | Scene s = m_app.SceneManager.CurrentScene; | ||
1123 | |||
1124 | int health = s.GetHealth(); | ||
1125 | |||
1126 | responseData["health"] = health; | ||
1127 | |||
1128 | response.Value = responseData; | ||
1129 | } | ||
1130 | catch (Exception e) | ||
1131 | { | ||
1132 | m_log.InfoFormat("[RADMIN] RegionQuery: {0}", e.Message); | ||
1133 | |||
1134 | responseData["success"] = "false"; | ||
1135 | responseData["error"] = e.Message; | ||
1136 | |||
1137 | response.Value = responseData; | ||
1138 | } | ||
1139 | |||
1140 | return response; | ||
1141 | } | ||
1142 | |||
1087 | public void Dispose() | 1143 | public void Dispose() |
1088 | { | 1144 | { |
1089 | } | 1145 | } |
diff --git a/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs index 616132b..7a9dc72 100644 --- a/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs | |||
@@ -585,6 +585,11 @@ namespace OpenSim.Region.Environment.Modules.World.Estate | |||
585 | args.SimOwner = m_scene.RegionInfo.EstateSettings.EstateOwner; | 585 | args.SimOwner = m_scene.RegionInfo.EstateSettings.EstateOwner; |
586 | else | 586 | else |
587 | args.SimOwner = m_scene.RegionInfo.MasterAvatarAssignedUUID; | 587 | args.SimOwner = m_scene.RegionInfo.MasterAvatarAssignedUUID; |
588 | |||
589 | // Fudge estate owner | ||
590 | if (m_scene.ExternalChecks.ExternalChecksCanBeGodLike(remoteClient.AgentId)) | ||
591 | args.SimOwner = remoteClient.AgentId; | ||
592 | |||
588 | args.terrainBase0 = UUID.Zero; | 593 | args.terrainBase0 = UUID.Zero; |
589 | args.terrainBase1 = UUID.Zero; | 594 | args.terrainBase1 = UUID.Zero; |
590 | args.terrainBase2 = UUID.Zero; | 595 | args.terrainBase2 = UUID.Zero; |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 27c315c..8bd3642 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -168,6 +168,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
168 | private bool m_physics_enabled = true; | 168 | private bool m_physics_enabled = true; |
169 | private bool m_scripts_enabled = true; | 169 | private bool m_scripts_enabled = true; |
170 | private string m_defaultScriptEngine; | 170 | private string m_defaultScriptEngine; |
171 | private int m_LastLogin = 0; | ||
171 | 172 | ||
172 | #endregion | 173 | #endregion |
173 | 174 | ||
@@ -2142,6 +2143,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2142 | 2143 | ||
2143 | CreateAndAddScenePresence(client, child); | 2144 | CreateAndAddScenePresence(client, child); |
2144 | } | 2145 | } |
2146 | m_LastLogin = System.Environment.TickCount; | ||
2145 | EventManager.TriggerOnNewClient(client); | 2147 | EventManager.TriggerOnNewClient(client); |
2146 | } | 2148 | } |
2147 | 2149 | ||
@@ -4258,5 +4260,17 @@ namespace OpenSim.Region.Environment.Scenes | |||
4258 | { | 4260 | { |
4259 | m_storageManager.DataStore.RemoveObject(uuid, m_regInfo.RegionID); | 4261 | m_storageManager.DataStore.RemoveObject(uuid, m_regInfo.RegionID); |
4260 | } | 4262 | } |
4263 | |||
4264 | public int GetHealth() | ||
4265 | { | ||
4266 | int health=1; // Start at 1, means we're up | ||
4267 | |||
4268 | // A login in the last 4 mins? We can't be doing too badly | ||
4269 | // | ||
4270 | if ((System.Environment.TickCount - m_LastLogin) < 240000) | ||
4271 | health++; | ||
4272 | |||
4273 | return 0; | ||
4274 | } | ||
4261 | } | 4275 | } |
4262 | } | 4276 | } |