From ed41ba8a3d9e19e9ff20fcdb6cdde3e614fcfb1f Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Fri, 6 Jun 2008 21:39:42 +0000 Subject: [PATCH] * Added a configuration option for allowing god script lsl methods.. such as llSetObjectPermMask. By default it's off. --- .../Common/LSL_BuiltIn_Commands.cs | 48 +++++++++++-------- bin/OpenSim.ini.example | 2 + 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index 1999945187..68b87fdeb8 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Runtime.Remoting.Lifetime; using System.Text; using System.Threading; +using Nini.Config; using Axiom.Math; using libsecondlife; using OpenSim.Framework; @@ -5623,30 +5624,39 @@ namespace OpenSim.Region.ScriptEngine.Common public void llSetObjectPermMask(int mask, int value) { m_host.AddScriptLPS(1); - - if (mask == BuiltIn_Commands_BaseClass.MASK_BASE)//0 + IConfigSource config = new IniConfigSource(Application.iniFilePath); + if (config.Configs["LL-Functions"] == null) + config.AddConfig("LL-Functions"); + + if (config.Configs["LL-Functions"].GetBoolean("AllowGodFunctions", false)) { - m_host.BaseMask = (uint)value; - } + if (World.ExternalChecks.ExternalChecksCanRunConsoleCommand(m_host.OwnerID)) + { + if (mask == BuiltIn_Commands_BaseClass.MASK_BASE)//0 + { + m_host.BaseMask = (uint)value; + } - else if (mask == BuiltIn_Commands_BaseClass.MASK_OWNER)//1 - { - m_host.OwnerMask = (uint)value; - } + else if (mask == BuiltIn_Commands_BaseClass.MASK_OWNER)//1 + { + m_host.OwnerMask = (uint)value; + } - else if (mask == BuiltIn_Commands_BaseClass.MASK_GROUP)//2 - { - m_host.GroupMask = (uint)value; - } + else if (mask == BuiltIn_Commands_BaseClass.MASK_GROUP)//2 + { + m_host.GroupMask = (uint)value; + } - else if (mask == BuiltIn_Commands_BaseClass.MASK_EVERYONE)//3 - { - m_host.EveryoneMask = (uint)value; - } + else if (mask == BuiltIn_Commands_BaseClass.MASK_EVERYONE)//3 + { + m_host.EveryoneMask = (uint)value; + } - else if (mask == BuiltIn_Commands_BaseClass.MASK_NEXT)//4 - { - m_host.NextOwnerMask = (uint)value; + else if (mask == BuiltIn_Commands_BaseClass.MASK_NEXT)//4 + { + m_host.NextOwnerMask = (uint)value; + } + } } } diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index db0b3a91f5..0682a3e4b4 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -487,6 +487,8 @@ CleanUpOldScriptsOnStartup=true ; Set the following to true to allow administrator owned scripts to execute console commands AllowosConsoleCommand=false +AllowGodFunctions = false + ; Maximum number of llListen events we allow per script ; Set this to 0 to have no limit imposed. max_listens_per_script = 64