From 03438f7d449a09e28dcb1543b2075d70b2573ffc Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 23 Sep 2009 16:24:26 +0100
Subject: minor: remove double initialization of user appearance module in
Grid.UserServer.Main
---
OpenSim/Framework/Communications/Services/LoginService.cs | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
(limited to 'OpenSim/Framework/Communications')
diff --git a/OpenSim/Framework/Communications/Services/LoginService.cs b/OpenSim/Framework/Communications/Services/LoginService.cs
index bf59f8e..a6cd918 100644
--- a/OpenSim/Framework/Communications/Services/LoginService.cs
+++ b/OpenSim/Framework/Communications/Services/LoginService.cs
@@ -1221,11 +1221,13 @@ namespace OpenSim.Framework.Communications.Services
{
return Util.CreateUnknownUserErrorResponse();
}
+
UUID.TryParse((string)requestData["session_id"], out guess_sid);
if (guess_sid == UUID.Zero)
{
return Util.CreateUnknownUserErrorResponse();
}
+
if (m_userManager.VerifySession(guess_aid, guess_sid))
{
authed = "TRUE";
@@ -1243,6 +1245,5 @@ namespace OpenSim.Framework.Communications.Services
response.Value = responseData;
return response;
}
-
}
-}
+}
\ No newline at end of file
--
cgit v1.1
From 7870152d23db4cb6f5834d4921fac17feb717220 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 24 Sep 2009 14:54:12 +0100
Subject: Allow load/save iar password checks to be done in grid mode This
should allow load/save iar to work for grid mode as long as the grid user
service is later than this revision Grid services of earlier revisions will
always erroneously report incorrect password. This will be addressed
shortly.
---
OpenSim/Framework/Communications/IUserService.cs | 16 +++++++++--
.../Communications/Tests/Cache/AssetCacheTests.cs | 5 ++++
.../Framework/Communications/UserManagerBase.cs | 32 +++++++++++++++++++---
3 files changed, 47 insertions(+), 6 deletions(-)
(limited to 'OpenSim/Framework/Communications')
diff --git a/OpenSim/Framework/Communications/IUserService.cs b/OpenSim/Framework/Communications/IUserService.cs
index 725225d..15c5a96 100644
--- a/OpenSim/Framework/Communications/IUserService.cs
+++ b/OpenSim/Framework/Communications/IUserService.cs
@@ -98,7 +98,7 @@ namespace OpenSim.Framework.Communications
/// The agent that who's friends list is being updated
/// The agent that is getting or loosing permissions
/// A uint bit vector for set perms that the friend being added has; 0 = none, 1=This friend can see when they sign on, 2 = map, 4 edit objects
- void UpdateUserFriendPerms(UUID friendlistowner, UUID friend, uint perms);
+ void UpdateUserFriendPerms(UUID friendlistowner, UUID friend, uint perms);
///
/// Logs off a user on the user server
@@ -137,9 +137,21 @@ namespace OpenSim.Framework.Communications
// But since Scenes only have IUserService references, I'm placing it here for now.
bool VerifySession(UUID userID, UUID sessionID);
+ ///
+ /// Authenticate a user by their password.
+ ///
+ ///
+ /// This is used by callers outside the login process that want to
+ /// verify a user who has given their password.
+ ///
+ /// This should probably also be in IAuthentication but is here for the same reasons as VerifySession() is
+ ///
+ ///
+ ///
+ ///
+ bool AuthenticateUserByPassword(UUID userID, string password);
// Temporary Hack until we move everything to the new service model
void SetInventoryService(IInventoryService invService);
-
}
}
diff --git a/OpenSim/Framework/Communications/Tests/Cache/AssetCacheTests.cs b/OpenSim/Framework/Communications/Tests/Cache/AssetCacheTests.cs
index ac0dc6d..a757282 100644
--- a/OpenSim/Framework/Communications/Tests/Cache/AssetCacheTests.cs
+++ b/OpenSim/Framework/Communications/Tests/Cache/AssetCacheTests.cs
@@ -149,6 +149,11 @@ namespace OpenSim.Framework.Communications.Tests
{
throw new NotImplementedException();
}
+
+ public virtual bool AuthenticateUserByPassword(UUID userID, string password)
+ {
+ throw new NotImplementedException();
+ }
}
}
}
diff --git a/OpenSim/Framework/Communications/UserManagerBase.cs b/OpenSim/Framework/Communications/UserManagerBase.cs
index 58174a0..1abd733 100644
--- a/OpenSim/Framework/Communications/UserManagerBase.cs
+++ b/OpenSim/Framework/Communications/UserManagerBase.cs
@@ -44,7 +44,8 @@ namespace OpenSim.Framework.Communications
///
/// Base class for user management (create, read, etc)
///
- public abstract class UserManagerBase : IUserService, IUserAdminService, IAvatarService, IMessagingService, IAuthentication
+ public abstract class UserManagerBase
+ : IUserService, IUserAdminService, IAvatarService, IMessagingService, IAuthentication
{
private static readonly ILog m_log
= LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -93,9 +94,9 @@ namespace OpenSim.Framework.Communications
public void AddPlugin(string provider, string connect)
{
m_plugins.AddRange(DataPluginFactory.LoadDataPlugins(provider, connect));
- }
+ }
- #region UserProfile
+ #region UserProfile
public virtual void AddTemporaryUserProfile(UserProfileData userProfile)
{
@@ -891,7 +892,10 @@ namespace OpenSim.Framework.Communications
if (userProfile != null && userProfile.CurrentAgent != null)
{
- m_log.DebugFormat("[USER AUTH]: Verifying session {0} for {1}; current session {2}", sessionID, userID, userProfile.CurrentAgent.SessionID);
+ m_log.DebugFormat(
+ "[USER AUTH]: Verifying session {0} for {1}; current session {2}",
+ sessionID, userID, userProfile.CurrentAgent.SessionID);
+
if (userProfile.CurrentAgent.SessionID == sessionID)
{
return true;
@@ -901,6 +905,26 @@ namespace OpenSim.Framework.Communications
return false;
}
+ public virtual bool AuthenticateUserByPassword(UUID userID, string password)
+ {
+// m_log.DebugFormat("[USER AUTH]: Authenticating user {0} given password {1}", userID, password);
+
+ UserProfileData userProfile = GetUserProfile(userID);
+
+ if (null == userProfile)
+ return false;
+
+ string md5PasswordHash = Util.Md5Hash(Util.Md5Hash(password) + ":" + userProfile.PasswordSalt);
+
+// m_log.DebugFormat(
+// "[USER AUTH]: Submitted hash {0}, stored hash {1}", md5PasswordHash, userProfile.PasswordHash);
+
+ if (md5PasswordHash == userProfile.PasswordHash)
+ return true;
+ else
+ return false;
+ }
+
#endregion
}
}
--
cgit v1.1