aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs')
-rw-r--r--OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs102
1 files changed, 62 insertions, 40 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
index 39e0661..23ef0fc 100644
--- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
@@ -44,7 +44,7 @@ using Nini.Config;
44 44
45namespace OpenSim.Region.CoreModules.Framework.UserManagement 45namespace OpenSim.Region.CoreModules.Framework.UserManagement
46{ 46{
47 class UserData 47 public class UserData
48 { 48 {
49 public UUID Id { get; set; } 49 public UUID Id { get; set; }
50 public string FirstName { get; set; } 50 public string FirstName { get; set; }
@@ -57,36 +57,23 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
57 { 57 {
58 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 58 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
59 59
60 private List<Scene> m_Scenes = new List<Scene>(); 60 protected bool m_Enabled;
61 protected List<Scene> m_Scenes = new List<Scene>();
61 62
62 // The cache 63 // The cache
63 Dictionary<UUID, UserData> m_UserCache = new Dictionary<UUID, UserData>(); 64 protected Dictionary<UUID, UserData> m_UserCache = new Dictionary<UUID, UserData>();
64 65
65 #region ISharedRegionModule 66 #region ISharedRegionModule
66 67
67 public void Initialise(IConfigSource config) 68 public void Initialise(IConfigSource config)
68 { 69 {
69 //m_Enabled = config.Configs["Modules"].GetBoolean("LibraryModule", m_Enabled); 70 string umanmod = config.Configs["Modules"].GetString("UserManagementModule", Name);
70 //if (m_Enabled) 71 if (umanmod == Name)
71 //{ 72 {
72 // IConfig libConfig = config.Configs["LibraryService"]; 73 m_Enabled = true;
73 // if (libConfig != null) 74 RegisterConsoleCmds();
74 // { 75 m_log.DebugFormat("[USER MANAGEMENT MODULE]: {0} is enabled", Name);
75 // string dllName = libConfig.GetString("LocalServiceModule", string.Empty); 76 }
76 // m_log.Debug("[LIBRARY MODULE]: Library service dll is " + dllName);
77 // if (dllName != string.Empty)
78 // {
79 // Object[] args = new Object[] { config };
80 // m_Library = ServerUtils.LoadPlugin<ILibraryService>(dllName, args);
81 // }
82 // }
83 //}
84 MainConsole.Instance.Commands.AddCommand("Users", true,
85 "show names",
86 "show names",
87 "Show the bindings between user UUIDs and user names",
88 String.Empty,
89 HandleShowUsers);
90 } 77 }
91 78
92 public bool IsSharedModule 79 public bool IsSharedModule
@@ -94,9 +81,9 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
94 get { return true; } 81 get { return true; }
95 } 82 }
96 83
97 public string Name 84 public virtual string Name
98 { 85 {
99 get { return "UserManagement Module"; } 86 get { return "BasicUserManagementModule"; }
100 } 87 }
101 88
102 public Type ReplaceableInterface 89 public Type ReplaceableInterface
@@ -106,17 +93,23 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
106 93
107 public void AddRegion(Scene scene) 94 public void AddRegion(Scene scene)
108 { 95 {
109 m_Scenes.Add(scene); 96 if (m_Enabled)
97 {
98 m_Scenes.Add(scene);
110 99
111 scene.RegisterModuleInterface<IUserManagement>(this); 100 scene.RegisterModuleInterface<IUserManagement>(this);
112 scene.EventManager.OnNewClient += new EventManager.OnNewClientDelegate(EventManager_OnNewClient); 101 scene.EventManager.OnNewClient += new EventManager.OnNewClientDelegate(EventManager_OnNewClient);
113 scene.EventManager.OnPrimsLoaded += new EventManager.PrimsLoaded(EventManager_OnPrimsLoaded); 102 scene.EventManager.OnPrimsLoaded += new EventManager.PrimsLoaded(EventManager_OnPrimsLoaded);
103 }
114 } 104 }
115 105
116 public void RemoveRegion(Scene scene) 106 public void RemoveRegion(Scene scene)
117 { 107 {
118 scene.UnregisterModuleInterface<IUserManagement>(this); 108 if (m_Enabled)
119 m_Scenes.Remove(scene); 109 {
110 scene.UnregisterModuleInterface<IUserManagement>(this);
111 m_Scenes.Remove(scene);
112 }
120 } 113 }
121 114
122 public void RegionLoaded(Scene s) 115 public void RegionLoaded(Scene s)
@@ -183,16 +176,31 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
183 { 176 {
184 //EventManager.TriggerAvatarPickerRequest(); 177 //EventManager.TriggerAvatarPickerRequest();
185 178
186 List<UserAccount> accounts = m_Scenes[0].UserAccountService.GetUserAccounts(m_Scenes[0].RegionInfo.ScopeID, query); 179 m_log.DebugFormat("[USER MANAGEMENT MODULE]: HandleAvatarPickerRequest for {0}", query);
187 180
188 if (accounts == null) 181 List<UserAccount> accs = m_Scenes[0].UserAccountService.GetUserAccounts(m_Scenes[0].RegionInfo.ScopeID, query);
189 return; 182
183 List<UserData> users = new List<UserData>();
184 if (accs != null)
185 {
186 m_log.DebugFormat("[USER MANAGEMENT MODULE]: Found {0} users", accs.Count);
187 foreach (UserAccount acc in accs)
188 {
189 UserData ud = new UserData();
190 ud.FirstName = acc.FirstName;
191 ud.LastName = acc.LastName;
192 ud.Id = acc.PrincipalID;
193 users.Add(ud);
194 }
195 }
196
197 AddAdditionalUsers(avatarID, query, users);
190 198
191 AvatarPickerReplyPacket replyPacket = (AvatarPickerReplyPacket)PacketPool.Instance.GetPacket(PacketType.AvatarPickerReply); 199 AvatarPickerReplyPacket replyPacket = (AvatarPickerReplyPacket)PacketPool.Instance.GetPacket(PacketType.AvatarPickerReply);
192 // TODO: don't create new blocks if recycling an old packet 200 // TODO: don't create new blocks if recycling an old packet
193 201
194 AvatarPickerReplyPacket.DataBlock[] searchData = 202 AvatarPickerReplyPacket.DataBlock[] searchData =
195 new AvatarPickerReplyPacket.DataBlock[accounts.Count]; 203 new AvatarPickerReplyPacket.DataBlock[users.Count];
196 AvatarPickerReplyPacket.AgentDataBlock agentData = new AvatarPickerReplyPacket.AgentDataBlock(); 204 AvatarPickerReplyPacket.AgentDataBlock agentData = new AvatarPickerReplyPacket.AgentDataBlock();
197 205
198 agentData.AgentID = avatarID; 206 agentData.AgentID = avatarID;
@@ -201,16 +209,16 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
201 //byte[] bytes = new byte[AvatarResponses.Count*32]; 209 //byte[] bytes = new byte[AvatarResponses.Count*32];
202 210
203 int i = 0; 211 int i = 0;
204 foreach (UserAccount item in accounts) 212 foreach (UserData item in users)
205 { 213 {
206 UUID translatedIDtem = item.PrincipalID; 214 UUID translatedIDtem = item.Id;
207 searchData[i] = new AvatarPickerReplyPacket.DataBlock(); 215 searchData[i] = new AvatarPickerReplyPacket.DataBlock();
208 searchData[i].AvatarID = translatedIDtem; 216 searchData[i].AvatarID = translatedIDtem;
209 searchData[i].FirstName = Utils.StringToBytes((string)item.FirstName); 217 searchData[i].FirstName = Utils.StringToBytes((string)item.FirstName);
210 searchData[i].LastName = Utils.StringToBytes((string)item.LastName); 218 searchData[i].LastName = Utils.StringToBytes((string)item.LastName);
211 i++; 219 i++;
212 } 220 }
213 if (accounts.Count == 0) 221 if (users.Count == 0)
214 { 222 {
215 searchData = new AvatarPickerReplyPacket.DataBlock[0]; 223 searchData = new AvatarPickerReplyPacket.DataBlock[0];
216 } 224 }
@@ -232,6 +240,10 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
232 client.SendAvatarPickerReply(agent_data, data_args); 240 client.SendAvatarPickerReply(agent_data, data_args);
233 } 241 }
234 242
243 protected virtual void AddAdditionalUsers(UUID avatarID, string query, List<UserData> users)
244 {
245 }
246
235 #endregion Event Handlers 247 #endregion Event Handlers
236 248
237 private void CacheCreators(SceneObjectGroup sog) 249 private void CacheCreators(SceneObjectGroup sog)
@@ -487,13 +499,23 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
487 499
488 #endregion IUserManagement 500 #endregion IUserManagement
489 501
502 protected void RegisterConsoleCmds()
503 {
504 MainConsole.Instance.Commands.AddCommand("Users", true,
505 "show names",
506 "show names",
507 "Show the bindings between user UUIDs and user names",
508 String.Empty,
509 HandleShowUsers);
510 }
511
490 private void HandleShowUsers(string module, string[] cmd) 512 private void HandleShowUsers(string module, string[] cmd)
491 { 513 {
492 lock (m_UserCache) 514 lock (m_UserCache)
493 { 515 {
494 if (m_UserCache.Count == 0) 516 if (m_UserCache.Count == 0)
495 { 517 {
496 MainConsole.Instance.Output("No users not found"); 518 MainConsole.Instance.Output("No users found");
497 return; 519 return;
498 } 520 }
499 521