[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 12:59:54 UTC 2011
Here ya go mate:
http://opensimulator.org/mantis/view.php?id=5507
<http://opensimulator.org/mantis/view.php?id=5507>Cheers!
James
On Mon, May 30, 2011 at 11:34 PM, James Stallings II <
james.stallings at gmail.com> wrote:
> 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
>
--
===================================
http://simhost.com
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/20110531/e6af8dd4/attachment-0001.html>
More information about the Opensim-dev
mailing list