[Opensim-dev] Proposed feature addition to OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs (patch included)
Justin Clark-Casey
jjustincc at googlemail.com
Mon May 30 22:20:27 UTC 2011
Please could you put this patch into a mantis now. There are some comments that I need to make on it. Thanks.
On 28/05/11 02:37, James Stallings II wrote:
> Mel, Justin,
>
> Here is the file I produced with the git show <commit id> <file> command, untouched.
>
> When will I ever learn LOL
>
> if this is the right stuff I'll get it into mantis at once.
>
>
>
> commit dd47b8b94e74a8ec793196ce7f3133565bc300bb
> Author: James Stallings aka Hiro Protagonist <james.stallings at gmail.com <mailto:james.stallings at gmail.com>>
> Date: Fri May 27 19:57:51 2011 -0500
>
> Add functionality to GodMode that allows the operator to view 'hidden' groups in profile - Thanks BlueWall and Dan
> Banner for all your assistance
>
> diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
> b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
> index 1c791b9..05223e0 100644
> --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
> +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
> @@ -1231,20 +1231,36 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
> List<GroupMembershipData> membershipData = m_groupData.GetAgentGroupMemberships(requestingClient.AgentId,
> dataForAgentID);
> GroupMembershipData[] membershipArray;
> - if (requestingClient.AgentId != dataForAgentID)
> - {
> + // c_scene and property accessor 'is_god' are in support of the opertions to bypass 'hidden' group
> attributes for
> + // those with a GodLike aspect.
> + Scene c_scene = (Scene) requestingClient.Scene;
> + bool is_god = c_scene.Permissions.IsGod(requestingClient.AgentId);
> +
> + if(is_god) {
> Predicate<GroupMembershipData> showInProfile = delegate(GroupMembershipData membership)
> {
> return membership.ListInProfile;
> };
> - membershipArray = membershipData.FindAll(showInProfile).ToArray();
> + membershipArray = membershipData.ToArray();
> }
> else
> {
> - membershipArray = membershipData.ToArray();
> - }
> + if (requestingClient.AgentId != dataForAgentID)
> + {
> + Predicate<GroupMembershipData> showInProfile = delegate(GroupMembershipData membership)
> + {
> + return membership.ListInProfile;
> + };
> +
> + membershipArray = membershipData.FindAll(showInProfile).ToArray();
> + }
> + else
> + {
> + membershipArray = membershipData.ToArray();
> + }
> + }
> if (m_debugEnabled)
> {
> m_log.InfoFormat("[GROUPS]: Get group membership information for {0} requested by {1}",
> dataForAgentID, requestingClient.AgentId);
> @@ -1257,6 +1273,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
> return membershipArray;
> }
> +
> private void SendAgentDataUpdate(IClientAPI remoteClient, UUID dataForAgentID, UUID activeGroupID, string
> activeGroupName, ulong activeGroupPowers, string activeGroupTitle)
> {
> if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called",
> System.Reflection.MethodBase.GetCurrentMethod().Name);
>
>
>
>
>
> Cheers and much thanks :)
>
> James
>
>
>
> On Fri, May 27, 2011 at 8:08 PM, Melanie <melanie at t-data.com <mailto:melanie at t-data.com>> wrote:
>
> This patch can be applied but is without author info. Maybe you
> removed the author info lines?
>
> This is, however, a proper udiff. Thanks.
>
> Melanie
>
> On 28/05/2011 03:07, James Stallings II wrote:
> > Justin,
> >
> > I'm actually using a couple of repos locally, so it was fairly simple to
> > reset one to a point just before where I was working and simply update that
> > commit with my final changes, thus taking the failed work (and the patch to
> > the patch) out of the loop.
> >
> > As per your secondary instructions in skype, I used git show <commit ID>
> > <file> to produce the following patch for
> > OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs:
> >
> > --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
> > +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
> > @@ -1231,20 +1231,36 @@ namespace
> > OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
> > List<GroupMembershipData> membershipData =
> > m_groupData.GetAgentGroupMemberships(requestingClient.AgentId,
> > dataForAgentID);
> > GroupMembershipData[] membershipArray;
> >
> > - if (requestingClient.AgentId != dataForAgentID)
> > - {
> > + // c_scene and property accessor 'is_god' are in support of
> > the opertions to bypass 'hidden' group attributes for
> > + // those with a GodLike aspect.
> > + Scene c_scene = (Scene) requestingClient.Scene;
> > + bool is_god =
> > c_scene.Permissions.IsGod(requestingClient.AgentId);
> > +
> > + if(is_god) {
> > Predicate<GroupMembershipData> showInProfile =
> > delegate(GroupMembershipData membership)
> > {
> > return membership.ListInProfile;
> > };
> >
> > - membershipArray =
> > membershipData.FindAll(showInProfile).ToArray();
> > + membershipArray = membershipData.ToArray();
> > }
> > else
> > {
> > - membershipArray = membershipData.ToArray();
> > - }
> >
> > + if (requestingClient.AgentId != dataForAgentID)
> > + {
> > + Predicate<GroupMembershipData> showInProfile =
> > delegate(GroupMembershipData membership)
> > + {
> > + return membership.ListInProfile;
> > + };
> > +
> > + membershipArray =
> > membershipData.FindAll(showInProfile).ToArray();
> > + }
> > + else
> > + {
> > + membershipArray = membershipData.ToArray();
> > + }
> > + }
> > if (m_debugEnabled)
> > {
> > m_log.InfoFormat("[GROUPS]: Get group membership
> > information for {0} requested by {1}", dataForAgentID,
> > requestingClient.AgentId);
> > @@ -1257,6 +1273,7 @@ namespace
> > OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
> > return membershipArray;
> > }
> >
> > +
> > private void SendAgentDataUpdate(IClientAPI remoteClient, UUID
> > dataForAgentID, UUID activeGroupID, string activeGroupName, ulong
> > activeGroupPowers, string activeGroupTitle)
> > {
> > if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called",
> > System.Reflection.MethodBase.GetCurrentMethod().Name);
> >
> >
> > Let me know if this is the right sort of thing. Note that I cut a few lines
> > from the top that git output to the patchfile, that I cut out. They may be
> > necessary Idk, but if so let me know and I'll save them before I make a
> > redux on the mantis site.
> >
> > Cheers Justin!
> > James
> >
> >
> >
> > On Fri, May 27, 2011 at 7:08 PM, James Stallings II <
> > james.stallings at gmail.com <mailto:james.stallings at gmail.com>> wrote:
> >
> >> Thanks Justin,
> >>
> >> Will do just shortly.
> >>
> >> Cheers!
> >> James
> >>
> >>
> >> On Fri, May 27, 2011 at 7:08 PM, Justin Clark-Casey <
> >> jjustincc at googlemail.com <mailto:jjustincc at googlemail.com>> wrote:
> >>
> >>> Yes, please could you consolidate the patches (from a brief look it
> >>> appears that later ones are now editing earlier ones) and attach to a
> >>> mantis, which should be in patch included state.
> >>>
> >>> The best way to generate a suitable patch is to use
> >>>
> >>> git am <commit uuid>^
> >>>
> >>> on the command line.
> >>>
> >>>
> >>> On 27/05/11 02:01, James Stallings II wrote:
> >>>
> >>>> Just a quick apology to the list for the oldskool diff, Melanie_T tells
> >>>> me I should use udiff, and next time, I will.
> >>>>
> >>>> Cheers!
> >>>> James/Hiro
> >>>>
> >>>> On Thu, May 26, 2011 at 6:19 PM, James Stallings II <
> >>>> james.stallings at gmail.com <mailto:james.stallings at gmail.com> <mailto:james.stallings at gmail.com
> <mailto:james.stallings at gmail.com>>> wrote:
> >>>>
> >>>> My apologies, but the previous code was completely ineffective on
> >>>> testing. I know, it should be tested before
> >>>> submission. Mea Culpa, it looked really good.
> >>>>
> >>>> This, however, actually works:
> >>>>
> >>>> 1103d1102
> >>>> <
> >>>> 1117,1125c1116,1125
> >>>> <
> >>>> < if (GetRequestingAgentID(remoteClient) !=
> >>>> dataForAgentID)
> >>>> < {
> >>>> < if (!membership.ListInProfile)
> >>>> < {
> >>>> < // If we're sending group info to remoteclient
> >>>> about another agent,
> >>>> < // filter out groups the other agent doesn't
> >>>> want to share.
> >>>> < continue;
> >>>> < }
> >>>> ---
> >>>> > if
> >>>> (!remoteClient.Scene.Permissions.IsGod(remoteClient.AgentID))
> >>>> > if (GetRequestingAgentID(remoteClient) !=
> >>>> dataForAgentID)
> >>>> > {
> >>>> > if (!membership.ListInProfile)
> >>>> > {
> >>>> > // If we're sending group info to
> >>>> remoteclient about another agent,
> >>>> > // filter out groups the other agent
> >>>> doesn't want to share.
> >>>> > continue;
> >>>> > }
> >>>> > }
> >>>> 1128d1127
> >>>> <
> >>>> 1237,1242c1236,1237
> >>>> < // c_scene and property accessor 'is_god' are in
> >>>> support of the opertions to bypass 'hidden' group
> >>>> attributes for
> >>>> < // those with a GodLike aspect.
> >>>> < Scene c_scene = (Scene) requestingClient.Scene;
> >>>> < bool is_god =
> >>>> c_scene.Permissions.IsGod(requestingClient.AgentId);
> >>>> <
> >>>> < if(is_god) {
> >>>> ---
> >>>> > if (requestingClient.AgentId != dataForAgentID)
> >>>> > {
> >>>> 1248c1243
> >>>> < membershipArray = membershipData.ToArray();
> >>>> ---
> >>>> > membershipArray =
> >>>> membershipData.FindAll(showInProfile).ToArray();
> >>>> 1252,1265c1247
> >>>> <
> >>>> < if (requestingClient.AgentId != dataForAgentID)
> >>>> < {
> >>>> < Predicate<GroupMembershipData> showInProfile =
> >>>> delegate(GroupMembershipData membership)
> >>>> < {
> >>>> < return membership.ListInProfile;
> >>>> < };
> >>>> <
> >>>> < membershipArray =
> >>>> membershipData.FindAll(showInProfile).ToArray();
> >>>> < }
> >>>> < else
> >>>> < {
> >>>> < membershipArray = membershipData.ToArray();
> >>>> < }
> >>>> ---
> >>>> > membershipArray = membershipData.ToArray();
> >>>> 1266a1249
> >>>> >
> >>>>
> >>>> On Thu, May 26, 2011 at 11:36 AM, James Stallings II <
> >>>> james.stallings at gmail.com <mailto:james.stallings at gmail.com> <mailto:james.stallings at gmail.com
> <mailto:james.stallings at gmail.com>>>
> >>>>
> >>>> wrote:
> >>>>
> >>>> Greetings, OpenSimulator developers :)
> >>>>
> >>>> I'm writing to propose the addition of certain functionality
> >>>> to
> >>>> OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs, to wit:
> >>>>
> >>>> Present 'Hidden' groups and other related group detail to agents
> >>>> requesting such iniformation via CAPs as have
> >>>> assumed a 'godlike' aspect, or in other words, have successfully
> >>>> activated the administrative functionality in
> >>>> the client.
> >>>>
> >>>> The changes to the substance of the code involve credits more than
> >>>> not; a diff is both attached and included for
> >>>> convenient review. A fork has been created on github at git://
> >>>> github.com/JamesStallings/opensim.git <http://github.com/JamesStallings/opensim.git>
> >>>> <http://github.com/JamesStallings/opensim.git> which contains the
> >>>> changes for convenience should contribution of
> >>>>
> >>>> source be accepted. I will also open a mantis on the topic for the
> >>>> sake of thoroughness and attach the diff there.
> >>>>
> >>>>
> >>>> Many thanks and cheers!
> >>>>
> >>>> James Stallings aka Hiro Protagonist
> >>>>
> >>>>
> >>>> Diff follows:
> >>>>
> >>>> 1103,1107d1102
> >>>> < // c_scene and property accessor 'is_god' are in
> >>>> support of the opertions to bypass 'hidden'
> >>>> group attributes for
> >>>> < // those with a GodLike aspect.
> >>>> < Scene c_scene = (Scene) remoteClient.Scene;
> >>>> < bool is_god =
> >>>> c_scene.Permissions.IsGod(remoteClient.AgentId);
> >>>> <
> >>>> 1121,1138c1116,1126
> >>>> < // bypass the 'hidden' attributes of groups for
> >>>> those who have
> >>>> < // a GodLike aspect
> >>>> < //
> >>>> < // Big shout out to Dan Banner for showing me his
> >>>> running proof-of-concept and endorsing this
> >>>> idea as meaningful work
> >>>> < // Another big shout out to BlueWall Slade for
> >>>> helping me chase down all the elements required to
> >>>> properly access
> >>>> < // Scene and IClientAPI properties. JS aka HP
> >>>> < if (!is_god)
> >>>> < {
> >>>> < if (GetRequestingAgentID(remoteClient) !=
> >>>> dataForAgentID)
> >>>> < {
> >>>> < if (!membership.ListInProfile)
> >>>> < {
> >>>> < // If we're sending group info to remoteclient
> >>>> about another agent,
> >>>> < // filter out groups the other agent doesn't want to
> >>>> share.
> >>>> < continue;
> >>>> < }
> >>>> < }
> >>>> < }
> >>>> ---
> >>>> > if
> >>>> (!remoteClient.Scene.Permissions.IsGod(remoteClient.AgentID))
> >>>> > if (GetRequestingAgentID(remoteClient) !=
> >>>> dataForAgentID)
> >>>> > {
> >>>> > if (!membership.ListInProfile)
> >>>> > {
> >>>> > // If we're sending group info to
> >>>> remoteclient about another agent,
> >>>> > // filter out groups the other
> >>>> agent doesn't want to share.
> >>>> > continue;
> >>>> > }
> >>>> > }
> >>>> > }
> >>>>
> >>>>
> >>>> --
> >>>> ===================================
> >>>> http://simhost.com http://osgrid.org
> >>>> http://twitter.com/jstallings2
> >>>> http://www.linkedin.com/pub/5/770/a49
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> ===================================
> >>>> http://simhost.com http://osgrid.org
> >>>> http://twitter.com/jstallings2
> >>>> http://www.linkedin.com/pub/5/770/a49
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> ===================================
> >>>> http://simhost.com http://osgrid.org
> >>>> http://twitter.com/jstallings2
> >>>> http://www.linkedin.com/pub/5/770/a49
> >>>>
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> Opensim-dev mailing list
> >>>> Opensim-dev at lists.berlios.de <mailto:Opensim-dev at lists.berlios.de>
> >>>> https://lists.berlios.de/mailman/listinfo/opensim-dev
> >>>>
> >>>
> >>>
> >>> --
> >>> Justin Clark-Casey (justincc)
> >>> http://justincc.org/blog
> >>> http://twitter.com/justincc
> >>> _______________________________________________
> >>> Opensim-dev mailing list
> >>> Opensim-dev at lists.berlios.de <mailto:Opensim-dev at lists.berlios.de>
> >>> https://lists.berlios.de/mailman/listinfo/opensim-dev
> >>>
> >>
> >>
> >>
> >> --
> >> ===================================
> >> http://simhost.com http://osgrid.org
> >> http://twitter.com/jstallings2
> >> http://www.linkedin.com/pub/5/770/a49
> >>
> >
> >
> >
> >
> >
> > _______________________________________________
> > Opensim-dev mailing list
> > Opensim-dev at lists.berlios.de <mailto:Opensim-dev at lists.berlios.de>
> > https://lists.berlios.de/mailman/listinfo/opensim-dev
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de <mailto:Opensim-dev at lists.berlios.de>
> https://lists.berlios.de/mailman/listinfo/opensim-dev
>
>
>
>
> --
> ===================================
> http://simhost.com http://osgrid.org
> http://twitter.com/jstallings2
> http://www.linkedin.com/pub/5/770/a49
>
>
>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
--
Justin Clark-Casey (justincc)
http://justincc.org/blog
http://twitter.com/justincc
More information about the Opensim-dev
mailing list