[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