From 9f932a42057b4a9cd4517c90007a7c31c98277c6 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Fri, 5 Jun 2009 09:47:42 +0000 Subject: Thank you, thomax, for a patch to provide finer-grained access control to scripting. Fixes Mantis #2862 --- OpenSim/Region/Framework/Scenes/Scene.Permissions.cs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'OpenSim/Region/Framework') diff --git a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs index ab5f264..d0da618 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs @@ -56,6 +56,7 @@ namespace OpenSim.Region.Framework.Scenes public delegate bool EditScriptHandler(UUID script, UUID objectID, UUID user, Scene scene); public delegate bool EditNotecardHandler(UUID notecard, UUID objectID, UUID user, Scene scene); public delegate bool RunScriptHandler(UUID script, UUID objectID, UUID user, Scene scene); + public delegate bool CompileScriptHandler(UUID ownerUUID, int scriptType, Scene scene); public delegate bool StartScriptHandler(UUID script, UUID user, Scene scene); public delegate bool StopScriptHandler(UUID script, UUID user, Scene scene); public delegate bool ResetScriptHandler(UUID prim, UUID script, UUID user, Scene scene); @@ -113,6 +114,7 @@ namespace OpenSim.Region.Framework.Scenes public event EditScriptHandler OnEditScript; public event EditNotecardHandler OnEditNotecard; public event RunScriptHandler OnRunScript; + public event CompileScriptHandler OnCompileScript; public event StartScriptHandler OnStartScript; public event StopScriptHandler OnStopScript; public event ResetScriptHandler OnResetScript; @@ -510,6 +512,24 @@ namespace OpenSim.Region.Framework.Scenes #endregion + #region COMPILE SCRIPT (When Script needs to get (re)compiled) + public bool CanCompileScript(UUID ownerUUID, int scriptType) + { + CompileScriptHandler handler = OnCompileScript; + if (handler != null) + { + Delegate[] list = handler.GetInvocationList(); + foreach (CompileScriptHandler h in list) + { + if (h(ownerUUID, scriptType, m_scene) == false) + return false; + } + } + return true; + } + + #endregion + #region START SCRIPT (When Script run box is Checked after placed in object) public bool CanStartScript(UUID script, UUID user) { -- cgit v1.1