Add the beginnings of a sim health check (through remote admin)
parent
8178f78095
commit
96689723e5
|
@ -97,6 +97,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
|
|||
m_httpd.AddXmlRPCHandler("admin_load_xml", XmlRpcLoadXMLMethod);
|
||||
m_httpd.AddXmlRPCHandler("admin_save_xml", XmlRpcSaveXMLMethod);
|
||||
m_httpd.AddXmlRPCHandler("admin_load_oar", XmlRpcLoadOARMethod);
|
||||
m_httpd.AddXmlRPCHandler("admin_region_query", XmlRpcRegionQueryMethod);
|
||||
}
|
||||
}
|
||||
catch (NullReferenceException)
|
||||
|
@ -1084,6 +1085,61 @@ namespace OpenSim.ApplicationPlugins.RemoteController
|
|||
return response;
|
||||
}
|
||||
|
||||
public XmlRpcResponse XmlRpcRegionQueryMethod(XmlRpcRequest request)
|
||||
{
|
||||
m_log.Info("[RADMIN]: Received Save XML Administrator Request");
|
||||
XmlRpcResponse response = new XmlRpcResponse();
|
||||
Hashtable responseData = new Hashtable();
|
||||
|
||||
try
|
||||
{
|
||||
responseData["success"] = "true";
|
||||
|
||||
Hashtable requestData = (Hashtable)request.Params[0];
|
||||
|
||||
// check completeness
|
||||
if (!requestData.Contains("password"))
|
||||
throw new Exception(String.Format("missing required parameter"));
|
||||
if (!String.IsNullOrEmpty(requiredPassword) &&
|
||||
(string)requestData["password"] != requiredPassword) throw new Exception("wrong password");
|
||||
|
||||
if (requestData.Contains("region_uuid"))
|
||||
{
|
||||
UUID region_uuid = (UUID)(string)requestData["region_uuid"];
|
||||
if (!m_app.SceneManager.TrySetCurrentScene(region_uuid))
|
||||
throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString()));
|
||||
m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString());
|
||||
}
|
||||
else if (requestData.Contains("region_name"))
|
||||
{
|
||||
string region_name = (string)requestData["region_name"];
|
||||
if (!m_app.SceneManager.TrySetCurrentScene(region_name))
|
||||
throw new Exception(String.Format("failed to switch to region {0}", region_name));
|
||||
m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name);
|
||||
}
|
||||
else throw new Exception("neither region_name nor region_uuid given");
|
||||
|
||||
Scene s = m_app.SceneManager.CurrentScene;
|
||||
|
||||
int health = s.GetHealth();
|
||||
|
||||
responseData["health"] = health;
|
||||
|
||||
response.Value = responseData;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.InfoFormat("[RADMIN] RegionQuery: {0}", e.Message);
|
||||
|
||||
responseData["success"] = "false";
|
||||
responseData["error"] = e.Message;
|
||||
|
||||
response.Value = responseData;
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
}
|
||||
|
|
|
@ -585,6 +585,11 @@ namespace OpenSim.Region.Environment.Modules.World.Estate
|
|||
args.SimOwner = m_scene.RegionInfo.EstateSettings.EstateOwner;
|
||||
else
|
||||
args.SimOwner = m_scene.RegionInfo.MasterAvatarAssignedUUID;
|
||||
|
||||
// Fudge estate owner
|
||||
if (m_scene.ExternalChecks.ExternalChecksCanBeGodLike(remoteClient.AgentId))
|
||||
args.SimOwner = remoteClient.AgentId;
|
||||
|
||||
args.terrainBase0 = UUID.Zero;
|
||||
args.terrainBase1 = UUID.Zero;
|
||||
args.terrainBase2 = UUID.Zero;
|
||||
|
|
|
@ -168,6 +168,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
private bool m_physics_enabled = true;
|
||||
private bool m_scripts_enabled = true;
|
||||
private string m_defaultScriptEngine;
|
||||
private int m_LastLogin = 0;
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -2142,6 +2143,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
|
||||
CreateAndAddScenePresence(client, child);
|
||||
}
|
||||
m_LastLogin = System.Environment.TickCount;
|
||||
EventManager.TriggerOnNewClient(client);
|
||||
}
|
||||
|
||||
|
@ -4258,5 +4260,17 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
m_storageManager.DataStore.RemoveObject(uuid, m_regInfo.RegionID);
|
||||
}
|
||||
|
||||
public int GetHealth()
|
||||
{
|
||||
int health=1; // Start at 1, means we're up
|
||||
|
||||
// A login in the last 4 mins? We can't be doing too badly
|
||||
//
|
||||
if ((System.Environment.TickCount - m_LastLogin) < 240000)
|
||||
health++;
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue