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); }
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); }
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); }
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); }
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); }
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; }
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); }); } }
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; }
/// <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); }