From 04b1767886af28fa1793c46a1cbe4b3f49eefca6 Mon Sep 17 00:00:00 2001
From: MW
Date: Mon, 13 Aug 2007 15:55:36 +0000
Subject: Separated Login Service from usermanager, which helps to clean up the
code a bit and also should help to integrate the inventory server (when it is
wrote/finished).
---
OpenSim/Framework/UserManager/UserManagerBase.cs | 258 ++---------------------
1 file changed, 16 insertions(+), 242 deletions(-)
(limited to 'OpenSim/Framework/UserManager')
diff --git a/OpenSim/Framework/UserManager/UserManagerBase.cs b/OpenSim/Framework/UserManager/UserManagerBase.cs
index 64c3be1..c1084e9 100644
--- a/OpenSim/Framework/UserManager/UserManagerBase.cs
+++ b/OpenSim/Framework/UserManager/UserManagerBase.cs
@@ -339,248 +339,6 @@ namespace OpenSim.Framework.UserManagement
#endregion
///
- /// Checks a user against it's password hash
- ///
- /// The users profile
- /// The supplied password
- /// Authenticated?
- public virtual bool AuthenticateUser(UserProfileData profile, string password)
- {
- MainLog.Instance.Verbose(
- "Authenticating " + profile.username + " " + profile.surname);
-
- password = password.Remove(0, 3); //remove $1$
-
- string s = Util.Md5Hash(password + ":" + profile.passwordSalt);
-
- return profile.passwordHash.Equals(s.ToString(), StringComparison.InvariantCultureIgnoreCase);
- }
-
- #region Xml Response
-
- ///
- ///
- ///
- ///
- ///
- ///
- public virtual UserProfileData GetTheUser(string firstname, string lastname)
- {
- return getUserProfile(firstname, lastname);
- }
-
- ///
- ///
- ///
- ///
- public virtual string GetMessage()
- {
- return _config.DefaultStartupMsg;
- }
-
- ///
- ///
- ///
- ///
- protected virtual ArrayList GetInventoryLibrary()
- {
- //return new ArrayList();
- Hashtable TempHash = new Hashtable();
- TempHash["name"] = "OpenSim Library";
- TempHash["parent_id"] = LLUUID.Zero.ToStringHyphenated();
- TempHash["version"] = "1";
- TempHash["type_default"] = "-1";
- TempHash["folder_id"] = "00000112-000f-0000-0000-000100bba000";
- ArrayList temp = new ArrayList();
- temp.Add(TempHash);
-
- TempHash = new Hashtable();
- TempHash["name"] = "Texture Library";
- TempHash["parent_id"] = "00000112-000f-0000-0000-000100bba000";
- TempHash["version"] = "1";
- TempHash["type_default"] = "-1";
- TempHash["folder_id"] = "00000112-000f-0000-0000-000100bba001";
- temp.Add(TempHash);
- return temp;
- }
-
- ///
- ///
- ///
- ///
- protected virtual ArrayList GetLibraryOwner()
- {
- //for now create random inventory library owner
- Hashtable TempHash = new Hashtable();
- TempHash["agent_id"] = "11111111-1111-0000-0000-000100bba000";
- ArrayList inventoryLibOwner = new ArrayList();
- inventoryLibOwner.Add(TempHash);
- return inventoryLibOwner;
- }
-
- protected virtual AgentInventory GetUsersInventory(LLUUID agentID)
- {
- AgentInventory userInventory = new AgentInventory();
- userInventory.CreateRootFolder(agentID, false);
-
- return userInventory;
- }
-
- protected virtual ArrayList CreateInventoryArray(AgentInventory userInventory)
- {
- ArrayList AgentInventoryArray = new ArrayList();
- Hashtable TempHash;
- foreach (InventoryFolder InvFolder in userInventory.InventoryFolders.Values)
- {
- TempHash = new Hashtable();
- TempHash["name"] = InvFolder.FolderName;
- TempHash["parent_id"] = InvFolder.ParentID.ToStringHyphenated();
- TempHash["version"] = (Int32)InvFolder.Version;
- TempHash["type_default"] = (Int32)InvFolder.DefaultType;
- TempHash["folder_id"] = InvFolder.FolderID.ToStringHyphenated();
- AgentInventoryArray.Add(TempHash);
- }
- return AgentInventoryArray;
- }
-
- ///
- /// Customises the login response and fills in missing values.
- ///
- /// The existing response
- /// The user profile
- public abstract void CustomiseResponse( LoginResponse response, UserProfileData theUser);
-
- ///
- /// Main user login function
- ///
- /// The XMLRPC request
- /// The response to send
- public XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request)
- {
-
- System.Console.WriteLine("Attempting login now...");
- XmlRpcResponse response = new XmlRpcResponse();
- Hashtable requestData = (Hashtable)request.Params[0];
-
- bool GoodXML = (requestData.Contains("first") && requestData.Contains("last") && requestData.Contains("passwd"));
- bool GoodLogin = false;
- string firstname = "";
- string lastname = "";
- string passwd = "";
-
- UserProfileData userProfile;
- LoginResponse logResponse = new LoginResponse();
-
- if (GoodXML)
- {
- firstname = (string)requestData["first"];
- lastname = (string)requestData["last"];
- passwd = (string)requestData["passwd"];
-
- userProfile = GetTheUser(firstname, lastname);
- if (userProfile == null)
- return logResponse.CreateLoginFailedResponse();
-
- GoodLogin = AuthenticateUser(userProfile, passwd);
- }
- else
- {
- return logResponse.CreateGridErrorResponse();
- }
-
- if (!GoodLogin)
- {
- return logResponse.CreateLoginFailedResponse();
- }
- else
- {
- // If we already have a session...
- if (userProfile.currentAgent != null && userProfile.currentAgent.agentOnline)
- {
- // Reject the login
- return logResponse.CreateAlreadyLoggedInResponse();
- }
- // Otherwise...
- // Create a new agent session
- CreateAgent( userProfile, request);
-
- try
- {
- LLUUID agentID = userProfile.UUID;
-
- // Inventory Library Section
- AgentInventory userInventory = this.GetUsersInventory(agentID);
- ArrayList AgentInventoryArray = this.CreateInventoryArray(userInventory);
-
- Hashtable InventoryRootHash = new Hashtable();
- InventoryRootHash["folder_id"] = userInventory.InventoryRoot.FolderID.ToStringHyphenated();
- ArrayList InventoryRoot = new ArrayList();
- InventoryRoot.Add(InventoryRootHash);
- userProfile.rootInventoryFolderID = userInventory.InventoryRoot.FolderID;
-
- // Circuit Code
- uint circode = (uint)(Util.RandomClass.Next());
-
- logResponse.Lastname = userProfile.surname;
- logResponse.Firstname = userProfile.username;
- logResponse.AgentID = agentID.ToStringHyphenated();
- logResponse.SessionID = userProfile.currentAgent.sessionID.ToStringHyphenated();
- logResponse.SecureSessionID = userProfile.currentAgent.secureSessionID.ToStringHyphenated();
- logResponse.InventoryRoot = InventoryRoot;
- logResponse.InventorySkeleton = AgentInventoryArray;
- logResponse.InventoryLibrary = this.GetInventoryLibrary();
- logResponse.InventoryLibraryOwner = this.GetLibraryOwner();
- logResponse.CircuitCode = (Int32)circode;
- //logResponse.RegionX = 0; //overwritten
- //logResponse.RegionY = 0; //overwritten
- logResponse.Home = "!!null temporary value {home}!!"; // Overwritten
- //logResponse.LookAt = "\n[r" + TheUser.homeLookAt.X.ToString() + ",r" + TheUser.homeLookAt.Y.ToString() + ",r" + TheUser.homeLookAt.Z.ToString() + "]\n";
- //logResponse.SimAddress = "127.0.0.1"; //overwritten
- //logResponse.SimPort = 0; //overwritten
- logResponse.Message = this.GetMessage();
-
- try
- {
- this.CustomiseResponse( logResponse, userProfile);
- }
- catch (Exception e)
- {
- System.Console.WriteLine(e.ToString());
- return logResponse.CreateDeadRegionResponse();
- //return logResponse.ToXmlRpcResponse();
- }
- CommitAgent(ref userProfile);
- return logResponse.ToXmlRpcResponse();
-
- }
-
- catch (Exception E)
- {
- System.Console.WriteLine(E.ToString());
- }
- //}
- }
- return response;
-
- }
-
- #endregion
-
- ///
- /// Deletes an active agent session
- ///
- /// The request
- /// The path (eg /bork/narf/test)
- /// Parameters sent
- /// Success "OK" else error
- public string RestDeleteUserSessionMethod(string request, string path, string param)
- {
- // TODO! Important!
-
- return "OK";
- }
-
- ///
///
///
///
@@ -611,6 +369,22 @@ namespace OpenSim.Framework.UserManagement
}
}
+ // Rest and XML-RPC methods. (could move them to a sub class in the user server?)
+
+ ///
+ /// Deletes an active agent session
+ ///
+ /// The request
+ /// The path (eg /bork/narf/test)
+ /// Parameters sent
+ /// Success "OK" else error
+ public string RestDeleteUserSessionMethod(string request, string path, string param)
+ {
+ // TODO! Important!
+
+ return "OK";
+ }
+
///
/// Returns an error message that the user could not be found in the database
///
--
cgit v1.1