public GroupMembershipData GetAgentGroupMembership(UUID requestingAgentID, UUID AgentID, UUID GroupID)
        {
            Hashtable param = new Hashtable();

            param["AgentID"] = AgentID.ToString();
            param["GroupID"] = GroupID.ToString();

            Hashtable respData = XmlRpcCall(requestingAgentID, "groups.getAgentGroupMembership", param);

            if (respData.Contains("error"))
            {
                return(null);
            }

            GroupMembershipData data = HashTableToGroupMembershipData(respData);

            return(data);
        }
Esempio n. 2
0
        public GroupMembershipData GetGroupMembershipData(UUID requestingAgentID, UUID GroupID, UUID AgentID)
        {
            GroupMembershipData GMD        = new GroupMembershipData();
            GroupRecord         record     = GetGroupRecord(requestingAgentID, GroupID, null);
            List <string>       Membership = data.Query(new string[] {
                "GroupID",
                "AgentID"
            }, new object[] {
                GroupID,
                AgentID
            }, "osgroupmembership", "AcceptNotices, Contribution, ListInProfile, SelectedRoleID");

            if (Membership.Count == 0)
            {
                return(null);
            }

            List <string> GroupRole = data.Query(new string[] { "GroupID", "RoleID" }, new object[] { GroupID, Membership[3] }, "osrole", "Title, Powers");

            if (GroupRole.Count == 0)
            {
                return(null);
            }
            GMD.AcceptNotices = int.Parse(Membership[0]) == 1;
            //TODO: Figure out what this is and its effects if false
            GMD.Active         = true;
            GMD.ActiveRole     = UUID.Parse(Membership[3]);
            GMD.AllowPublish   = record.AllowPublish;
            GMD.Charter        = record.Charter;
            GMD.Contribution   = int.Parse(Membership[1]);
            GMD.FounderID      = record.FounderID;
            GMD.GroupID        = record.GroupID;
            GMD.GroupName      = record.GroupName;
            GMD.GroupPicture   = record.GroupPicture;
            GMD.GroupPowers    = ulong.Parse(GroupRole[1]);
            GMD.GroupTitle     = GroupRole[0];
            GMD.ListInProfile  = int.Parse(Membership[2]) == 1;
            GMD.MaturePublish  = record.MaturePublish;
            GMD.MembershipFee  = record.MembershipFee;
            GMD.OpenEnrollment = record.OpenEnrollment;
            GMD.ShowInList     = record.ShowInList;

            return(GMD);
        }
Esempio n. 3
0
        private void OnNewClient(IClientAPI client)
        {
            // Subscribe to instant messages
            client.OnInstantMessage         += OnInstantMessage;
            client.OnAgentDataUpdateRequest += OnAgentDataUpdateRequest;
            client.OnUUIDGroupNameRequest   += HandleUUIDGroupNameRequest;
            lock (m_ClientMap)
            {
                if (!m_ClientMap.ContainsKey(client.AgentId))
                {
                    m_ClientMap.Add(client.AgentId, client);
                }
            }

            GroupMembershipData[] updateGroups = new GroupMembershipData[1];
            updateGroups[0] = osGroup;

            client.SendGroupMembership(updateGroups);
        }
Esempio n. 4
0
        public bool IsPlayerAMemberOf(UUID groupId, UserAccount ua)
        {
            if (!WaterWarsConstants.ENABLE_GROUPS)
            {
                return(true);
            }

            GroupMembershipData groupData = m_groupsModule.GetMembershipData(groupId, ua.PrincipalID);
            bool foundPlayer = groupData != null;

            if (foundPlayer)
            {
                m_log.InfoFormat(
                    "[WATER WARS]: Found player {0} in group {1} {2}",
                    ua.Name, groupData.GroupName, groupData.GroupID);
            }

            return(foundPlayer);
        }
        public bool AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, GroupMembershipDelegate d)
        {
            GroupMembershipData membership = d();

            if (membership == null)
            {
                return(false);
            }

            lock (m_Cache)
            {
                // first, remove everything! add a user is a heavy-duty op
                m_Cache.Clear();

                m_Cache.AddOrUpdate("active-" + AgentID.ToString(), membership, GROUPS_CACHE_TIMEOUT);
                m_Cache.AddOrUpdate("membership-" + AgentID.ToString() + "-" + GroupID.ToString(), membership, GROUPS_CACHE_TIMEOUT);
            }
            return(true);
        }
Esempio n. 6
0
        public GroupProfileData GetMemberGroupProfile(UUID requestingAgentID, UUID GroupID, UUID AgentID)
        {
            Hashtable param = new Hashtable();

            param["GroupID"] = GroupID.ToString();

            Hashtable respData = XmlRpcCall(requestingAgentID, "groups.getGroup", param);

            if (respData.Contains("error"))
            {
                // GroupProfileData is not nullable
                return(new GroupProfileData());
            }

            GroupMembershipData MemberInfo         = GetAgentGroupMembership(requestingAgentID, AgentID, GroupID);
            GroupProfileData    MemberGroupProfile = GroupProfileHashtableToGroupProfileData(respData);

            MemberGroupProfile.MemberTitle = MemberInfo.GroupTitle;
            MemberGroupProfile.PowersMask  = MemberInfo.GroupPowers;

            return(MemberGroupProfile);
        }
Esempio n. 7
0
 public override void FromOSD(OSDMap map)
 {
     AgentInfo = new IAgentInfo();
     AgentInfo.FromOSD((OSDMap)(map["AgentInfo"]));
     UserAccount = new UserAccount();
     UserAccount.FromOSD((OSDMap)(map["UserAccount"]));
     if (!map.ContainsKey("ActiveGroup"))
     {
         ActiveGroup = null;
     }
     else
     {
         ActiveGroup = new GroupMembershipData();
         ActiveGroup.FromOSD((OSDMap)(map["ActiveGroup"]));
     }
     GroupMemberships = ((OSDArray)map["GroupMemberships"]).ConvertAll <GroupMembershipData>((o) =>
     {
         GroupMembershipData group = new GroupMembershipData();
         group.FromOSD((OSDMap)o);
         return(group);
     });
 }
        private static GroupMembershipData HashTableToGroupMembershipData(Hashtable respData)
        {
            GroupMembershipData data = new GroupMembershipData
            {
                AcceptNotices = ((string)respData["AcceptNotices"] == "1"),
                Contribution  = int.Parse((string)respData["Contribution"]),
                ListInProfile = ((string)respData["ListInProfile"] == "1"),
                ActiveRole    = new UUID((string)respData["SelectedRoleID"]),
                GroupTitle    = (string)respData["Title"],
                GroupPowers   = ulong.Parse((string)respData["GroupPowers"]),
                GroupID       = new UUID((string)respData["GroupID"])
            };



            // Is this group the agent's active group


            UUID ActiveGroup = new UUID((string)respData["ActiveGroupID"]);

            data.Active = data.GroupID.Equals(ActiveGroup);

            data.AllowPublish = ((string)respData["AllowPublish"] == "1");
            if (respData["Charter"] != null)
            {
                data.Charter = (string)respData["Charter"];
            }
            data.FounderID      = new UUID((string)respData["FounderID"]);
            data.GroupID        = new UUID((string)respData["GroupID"]);
            data.GroupName      = (string)respData["GroupName"];
            data.GroupPicture   = new UUID((string)respData["InsigniaID"]);
            data.MaturePublish  = ((string)respData["MaturePublish"] == "1");
            data.MembershipFee  = int.Parse((string)respData["MembershipFee"]);
            data.OpenEnrollment = ((string)respData["OpenEnrollment"] == "1");
            data.ShowInList     = ((string)respData["ShowInList"] == "1");

            return(data);
        }
        public GroupProfileData GetGroupProfile(UUID requestingAgentID, UUID GroupID)
        {
            GroupProfileData profile = new GroupProfileData();

            GroupRecord groupInfo = GetGroupRecord(requestingAgentID, GroupID, null);

            if (groupInfo != null)
            {
                profile.AllowPublish         = groupInfo.AllowPublish;
                profile.Charter              = groupInfo.Charter;
                profile.FounderID            = groupInfo.FounderID;
                profile.GroupID              = GroupID;
                profile.GroupMembershipCount =
                    GetGroupMembers(requestingAgentID, GroupID).Count;
                profile.GroupRolesCount = GetGroupRoles(requestingAgentID, GroupID).Count;
                profile.InsigniaID      = groupInfo.GroupPicture;
                profile.MaturePublish   = groupInfo.MaturePublish;
                profile.MembershipFee   = groupInfo.MembershipFee;
                profile.Money           = 0; // TODO: Get this from the currency server?
                profile.Name            = groupInfo.GroupName;
                profile.OpenEnrollment  = groupInfo.OpenEnrollment;
                profile.OwnerRole       = groupInfo.OwnerRoleID;
                profile.ShowInList      = groupInfo.ShowInList;
            }

            GroupMembershipData memberInfo = GetAgentGroupMembership(requestingAgentID,
                                                                     requestingAgentID,
                                                                     GroupID);

            if (memberInfo != null)
            {
                profile.MemberTitle = memberInfo.GroupTitle;
                profile.PowersMask  = memberInfo.GroupPowers;
            }

            return(profile);
        }
        public List <GroupTitlesData> GetGroupTitles(UUID requestingAgentID, UUID GroupID)
        {
            List <GroupRolesData> agentRoles = GetAgentGroupRoles(requestingAgentID,
                                                                  requestingAgentID, GroupID);
            GroupMembershipData agentMembership = GetAgentGroupMembership(
                requestingAgentID, requestingAgentID, GroupID);

            List <GroupTitlesData> titles = new List <GroupTitlesData>();

            foreach (GroupRolesData role in agentRoles)
            {
                GroupTitlesData title = new GroupTitlesData {
                    Name = role.Title, UUID = role.RoleID
                };
                if (agentMembership != null)
                {
                    title.Selected = agentMembership.ActiveRole == role.RoleID;
                }

                titles.Add(title);
            }

            return(titles);
        }
        public GroupMembershipData GetGroupMembershipData(UUID requestingAgentID, UUID GroupID, UUID AgentID)
        {
            Dictionary<string, object> sendData = new Dictionary<string, object>();

            sendData["METHOD"] = "GetGroupMembershipData";
            sendData["requestingAgentID"] = requestingAgentID;
            sendData["GroupID"] = GroupID;
            sendData["AgentID"] = AgentID;

            string reqString = WebUtils.BuildXmlResponse(sendData);

            try
            {
                foreach (string m_ServerURI in m_ServerURIs)
                {
                    string reply = SynchronousRestFormsRequester.MakeRequest("POST",
                           m_ServerURI + "/auroradata",
                           reqString);
                    if (reply != string.Empty)
                    {
                        Dictionary<string, object> replyData = WebUtils.ParseXmlResponse(reply);

                        if (replyData != null)
                        {
                            Dictionary<string, object>.ValueCollection replyvalues = replyData.Values;
                            GroupMembershipData group = null;
                            foreach (object f in replyvalues)
                            {
                                if (f is Dictionary<string, object>)
                                {
                                    group = new GroupMembershipData((Dictionary<string, object>)f);
                                }
                            }
                            // Success
                            return group;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                m_log.DebugFormat("[AuroraRemoteGroupsServiceConnector]: Exception when contacting server: {0}", e.ToString());
            }

            return null;
        }
Esempio n. 12
0
        public override void FromOSD(OSDMap map)
        {
            AgentInfo = new IAgentInfo();
            AgentInfo.FromOSD((OSDMap)(map["AgentInfo"]));
            UserAccount = new UserAccount();
            UserAccount.FromOSD((OSDMap)(map["UserAccount"]));
            if (!map.ContainsKey("ActiveGroup"))
            {
                ActiveGroup = null;
            }
            else
            {
                ActiveGroup = new GroupMembershipData();
                ActiveGroup.FromOSD((OSDMap)(map["ActiveGroup"]));
            }
            GroupMemberships = ((OSDArray)map["GroupMemberships"]).ConvertAll <GroupMembershipData>((o) =>
            {
                GroupMembershipData
                group =
                    new GroupMembershipData
                        ();
                group
                .FromOSD
                    ((OSDMap
                      )o);
                return(group);
            });
            OfflineMessages = ((OSDArray)map["OfflineMessages"]).ConvertAll <GridInstantMessage>((o) =>
            {
                GridInstantMessage
                group =
                    new GridInstantMessage
                        ();
                group.FromOSD(
                    (OSDMap)o);
                return(group);
            });
            MuteList = ((OSDArray)map["MuteList"]).ConvertAll <MuteList>((o) =>
            {
                MuteList group = new MuteList();
                group.FromOSD((OSDMap)o);
                return(group);
            });

            if (map.ContainsKey("Appearance"))
            {
                Appearance = new AvatarAppearance();
                Appearance.FromOSD((OSDMap)map["Appearance"]);
            }
            if (map.ContainsKey("FriendOnlineStatuses"))
            {
                FriendOnlineStatuses = ((OSDArray)map["FriendOnlineStatuses"]).ConvertAll <UUID>((o) => { return(o); });
            }
            if (map.ContainsKey("Friends"))
            {
                Friends = ((OSDArray)map["Friends"]).ConvertAll <FriendInfo>((o) =>
                {
                    FriendInfo f = new FriendInfo();
                    f.FromOSD((OSDMap)o);
                    return(f);
                });
            }
        }
Esempio n. 13
0
 public GroupMembershipData[] GetMembershipData(UUID agentID)
 {
     GroupMembershipData[] updateGroups = new GroupMembershipData[1];
     updateGroups[0] = osGroup;
     return(updateGroups);
 }
        public GroupMembershipData GetGroupMembershipData(UUID requestingAgentID, UUID GroupID, UUID AgentID)
        {
            GroupMembershipData GMD = new GroupMembershipData();
            if (GroupID == UUID.Zero)
                GroupID = GetAgentActiveGroup(requestingAgentID, AgentID);
            GroupRecord record = GetGroupRecord(requestingAgentID, GroupID, null);
            List<string> Membership = data.Query(new[]
                                                     {
                                                         "GroupID",
                                                         "AgentID"
                                                     }, new object[]
                                                            {
                                                                GroupID,
                                                                AgentID
                                                            }, "osgroupmembership",
                                                 "AcceptNotices, Contribution, ListInProfile, SelectedRoleID");
            if (Membership.Count == 0)
                return null;

            List<string> GroupRole = data.Query(new[] {"GroupID", "RoleID"}, new object[] {GroupID, Membership[3]},
                                                "osrole", "Title, Powers");
            if (GroupRole.Count == 0)
                return null;
            GMD.AcceptNotices = int.Parse(Membership[0]) == 1;
            //TODO: Figure out what this is and its effects if false
            GMD.Active = true;
            GMD.ActiveRole = UUID.Parse(Membership[3]);
            GMD.AllowPublish = record.AllowPublish;
            GMD.Charter = record.Charter;
            GMD.Contribution = int.Parse(Membership[1]);
            GMD.FounderID = record.FounderID;
            GMD.GroupID = record.GroupID;
            GMD.GroupName = record.GroupName;
            GMD.GroupPicture = record.GroupPicture;
            GMD.GroupPowers = ulong.Parse(GroupRole[1]);
            GMD.GroupTitle = GroupRole[0];
            GMD.ListInProfile = int.Parse(Membership[2]) == 1;
            GMD.MaturePublish = record.MaturePublish;
            GMD.MembershipFee = record.MembershipFee;
            GMD.OpenEnrollment = record.OpenEnrollment;
            GMD.ShowInList = record.ShowInList;

            return GMD;
        }
        public GroupMembershipData GetGroupMembershipData(UUID requestingAgentID, UUID GroupID, UUID AgentID)
        {
            Dictionary<string, object> sendData = new Dictionary<string, object>();

            sendData["METHOD"] = "GetGroupMembershipData";
            sendData["requestingAgentID"] = requestingAgentID;
            sendData["GroupID"] = GroupID;
            sendData["AgentID"] = AgentID;

            string reqString = WebUtils.BuildXmlResponse(sendData);

            try
            {
                List<string> m_ServerURIs =
                    m_registry.RequestModuleInterface<IConfigurationService>().FindValueOf(
                        requestingAgentID.ToString(), "RemoteServerURI", false);
                foreach (string m_ServerURI in m_ServerURIs)
                {
                    string reply = SynchronousRestFormsRequester.MakeRequest("POST",
                                                                             m_ServerURI,
                                                                             reqString);
                    if (reply != string.Empty)
                    {
                        Dictionary<string, object> replyData = WebUtils.ParseXmlResponse(reply);

                        if (replyData != null)
                        {
                            Dictionary<string, object>.ValueCollection replyvalues = replyData.Values;
                            GroupMembershipData group = null;
#if (!ISWIN)
                            foreach (object replyvalue in replyvalues)
                            {
                                Dictionary<string, object> f = replyvalue as Dictionary<string, object>;
                                if (f != null)
                                {
                                    group = new GroupMembershipData(f);
                                }
                            }
#else
                            foreach (Dictionary<string, object> f in replyvalues.OfType<Dictionary<string, object>>())
                            {
                                group = new GroupMembershipData(f);
                            }
#endif
                            // Success
                            return group;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                MainConsole.Instance.DebugFormat("[AuroraRemoteGroupsServiceConnector]: Exception when contacting server: {0}", e);
            }

            return null;
        }
Esempio n. 16
0
        /// <summary>
        ///     Send 'remoteClient' the group membership 'data' for agent 'dataForAgentID'.
        /// </summary>
        private void SendGroupMembershipInfoViaCaps(IClientAPI remoteClient, UUID dataForAgentID,
            GroupMembershipData[] data)
        {
            if (m_debugEnabled)
                MainConsole.Instance.InfoFormat("[GROUPS]: {0} called", MethodBase.GetCurrentMethod().Name);

            OSDArray AgentData = new OSDArray(1);
            OSDMap AgentDataMap = new OSDMap(1) {{"AgentID", OSD.FromUUID(dataForAgentID)}};
            AgentData.Add(AgentDataMap);

            OSDArray GroupData = new OSDArray(data.Length);
            OSDArray NewGroupData = new OSDArray(data.Length);

            foreach (GroupMembershipData membership in data)
            {
                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;
                    }
                }

                OSDMap GroupDataMap = new OSDMap(6);
                OSDMap NewGroupDataMap = new OSDMap(1);

                GroupDataMap.Add("GroupID", OSD.FromUUID(membership.GroupID));
                GroupDataMap.Add("GroupPowers", OSD.FromULong(membership.GroupPowers));
                GroupDataMap.Add("AcceptNotices", OSD.FromBoolean(membership.AcceptNotices));
                GroupDataMap.Add("GroupInsigniaID", OSD.FromUUID(membership.GroupPicture));
                GroupDataMap.Add("Contribution", OSD.FromInteger(membership.Contribution));
                GroupDataMap.Add("GroupName", OSD.FromString(membership.GroupName));
                NewGroupDataMap.Add("ListInProfile", OSD.FromBoolean(membership.ListInProfile));

                GroupData.Add(GroupDataMap);
                NewGroupData.Add(NewGroupDataMap);
            }

            OSDMap llDataStruct = new OSDMap(3)
                                      {
                                          {"AgentData", AgentData},
                                          {"GroupData", GroupData},
                                          {"NewGroupData", NewGroupData}
                                      };

            if (m_debugEnabled)
                MainConsole.Instance.InfoFormat("[GROUPS]: {0}", OSDParser.SerializeJsonString(llDataStruct));

            IEventQueueService queue = remoteClient.Scene.RequestModuleInterface<IEventQueueService>();

            if (queue != null)
                queue.Enqueue(buildEvent("AgentGroupDataUpdate", llDataStruct), GetRequestingAgentID(remoteClient),
                              remoteClient.Scene.RegionInfo.RegionID);
        }