diff options
Diffstat (limited to 'OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs')
-rw-r--r-- | OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs index 9042e0d..bf523dd 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs | |||
@@ -211,25 +211,39 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule | |||
211 | { | 211 | { |
212 | if (script.StartsWith("//MRM:C#")) | 212 | if (script.StartsWith("//MRM:C#")) |
213 | { | 213 | { |
214 | if (m_scene.GetSceneObjectPart(localID).OwnerID != m_scene.RegionInfo.MasterAvatarAssignedUUID | 214 | if (m_config.GetBoolean("OwnerOnly", true)) |
215 | || | 215 | if (m_scene.GetSceneObjectPart(localID).OwnerID != m_scene.RegionInfo.MasterAvatarAssignedUUID |
216 | m_scene.GetSceneObjectPart(localID).CreatorID != m_scene.RegionInfo.MasterAvatarAssignedUUID) | 216 | || m_scene.GetSceneObjectPart(localID).CreatorID != m_scene.RegionInfo.MasterAvatarAssignedUUID) |
217 | return; | 217 | return; |
218 | 218 | ||
219 | script = ConvertMRMKeywords(script); | 219 | script = ConvertMRMKeywords(script); |
220 | 220 | ||
221 | try | 221 | try |
222 | { | 222 | { |
223 | m_log.Info("[MRM] Found C# MRM - Starting in AppDomain with " + m_config.GetString("permissionLevel", "Internet") + "-level security."); | 223 | AppDomain target; |
224 | if (m_config.GetBoolean("Sandboxed", true)) | ||
225 | { | ||
226 | m_log.Info("[MRM] Found C# MRM - Starting in AppDomain with " + | ||
227 | m_config.GetString("SandboxLevel", "Internet") + "-level security."); | ||
224 | 228 | ||
225 | string domainName = UUID.Random().ToString(); | 229 | string domainName = UUID.Random().ToString(); |
226 | AppDomain target = CreateRestrictedDomain(m_config.GetString("permissionLevel", "Internet"), | 230 | target = CreateRestrictedDomain(m_config.GetString("SandboxLevel", "Internet"), |
227 | domainName); | 231 | domainName); |
232 | } | ||
233 | else | ||
234 | { | ||
235 | m_log.Info("[MRM] Found C# MRM - Starting in current AppDomain"); | ||
236 | m_log.Warn( | ||
237 | "[MRM] Security Risk: AppDomain is run in current context. Use only in trusted environments."); | ||
238 | target = AppDomain.CurrentDomain; | ||
239 | } | ||
228 | 240 | ||
241 | m_log.Info("[MRM] Unwrapping into target AppDomain"); | ||
229 | MRMBase mmb = (MRMBase) target.CreateInstanceFromAndUnwrap( | 242 | MRMBase mmb = (MRMBase) target.CreateInstanceFromAndUnwrap( |
230 | CompileFromDotNetText(script, itemID.ToString()), | 243 | CompileFromDotNetText(script, itemID.ToString()), |
231 | "OpenSim.MiniModule"); | 244 | "OpenSim.MiniModule"); |
232 | 245 | ||
246 | m_log.Info("[MRM] Initialising MRM Globals"); | ||
233 | InitializeMRM(mmb, localID, itemID); | 247 | InitializeMRM(mmb, localID, itemID); |
234 | 248 | ||
235 | m_scripts[itemID] = mmb; | 249 | m_scripts[itemID] = mmb; |