diff options
Diffstat (limited to 'OpenSim/Region')
4 files changed, 86 insertions, 13 deletions
diff --git a/OpenSim/Region/ClientStack/RegionApplicationBase.cs b/OpenSim/Region/ClientStack/RegionApplicationBase.cs index ea1317a..6e3a58e 100644 --- a/OpenSim/Region/ClientStack/RegionApplicationBase.cs +++ b/OpenSim/Region/ClientStack/RegionApplicationBase.cs | |||
@@ -96,6 +96,22 @@ namespace OpenSim.Region.ClientStack | |||
96 | 96 | ||
97 | MainServer.Instance = m_httpServer; | 97 | MainServer.Instance = m_httpServer; |
98 | 98 | ||
99 | // "OOB" Server | ||
100 | if (m_networkServersInfo.ssl_listener) | ||
101 | { | ||
102 | BaseHttpServer server = null; | ||
103 | server = new BaseHttpServer( | ||
104 | m_networkServersInfo.https_port, m_networkServersInfo.ssl_listener, m_networkServersInfo.cert_path, | ||
105 | m_networkServersInfo.cert_pass); | ||
106 | // Add the server to m_Servers | ||
107 | if(server != null) | ||
108 | { | ||
109 | m_log.InfoFormat("[REGION SERVER]: Starting HTTPS server on port {0}", server.Port); | ||
110 | MainServer.AddHttpServer(server); | ||
111 | server.Start(); | ||
112 | } | ||
113 | } | ||
114 | |||
99 | base.StartupSpecific(); | 115 | base.StartupSpecific(); |
100 | } | 116 | } |
101 | 117 | ||
diff --git a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs index 9b565ed..a552a28 100644 --- a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs +++ b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs | |||
@@ -78,7 +78,9 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
78 | 78 | ||
79 | private int m_TotalUrls = 100; | 79 | private int m_TotalUrls = 100; |
80 | 80 | ||
81 | private uint https_port = 0; | ||
81 | private IHttpServer m_HttpServer = null; | 82 | private IHttpServer m_HttpServer = null; |
83 | private IHttpServer m_HttpsServer = null; | ||
82 | 84 | ||
83 | private string m_ExternalHostNameForLSL = ""; | 85 | private string m_ExternalHostNameForLSL = ""; |
84 | 86 | ||
@@ -100,6 +102,11 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
100 | public void Initialise(IConfigSource config) | 102 | public void Initialise(IConfigSource config) |
101 | { | 103 | { |
102 | m_ExternalHostNameForLSL = config.Configs["Network"].GetString("ExternalHostNameForLSL", System.Environment.MachineName); | 104 | m_ExternalHostNameForLSL = config.Configs["Network"].GetString("ExternalHostNameForLSL", System.Environment.MachineName); |
105 | bool ssl_enabled = config.Configs["Network"].GetBoolean("https_listener",false); | ||
106 | if (ssl_enabled) | ||
107 | { | ||
108 | https_port = (uint) config.Configs["Network"].GetInt("https_port",0); | ||
109 | } | ||
103 | } | 110 | } |
104 | 111 | ||
105 | public void PostInitialise() | 112 | public void PostInitialise() |
@@ -113,6 +120,12 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
113 | // There can only be one | 120 | // There can only be one |
114 | // | 121 | // |
115 | m_HttpServer = MainServer.Instance; | 122 | m_HttpServer = MainServer.Instance; |
123 | // | ||
124 | // We can use the https if it is enabled | ||
125 | if (https_port > 0) | ||
126 | { | ||
127 | m_HttpsServer = MainServer.GetHttpServer(https_port); | ||
128 | } | ||
116 | } | 129 | } |
117 | 130 | ||
118 | scene.RegisterModuleInterface<IUrlModule>(this); | 131 | scene.RegisterModuleInterface<IUrlModule>(this); |
@@ -171,7 +184,40 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
171 | { | 184 | { |
172 | UUID urlcode = UUID.Random(); | 185 | UUID urlcode = UUID.Random(); |
173 | 186 | ||
174 | engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" }); | 187 | if (m_HttpsServer == null) |
188 | { | ||
189 | engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" }); | ||
190 | return urlcode; | ||
191 | } | ||
192 | |||
193 | lock (m_UrlMap) | ||
194 | { | ||
195 | if (m_UrlMap.Count >= m_TotalUrls) | ||
196 | { | ||
197 | engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" }); | ||
198 | return urlcode; | ||
199 | } | ||
200 | string url = "https://" + m_ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + "/lslhttps/" + urlcode.ToString() + "/"; | ||
201 | |||
202 | UrlData urlData = new UrlData(); | ||
203 | urlData.hostID = host.UUID; | ||
204 | urlData.itemID = itemID; | ||
205 | urlData.engine = engine; | ||
206 | urlData.url = url; | ||
207 | urlData.urlcode = urlcode; | ||
208 | urlData.requests = new Dictionary<UUID, RequestData>(); | ||
209 | |||
210 | |||
211 | m_UrlMap[url] = urlData; | ||
212 | |||
213 | string uri = "/lslhttps/" + urlcode.ToString() + "/"; | ||
214 | |||
215 | m_HttpsServer.AddPollServiceHTTPHandler(uri,HandleHttpPoll, | ||
216 | new PollServiceEventArgs(HttpRequestHandler,HasEvents, GetEvents, NoEvents, | ||
217 | urlcode)); | ||
218 | |||
219 | engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url }); | ||
220 | } | ||
175 | 221 | ||
176 | return urlcode; | 222 | return urlcode; |
177 | } | 223 | } |
@@ -345,7 +391,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
345 | } | 391 | } |
346 | private Hashtable GetEvents(UUID requestID, UUID sessionID, string request) | 392 | private Hashtable GetEvents(UUID requestID, UUID sessionID, string request) |
347 | { | 393 | { |
348 | UrlData url = null; | 394 | UrlData url = null; |
349 | RequestData requestData = null; | 395 | RequestData requestData = null; |
350 | 396 | ||
351 | lock (m_RequestMap) | 397 | lock (m_RequestMap) |
@@ -391,11 +437,12 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
391 | lock (request) | 437 | lock (request) |
392 | { | 438 | { |
393 | string uri = request["uri"].ToString(); | 439 | string uri = request["uri"].ToString(); |
394 | 440 | bool is_ssl = uri.Contains("lslhttps"); | |
441 | |||
395 | try | 442 | try |
396 | { | 443 | { |
397 | Hashtable headers = (Hashtable)request["headers"]; | 444 | Hashtable headers = (Hashtable)request["headers"]; |
398 | 445 | ||
399 | // string uri_full = "http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri;// "/lslhttp/" + urlcode.ToString() + "/"; | 446 | // string uri_full = "http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri;// "/lslhttp/" + urlcode.ToString() + "/"; |
400 | 447 | ||
401 | int pos1 = uri.IndexOf("/");// /lslhttp | 448 | int pos1 = uri.IndexOf("/");// /lslhttp |
@@ -409,7 +456,11 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp | |||
409 | 456 | ||
410 | pathInfo = uri.Substring(pos3); | 457 | pathInfo = uri.Substring(pos3); |
411 | 458 | ||
412 | UrlData url = m_UrlMap["http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri_tmp]; | 459 | UrlData url = null; |
460 | if (!is_ssl) | ||
461 | url = m_UrlMap["http://" + m_ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + uri_tmp]; | ||
462 | else | ||
463 | url = m_UrlMap["https://" + m_ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + uri_tmp]; | ||
413 | 464 | ||
414 | //for llGetHttpHeader support we need to store original URI here | 465 | //for llGetHttpHeader support we need to store original URI here |
415 | //to make x-path-info / x-query-string / x-script-url / x-remote-ip headers | 466 | //to make x-path-info / x-query-string / x-script-url / x-remote-ip headers |
diff --git a/OpenSim/Region/CoreModules/World/Region/RestartModule.cs b/OpenSim/Region/CoreModules/World/Region/RestartModule.cs index ab6a598..e983239 100644 --- a/OpenSim/Region/CoreModules/World/Region/RestartModule.cs +++ b/OpenSim/Region/CoreModules/World/Region/RestartModule.cs | |||
@@ -64,19 +64,26 @@ namespace OpenSim.Region.CoreModules.World.Region | |||
64 | public void AddRegion(Scene scene) | 64 | public void AddRegion(Scene scene) |
65 | { | 65 | { |
66 | m_Scene = scene; | 66 | m_Scene = scene; |
67 | |||
67 | scene.RegisterModuleInterface<IRestartModule>(this); | 68 | scene.RegisterModuleInterface<IRestartModule>(this); |
68 | MainConsole.Instance.Commands.AddCommand("RestartModule", | 69 | MainConsole.Instance.Commands.AddCommand("RestartModule", |
69 | false, "region restart bluebox", | 70 | false, "region restart bluebox", |
70 | "region restart bluebox <message> <time> ...", | 71 | "region restart bluebox <message> <delta seconds>+", |
71 | "Restart the region", HandleRegionRestart); | 72 | "Schedule a region restart", |
73 | "Schedule a region restart after a given number of seconds. If one delta is given then the region is restarted in delta seconds time. A time to restart is sent to users in the region as a transient notice. If multiple deltas are given then a notice is sent when we reach each delta.", | ||
74 | HandleRegionRestart); | ||
75 | |||
72 | MainConsole.Instance.Commands.AddCommand("RestartModule", | 76 | MainConsole.Instance.Commands.AddCommand("RestartModule", |
73 | false, "region restart notice", | 77 | false, "region restart notice", |
74 | "region restart notice <message> <time> ...", | 78 | "region restart notice <message> <delta seconds>+", |
75 | "Restart the region", HandleRegionRestart); | 79 | "Schedule a region restart", |
80 | "Schedule a region restart after a given number of seconds. If one delta is given then the region is restarted in delta seconds time. A time to restart is sent to users in the region as a dismissable bluebox notice. If multiple deltas are given then a notice is sent when we reach each delta.", | ||
81 | HandleRegionRestart); | ||
82 | |||
76 | MainConsole.Instance.Commands.AddCommand("RestartModule", | 83 | MainConsole.Instance.Commands.AddCommand("RestartModule", |
77 | false, "region restart abort", | 84 | false, "region restart abort", |
78 | "region restart abort [<message>]", | 85 | "region restart abort [<message>]", |
79 | "Restart the region", HandleRegionRestart); | 86 | "Abort a region restart", HandleRegionRestart); |
80 | } | 87 | } |
81 | 88 | ||
82 | public void RegionLoaded(Scene scene) | 89 | public void RegionLoaded(Scene scene) |
@@ -245,7 +252,7 @@ namespace OpenSim.Region.CoreModules.World.Region | |||
245 | } | 252 | } |
246 | } | 253 | } |
247 | 254 | ||
248 | MainConsole.Instance.Output("Error: restart region <mode> <name> <time> ..."); | 255 | MainConsole.Instance.Output("Error: restart region <mode> <name> <delta seconds>+"); |
249 | return; | 256 | return; |
250 | } | 257 | } |
251 | 258 | ||
diff --git a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs index db17d8f..62e6fae 100644 --- a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs | |||
@@ -107,11 +107,10 @@ namespace OpenSim.Region.CoreModules.UDP.Linden | |||
107 | 107 | ||
108 | scene.AddCommand( | 108 | scene.AddCommand( |
109 | this, "emergency-monitoring", | 109 | this, "emergency-monitoring", |
110 | "Go on/off emergency monitoring mode", | 110 | "emergency-monitoring", |
111 | "Go on/off emergency monitoring mode", | 111 | "Go on/off emergency monitoring mode", |
112 | "Go on/off emergency monitoring mode", | 112 | "Go on/off emergency monitoring mode", |
113 | EmergencyMonitoring); | 113 | EmergencyMonitoring); |
114 | |||
115 | } | 114 | } |
116 | 115 | ||
117 | public void RemoveRegion(Scene scene) | 116 | public void RemoveRegion(Scene scene) |