aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
diff options
context:
space:
mode:
authorMelanie2012-05-09 00:43:33 +0100
committerMelanie2012-05-09 00:43:33 +0100
commit50321fb7bf6472c4edfe574a2ba0113c0d4cd3be (patch)
treeb93dce1de50843d68b1daffbe3afc3903beee2fb /OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
parentMerge branch 'master' into careminster (diff)
parentRemove physics actor related race conditions in SetVehicleFlags() and SetPhys... (diff)
downloadopensim-SC_OLD-50321fb7bf6472c4edfe574a2ba0113c0d4cd3be.zip
opensim-SC_OLD-50321fb7bf6472c4edfe574a2ba0113c0d4cd3be.tar.gz
opensim-SC_OLD-50321fb7bf6472c4edfe574a2ba0113c0d4cd3be.tar.bz2
opensim-SC_OLD-50321fb7bf6472c4edfe574a2ba0113c0d4cd3be.tar.xz
Merge branch 'master' into careminster
Conflicts: OpenSim/Region/Framework/Scenes/SceneGraph.cs OpenSim/Region/Framework/Scenes/SceneObjectPart.cs OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs31
1 files changed, 11 insertions, 20 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 321d0d2..51ace1a 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -133,8 +133,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
133 internal IScriptEngine m_ScriptEngine; 133 internal IScriptEngine m_ScriptEngine;
134 internal ILSL_Api m_LSL_Api = null; // get a reference to the LSL API so we can call methods housed there 134 internal ILSL_Api m_LSL_Api = null; // get a reference to the LSL API so we can call methods housed there
135 internal SceneObjectPart m_host; 135 internal SceneObjectPart m_host;
136 internal uint m_localID; 136 internal TaskInventoryItem m_item;
137 internal UUID m_itemID;
138 internal bool m_OSFunctionsEnabled = false; 137 internal bool m_OSFunctionsEnabled = false;
139 internal ThreatLevel m_MaxThreatLevel = ThreatLevel.VeryLow; 138 internal ThreatLevel m_MaxThreatLevel = ThreatLevel.VeryLow;
140 internal float m_ScriptDelayFactor = 1.0f; 139 internal float m_ScriptDelayFactor = 1.0f;
@@ -142,12 +141,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
142 internal bool m_debuggerSafe = false; 141 internal bool m_debuggerSafe = false;
143 internal Dictionary<string, FunctionPerms > m_FunctionPerms = new Dictionary<string, FunctionPerms >(); 142 internal Dictionary<string, FunctionPerms > m_FunctionPerms = new Dictionary<string, FunctionPerms >();
144 143
145 public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, uint localID, UUID itemID) 144 public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, TaskInventoryItem item)
146 { 145 {
147 m_ScriptEngine = ScriptEngine; 146 m_ScriptEngine = ScriptEngine;
148 m_host = host; 147 m_host = host;
149 m_localID = localID; 148 m_item = item;
150 m_itemID = itemID;
151 m_debuggerSafe = m_ScriptEngine.Config.GetBoolean("DebuggerSafe", false); 149 m_debuggerSafe = m_ScriptEngine.Config.GetBoolean("DebuggerSafe", false);
152 150
153 if (m_ScriptEngine.Config.GetBoolean("AllowOSFunctions", false)) 151 if (m_ScriptEngine.Config.GetBoolean("AllowOSFunctions", false))
@@ -233,7 +231,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
233 if (m_LSL_Api != null) 231 if (m_LSL_Api != null)
234 return; 232 return;
235 233
236 m_LSL_Api = (ILSL_Api)m_ScriptEngine.GetApi(m_itemID, "LSL"); 234 m_LSL_Api = (ILSL_Api)m_ScriptEngine.GetApi(m_item.ItemID, "LSL");
237 } 235 }
238 236
239 // 237 //
@@ -352,22 +350,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
352 return; 350 return;
353 } 351 }
354 352
355 TaskInventoryItem ti = m_host.Inventory.GetInventoryItem(m_itemID); 353 UUID ownerID = m_item.OwnerID;
356 if (ti == null)
357 {
358 OSSLError(
359 String.Format("{0} permission error. Can't find script in prim inventory.",
360 function));
361 }
362
363 UUID ownerID = ti.OwnerID;
364 354
365 //OSSL only may be used if object is in the same group as the parcel 355 //OSSL only may be used if object is in the same group as the parcel
366 if (m_FunctionPerms[function].AllowedOwnerClasses.Contains("PARCEL_GROUP_MEMBER")) 356 if (m_FunctionPerms[function].AllowedOwnerClasses.Contains("PARCEL_GROUP_MEMBER"))
367 { 357 {
368 ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y); 358 ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y);
369 359
370 if (land.LandData.GroupID == ti.GroupID && land.LandData.GroupID != UUID.Zero) 360 if (land.LandData.GroupID == m_item.GroupID && land.LandData.GroupID != UUID.Zero)
371 { 361 {
372 return; 362 return;
373 } 363 }
@@ -403,13 +393,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
403 } 393 }
404 } 394 }
405 395
406 if (!m_FunctionPerms[function].AllowedCreators.Contains(ti.CreatorID)) 396 if (!m_FunctionPerms[function].AllowedCreators.Contains(m_item.CreatorID))
407 OSSLError( 397 OSSLError(
408 String.Format("{0} permission denied. Script creator is not in the list of users allowed to execute this function and prim owner also has no permission.", 398 String.Format("{0} permission denied. Script creator is not in the list of users allowed to execute this function and prim owner also has no permission.",
409 function)); 399 function));
410 if (ti.CreatorID != ownerID) 400
401 if (m_item.CreatorID != ownerID)
411 { 402 {
412 if ((ti.CurrentPermissions & (uint)PermissionMask.Modify) != 0) 403 if ((m_item.CurrentPermissions & (uint)PermissionMask.Modify) != 0)
413 OSSLError( 404 OSSLError(
414 String.Format("{0} permission denied. Script permissions error.", 405 String.Format("{0} permission denied. Script permissions error.",
415 function)); 406 function));
@@ -1190,7 +1181,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1190 CheckThreatLevel(ThreatLevel.High, "osSetStateEvents"); 1181 CheckThreatLevel(ThreatLevel.High, "osSetStateEvents");
1191 m_host.AddScriptLPS(1); 1182 m_host.AddScriptLPS(1);
1192 1183
1193 m_host.SetScriptEvents(m_itemID, events); 1184 m_host.SetScriptEvents(m_item.ItemID, events);
1194 } 1185 }
1195 1186
1196 public void osSetRegionWaterHeight(double height) 1187 public void osSetRegionWaterHeight(double height)