[Opensim-dev] Proposed feature addition to OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs (patch included)

Melanie melanie at t-data.com
Sat May 28 01:08:52 UTC 2011


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> 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> 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>> 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>>
>>>>
>>>>    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> 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
>>>> 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
>>
> 
> 
> 
> 
> 
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev



More information about the Opensim-dev mailing list