diff options
author | Adam Frisby | 2007-12-03 07:06:46 +0000 |
---|---|---|
committer | Adam Frisby | 2007-12-03 07:06:46 +0000 |
commit | 981c97502a25c12473328e332bb0505f8c779d73 (patch) | |
tree | f60cf6bfad1350ab5f64dbb68bd2720ed74e20a0 /OpenSim/Region/Application | |
parent | * Applied a few commits left on my laptop to OpenSimController. (diff) | |
download | opensim-SC_OLD-981c97502a25c12473328e332bb0505f8c779d73.zip opensim-SC_OLD-981c97502a25c12473328e332bb0505f8c779d73.tar.gz opensim-SC_OLD-981c97502a25c12473328e332bb0505f8c779d73.tar.bz2 opensim-SC_OLD-981c97502a25c12473328e332bb0505f8c779d73.tar.xz |
* Moved XMLRPC Controller to a Application Plugin. Requires testing.
Diffstat (limited to 'OpenSim/Region/Application')
-rw-r--r-- | OpenSim/Region/Application/OpenSimController.cs | 122 | ||||
-rw-r--r-- | OpenSim/Region/Application/OpenSimMain.cs | 9 |
2 files changed, 5 insertions, 126 deletions
diff --git a/OpenSim/Region/Application/OpenSimController.cs b/OpenSim/Region/Application/OpenSimController.cs deleted file mode 100644 index 9fae426..0000000 --- a/OpenSim/Region/Application/OpenSimController.cs +++ /dev/null | |||
@@ -1,122 +0,0 @@ | |||
1 | using System; | ||
2 | using System.Collections; | ||
3 | using System.Net; | ||
4 | using System.Timers; | ||
5 | using Nwc.XmlRpc; | ||
6 | using OpenSim.Framework; | ||
7 | using OpenSim.Framework.Console; | ||
8 | using OpenSim.Framework.Servers; | ||
9 | |||
10 | namespace OpenSim | ||
11 | { | ||
12 | internal class OpenSimController | ||
13 | { | ||
14 | private OpenSimMain m_app; | ||
15 | private BaseHttpServer m_httpServer; | ||
16 | private const bool m_enablexmlrpc = true; | ||
17 | |||
18 | public OpenSimController(OpenSimMain core, BaseHttpServer httpd) | ||
19 | { | ||
20 | m_app = core; | ||
21 | m_httpServer = httpd; | ||
22 | |||
23 | if (m_enablexmlrpc) | ||
24 | { | ||
25 | m_httpServer.AddXmlRPCHandler("admin_create_region", XmlRpcCreateRegionMethod); | ||
26 | m_httpServer.AddXmlRPCHandler("admin_shutdown", XmlRpcShutdownMethod); | ||
27 | } | ||
28 | } | ||
29 | |||
30 | public XmlRpcResponse XmlRpcShutdownMethod(XmlRpcRequest request) | ||
31 | { | ||
32 | MainLog.Instance.Verbose("CONTROLLER", "Recieved Shutdown Administrator Request"); | ||
33 | XmlRpcResponse response = new XmlRpcResponse(); | ||
34 | Hashtable requestData = (Hashtable) request.Params[0]; | ||
35 | |||
36 | if ((string) requestData["shutdown"] == "delayed") | ||
37 | { | ||
38 | int timeout = (Int32)requestData["milliseconds"]; | ||
39 | |||
40 | Hashtable responseData = new Hashtable(); | ||
41 | responseData["accepted"] = "true"; | ||
42 | response.Value = responseData; | ||
43 | |||
44 | m_app.SceneManager.SendGeneralMessage("Region is going down in " + ((int) (timeout/1000)).ToString() + | ||
45 | " second(s). Please save what you are doing and log out."); | ||
46 | |||
47 | // Perform shutdown | ||
48 | Timer shutdownTimer = new Timer(timeout); // Wait before firing | ||
49 | shutdownTimer.AutoReset = false; | ||
50 | shutdownTimer.Elapsed += new ElapsedEventHandler(shutdownTimer_Elapsed); | ||
51 | shutdownTimer.Start(); | ||
52 | |||
53 | return response; | ||
54 | } | ||
55 | else | ||
56 | { | ||
57 | Hashtable responseData = new Hashtable(); | ||
58 | responseData["accepted"] = "true"; | ||
59 | response.Value = responseData; | ||
60 | |||
61 | m_app.SceneManager.SendGeneralMessage("Region is going down now."); | ||
62 | |||
63 | // Perform shutdown | ||
64 | Timer shutdownTimer = new Timer(2000); // Wait 2 seconds before firing | ||
65 | shutdownTimer.AutoReset = false; | ||
66 | shutdownTimer.Elapsed += new ElapsedEventHandler(shutdownTimer_Elapsed); | ||
67 | shutdownTimer.Start(); | ||
68 | |||
69 | return response; | ||
70 | } | ||
71 | } | ||
72 | |||
73 | private void shutdownTimer_Elapsed(object sender, ElapsedEventArgs e) | ||
74 | { | ||
75 | m_app.Shutdown(); | ||
76 | } | ||
77 | |||
78 | public XmlRpcResponse XmlRpcCreateRegionMethod(XmlRpcRequest request) | ||
79 | { | ||
80 | MainLog.Instance.Verbose("CONTROLLER", "Recieved Create Region Administrator Request"); | ||
81 | XmlRpcResponse response = new XmlRpcResponse(); | ||
82 | Hashtable requestData = (Hashtable) request.Params[0]; | ||
83 | |||
84 | RegionInfo newRegionData = new RegionInfo(); | ||
85 | |||
86 | try | ||
87 | { | ||
88 | newRegionData.RegionID = (string)requestData["region_id"]; | ||
89 | newRegionData.RegionName = (string)requestData["region_name"]; | ||
90 | newRegionData.RegionLocX = Convert.ToUInt32((Int32)requestData["region_x"]); | ||
91 | newRegionData.RegionLocY = Convert.ToUInt32((Int32)requestData["region_y"]); | ||
92 | |||
93 | // Security risk | ||
94 | newRegionData.DataStore = (string) requestData["datastore"]; | ||
95 | |||
96 | newRegionData.InternalEndPoint = new IPEndPoint( | ||
97 | IPAddress.Parse((string) requestData["listen_ip"]), 0); | ||
98 | |||
99 | newRegionData.InternalEndPoint.Port = (Int32)requestData["listen_port"]; | ||
100 | newRegionData.ExternalHostName = (string)requestData["external_address"]; | ||
101 | |||
102 | newRegionData.MasterAvatarFirstName = (string) requestData["region_master_first"]; | ||
103 | newRegionData.MasterAvatarLastName = (string) requestData["region_master_last"]; | ||
104 | |||
105 | m_app.CreateRegion(newRegionData); | ||
106 | |||
107 | Hashtable responseData = new Hashtable(); | ||
108 | responseData["created"] = "true"; | ||
109 | response.Value = responseData; | ||
110 | } | ||
111 | catch (Exception e) | ||
112 | { | ||
113 | Hashtable responseData = new Hashtable(); | ||
114 | responseData["created"] = "false"; | ||
115 | responseData["error"] = e.ToString(); | ||
116 | response.Value = responseData; | ||
117 | } | ||
118 | |||
119 | return response; | ||
120 | } | ||
121 | } | ||
122 | } | ||
diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs index 51a647d..9fd5bcc 100644 --- a/OpenSim/Region/Application/OpenSimMain.cs +++ b/OpenSim/Region/Application/OpenSimMain.cs | |||
@@ -61,8 +61,6 @@ namespace OpenSim | |||
61 | public bool m_gridLocalAsset; | 61 | public bool m_gridLocalAsset; |
62 | public bool m_SendChildAgentTaskData; | 62 | public bool m_SendChildAgentTaskData; |
63 | 63 | ||
64 | private OpenSimController m_controller; | ||
65 | |||
66 | protected LocalLoginService m_loginService; | 64 | protected LocalLoginService m_loginService; |
67 | 65 | ||
68 | protected string m_storageDll; | 66 | protected string m_storageDll; |
@@ -102,6 +100,11 @@ namespace OpenSim | |||
102 | set { m_config = value; } | 100 | set { m_config = value; } |
103 | } | 101 | } |
104 | 102 | ||
103 | public BaseHttpServer HttpServer | ||
104 | { | ||
105 | get { return m_httpServer; } | ||
106 | } | ||
107 | |||
105 | private ModuleLoader m_moduleLoader; | 108 | private ModuleLoader m_moduleLoader; |
106 | 109 | ||
107 | public ModuleLoader ModuleLoader | 110 | public ModuleLoader ModuleLoader |
@@ -279,8 +282,6 @@ namespace OpenSim | |||
279 | 282 | ||
280 | base.StartUp(); | 283 | base.StartUp(); |
281 | 284 | ||
282 | m_controller = new OpenSimController(this, m_httpServer); | ||
283 | |||
284 | if (m_sandbox) | 285 | if (m_sandbox) |
285 | { | 286 | { |
286 | LocalInventoryService inventoryService = new LocalInventoryService(); | 287 | LocalInventoryService inventoryService = new LocalInventoryService(); |