[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 04:34:25 UTC 2011
Heh, Justin
Went to find the URL on mantis for you with the new diff and damned if I can
find it; I'll close the old one and submit a new one first thing in the
morning.
Cheers
James
On Mon, May 30, 2011 at 8:45 PM, James Stallings II <
james.stallings at gmail.com> wrote:
> 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
>
--
===================================
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/f0c30f05/attachment-0001.html>
More information about the Opensim-dev
mailing list