diff options
author | BlueWall | 2013-02-10 13:01:33 -0500 |
---|---|---|
committer | BlueWall | 2013-02-10 13:01:33 -0500 |
commit | adedd70c352581bc447452f5835c10853c77bea8 (patch) | |
tree | 64a144c31fb0bec3828562b049dc0fdd306d0ec4 /OpenSim/Region/Framework/Scenes | |
parent | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff) | |
download | opensim-SC_OLD-adedd70c352581bc447452f5835c10853c77bea8.zip opensim-SC_OLD-adedd70c352581bc447452f5835c10853c77bea8.tar.gz opensim-SC_OLD-adedd70c352581bc447452f5835c10853c77bea8.tar.bz2 opensim-SC_OLD-adedd70c352581bc447452f5835c10853c77bea8.tar.xz |
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.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 9 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 11 |
2 files changed, 17 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index de3978c..9b17b7f 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -5506,8 +5506,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
5506 | 5506 | ||
5507 | if (banned) | 5507 | if (banned) |
5508 | { | 5508 | { |
5509 | reason = "No suitable landing point found"; | 5509 | if(Permissions.IsAdministrator(agentID) == false || Permissions.IsGridGod(agentID) == false) |
5510 | return false; | 5510 | { |
5511 | reason = "No suitable landing point found"; | ||
5512 | return false; | ||
5513 | } | ||
5514 | reason = "Administrative access only"; | ||
5515 | return true; | ||
5511 | } | 5516 | } |
5512 | } | 5517 | } |
5513 | } | 5518 | } |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 6e41774..30bd715 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -4021,6 +4021,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4021 | (m_teleportFlags & TeleportFlags.ViaLocation) != 0 || | 4021 | (m_teleportFlags & TeleportFlags.ViaLocation) != 0 || |
4022 | (m_teleportFlags & Constants.TeleportFlags.ViaHGLogin) != 0) | 4022 | (m_teleportFlags & Constants.TeleportFlags.ViaHGLogin) != 0) |
4023 | { | 4023 | { |
4024 | |||
4024 | if (GodLevel < 200 && | 4025 | if (GodLevel < 200 && |
4025 | ((!m_scene.Permissions.IsGod(m_uuid) && | 4026 | ((!m_scene.Permissions.IsGod(m_uuid) && |
4026 | !m_scene.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_uuid)) || | 4027 | !m_scene.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_uuid)) || |
@@ -4029,7 +4030,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
4029 | { | 4030 | { |
4030 | SpawnPoint[] spawnPoints = m_scene.RegionInfo.RegionSettings.SpawnPoints().ToArray(); | 4031 | SpawnPoint[] spawnPoints = m_scene.RegionInfo.RegionSettings.SpawnPoints().ToArray(); |
4031 | if (spawnPoints.Length == 0) | 4032 | if (spawnPoints.Length == 0) |
4033 | { | ||
4034 | if(m_scene.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_uuid)) | ||
4035 | { | ||
4036 | pos.X = 128.0f; | ||
4037 | pos.Y = 128.0f; | ||
4038 | } | ||
4032 | return; | 4039 | return; |
4040 | } | ||
4033 | 4041 | ||
4034 | int index; | 4042 | int index; |
4035 | bool selected = false; | 4043 | bool selected = false; |
@@ -4049,7 +4057,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
4049 | // SpawnPoint sp = spawnPoints[index]; | 4057 | // SpawnPoint sp = spawnPoints[index]; |
4050 | 4058 | ||
4051 | ILandObject land = m_scene.LandChannel.GetLandObject(spawnPosition.X, spawnPosition.Y); | 4059 | ILandObject land = m_scene.LandChannel.GetLandObject(spawnPosition.X, spawnPosition.Y); |
4052 | if (land == null || land.IsEitherBannedOrRestricted(UUID)) | 4060 | if (spawnPoints.Length == 0) |
4061 | return; if (land == null || land.IsEitherBannedOrRestricted(UUID)) | ||
4053 | selected = false; | 4062 | selected = false; |
4054 | else | 4063 | else |
4055 | selected = true; | 4064 | selected = true; |