aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World
diff options
context:
space:
mode:
authorUbitUmarov2017-01-21 10:22:00 +0000
committerUbitUmarov2017-01-21 10:22:00 +0000
commit186f0b73cd9c3005fc75a9925bc65902d26d497b (patch)
tree6fa51e4ffa9be113268abba4ecff596c8fe04dbc /OpenSim/Region/CoreModules/World
parentfix llScriptDanger(); don't call old ScriptDamage on ossl health functions (diff)
downloadopensim-SC_OLD-186f0b73cd9c3005fc75a9925bc65902d26d497b.zip
opensim-SC_OLD-186f0b73cd9c3005fc75a9925bc65902d26d497b.tar.gz
opensim-SC_OLD-186f0b73cd9c3005fc75a9925bc65902d26d497b.tar.bz2
opensim-SC_OLD-186f0b73cd9c3005fc75a9925bc65902d26d497b.tar.xz
add/fix CanRunScript
Diffstat (limited to 'OpenSim/Region/CoreModules/World')
-rw-r--r--OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs32
1 files changed, 30 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
index 59da1c2..b012f5f 100644
--- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
@@ -1612,12 +1612,40 @@ namespace OpenSim.Region.CoreModules.World.Permissions
1612 return IsAdministrator(user); 1612 return IsAdministrator(user);
1613 } 1613 }
1614 1614
1615 private bool CanRunScript(UUID script, UUID objectID, UUID user, Scene scene) 1615 private bool CanRunScript(TaskInventoryItem scriptitem, SceneObjectPart part)
1616 { 1616 {
1617 DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); 1617 DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
1618 if (m_bypassPermissions) return m_bypassPermissionsValue; 1618 if (m_bypassPermissions) return m_bypassPermissionsValue;
1619 1619
1620 return true; 1620 if(scriptitem == null || part == null)
1621 return false;
1622
1623 SceneObjectGroup sog = part.ParentGroup;
1624 if(sog == null)
1625 return false;
1626
1627 Vector3 pos = sog.AbsolutePosition;
1628 ILandObject parcel = m_scene.LandChannel.GetLandObject(pos.X, pos.Y);
1629 if (parcel == null)
1630 return false;
1631
1632 LandData ldata = parcel.LandData;
1633 if(ldata == null)
1634 return false;
1635
1636 uint lflags = ldata.Flags;
1637
1638 if ((lflags & (uint)ParcelFlags.AllowOtherScripts) != 0)
1639 return true;
1640
1641 if ((part.OwnerID == ldata.OwnerID))
1642 return true;
1643
1644 if (((lflags & (uint)ParcelFlags.AllowGroupScripts) != 0)
1645 && (ldata.GroupID != UUID.Zero) && (ldata.GroupID == part.GroupID))
1646 return true;
1647
1648 return GenericEstatePermission(part.OwnerID);
1621 } 1649 }
1622 1650
1623 private bool CanSellParcel(UUID user, ILandObject parcel, Scene scene) 1651 private bool CanSellParcel(UUID user, ILandObject parcel, Scene scene)