mirror of
https://github.com/opensim/opensim.git
synced 2026-08-07 09:45:47 +08:00
a few changes on ban checks, thx Tampa
This commit is contained in:
@@ -726,30 +726,44 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
if (m_estateSettings.TaxFree) // region access control only
|
||||
return false;
|
||||
|
||||
if (IsBannedFromLand(avatar))
|
||||
{
|
||||
if (m_scenePermissions.IsAdministrator(avatar))
|
||||
return false;
|
||||
|
||||
if (m_estateSettings.IsEstateManagerOrOwner(avatar))
|
||||
return false;
|
||||
|
||||
if (avatar.Equals(LandData.OwnerID))
|
||||
return false;
|
||||
|
||||
if (IsBannedFromLand_inner(avatar))
|
||||
return true;
|
||||
}
|
||||
else if (IsRestrictedFromLand(avatar))
|
||||
{
|
||||
|
||||
if (IsRestrictedFromLand_inner(avatar))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool CanBeOnThisLand(UUID avatar, float posHeight)
|
||||
{
|
||||
if (m_estateSettings.TaxFree) // region access control only
|
||||
return true;
|
||||
if (m_estateSettings.TaxFree) // estate access only
|
||||
return false;
|
||||
|
||||
if (posHeight < m_scene.LandChannel.BanLineSafeHeight && IsBannedFromLand(avatar))
|
||||
{
|
||||
if (m_scenePermissions.IsAdministrator(avatar))
|
||||
return false;
|
||||
}
|
||||
else if (IsRestrictedFromLand(avatar))
|
||||
{
|
||||
|
||||
if (m_estateSettings.IsEstateManagerOrOwner(avatar))
|
||||
return false;
|
||||
}
|
||||
|
||||
if (avatar.Equals(LandData.OwnerID))
|
||||
return false;
|
||||
|
||||
if (posHeight < m_scene.LandChannel.BanLineSafeHeight && IsBannedFromLand_inner(avatar))
|
||||
return false;
|
||||
|
||||
else if (IsRestrictedFromLand_inner(avatar))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -808,6 +822,11 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
if (avatar.Equals(LandData.OwnerID))
|
||||
return false;
|
||||
|
||||
return IsBannedFromLand_inner(avatar);
|
||||
}
|
||||
|
||||
private bool IsBannedFromLand_inner(UUID avatar)
|
||||
{
|
||||
if ((LandData.Flags & (uint) ParcelFlags.UseBanList) > 0)
|
||||
{
|
||||
int now = Util.UnixTimeSinceEpoch();
|
||||
@@ -825,6 +844,20 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
if (m_estateSettings.TaxFree) // estate access only
|
||||
return false;
|
||||
|
||||
if (m_scenePermissions.IsAdministrator(avatar))
|
||||
return false;
|
||||
|
||||
if (m_estateSettings.IsEstateManagerOrOwner(avatar))
|
||||
return false;
|
||||
|
||||
if (avatar.Equals(LandData.OwnerID))
|
||||
return false;
|
||||
|
||||
return IsRestrictedFromLand_inner(avatar);
|
||||
}
|
||||
|
||||
private bool IsRestrictedFromLand_inner(UUID avatar)
|
||||
{
|
||||
if ((LandData.Flags & (uint) ParcelFlags.UseAccessList) == 0)
|
||||
{
|
||||
bool adults = m_estateSettings.DoDenyMinors &&
|
||||
@@ -851,15 +884,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
return false;
|
||||
}
|
||||
|
||||
if (m_scenePermissions.IsAdministrator(avatar))
|
||||
return false;
|
||||
|
||||
if (m_estateSettings.IsEstateManagerOrOwner(avatar))
|
||||
return false;
|
||||
|
||||
if (avatar.Equals(LandData.OwnerID))
|
||||
return false;
|
||||
|
||||
if (HasGroupAccess(avatar))
|
||||
return false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user