diff options
Diffstat (limited to 'OpenSim/Region')
3 files changed, 64 insertions, 19 deletions
diff --git a/OpenSim/Region/Communications/Local/LocalUserServices.cs b/OpenSim/Region/Communications/Local/LocalUserServices.cs index af4fb37..d18937e 100644 --- a/OpenSim/Region/Communications/Local/LocalUserServices.cs +++ b/OpenSim/Region/Communications/Local/LocalUserServices.cs | |||
@@ -80,6 +80,21 @@ namespace OpenSim.Region.Communications.Local | |||
80 | throw new Exception("[LOCAL USER SERVICES]: Unknown master user UUID. Possible reason: UserServer is not running."); | 80 | throw new Exception("[LOCAL USER SERVICES]: Unknown master user UUID. Possible reason: UserServer is not running."); |
81 | } | 81 | } |
82 | return data; | 82 | return data; |
83 | } | 83 | } |
84 | |||
85 | public override bool AuthenticateUserByPassword(UUID userID, string password) | ||
86 | { | ||
87 | UserProfileData userProfile = GetUserProfile(userID); | ||
88 | |||
89 | if (null == userProfile) | ||
90 | return false; | ||
91 | |||
92 | string md5PasswordHash = Util.Md5Hash(Util.Md5Hash(password) + ":" + userProfile.PasswordSalt); | ||
93 | |||
94 | if (md5PasswordHash == userProfile.PasswordHash) | ||
95 | return true; | ||
96 | else | ||
97 | return false; | ||
98 | } | ||
84 | } | 99 | } |
85 | } | 100 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs b/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs index dff8305..89b3e42 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs | |||
@@ -140,6 +140,47 @@ namespace OpenSim.Region.Communications.OGS1 | |||
140 | { | 140 | { |
141 | m_log.DebugFormat("[OGS1 USER SERVICES]: Verifying user session for " + userID); | 141 | m_log.DebugFormat("[OGS1 USER SERVICES]: Verifying user session for " + userID); |
142 | return AuthClient.VerifySession(GetUserServerURL(userID), userID, sessionID); | 142 | return AuthClient.VerifySession(GetUserServerURL(userID), userID, sessionID); |
143 | } | 143 | } |
144 | |||
145 | public override bool AuthenticateUserByPassword(UUID userID, string password) | ||
146 | { | ||
147 | try | ||
148 | { | ||
149 | Hashtable param = new Hashtable(); | ||
150 | param["user_uuid"] = userID.ToString(); | ||
151 | param["password"] = password; | ||
152 | IList parameters = new ArrayList(); | ||
153 | parameters.Add(param); | ||
154 | XmlRpcRequest req = new XmlRpcRequest("authenticate_user_by_password", parameters); | ||
155 | XmlRpcResponse resp = req.Send(m_commsManager.NetworkServersInfo.UserURL, 30000); | ||
156 | Hashtable respData = (Hashtable)resp.Value; | ||
157 | |||
158 | // foreach (object key in respData.Keys) | ||
159 | // { | ||
160 | // Console.WriteLine("respData {0}, {1}", key, respData[key]); | ||
161 | // } | ||
162 | |||
163 | // m_log.DebugFormat( | ||
164 | // "[OGS1 USER SERVICES]: AuthenticatedUserByPassword response for {0} is [{1}]", | ||
165 | // userID, respData["auth_user"]); | ||
166 | |||
167 | if ((string)respData["auth_user"] == "TRUE") | ||
168 | { | ||
169 | return true; | ||
170 | } | ||
171 | else | ||
172 | { | ||
173 | return false; | ||
174 | } | ||
175 | } | ||
176 | catch (Exception e) | ||
177 | { | ||
178 | m_log.ErrorFormat( | ||
179 | "[OGS1 USER SERVICES]: Error when trying to authenticate user by password from remote user server: {0}", | ||
180 | e); | ||
181 | |||
182 | return false; | ||
183 | } | ||
184 | } | ||
144 | } | 185 | } |
145 | } \ No newline at end of file | 186 | } \ No newline at end of file |
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs index 196205c..b82b940 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs | |||
@@ -322,7 +322,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
322 | /// <param name="pass">User password</param> | 322 | /// <param name="pass">User password</param> |
323 | /// <returns></returns> | 323 | /// <returns></returns> |
324 | protected CachedUserInfo GetUserInfo(string firstName, string lastName, string pass) | 324 | protected CachedUserInfo GetUserInfo(string firstName, string lastName, string pass) |
325 | { | 325 | { |
326 | CachedUserInfo userInfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(firstName, lastName); | 326 | CachedUserInfo userInfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(firstName, lastName); |
327 | //m_aScene.CommsManager.UserService.GetUserProfile(firstName, lastName); | 327 | //m_aScene.CommsManager.UserService.GetUserProfile(firstName, lastName); |
328 | if (null == userInfo) | 328 | if (null == userInfo) |
@@ -333,29 +333,18 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
333 | return null; | 333 | return null; |
334 | } | 334 | } |
335 | 335 | ||
336 | string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(pass) + ":" + userInfo.UserProfile.PasswordSalt); | 336 | if (m_aScene.CommsManager.UserService.AuthenticateUserByPassword(userInfo.UserProfile.ID, pass)) |
337 | |||
338 | if (userInfo.UserProfile.PasswordHash == null || userInfo.UserProfile.PasswordHash == String.Empty) | ||
339 | { | 337 | { |
340 | m_log.ErrorFormat( | 338 | return userInfo; |
341 | "[INVENTORY ARCHIVER]: Sorry, the grid mode service is not providing password hash details for the check. This will be fixed in an OpenSim git revision soon"); | ||
342 | |||
343 | return null; | ||
344 | } | 339 | } |
345 | 340 | else | |
346 | // m_log.DebugFormat( | ||
347 | // "[INVENTORY ARCHIVER]: received salt {0}, hash {1}, supplied hash {2}", | ||
348 | // userInfo.UserProfile.PasswordSalt, userInfo.UserProfile.PasswordHash, md5PasswdHash); | ||
349 | |||
350 | if (userInfo.UserProfile.PasswordHash != md5PasswdHash) | ||
351 | { | 341 | { |
352 | m_log.ErrorFormat( | 342 | m_log.ErrorFormat( |
353 | "[INVENTORY ARCHIVER]: Password for user {0} {1} incorrect. Please try again.", | 343 | "[INVENTORY ARCHIVER]: Password for user {0} {1} incorrect. Please try again.", |
354 | firstName, lastName); | 344 | firstName, lastName); |
345 | |||
355 | return null; | 346 | return null; |
356 | } | 347 | } |
357 | |||
358 | return userInfo; | ||
359 | } | 348 | } |
360 | 349 | ||
361 | /// <summary> | 350 | /// <summary> |