diff options
author | Melanie Thielker | 2009-06-05 09:47:42 +0000 |
---|---|---|
committer | Melanie Thielker | 2009-06-05 09:47:42 +0000 |
commit | 9f932a42057b4a9cd4517c90007a7c31c98277c6 (patch) | |
tree | b0183d1d5317e9408c73924a3a97cb31e3a4adf7 /OpenSim/Region/ScriptEngine | |
parent | * convenience ignores (diff) | |
download | opensim-SC-9f932a42057b4a9cd4517c90007a7c31c98277c6.zip opensim-SC-9f932a42057b4a9cd4517c90007a7c31c98277c6.tar.gz opensim-SC-9f932a42057b4a9cd4517c90007a7c31c98277c6.tar.bz2 opensim-SC-9f932a42057b4a9cd4517c90007a7c31c98277c6.tar.xz |
Thank you, thomax, for a patch to provide finer-grained access control to
scripting.
Fixes Mantis #2862
Diffstat (limited to 'OpenSim/Region/ScriptEngine')
4 files changed, 13 insertions, 4 deletions
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs index 9897267..15d6c2c 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs | |||
@@ -153,7 +153,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
153 | // Compile (We assume LSL) | 153 | // Compile (We assume LSL) |
154 | CompiledScriptFile = | 154 | CompiledScriptFile = |
155 | LSLCompiler.PerformScriptCompile(Script, | 155 | LSLCompiler.PerformScriptCompile(Script, |
156 | assetID.ToString()); | 156 | assetID.ToString(), taskInventoryItem.OwnerID); |
157 | 157 | ||
158 | if (presence != null && (!postOnRez)) | 158 | if (presence != null && (!postOnRez)) |
159 | presence.ControllingClient.SendAgentAlertMessage( | 159 | presence.ControllingClient.SendAgentAlertMessage( |
diff --git a/OpenSim/Region/ScriptEngine/Interfaces/ICompiler.cs b/OpenSim/Region/ScriptEngine/Interfaces/ICompiler.cs index 1bba878..2fd819d 100644 --- a/OpenSim/Region/ScriptEngine/Interfaces/ICompiler.cs +++ b/OpenSim/Region/ScriptEngine/Interfaces/ICompiler.cs | |||
@@ -27,13 +27,14 @@ | |||
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using OpenMetaverse; | ||
30 | using Nini.Config; | 31 | using Nini.Config; |
31 | 32 | ||
32 | namespace OpenSim.Region.ScriptEngine.Interfaces | 33 | namespace OpenSim.Region.ScriptEngine.Interfaces |
33 | { | 34 | { |
34 | public interface ICompiler | 35 | public interface ICompiler |
35 | { | 36 | { |
36 | string PerformScriptCompile(string source, string asset); | 37 | string PerformScriptCompile(string source, string asset, UUID ownerID); |
37 | string[] GetWarnings(); | 38 | string[] GetWarnings(); |
38 | Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> | 39 | Dictionary<KeyValuePair<int, int>, KeyValuePair<int, int>> |
39 | LineMap(); | 40 | LineMap(); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs b/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs index fcb3339..911da5b 100644 --- a/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs +++ b/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs | |||
@@ -37,6 +37,7 @@ using Microsoft.VisualBasic; | |||
37 | using log4net; | 37 | using log4net; |
38 | using OpenSim.Region.Framework.Interfaces; | 38 | using OpenSim.Region.Framework.Interfaces; |
39 | using OpenSim.Region.ScriptEngine.Interfaces; | 39 | using OpenSim.Region.ScriptEngine.Interfaces; |
40 | using OpenMetaverse; | ||
40 | 41 | ||
41 | namespace OpenSim.Region.ScriptEngine.Shared.CodeTools | 42 | namespace OpenSim.Region.ScriptEngine.Shared.CodeTools |
42 | { | 43 | { |
@@ -263,7 +264,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools | |||
263 | /// </summary> | 264 | /// </summary> |
264 | /// <param name="Script">LSL script</param> | 265 | /// <param name="Script">LSL script</param> |
265 | /// <returns>Filename to .dll assembly</returns> | 266 | /// <returns>Filename to .dll assembly</returns> |
266 | public string PerformScriptCompile(string Script, string asset) | 267 | public string PerformScriptCompile(string Script, string asset, UUID ownerUUID) |
267 | { | 268 | { |
268 | m_positionMap = null; | 269 | m_positionMap = null; |
269 | m_warnings.Clear(); | 270 | m_warnings.Clear(); |
@@ -341,6 +342,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools | |||
341 | throw new Exception(errtext); | 342 | throw new Exception(errtext); |
342 | } | 343 | } |
343 | 344 | ||
345 | if(m_scriptEngine.World.Permissions.CanCompileScript(ownerUUID, (int)l) == false) { | ||
346 | // Not allowed to compile to this language! | ||
347 | string errtext = String.Empty; | ||
348 | errtext += ownerUUID + " is not in list of allowed users for this scripting language. Script will not be executed!"; | ||
349 | throw new Exception(errtext); | ||
350 | } | ||
351 | |||
344 | string compileScript = Script; | 352 | string compileScript = Script; |
345 | 353 | ||
346 | if (l == enumCompileType.lsl) | 354 | if (l == enumCompileType.lsl) |
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index cfabda1..34f8145 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -579,7 +579,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
579 | lock (m_AddingAssemblies) | 579 | lock (m_AddingAssemblies) |
580 | { | 580 | { |
581 | assembly = m_Compiler.PerformScriptCompile(script, | 581 | assembly = m_Compiler.PerformScriptCompile(script, |
582 | assetID.ToString()); | 582 | assetID.ToString(), item.OwnerID); |
583 | if (!m_AddingAssemblies.ContainsKey(assembly)) { | 583 | if (!m_AddingAssemblies.ContainsKey(assembly)) { |
584 | m_AddingAssemblies[assembly] = 1; | 584 | m_AddingAssemblies[assembly] = 1; |
585 | } else { | 585 | } else { |