From b098572525a73fce0743087a272eac84336c4867 Mon Sep 17 00:00:00 2001 From: Melanie Date: Thu, 5 Nov 2009 16:46:39 +0000 Subject: Remove a spammy debug message from friends list check in the perms module. Replace the integer compares with proper bitflags checking from libOMV. Friends rights are now functional. --- .../World/Permissions/PermissionsModule.cs | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) (limited to 'OpenSim/Region/CoreModules') diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index effe1f0..f7675f4 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs @@ -484,26 +484,8 @@ namespace OpenSim.Region.CoreModules.World.Permissions List profile = m_scene.CommsManager.GetUserFriendList(user); foreach (FriendListItem item in profile) { - m_log.Warn("IsFriendWithPerms called" + item.FriendPerms.ToString()); - if(item.Friend == objectOwner) - { -// if (item.FriendPerms == 3) -// { -// return true; -// } -// if (item.FriendPerms == 4) -// { -// return true; -// } -// if (item.FriendPerms == 5) -// { -// return true; -// } -// if (item.FriendPerms == 7) -// { -// return true; -// } - } + if(item.Friend == objectOwner && (item.FriendPerms & (uint)FriendRights.CanModifyObjects) != 0) + return true; } return false; } -- cgit v1.1 From ec0d5b408adad5c806cad7b9cbce3ca37069dcaf Mon Sep 17 00:00:00 2001 From: Melanie Date: Thu, 5 Nov 2009 17:29:52 +0000 Subject: Change the permissions module to use the friend list cache already in the friends module instead of requesting the entire friends list over the network each time a prim is touched. --- .../Region/CoreModules/Avatar/Friends/FriendsModule.cs | 12 ++++++++++++ .../CoreModules/World/Permissions/PermissionsModule.cs | 17 +++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/CoreModules') diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs index c6fd72e..bb4e032 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs @@ -1114,6 +1114,18 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends { ((Scene)remoteClient.Scene).CommsManager.UpdateUserFriendPerms(requester, target, (uint)rights); } + + public List GetUserFriends(UUID agentID) + { + List fl; + lock (m_friendLists) + { + fl = (List)m_friendLists.Get(agentID.ToString(), + m_initialScene.GetFriendList); + } + + return fl; + } } #endregion } diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index f7675f4..c790624 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs @@ -144,6 +144,8 @@ namespace OpenSim.Region.CoreModules.World.Permissions private Dictionary GrantVB = new Dictionary(); private Dictionary GrantJS = new Dictionary(); private Dictionary GrantYP = new Dictionary(); + private IFriendsModule m_friendsModule = null; + #endregion #region IRegionModule Members @@ -363,6 +365,12 @@ namespace OpenSim.Region.CoreModules.World.Permissions public void PostInitialise() { + m_friendsModule = m_scene.RequestModuleInterface(); + + if (m_friendsModule == null) + m_log.Error("[PERMISSIONS]: Friends module not found, friend permissions will not work"); + else + m_log.Info("[PERMISSIONS]: Friends module found, friend permissions enabled"); } public void Close() @@ -479,9 +487,14 @@ namespace OpenSim.Region.CoreModules.World.Permissions protected bool IsFriendWithPerms(UUID user,UUID objectOwner) { - if (user == UUID.Zero) return false; + if (user == UUID.Zero) + return false; + + if (m_friendsModule == null) + return false; + + List profile = m_friendsModule.GetUserFriends(user); - List profile = m_scene.CommsManager.GetUserFriendList(user); foreach (FriendListItem item in profile) { if(item.Friend == objectOwner && (item.FriendPerms & (uint)FriendRights.CanModifyObjects) != 0) -- cgit v1.1