[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