diff options
author | Diva Canto | 2013-07-24 11:23:19 -0700 |
---|---|---|
committer | Diva Canto | 2013-07-24 11:25:41 -0700 |
commit | e103e34f1d17d218c55ebb1ff19450c018cf73b2 (patch) | |
tree | 0ee3e4b201fd85d03f944af3190dd2c9f11bf4a3 /OpenSim/Region/Framework | |
parent | Decreased the time of group cache to 1 min, because it was getting on my nerv... (diff) | |
download | opensim-SC_OLD-e103e34f1d17d218c55ebb1ff19450c018cf73b2.zip opensim-SC_OLD-e103e34f1d17d218c55ebb1ff19450c018cf73b2.tar.gz opensim-SC_OLD-e103e34f1d17d218c55ebb1ff19450c018cf73b2.tar.bz2 opensim-SC_OLD-e103e34f1d17d218c55ebb1ff19450c018cf73b2.tar.xz |
Added config var that we all thought was already there: see_into_region. (Note: different from the defunct see_into_neighboring_sim, which used to control the process from the other end). This enables child agents in neighbors for which the root agent doesn't have permission to be in.
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 79 |
1 files changed, 45 insertions, 34 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 9cfe869..e443c1d 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -230,6 +230,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
230 | 230 | ||
231 | public int MaxUndoCount { get; set; } | 231 | public int MaxUndoCount { get; set; } |
232 | 232 | ||
233 | public bool SeeIntoRegion { get; set; } | ||
234 | |||
233 | // Using this for RegionReady module to prevent LoginsDisabled from changing under our feet; | 235 | // Using this for RegionReady module to prevent LoginsDisabled from changing under our feet; |
234 | public bool LoginLock = false; | 236 | public bool LoginLock = false; |
235 | 237 | ||
@@ -839,6 +841,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
839 | //Animation states | 841 | //Animation states |
840 | m_useFlySlow = startupConfig.GetBoolean("enableflyslow", false); | 842 | m_useFlySlow = startupConfig.GetBoolean("enableflyslow", false); |
841 | 843 | ||
844 | SeeIntoRegion = startupConfig.GetBoolean("see_into_region", true); | ||
845 | |||
842 | MaxUndoCount = startupConfig.GetInt("MaxPrimUndos", 20); | 846 | MaxUndoCount = startupConfig.GetInt("MaxPrimUndos", 20); |
843 | 847 | ||
844 | PhysicalPrims = startupConfig.GetBoolean("physical_prim", PhysicalPrims); | 848 | PhysicalPrims = startupConfig.GetBoolean("physical_prim", PhysicalPrims); |
@@ -4010,51 +4014,58 @@ namespace OpenSim.Region.Framework.Scenes | |||
4010 | m_log.ErrorFormat("[CONNECTION BEGIN]: Estate Settings is null!"); | 4014 | m_log.ErrorFormat("[CONNECTION BEGIN]: Estate Settings is null!"); |
4011 | } | 4015 | } |
4012 | 4016 | ||
4013 | List<UUID> agentGroups = new List<UUID>(); | 4017 | // We only test the things below when we want to cut off |
4014 | 4018 | // child agents from being present in the scene for which their root | |
4015 | if (m_groupsModule != null) | 4019 | // agent isn't allowed. Otherwise, we allow child agents. The test for |
4020 | // the root is done elsewhere (QueryAccess) | ||
4021 | if (!SeeIntoRegion) | ||
4016 | { | 4022 | { |
4017 | GroupMembershipData[] GroupMembership = m_groupsModule.GetMembershipData(agent.AgentID); | 4023 | List<UUID> agentGroups = new List<UUID>(); |
4018 | 4024 | ||
4019 | if (GroupMembership != null) | 4025 | if (m_groupsModule != null) |
4020 | { | ||
4021 | for (int i = 0; i < GroupMembership.Length; i++) | ||
4022 | agentGroups.Add(GroupMembership[i].GroupID); | ||
4023 | } | ||
4024 | else | ||
4025 | { | 4026 | { |
4026 | m_log.ErrorFormat("[CONNECTION BEGIN]: GroupMembership is null!"); | 4027 | GroupMembershipData[] GroupMembership = m_groupsModule.GetMembershipData(agent.AgentID); |
4028 | |||
4029 | if (GroupMembership != null) | ||
4030 | { | ||
4031 | for (int i = 0; i < GroupMembership.Length; i++) | ||
4032 | agentGroups.Add(GroupMembership[i].GroupID); | ||
4033 | } | ||
4034 | else | ||
4035 | { | ||
4036 | m_log.ErrorFormat("[CONNECTION BEGIN]: GroupMembership is null!"); | ||
4037 | } | ||
4027 | } | 4038 | } |
4028 | } | ||
4029 | 4039 | ||
4030 | bool groupAccess = false; | 4040 | bool groupAccess = false; |
4031 | UUID[] estateGroups = RegionInfo.EstateSettings.EstateGroups; | 4041 | UUID[] estateGroups = RegionInfo.EstateSettings.EstateGroups; |
4032 | 4042 | ||
4033 | if (estateGroups != null) | 4043 | if (estateGroups != null) |
4034 | { | ||
4035 | foreach (UUID group in estateGroups) | ||
4036 | { | 4044 | { |
4037 | if (agentGroups.Contains(group)) | 4045 | foreach (UUID group in estateGroups) |
4038 | { | 4046 | { |
4039 | groupAccess = true; | 4047 | if (agentGroups.Contains(group)) |
4040 | break; | 4048 | { |
4049 | groupAccess = true; | ||
4050 | break; | ||
4051 | } | ||
4041 | } | 4052 | } |
4042 | } | 4053 | } |
4043 | } | 4054 | else |
4044 | else | 4055 | { |
4045 | { | 4056 | m_log.ErrorFormat("[CONNECTION BEGIN]: EstateGroups is null!"); |
4046 | m_log.ErrorFormat("[CONNECTION BEGIN]: EstateGroups is null!"); | 4057 | } |
4047 | } | ||
4048 | 4058 | ||
4049 | if (!RegionInfo.EstateSettings.PublicAccess && | 4059 | if (!RegionInfo.EstateSettings.PublicAccess && |
4050 | !RegionInfo.EstateSettings.HasAccess(agent.AgentID) && | 4060 | !RegionInfo.EstateSettings.HasAccess(agent.AgentID) && |
4051 | !groupAccess) | 4061 | !groupAccess) |
4052 | { | 4062 | { |
4053 | m_log.WarnFormat("[CONNECTION BEGIN]: Denied access to: {0} ({1} {2}) at {3} because the user does not have access to the estate", | 4063 | m_log.WarnFormat("[CONNECTION BEGIN]: Denied access to: {0} ({1} {2}) at {3} because the user does not have access to the estate", |
4054 | agent.AgentID, agent.firstname, agent.lastname, RegionInfo.RegionName); | 4064 | agent.AgentID, agent.firstname, agent.lastname, RegionInfo.RegionName); |
4055 | reason = String.Format("Denied access to private region {0}: You are not on the access list for that region.", | 4065 | reason = String.Format("Denied access to private region {0}: You are not on the access list for that region.", |
4056 | RegionInfo.RegionName); | 4066 | RegionInfo.RegionName); |
4057 | return false; | 4067 | return false; |
4068 | } | ||
4058 | } | 4069 | } |
4059 | 4070 | ||
4060 | // TODO: estate/region settings are not properly hooked up | 4071 | // TODO: estate/region settings are not properly hooked up |