From e8b46023e47399e9dcc0057a4380ca4fe49908ee Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Wed, 16 Mar 2016 20:04:52 +0100 Subject: Add osRequestURL and osRequestSecureURL with an options list. Only currently supported option is "allowXss" which will send the needed Access-control-allow-origin: * header to allow xss scripting against the LSL http server. --- .../Shared/Api/Implementation/LSL_Api.cs | 4 +-- .../Shared/Api/Implementation/OSSL_Api.cs | 36 ++++++++++++++++++++++ .../ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | 3 ++ .../ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | 10 ++++++ 4 files changed, 51 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/ScriptEngine') diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index a2abbeb..f48d42d 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -12039,7 +12039,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { m_host.AddScriptLPS(1); if (m_UrlModule != null) - return m_UrlModule.RequestSecureURL(m_ScriptEngine.ScriptModule, m_host, m_item.ItemID).ToString(); + return m_UrlModule.RequestSecureURL(m_ScriptEngine.ScriptModule, m_host, m_item.ItemID, null).ToString(); return UUID.Zero.ToString(); } @@ -12157,7 +12157,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api m_host.AddScriptLPS(1); if (m_UrlModule != null) - return m_UrlModule.RequestURL(m_ScriptEngine.ScriptModule, m_host, m_item.ItemID).ToString(); + return m_UrlModule.RequestURL(m_ScriptEngine.ScriptModule, m_host, m_item.ItemID, null).ToString(); return UUID.Zero.ToString(); } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index bda323a..7e88365 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -4134,5 +4134,41 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return 0; } } + + public LSL_String osRequestURL(LSL_List options) + { + CheckThreatLevel(ThreatLevel.Moderate, "osRequestSecureURL"); + m_host.AddScriptLPS(1); + + Hashtable opts = new Hashtable(); + for (int i = 0 ; i < options.Length ; i++) + { + object opt = options.Data[i]; + if (opt.ToString() == "allowXss") + opts["allowXss"] = true; + } + + if (m_UrlModule != null) + return m_UrlModule.RequestURL(m_ScriptEngine.ScriptModule, m_host, m_item.ItemID, opts).ToString(); + return UUID.Zero.ToString(); + } + + public LSL_String osRequestSecureURL(LSL_List options) + { + CheckThreatLevel(ThreatLevel.Moderate, "osRequestSecureURL"); + m_host.AddScriptLPS(1); + + Hashtable opts = new Hashtable(); + for (int i = 0 ; i < options.Length ; i++) + { + object opt = options.Data[i]; + if (opt.ToString() == "allowXss") + opts["allowXss"] = true; + } + + if (m_UrlModule != null) + return m_UrlModule.RequestSecureURL(m_ScriptEngine.ScriptModule, m_host, m_item.ItemID, opts).ToString(); + return UUID.Zero.ToString(); + } } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs index 4e567e6..6fc5db4 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs @@ -468,5 +468,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces /// string to use as pattern /// boolean LSL_Integer osRegexIsMatch(string input, string pattern); + + LSL_String osRequestURL(LSL_List options); + LSL_String osRequestSecureURL(LSL_List options); } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index 31393bb..ee07eee 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs @@ -1054,5 +1054,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase { return m_OSSL_Functions.osRegexIsMatch(input, pattern); } + + public LSL_String osRequestURL(LSL_List options) + { + return m_OSSL_Functions.osRequestURL(options); + } + + public LSL_String osRequestSecureURL(LSL_List options) + { + return m_OSSL_Functions.osRequestSecureURL(options); + } } } -- cgit v1.1