Fix teleport/telehub issue:

Fix bug that allowed only login access to regions with mis-configured telehubs. Administrators now have teleport access when there exists a mis-configured telehub in the region. Estate owners are now placed at region center in the absence of spawnpoints instead of being denied access. Grid Gods are unrestricted. All others are denied access to the region until spawnpoints are assigned to the telehub object.
0.7.4-extended
BlueWall 2013-02-10 13:01:33 -05:00 committed by Justin Clark-Casey (justincc)
parent 5a2895977a
commit 2be88cd46c
2 changed files with 17 additions and 3 deletions

View File

@ -5459,10 +5459,15 @@ namespace OpenSim.Region.Framework.Scenes
} }
if (banned) if (banned)
{
if(Permissions.IsAdministrator(agentID) == false || Permissions.IsGridGod(agentID) == false)
{ {
reason = "No suitable landing point found"; reason = "No suitable landing point found";
return false; return false;
} }
reason = "Administrative access only";
return true;
}
} }
} }
} }

View File

@ -3880,6 +3880,7 @@ namespace OpenSim.Region.Framework.Scenes
(m_teleportFlags & TeleportFlags.ViaLocation) != 0 || (m_teleportFlags & TeleportFlags.ViaLocation) != 0 ||
(m_teleportFlags & Constants.TeleportFlags.ViaHGLogin) != 0) (m_teleportFlags & Constants.TeleportFlags.ViaHGLogin) != 0)
{ {
if (GodLevel < 200 && if (GodLevel < 200 &&
((!m_scene.Permissions.IsGod(m_uuid) && ((!m_scene.Permissions.IsGod(m_uuid) &&
!m_scene.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_uuid)) || !m_scene.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_uuid)) ||
@ -3888,7 +3889,14 @@ namespace OpenSim.Region.Framework.Scenes
{ {
SpawnPoint[] spawnPoints = m_scene.RegionInfo.RegionSettings.SpawnPoints().ToArray(); SpawnPoint[] spawnPoints = m_scene.RegionInfo.RegionSettings.SpawnPoints().ToArray();
if (spawnPoints.Length == 0) if (spawnPoints.Length == 0)
{
if(m_scene.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_uuid))
{
pos.X = 128.0f;
pos.Y = 128.0f;
}
return; return;
}
int index; int index;
bool selected = false; bool selected = false;
@ -3908,7 +3916,8 @@ namespace OpenSim.Region.Framework.Scenes
// SpawnPoint sp = spawnPoints[index]; // SpawnPoint sp = spawnPoints[index];
ILandObject land = m_scene.LandChannel.GetLandObject(spawnPosition.X, spawnPosition.Y); ILandObject land = m_scene.LandChannel.GetLandObject(spawnPosition.X, spawnPosition.Y);
if (land == null || land.IsEitherBannedOrRestricted(UUID)) if (spawnPoints.Length == 0)
return; if (land == null || land.IsEitherBannedOrRestricted(UUID))
selected = false; selected = false;
else else
selected = true; selected = true;