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.
user_profiles
BlueWall 2013-02-10 13:01:33 -05:00
parent 0a297a0e52
commit adedd70c35
2 changed files with 17 additions and 3 deletions

View File

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

View File

@ -4021,6 +4021,7 @@ namespace OpenSim.Region.Framework.Scenes
(m_teleportFlags & TeleportFlags.ViaLocation) != 0 ||
(m_teleportFlags & Constants.TeleportFlags.ViaHGLogin) != 0)
{
if (GodLevel < 200 &&
((!m_scene.Permissions.IsGod(m_uuid) &&
!m_scene.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_uuid)) ||
@ -4029,7 +4030,14 @@ namespace OpenSim.Region.Framework.Scenes
{
SpawnPoint[] spawnPoints = m_scene.RegionInfo.RegionSettings.SpawnPoints().ToArray();
if (spawnPoints.Length == 0)
{
if(m_scene.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_uuid))
{
pos.X = 128.0f;
pos.Y = 128.0f;
}
return;
}
int index;
bool selected = false;
@ -4049,7 +4057,8 @@ namespace OpenSim.Region.Framework.Scenes
// SpawnPoint sp = spawnPoints[index];
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;
else
selected = true;