aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs20
-rw-r--r--OpenSim/Region/Framework/Interfaces/IUrlModule.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs18
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs6
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs5
5 files changed, 49 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
index 05d54f0..53a9679 100644
--- a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
@@ -84,6 +84,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
84 public string body; 84 public string body;
85 public int responseCode; 85 public int responseCode;
86 public string responseBody; 86 public string responseBody;
87 public string responseType = "text/plain";
87 //public ManualResetEvent ev; 88 //public ManualResetEvent ev;
88 public bool requestDone; 89 public bool requestDone;
89 public int startTime; 90 public int startTime;
@@ -302,6 +303,22 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
302 } 303 }
303 } 304 }
304 305
306 public void HttpContentType(UUID request, string type)
307 {
308 lock (m_UrlMap)
309 {
310 if (m_RequestMap.ContainsKey(request))
311 {
312 UrlData urlData = m_RequestMap[request];
313 urlData.requests[request].responseType = type;
314 }
315 else
316 {
317 m_log.Info("[HttpRequestHandler] There is no http-in request with id " + request.ToString());
318 }
319 }
320 }
321
305 public void HttpResponse(UUID request, int status, string body) 322 public void HttpResponse(UUID request, int status, string body)
306 { 323 {
307 lock (m_UrlMap) 324 lock (m_UrlMap)
@@ -504,7 +521,8 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
504 //put response 521 //put response
505 response["int_response_code"] = requestData.responseCode; 522 response["int_response_code"] = requestData.responseCode;
506 response["str_response_string"] = requestData.responseBody; 523 response["str_response_string"] = requestData.responseBody;
507 response["content_type"] = "text/plain"; 524 response["content_type"] = requestData.responseType;
525 // response["content_type"] = "text/plain";
508 response["keepalive"] = false; 526 response["keepalive"] = false;
509 response["reusecontext"] = false; 527 response["reusecontext"] = false;
510 528
diff --git a/OpenSim/Region/Framework/Interfaces/IUrlModule.cs b/OpenSim/Region/Framework/Interfaces/IUrlModule.cs
index 457444c..79e9f9d 100644
--- a/OpenSim/Region/Framework/Interfaces/IUrlModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IUrlModule.cs
@@ -39,6 +39,8 @@ namespace OpenSim.Region.Framework.Interfaces
39 UUID RequestSecureURL(IScriptModule engine, SceneObjectPart host, UUID itemID); 39 UUID RequestSecureURL(IScriptModule engine, SceneObjectPart host, UUID itemID);
40 void ReleaseURL(string url); 40 void ReleaseURL(string url);
41 void HttpResponse(UUID request, int status, string body); 41 void HttpResponse(UUID request, int status, string body);
42 void HttpContentType(UUID request, string type);
43
42 string GetHttpHeader(UUID request, string header); 44 string GetHttpHeader(UUID request, string header);
43 int GetFreeUrls(); 45 int GetFreeUrls();
44 46
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 09fcf50..e245684 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -140,12 +140,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
140 internal float m_ScriptDistanceFactor = 1.0f; 140 internal float m_ScriptDistanceFactor = 1.0f;
141 internal Dictionary<string, FunctionPerms > m_FunctionPerms = new Dictionary<string, FunctionPerms >(); 141 internal Dictionary<string, FunctionPerms > m_FunctionPerms = new Dictionary<string, FunctionPerms >();
142 142
143 protected IUrlModule m_UrlModule = null;
144
143 public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, TaskInventoryItem item) 145 public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, TaskInventoryItem item)
144 { 146 {
145 m_ScriptEngine = ScriptEngine; 147 m_ScriptEngine = ScriptEngine;
146 m_host = host; 148 m_host = host;
147 m_item = item; 149 m_item = item;
148 150
151 m_UrlModule = m_ScriptEngine.World.RequestModuleInterface<IUrlModule>();
152
149 if (m_ScriptEngine.Config.GetBoolean("AllowOSFunctions", false)) 153 if (m_ScriptEngine.Config.GetBoolean("AllowOSFunctions", false))
150 m_OSFunctionsEnabled = true; 154 m_OSFunctionsEnabled = true;
151 155
@@ -3358,5 +3362,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3358 3362
3359 return new LSL_Key(m_host.ParentGroup.FromPartID.ToString()); 3363 return new LSL_Key(m_host.ParentGroup.FromPartID.ToString());
3360 } 3364 }
3361 } 3365
3366 /// <summary>
3367 /// Sets the response type for an HTTP request/response
3368 /// </summary>
3369 /// <returns></returns>
3370 public void osSetContentType(LSL_Key id, string type)
3371 {
3372 CheckThreatLevel(ThreatLevel.High,"osSetResponseType");
3373 if (m_UrlModule != null)
3374 m_UrlModule.HttpContentType(new UUID(id),type);
3375 }
3376
3377 }
3362} \ No newline at end of file 3378} \ No newline at end of file
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
index ce1845c..06729ab 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
@@ -365,5 +365,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
365 /// </summary> 365 /// </summary>
366 /// <returns>Rezzing object key or NULL_KEY if rezzed by agent or otherwise unknown.</returns> 366 /// <returns>Rezzing object key or NULL_KEY if rezzed by agent or otherwise unknown.</returns>
367 LSL_Key osGetRezzingObject(); 367 LSL_Key osGetRezzingObject();
368
369 /// <summary>
370 /// Sets the response type for an HTTP request/response
371 /// </summary>
372 /// <returns></returns>
373 void osSetContentType(LSL_Key id, string type);
368 } 374 }
369} 375}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
index e9131e4..ba1ade2 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
@@ -955,5 +955,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
955 { 955 {
956 return m_OSSL_Functions.osGetRezzingObject(); 956 return m_OSSL_Functions.osGetRezzingObject();
957 } 957 }
958
959 public void osSetContentType(LSL_Key id, string type)
960 {
961 m_OSSL_Functions.osSetContentType(id,type);
962 }
958 } 963 }
959} 964}