diff options
Diffstat (limited to 'OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs')
-rw-r--r-- | OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | 276 |
1 files changed, 138 insertions, 138 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 2566a6b..d4a11d9 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -1,139 +1,139 @@ | |||
1 | using System; | 1 | using System; |
2 | using System.Collections.Generic; | 2 | using System.Collections.Generic; |
3 | using System.Text; | 3 | using System.Text; |
4 | using System.Net; | 4 | using System.Net; |
5 | using OpenSim; | 5 | using OpenSim; |
6 | using OpenSim.Framework.Console; | 6 | using OpenSim.Framework.Console; |
7 | using OpenSim.Framework; | 7 | using OpenSim.Framework; |
8 | using OpenSim.Framework.Servers; | 8 | using OpenSim.Framework.Servers; |
9 | using Mono.Addins; | 9 | using Mono.Addins; |
10 | using Mono.Addins.Description; | 10 | using Mono.Addins.Description; |
11 | using Nini; | 11 | using Nini; |
12 | using Nini.Config; | 12 | using Nini.Config; |
13 | using Nwc.XmlRpc; | 13 | using Nwc.XmlRpc; |
14 | using System.Collections; | 14 | using System.Collections; |
15 | using System.Timers; | 15 | using System.Timers; |
16 | 16 | ||
17 | [assembly: Addin] | 17 | [assembly: Addin] |
18 | [assembly: AddinDependency("OpenSim", "0.4")] | 18 | [assembly: AddinDependency("OpenSim", "0.4")] |
19 | 19 | ||
20 | namespace OpenSim.ApplicationPlugins.LoadRegions | 20 | namespace OpenSim.ApplicationPlugins.LoadRegions |
21 | { | 21 | { |
22 | [Extension("/OpenSim/Startup")] | 22 | [Extension("/OpenSim/Startup")] |
23 | public class RemoteAdminPlugin : IApplicationPlugin | 23 | public class RemoteAdminPlugin : IApplicationPlugin |
24 | { | 24 | { |
25 | private OpenSimMain m_app; | 25 | private OpenSimMain m_app; |
26 | private BaseHttpServer m_httpd; | 26 | private BaseHttpServer m_httpd; |
27 | 27 | ||
28 | public void Initialise(OpenSimMain openSim) | 28 | public void Initialise(OpenSimMain openSim) |
29 | { | 29 | { |
30 | if (openSim.ConfigSource.Configs["RemoteAdmin"].GetBoolean("enabled", false)) | 30 | if (openSim.ConfigSource.Configs["RemoteAdmin"].GetBoolean("enabled", false)) |
31 | { | 31 | { |
32 | System.Console.WriteLine("RADMIN","Remote Admin Plugin Enabled"); | 32 | System.Console.WriteLine("RADMIN","Remote Admin Plugin Enabled"); |
33 | 33 | ||
34 | m_app = openSim; | 34 | m_app = openSim; |
35 | m_httpd = openSim.HttpServer; | 35 | m_httpd = openSim.HttpServer; |
36 | 36 | ||
37 | m_httpd.AddXmlRPCHandler("admin_create_region", XmlRpcCreateRegionMethod); | 37 | m_httpd.AddXmlRPCHandler("admin_create_region", XmlRpcCreateRegionMethod); |
38 | m_httpd.AddXmlRPCHandler("admin_shutdown", XmlRpcShutdownMethod); | 38 | m_httpd.AddXmlRPCHandler("admin_shutdown", XmlRpcShutdownMethod); |
39 | } | 39 | } |
40 | } | 40 | } |
41 | 41 | ||
42 | public XmlRpcResponse XmlRpcShutdownMethod(XmlRpcRequest request) | 42 | public XmlRpcResponse XmlRpcShutdownMethod(XmlRpcRequest request) |
43 | { | 43 | { |
44 | MainLog.Instance.Verbose("CONTROLLER", "Recieved Shutdown Administrator Request"); | 44 | MainLog.Instance.Verbose("CONTROLLER", "Recieved Shutdown Administrator Request"); |
45 | XmlRpcResponse response = new XmlRpcResponse(); | 45 | XmlRpcResponse response = new XmlRpcResponse(); |
46 | Hashtable requestData = (Hashtable)request.Params[0]; | 46 | Hashtable requestData = (Hashtable)request.Params[0]; |
47 | 47 | ||
48 | if ((string)requestData["shutdown"] == "delayed") | 48 | if ((string)requestData["shutdown"] == "delayed") |
49 | { | 49 | { |
50 | int timeout = (Int32)requestData["milliseconds"]; | 50 | int timeout = (Int32)requestData["milliseconds"]; |
51 | 51 | ||
52 | Hashtable responseData = new Hashtable(); | 52 | Hashtable responseData = new Hashtable(); |
53 | responseData["accepted"] = "true"; | 53 | responseData["accepted"] = "true"; |
54 | response.Value = responseData; | 54 | response.Value = responseData; |
55 | 55 | ||
56 | m_app.SceneManager.SendGeneralMessage("Region is going down in " + ((int)(timeout / 1000)).ToString() + | 56 | m_app.SceneManager.SendGeneralMessage("Region is going down in " + ((int)(timeout / 1000)).ToString() + |
57 | " second(s). Please save what you are doing and log out."); | 57 | " second(s). Please save what you are doing and log out."); |
58 | 58 | ||
59 | // Perform shutdown | 59 | // Perform shutdown |
60 | Timer shutdownTimer = new Timer(timeout); // Wait before firing | 60 | Timer shutdownTimer = new Timer(timeout); // Wait before firing |
61 | shutdownTimer.AutoReset = false; | 61 | shutdownTimer.AutoReset = false; |
62 | shutdownTimer.Elapsed += new ElapsedEventHandler(shutdownTimer_Elapsed); | 62 | shutdownTimer.Elapsed += new ElapsedEventHandler(shutdownTimer_Elapsed); |
63 | shutdownTimer.Start(); | 63 | shutdownTimer.Start(); |
64 | 64 | ||
65 | return response; | 65 | return response; |
66 | } | 66 | } |
67 | else | 67 | else |
68 | { | 68 | { |
69 | Hashtable responseData = new Hashtable(); | 69 | Hashtable responseData = new Hashtable(); |
70 | responseData["accepted"] = "true"; | 70 | responseData["accepted"] = "true"; |
71 | response.Value = responseData; | 71 | response.Value = responseData; |
72 | 72 | ||
73 | m_app.SceneManager.SendGeneralMessage("Region is going down now."); | 73 | m_app.SceneManager.SendGeneralMessage("Region is going down now."); |
74 | 74 | ||
75 | // Perform shutdown | 75 | // Perform shutdown |
76 | Timer shutdownTimer = new Timer(2000); // Wait 2 seconds before firing | 76 | Timer shutdownTimer = new Timer(2000); // Wait 2 seconds before firing |
77 | shutdownTimer.AutoReset = false; | 77 | shutdownTimer.AutoReset = false; |
78 | shutdownTimer.Elapsed += new ElapsedEventHandler(shutdownTimer_Elapsed); | 78 | shutdownTimer.Elapsed += new ElapsedEventHandler(shutdownTimer_Elapsed); |
79 | shutdownTimer.Start(); | 79 | shutdownTimer.Start(); |
80 | 80 | ||
81 | return response; | 81 | return response; |
82 | } | 82 | } |
83 | } | 83 | } |
84 | 84 | ||
85 | private void shutdownTimer_Elapsed(object sender, ElapsedEventArgs e) | 85 | private void shutdownTimer_Elapsed(object sender, ElapsedEventArgs e) |
86 | { | 86 | { |
87 | m_app.Shutdown(); | 87 | m_app.Shutdown(); |
88 | } | 88 | } |
89 | 89 | ||
90 | public XmlRpcResponse XmlRpcCreateRegionMethod(XmlRpcRequest request) | 90 | public XmlRpcResponse XmlRpcCreateRegionMethod(XmlRpcRequest request) |
91 | { | 91 | { |
92 | MainLog.Instance.Verbose("CONTROLLER", "Recieved Create Region Administrator Request"); | 92 | MainLog.Instance.Verbose("CONTROLLER", "Recieved Create Region Administrator Request"); |
93 | XmlRpcResponse response = new XmlRpcResponse(); | 93 | XmlRpcResponse response = new XmlRpcResponse(); |
94 | Hashtable requestData = (Hashtable)request.Params[0]; | 94 | Hashtable requestData = (Hashtable)request.Params[0]; |
95 | 95 | ||
96 | RegionInfo newRegionData = new RegionInfo(); | 96 | RegionInfo newRegionData = new RegionInfo(); |
97 | 97 | ||
98 | try | 98 | try |
99 | { | 99 | { |
100 | newRegionData.RegionID = (string)requestData["region_id"]; | 100 | newRegionData.RegionID = (string)requestData["region_id"]; |
101 | newRegionData.RegionName = (string)requestData["region_name"]; | 101 | newRegionData.RegionName = (string)requestData["region_name"]; |
102 | newRegionData.RegionLocX = Convert.ToUInt32((Int32)requestData["region_x"]); | 102 | newRegionData.RegionLocX = Convert.ToUInt32((Int32)requestData["region_x"]); |
103 | newRegionData.RegionLocY = Convert.ToUInt32((Int32)requestData["region_y"]); | 103 | newRegionData.RegionLocY = Convert.ToUInt32((Int32)requestData["region_y"]); |
104 | 104 | ||
105 | // Security risk | 105 | // Security risk |
106 | newRegionData.DataStore = (string)requestData["datastore"]; | 106 | newRegionData.DataStore = (string)requestData["datastore"]; |
107 | 107 | ||
108 | newRegionData.InternalEndPoint = new IPEndPoint( | 108 | newRegionData.InternalEndPoint = new IPEndPoint( |
109 | IPAddress.Parse((string)requestData["listen_ip"]), 0); | 109 | IPAddress.Parse((string)requestData["listen_ip"]), 0); |
110 | 110 | ||
111 | newRegionData.InternalEndPoint.Port = (Int32)requestData["listen_port"]; | 111 | newRegionData.InternalEndPoint.Port = (Int32)requestData["listen_port"]; |
112 | newRegionData.ExternalHostName = (string)requestData["external_address"]; | 112 | newRegionData.ExternalHostName = (string)requestData["external_address"]; |
113 | 113 | ||
114 | newRegionData.MasterAvatarFirstName = (string)requestData["region_master_first"]; | 114 | newRegionData.MasterAvatarFirstName = (string)requestData["region_master_first"]; |
115 | newRegionData.MasterAvatarLastName = (string)requestData["region_master_last"]; | 115 | newRegionData.MasterAvatarLastName = (string)requestData["region_master_last"]; |
116 | 116 | ||
117 | m_app.CreateRegion(newRegionData); | 117 | m_app.CreateRegion(newRegionData); |
118 | 118 | ||
119 | Hashtable responseData = new Hashtable(); | 119 | Hashtable responseData = new Hashtable(); |
120 | responseData["created"] = "true"; | 120 | responseData["created"] = "true"; |
121 | response.Value = responseData; | 121 | response.Value = responseData; |
122 | } | 122 | } |
123 | catch (Exception e) | 123 | catch (Exception e) |
124 | { | 124 | { |
125 | Hashtable responseData = new Hashtable(); | 125 | Hashtable responseData = new Hashtable(); |
126 | responseData["created"] = "false"; | 126 | responseData["created"] = "false"; |
127 | responseData["error"] = e.ToString(); | 127 | responseData["error"] = e.ToString(); |
128 | response.Value = responseData; | 128 | response.Value = responseData; |
129 | } | 129 | } |
130 | 130 | ||
131 | return response; | 131 | return response; |
132 | } | 132 | } |
133 | 133 | ||
134 | public void Close() | 134 | public void Close() |
135 | { | 135 | { |
136 | 136 | ||
137 | } | 137 | } |
138 | } | 138 | } |
139 | } \ No newline at end of file | 139 | } \ No newline at end of file |