From b2fe47ecb11d4e6c6b0f9bc124cd7a8d4703784d Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Sun, 20 May 2007 23:34:29 +0000 Subject: [PATCH] * Minor tweaks with new userserver * Fixed password encoding to match MD5 standard properly. * Fixed exception caused on user first login (minor) * Fixed exception caused by incorrect username (minor) * Returns login error rather than grid error if username is incorrect --- OpenGridServices.GridServer/Main.cs | 2 +- OpenGridServices.UserServer/UserManager.cs | 31 +++++++++++++--------- OpenSim.Framework/Util.cs | 11 ++++++++ 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/OpenGridServices.GridServer/Main.cs b/OpenGridServices.GridServer/Main.cs index 97f15c9b30..cad5faefd5 100644 --- a/OpenGridServices.GridServer/Main.cs +++ b/OpenGridServices.GridServer/Main.cs @@ -49,7 +49,7 @@ namespace OpenGridServices.GridServer public class OpenGrid_Main : BaseServer, conscmd_callback { private string ConfigDll = "OpenGrid.Config.GridConfigDb4o.dll"; - private string GridDll = "OpenGrid.Framework.Data.DB4o.dll"; + private string GridDll = "OpenGrid.Framework.Data.MySQL.dll"; public GridConfig Cfg; public static OpenGrid_Main thegrid; diff --git a/OpenGridServices.UserServer/UserManager.cs b/OpenGridServices.UserServer/UserManager.cs index b5797327e5..a3124453b0 100644 --- a/OpenGridServices.UserServer/UserManager.cs +++ b/OpenGridServices.UserServer/UserManager.cs @@ -114,7 +114,14 @@ namespace OpenGridServices.UserServer try { UserProfileData profile = plugin.Value.getUserByName(fname,lname); - profile.currentAgent = getUserAgent(profile.UUID); + try + { + profile.currentAgent = getUserAgent(profile.UUID); + } + catch (Exception e) + { + // Ignore + } return profile; } catch (Exception e) @@ -295,18 +302,13 @@ namespace OpenGridServices.UserServer /// Authenticated? public bool AuthenticateUser(ref UserProfileData profile, string password) { + OpenSim.Framework.Console.MainConsole.Instance.WriteLine( + OpenSim.Framework.Console.LogPriority.LOW, + "Authenticating " + profile.username + " " + profile.surname); + password = password.Remove(0, 3); //remove $1$ - MD5CryptoServiceProvider MD5summer = new MD5CryptoServiceProvider(); - - byte[] byteString = System.Text.Encoding.ASCII.GetBytes(password + ":" + profile.passwordSalt); - - byteString = MD5summer.ComputeHash(byteString); - System.Text.StringBuilder s = new System.Text.StringBuilder(); - foreach (byte b in byteString) - { - s.Append(b.ToString("x2").ToLower()); - } + string s = Util.Md5Hash(password + ":" + profile.passwordSalt); return profile.passwordHash.Equals(s.ToString(), StringComparison.InvariantCultureIgnoreCase); } @@ -360,7 +362,9 @@ namespace OpenGridServices.UserServer // Current location agent.regionID = new LLUUID(); // Fill in later - agent.currentRegion = ""; // Fill in later + agent.currentRegion = new LLUUID(); // Fill in later + + profile.currentAgent = agent; } /// @@ -399,6 +403,9 @@ namespace OpenGridServices.UserServer passwd = (string)requestData["passwd"]; TheUser = getUserProfile(firstname, lastname); + if (TheUser == null) + return CreateLoginErrorResponse(); + GoodLogin = AuthenticateUser(ref TheUser, passwd); } else diff --git a/OpenSim.Framework/Util.cs b/OpenSim.Framework/Util.cs index 6f609256ce..400f415ebf 100644 --- a/OpenSim.Framework/Util.cs +++ b/OpenSim.Framework/Util.cs @@ -1,4 +1,5 @@ using System; +using System.Security.Cryptography; using System.Collections.Generic; using System.Text; using libsecondlife; @@ -43,6 +44,16 @@ namespace OpenSim.Framework.Utilities return timestamp; } + public static string Md5Hash(string pass) + { + MD5 md5 = MD5CryptoServiceProvider.Create(); + byte[] dataMd5 = md5.ComputeHash(Encoding.Default.GetBytes(pass)); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < dataMd5.Length; i++) + sb.AppendFormat("{0:x2}", dataMd5[i]); + return sb.ToString(); + } + //public static int fast_distance2d(int x, int y) //{ // x = System.Math.Abs(x);