diff --git a/OpenSim/Grid/UserServer/Main.cs b/OpenSim/Grid/UserServer/Main.cs index 2199e93093..1e6504d35b 100644 --- a/OpenSim/Grid/UserServer/Main.cs +++ b/OpenSim/Grid/UserServer/Main.cs @@ -52,6 +52,8 @@ namespace OpenSim.Grid.UserServer protected UserConfig Cfg; + protected UserDataBaseService m_userDataBaseService; + public UserManager m_userManager; public UserLoginService m_loginService; public GridInfoService m_gridInfoService; @@ -97,8 +99,10 @@ namespace OpenSim.Grid.UserServer IInterServiceInventoryServices inventoryService = new OGS1InterServiceInventoryService(Cfg.InventoryUrl); + m_userDataBaseService = new UserDataBaseService(inventoryService); + m_userDataBaseService.AddPlugin(Cfg.DatabaseProvider, Cfg.DatabaseConnect); + StartupUserManager(inventoryService); - m_userManager.AddPlugin(Cfg.DatabaseProvider, Cfg.DatabaseConnect); m_gridInfoService = new GridInfoService(); @@ -158,7 +162,7 @@ namespace OpenSim.Grid.UserServer /// protected virtual void StartupUserManager(IInterServiceInventoryServices inventoryService) { - m_userManager = new UserManager(new OGS1InterServiceInventoryService(Cfg.InventoryUrl)); + m_userManager = new UserManager(inventoryService, m_userDataBaseService); } /// @@ -168,7 +172,7 @@ namespace OpenSim.Grid.UserServer protected virtual void StartupLoginService(IInterServiceInventoryServices inventoryService) { m_loginService = new UserLoginService( - m_userManager, inventoryService, new LibraryRootFolder(Cfg.LibraryXmlfile), Cfg, Cfg.DefaultStartupMsg, new RegionProfileServiceProxy()); + m_userDataBaseService, inventoryService, new LibraryRootFolder(Cfg.LibraryXmlfile), Cfg, Cfg.DefaultStartupMsg, new RegionProfileServiceProxy()); } protected virtual void AddHttpHandlers() @@ -297,9 +301,9 @@ namespace OpenSim.Grid.UserServer email = MainConsole.Instance.CmdPrompt("Email", ""); else email = cmdparams[6]; - if (null == m_userManager.GetUserProfile(firstName, lastName)) + if (null == m_userDataBaseService.GetUserProfile(firstName, lastName)) { - m_lastCreatedUser = m_userManager.AddUser(firstName, lastName, password, email, regX, regY); + m_lastCreatedUser = m_userDataBaseService.AddUser(firstName, lastName, password, email, regX, regY); } else { @@ -329,7 +333,7 @@ namespace OpenSim.Grid.UserServer newPassword = MainConsole.Instance.PasswdPrompt("New password"); else newPassword = cmdparams[4]; - m_userManager.ResetUserPassword(firstName, lastName, newPassword); + m_userDataBaseService.ResetUserPassword(firstName, lastName, newPassword); } private void HandleLoginCommand(string module, string[] cmd) diff --git a/OpenSim/Grid/UserServer/UserDataBaseService.cs b/OpenSim/Grid/UserServer/UserDataBaseService.cs new file mode 100644 index 0000000000..6c144d9c5a --- /dev/null +++ b/OpenSim/Grid/UserServer/UserDataBaseService.cs @@ -0,0 +1,68 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using log4net; +using Nwc.XmlRpc; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Framework.Communications; +using OpenSim.Framework.Servers; + +namespace OpenSim.Grid.UserServer +{ + public class UserDataBaseService : UserManagerBase + { + public UserDataBaseService() + : base(null) + { + } + + public UserDataBaseService(IInterServiceInventoryServices interServiceInventoryService) + : base(interServiceInventoryService) + { + } + + public override UserProfileData SetupMasterUser(string firstName, string lastName) + { + throw new Exception("The method or operation is not implemented."); + } + + public override UserProfileData SetupMasterUser(string firstName, string lastName, string password) + { + throw new Exception("The method or operation is not implemented."); + } + + public override UserProfileData SetupMasterUser(UUID uuid) + { + throw new Exception("The method or operation is not implemented."); + } + } +} diff --git a/OpenSim/Grid/UserServer/UserManager.cs b/OpenSim/Grid/UserServer/UserManager.cs index 0a60eff3ac..f3e9884030 100644 --- a/OpenSim/Grid/UserServer/UserManager.cs +++ b/OpenSim/Grid/UserServer/UserManager.cs @@ -40,20 +40,23 @@ namespace OpenSim.Grid.UserServer { public delegate void logOffUser(UUID AgentID); - public class UserManager : UserManagerBase + public class UserManager { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public event logOffUser OnLogOffUser; private logOffUser handlerLogOffUser; + + private UserDataBaseService m_userDataBaseService; /// /// Constructor /// /// - public UserManager(IInterServiceInventoryServices interServiceInventoryService) - : base(interServiceInventoryService) - {} + public UserManager(IInterServiceInventoryServices interServiceInventoryService, UserDataBaseService userDataBaseService) + { + m_userDataBaseService = userDataBaseService; + } /// /// Deletes an active agent session @@ -185,7 +188,7 @@ namespace OpenSim.Grid.UserServer if (requestData.Contains("avquery") && requestData.Contains("queryid")) { queryID = new UUID((string) requestData["queryid"]); - returnAvatar = GenerateAgentPickerRequestResponse(queryID, (string) requestData["avquery"]); + returnAvatar = m_userDataBaseService.GenerateAgentPickerRequestResponse(queryID, (string) requestData["avquery"]); } m_log.InfoFormat("[AVATARINFO]: Servicing Avatar Query: " + (string) requestData["avquery"]); @@ -211,11 +214,11 @@ namespace OpenSim.Grid.UserServer if (avatarUUID != UUID.Zero) { - UserProfileData userProfile = GetUserProfile(avatarUUID); + UserProfileData userProfile = m_userDataBaseService.GetUserProfile(avatarUUID); userProfile.CurrentAgent.Region = regionUUID; userProfile.CurrentAgent.Handle = (ulong) Convert.ToInt64((string) requestData["region_handle"]); //userProfile.CurrentAgent. - CommitAgent(ref userProfile); + m_userDataBaseService.CommitAgent(ref userProfile); //setUserProfile(userProfile); @@ -239,7 +242,7 @@ namespace OpenSim.Grid.UserServer requestData.Contains("friendPerms")) { // UserManagerBase.AddNewuserFriend - AddNewUserFriend(new UUID((string) requestData["ownerID"]), + m_userDataBaseService.AddNewUserFriend(new UUID((string)requestData["ownerID"]), new UUID((string) requestData["friendID"]), (uint) Convert.ToInt32((string) requestData["friendPerms"])); returnString = "TRUE"; @@ -260,7 +263,7 @@ namespace OpenSim.Grid.UserServer if (requestData.Contains("ownerID") && requestData.Contains("friendID")) { // UserManagerBase.AddNewuserFriend - RemoveUserFriend(new UUID((string) requestData["ownerID"]), + m_userDataBaseService.RemoveUserFriend(new UUID((string)requestData["ownerID"]), new UUID((string) requestData["friendID"])); returnString = "TRUE"; } @@ -279,7 +282,7 @@ namespace OpenSim.Grid.UserServer if (requestData.Contains("ownerID") && requestData.Contains("friendID") && requestData.Contains("friendPerms")) { - UpdateUserFriendPerms(new UUID((string) requestData["ownerID"]), + m_userDataBaseService.UpdateUserFriendPerms(new UUID((string)requestData["ownerID"]), new UUID((string) requestData["friendID"]), (uint) Convert.ToInt32((string) requestData["friendPerms"])); // UserManagerBase. @@ -300,7 +303,7 @@ namespace OpenSim.Grid.UserServer if (requestData.Contains("ownerID")) { - returndata = GetUserFriendList(new UUID((string) requestData["ownerID"])); + returndata = m_userDataBaseService.GetUserFriendList(new UUID((string)requestData["ownerID"])); } return FriendListItemListtoXmlRPCResponse(returndata); @@ -314,7 +317,7 @@ namespace OpenSim.Grid.UserServer Hashtable responseData; if (requestData.Contains("owner")) { - appearance = GetUserAppearance(new UUID((string) requestData["owner"])); + appearance = m_userDataBaseService.GetUserAppearance(new UUID((string)requestData["owner"])); if (appearance == null) { responseData = new Hashtable(); @@ -345,7 +348,7 @@ namespace OpenSim.Grid.UserServer if (requestData.Contains("owner")) { AvatarAppearance appearance = new AvatarAppearance(requestData); - UpdateUserAppearance(new UUID((string) requestData["owner"]), appearance); + m_userDataBaseService.UpdateUserAppearance(new UUID((string)requestData["owner"]), appearance); responseData = new Hashtable(); responseData["returnString"] = "TRUE"; } @@ -374,7 +377,7 @@ namespace OpenSim.Grid.UserServer if (querysplit.Length == 2) { - userProfile = GetUserProfile(querysplit[0], querysplit[1]); + userProfile = m_userDataBaseService.GetUserProfile(querysplit[0], querysplit[1]); if (userProfile == null) { return CreateUnknownUserErrorResponse(); @@ -406,7 +409,7 @@ namespace OpenSim.Grid.UserServer { UUID guess = new UUID((string) requestData["avatar_uuid"]); - userProfile = GetUserProfile(guess); + userProfile = m_userDataBaseService.GetUserProfile(guess); } catch (FormatException) { @@ -444,7 +447,7 @@ namespace OpenSim.Grid.UserServer return CreateUnknownUserErrorResponse(); } - userProfile = GetUserProfile(guess); + userProfile = m_userDataBaseService.GetUserProfile(guess); if (userProfile == null) { @@ -497,7 +500,7 @@ namespace OpenSim.Grid.UserServer { return CreateUnknownUserErrorResponse(); } - userProfile = GetUserProfile(guess_aid); + userProfile = m_userDataBaseService.GetUserProfile(guess_aid); if (userProfile != null && userProfile.CurrentAgent != null && userProfile.CurrentAgent.SessionID == guess_sid) { @@ -529,7 +532,7 @@ namespace OpenSim.Grid.UserServer } UUID UserUUID = new UUID((string) requestData["avatar_uuid"]); - UserProfileData userProfile = GetUserProfile(UserUUID); + UserProfileData userProfile = m_userDataBaseService.GetUserProfile(UserUUID); if (null == userProfile) { return CreateUnknownUserErrorResponse(); @@ -703,7 +706,7 @@ namespace OpenSim.Grid.UserServer } // call plugin! - bool ret = UpdateUserProfile(userProfile); + bool ret = m_userDataBaseService.UpdateUserProfile(userProfile); responseData["returnString"] = ret.ToString(); response.Value = responseData; return response; @@ -734,7 +737,7 @@ namespace OpenSim.Grid.UserServer if (handlerLogOffUser != null) handlerLogOffUser(userUUID); - LogOffUser(userUUID, RegionID, regionhandle, position, lookat); + m_userDataBaseService.LogOffUser(userUUID, RegionID, regionhandle, position, lookat); } catch (FormatException) { @@ -752,35 +755,21 @@ namespace OpenSim.Grid.UserServer #endregion - public override UserProfileData SetupMasterUser(string firstName, string lastName) - { - throw new Exception("The method or operation is not implemented."); - } - - public override UserProfileData SetupMasterUser(string firstName, string lastName, string password) - { - throw new Exception("The method or operation is not implemented."); - } - - public override UserProfileData SetupMasterUser(UUID uuid) - { - throw new Exception("The method or operation is not implemented."); - } public void HandleAgentLocation(UUID agentID, UUID regionID, ulong regionHandle) { - UserProfileData userProfile = GetUserProfile(agentID); + UserProfileData userProfile = m_userDataBaseService.GetUserProfile(agentID); if (userProfile != null) { userProfile.CurrentAgent.Region = regionID; userProfile.CurrentAgent.Handle = regionHandle; - CommitAgent(ref userProfile); + m_userDataBaseService.CommitAgent(ref userProfile); } } public void HandleAgentLeaving(UUID agentID, UUID regionID, ulong regionHandle) { - UserProfileData userProfile = GetUserProfile(agentID); + UserProfileData userProfile = m_userDataBaseService.GetUserProfile(agentID); if (userProfile != null) { if (userProfile.CurrentAgent.Region == regionID) @@ -797,7 +786,7 @@ namespace OpenSim.Grid.UserServer userAgent.Handle = regionHandle; userProfile.LastLogin = userAgent.LogoutTime; - CommitAgent(ref userProfile); + m_userDataBaseService.CommitAgent(ref userProfile); handlerLogOffUser = OnLogOffUser; if (handlerLogOffUser != null) @@ -809,12 +798,12 @@ namespace OpenSim.Grid.UserServer public void HandleRegionStartup(UUID regionID) { - LogoutUsers(regionID); + m_userDataBaseService.LogoutUsers(regionID); } public void HandleRegionShutdown(UUID regionID) { - LogoutUsers(regionID); + m_userDataBaseService.LogoutUsers(regionID); } } }