[Opensim-dev] Proposed feature addition to OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs (patch included)
James Stallings II
james.stallings at gmail.com
Tue May 31 01:45:25 UTC 2011
New mantis on the site with a unified diff, my apologies do not have the url
on hand atm; comments are not only welcome but solicited XD
Thanks!
James
On Mon, May 30, 2011 at 5:20 PM, Justin Clark-Casey <
jjustincc at googlemail.com> wrote:
> 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
> _______________________________________________
> Opensim-dev mailing list
> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-dev/attachments/20110530/0561638d/attachment-0001.html>
More information about the Opensim-dev
mailing list