aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs30
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;