diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs index e0402fd..b1fd9ad 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs | |||
@@ -79,14 +79,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
79 | private IMessageTransferModule m_msgTransferModule; | 79 | private IMessageTransferModule m_msgTransferModule; |
80 | 80 | ||
81 | private IGroupsMessagingModule m_groupsMessagingModule; | 81 | private IGroupsMessagingModule m_groupsMessagingModule; |
82 | 82 | ||
83 | private IGroupsServicesConnector m_groupData; | 83 | private IGroupsServicesConnector m_groupData; |
84 | 84 | ||
85 | // Configuration settings | 85 | // Configuration settings |
86 | private bool m_groupsEnabled = false; | 86 | private bool m_groupsEnabled = false; |
87 | private bool m_groupNoticesEnabled = true; | 87 | private bool m_groupNoticesEnabled = true; |
88 | private bool m_debugEnabled = false; | 88 | private bool m_debugEnabled = false; |
89 | private int m_levelGroupCreate = 0; | 89 | private int m_levelGroupCreate = 0; |
90 | 90 | ||
91 | #region Region Module interfaceBase Members | 91 | #region Region Module interfaceBase Members |
92 | 92 | ||
@@ -116,9 +116,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
116 | 116 | ||
117 | m_log.InfoFormat("[GROUPS]: Initializing {0}", this.Name); | 117 | m_log.InfoFormat("[GROUPS]: Initializing {0}", this.Name); |
118 | 118 | ||
119 | m_groupNoticesEnabled = groupsConfig.GetBoolean("NoticesEnabled", true); | 119 | m_groupNoticesEnabled = groupsConfig.GetBoolean("NoticesEnabled", true); |
120 | m_debugEnabled = groupsConfig.GetBoolean("DebugEnabled", false); | 120 | m_debugEnabled = groupsConfig.GetBoolean("DebugEnabled", false); |
121 | m_levelGroupCreate = groupsConfig.GetInt("LevelGroupCreate", 0); | 121 | m_levelGroupCreate = groupsConfig.GetInt("LevelGroupCreate", 0); |
122 | } | 122 | } |
123 | } | 123 | } |
124 | 124 | ||
@@ -233,7 +233,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
233 | if (m_debugEnabled) m_log.Debug("[GROUPS]: Shutting down Groups module."); | 233 | if (m_debugEnabled) m_log.Debug("[GROUPS]: Shutting down Groups module."); |
234 | } | 234 | } |
235 | 235 | ||
236 | public Type ReplaceableInterface | 236 | public Type ReplaceableInterface |
237 | { | 237 | { |
238 | get { return null; } | 238 | get { return null; } |
239 | } | 239 | } |
@@ -263,6 +263,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
263 | sp.ControllingClient.OnUUIDGroupNameRequest += HandleUUIDGroupNameRequest; | 263 | sp.ControllingClient.OnUUIDGroupNameRequest += HandleUUIDGroupNameRequest; |
264 | // Used for Notices and Group Invites/Accept/Reject | 264 | // Used for Notices and Group Invites/Accept/Reject |
265 | sp.ControllingClient.OnInstantMessage += OnInstantMessage; | 265 | sp.ControllingClient.OnInstantMessage += OnInstantMessage; |
266 | // comented out bc some viewers wrongly stoped suporting it | ||
267 | // sp.ControllingClient.AddGenericPacketHandler("avatargroupsrequest", AvatarGroupsRequest); | ||
266 | 268 | ||
267 | // we should send a DataUpdate here for compatibility, | 269 | // we should send a DataUpdate here for compatibility, |
268 | // but this is a bad place and a bad thread to do it | 270 | // but this is a bad place and a bad thread to do it |
@@ -276,15 +278,40 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
276 | sp.ControllingClient.OnUUIDGroupNameRequest -= HandleUUIDGroupNameRequest; | 278 | sp.ControllingClient.OnUUIDGroupNameRequest -= HandleUUIDGroupNameRequest; |
277 | sp.ControllingClient.OnInstantMessage -= OnInstantMessage; | 279 | sp.ControllingClient.OnInstantMessage -= OnInstantMessage; |
278 | } | 280 | } |
279 | 281 | ||
280 | private void OnNewClient(IClientAPI client) | 282 | private void OnNewClient(IClientAPI client) |
281 | { | 283 | { |
282 | if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); | 284 | if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); |
283 | 285 | ||
284 | client.OnAgentDataUpdateRequest += OnAgentDataUpdateRequest; | 286 | client.OnAgentDataUpdateRequest += OnAgentDataUpdateRequest; |
285 | client.OnRequestAvatarProperties += OnRequestAvatarProperties; | 287 | client.OnRequestAvatarProperties += OnRequestAvatarProperties; |
288 | |||
289 | |||
290 | } | ||
291 | /* this should be the right message to ask for other avatars groups | ||
292 | |||
293 | private void AvatarGroupsRequest(Object sender, string method, List<String> args) | ||
294 | { | ||
295 | if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); | ||
296 | |||
297 | if (!(sender is IClientAPI)) | ||
298 | return; | ||
299 | |||
300 | IClientAPI remoteClient = (IClientAPI)sender; | ||
301 | |||
302 | UUID avatarID; | ||
303 | UUID.TryParse(args[0], out avatarID); | ||
304 | |||
305 | if (avatarID != UUID.Zero) | ||
306 | { | ||
307 | GroupMembershipData[] avatarGroups = GetProfileListedGroupMemberships(remoteClient, avatarID); | ||
308 | remoteClient.SendAvatarGroupsReply(avatarID, avatarGroups); | ||
309 | } | ||
286 | } | 310 | } |
311 | */ | ||
287 | 312 | ||
313 | // this should not be used to send groups memberships, but some viewers do expect it | ||
314 | // it does send unnecessary memberships, when viewers just want other properties information | ||
288 | private void OnRequestAvatarProperties(IClientAPI remoteClient, UUID avatarID) | 315 | private void OnRequestAvatarProperties(IClientAPI remoteClient, UUID avatarID) |
289 | { | 316 | { |
290 | if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); | 317 | if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); |