diff options
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.cs | 31 |
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) |