aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs56
-rw-r--r--OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs5
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs14
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}