From 25fdbd6cbcfc857c444042745d7d4fa8e495a982 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 9 Jan 2010 09:09:32 -0800 Subject: Less refs to UserProfileCacheService. Compiles but likely doesn't run. --- .../Communications/CommunicationsManager.cs | 63 ------------ .../Osp/OspInventoryWrapperPlugin.cs | 10 +- .../Framework/Communications/Osp/OspResolver.cs | 21 ++-- .../CoreModules/Avatar/Combat/CombatModule.cs | 2 +- .../Archiver/InventoryArchiveReadRequest.cs | 2 +- .../Archiver/InventoryArchiveWriteRequest.cs | 2 +- .../World/Estate/EstateManagementModule.cs | 15 +-- .../Framework/Scenes/Scene.PacketHandlers.cs | 20 +++- OpenSim/Region/Framework/Scenes/Scene.cs | 34 ++++++- .../UserAccountService/UserAccountService.cs | 107 +++++++++++++++++---- 10 files changed, 163 insertions(+), 113 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Framework/Communications/CommunicationsManager.cs b/OpenSim/Framework/Communications/CommunicationsManager.cs index 52f6202..d215340 100644 --- a/OpenSim/Framework/Communications/CommunicationsManager.cs +++ b/OpenSim/Framework/Communications/CommunicationsManager.cs @@ -135,69 +135,6 @@ namespace OpenSim.Framework.Communications return; } - public void HandleUUIDNameRequest(UUID uuid, IClientAPI remote_client) - { - if (uuid == m_userProfileCacheService.LibraryRoot.Owner) - { - remote_client.SendNameReply(uuid, "Mr", "OpenSim"); - } - else - { - string[] names = doUUIDNameRequest(uuid); - if (names.Length == 2) - { - remote_client.SendNameReply(uuid, names[0], names[1]); - } - - } - } - - private string[] doUUIDNameRequest(UUID uuid) - { - lock (m_nameRequestCache) - { - if (m_nameRequestCache.ContainsKey(uuid)) - return m_nameRequestCache[uuid]; - } - - string[] returnstring = new string[0]; - CachedUserInfo uinfo = UserProfileCacheService.GetUserDetails(uuid); - - if ((uinfo != null) && (uinfo.UserProfile != null)) - { - returnstring = new string[2]; - returnstring[0] = uinfo.UserProfile.FirstName; - returnstring[1] = uinfo.UserProfile.SurName; - lock (m_nameRequestCache) - { - if (!m_nameRequestCache.ContainsKey(uuid)) - m_nameRequestCache.Add(uuid, returnstring); - } - } - - return returnstring; - } - - public bool UUIDNameCachedTest(UUID uuid) - { - lock (m_nameRequestCache) - return m_nameRequestCache.ContainsKey(uuid); - } - - public string UUIDNameRequestString(UUID uuid) - { - string[] names = doUUIDNameRequest(uuid); - if (names.Length == 2) - { - string firstname = names[0]; - string lastname = names[1]; - - return firstname + " " + lastname; - - } - return "(hippos)"; - } - public List GenerateAgentPickerRequestResponse(UUID queryID, string query) { List pickerlist = m_userService.GenerateAgentPickerRequestResponse(queryID, query); diff --git a/OpenSim/Framework/Communications/Osp/OspInventoryWrapperPlugin.cs b/OpenSim/Framework/Communications/Osp/OspInventoryWrapperPlugin.cs index e96c5e8..bcd1eee 100644 --- a/OpenSim/Framework/Communications/Osp/OspInventoryWrapperPlugin.cs +++ b/OpenSim/Framework/Communications/Osp/OspInventoryWrapperPlugin.cs @@ -28,6 +28,7 @@ using System.Collections.Generic; using OpenSim.Data; using OpenMetaverse; +using OpenSim.Services.Interfaces; namespace OpenSim.Framework.Communications.Osp { @@ -37,12 +38,13 @@ namespace OpenSim.Framework.Communications.Osp public class OspInventoryWrapperPlugin : IInventoryDataPlugin { protected IInventoryDataPlugin m_wrappedPlugin; - protected CommunicationsManager m_commsManager; + //protected CommunicationsManager m_commsManager; + protected IUserAccountService m_userAccountService; - public OspInventoryWrapperPlugin(IInventoryDataPlugin wrappedPlugin, CommunicationsManager commsManager) + public OspInventoryWrapperPlugin(IInventoryDataPlugin wrappedPlugin, IUserAccountService userService) { m_wrappedPlugin = wrappedPlugin; - m_commsManager = commsManager; + m_userAccountService = userService; } public string Name { get { return "OspInventoryWrapperPlugin"; } } @@ -81,7 +83,7 @@ namespace OpenSim.Framework.Communications.Osp protected InventoryItemBase PostProcessItem(InventoryItemBase item) { - item.CreatorIdAsUuid = OspResolver.ResolveOspa(item.CreatorId, m_commsManager); + item.CreatorIdAsUuid = OspResolver.ResolveOspa(item.CreatorId, m_userAccountService); return item; } diff --git a/OpenSim/Framework/Communications/Osp/OspResolver.cs b/OpenSim/Framework/Communications/Osp/OspResolver.cs index 4013896..14f813a 100644 --- a/OpenSim/Framework/Communications/Osp/OspResolver.cs +++ b/OpenSim/Framework/Communications/Osp/OspResolver.cs @@ -31,6 +31,7 @@ using log4net; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Communications.Cache; +using OpenSim.Services.Interfaces; namespace OpenSim.Framework.Communications.Osp { @@ -55,11 +56,11 @@ namespace OpenSim.Framework.Communications.Osp /// /// /// The OSPA. Null if a user with the given UUID could not be found. - public static string MakeOspa(UUID userId, CommunicationsManager commsManager) + public static string MakeOspa(UUID userId, IUserAccountService userService) { - CachedUserInfo userInfo = commsManager.UserProfileCacheService.GetUserDetails(userId); - if (userInfo != null) - return MakeOspa(userInfo.UserProfile.FirstName, userInfo.UserProfile.SurName); + UserAccount account = userService.GetUserAccount(UUID.Zero, userId); + if (account != null) + return MakeOspa(account.FirstName, account.LastName); return null; } @@ -88,7 +89,7 @@ namespace OpenSim.Framework.Communications.Osp /// A suitable UUID for use in Second Life client communication. If the string was not a valid ospa, then UUID.Zero /// is returned. /// - public static UUID ResolveOspa(string ospa, CommunicationsManager commsManager) + public static UUID ResolveOspa(string ospa, IUserAccountService userService) { if (!ospa.StartsWith(OSPA_PREFIX)) return UUID.Zero; @@ -112,7 +113,7 @@ namespace OpenSim.Framework.Communications.Osp string value = tuple.Substring(tupleSeparatorIndex + 1).Trim(); if (OSPA_NAME_KEY == key) - return ResolveOspaName(value, commsManager); + return ResolveOspaName(value, userService); } return UUID.Zero; @@ -137,7 +138,7 @@ namespace OpenSim.Framework.Communications.Osp /// /// An OpenSim internal identifier for the name given. Returns null if the name was not valid /// - protected static UUID ResolveOspaName(string name, CommunicationsManager commsManager) + protected static UUID ResolveOspaName(string name, IUserAccountService userService) { int nameSeparatorIndex = name.IndexOf(OSPA_NAME_VALUE_SEPARATOR); @@ -150,9 +151,9 @@ namespace OpenSim.Framework.Communications.Osp string firstName = name.Remove(nameSeparatorIndex).TrimEnd(); string lastName = name.Substring(nameSeparatorIndex + 1).TrimStart(); - CachedUserInfo userInfo = commsManager.UserProfileCacheService.GetUserDetails(firstName, lastName); - if (userInfo != null) - return userInfo.UserProfile.ID; + UserAccount account = userService.GetUserAccount(UUID.Zero, firstName, lastName); + if (account != null) + return account.PrincipalID; // XXX: Disable temporary user profile creation for now as implementation is incomplete - justincc /* diff --git a/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs b/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs index 61b6d65..db94d2a 100644 --- a/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs @@ -130,7 +130,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Combat.CombatModule } else { - string killer = DeadAvatar.Scene.CommsManager.UUIDNameRequestString(part.OwnerID); + string killer = DeadAvatar.Scene.GetUserName(part.OwnerID); DeadAvatar.ControllingClient.SendAgentAlertMessage("You impaled yourself on " + part.Name + " owned by " + killer +"!", true); } //DeadAvatar.Scene. part.ObjectOwner diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 160a9bd..3417c87 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -357,7 +357,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver // Don't use the item ID that's in the file item.ID = UUID.Random(); - UUID ospResolvedId = OspResolver.ResolveOspa(item.CreatorId, m_scene.CommsManager); + UUID ospResolvedId = OspResolver.ResolveOspa(item.CreatorId, m_scene.UserAccountService); if (UUID.Zero != ospResolvedId) { item.CreatorIdAsUuid = ospResolvedId; diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs index 98b686e..8f75983 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs @@ -148,7 +148,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver m_userUuids[inventoryItem.CreatorIdAsUuid] = 1; InventoryItemBase saveItem = (InventoryItemBase)inventoryItem.Clone(); - saveItem.CreatorId = OspResolver.MakeOspa(saveItem.CreatorIdAsUuid, m_scene.CommsManager); + saveItem.CreatorId = OspResolver.MakeOspa(saveItem.CreatorIdAsUuid, m_scene.UserAccountService); string serialization = UserInventoryItemSerializer.Serialize(saveItem); m_archiveWriter.WriteFile(filename, serialization); diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index b1dcb14..5b82d4c 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs @@ -649,16 +649,9 @@ namespace OpenSim.Region.CoreModules.World.Estate lsri.TaskID = sog.UUID; lsri.TaskLocalID = sog.LocalId; lsri.TaskName = sog.GetPartName(obj); - if (m_scene.CommsManager.UUIDNameCachedTest(sog.OwnerID)) - { - lsri.OwnerName = m_scene.CommsManager.UUIDNameRequestString(sog.OwnerID); - } - else - { - lsri.OwnerName = "waiting"; - lock (uuidNameLookupList) - uuidNameLookupList.Add(sog.OwnerID); - } + lsri.OwnerName = "waiting"; + lock (uuidNameLookupList) + uuidNameLookupList.Add(sog.OwnerID); if (filter.Length != 0) { @@ -709,7 +702,7 @@ namespace OpenSim.Region.CoreModules.World.Estate for (int i = 0; i < uuidarr.Length; i++) { // string lookupname = m_scene.CommsManager.UUIDNameRequestString(uuidarr[i]); - m_scene.CommsManager.UUIDNameRequestString(uuidarr[i]); + m_scene.GetUserName(uuidarr[i]); // we drop it. It gets cached though... so we're ready for the next request. } } diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs index 022d79d..139e0ca 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs @@ -33,6 +33,7 @@ using OpenMetaverse.Packets; using OpenSim.Framework; using OpenSim.Framework.Communications; using OpenSim.Framework.Communications.Cache; +using OpenSim.Services.Interfaces; namespace OpenSim.Region.Framework.Scenes { @@ -415,7 +416,24 @@ namespace OpenSim.Region.Framework.Scenes } ); } - + + public void HandleUUIDNameRequest(UUID uuid, IClientAPI remote_client) + { + if (uuid == CommsManager.UserProfileCacheService.LibraryRoot.Owner) + { + remote_client.SendNameReply(uuid, "Mr", "OpenSim"); + } + else + { + string[] names = GetUserNames(uuid); + if (names.Length == 2) + { + remote_client.SendNameReply(uuid, names[0], names[1]); + } + + } + } + /// /// Handle a fetch inventory request from the client /// diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index ef62b79..90d476e 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -841,6 +841,36 @@ namespace OpenSim.Region.Framework.Scenes return m_simulatorVersion; } + public string[] GetUserNames(UUID uuid) + { + string[] returnstring = new string[0]; + + UserAccount account = UserAccountService.GetUserAccount(RegionInfo.ScopeID, uuid); + + if (account != null) + { + returnstring = new string[2]; + returnstring[0] = account.FirstName; + returnstring[1] = account.LastName; + } + + return returnstring; + } + + public string GetUserName(UUID uuid) + { + string[] names = GetUserNames(uuid); + if (names.Length == 2) + { + string firstname = names[0]; + string lastname = names[1]; + + return firstname + " " + lastname; + + } + return "(hippos)"; + } + /// /// Another region is up. /// @@ -2804,7 +2834,7 @@ namespace OpenSim.Region.Framework.Scenes public virtual void SubscribeToClientGridEvents(IClientAPI client) { - client.OnNameFromUUIDRequest += CommsManager.HandleUUIDNameRequest; + client.OnNameFromUUIDRequest += HandleUUIDNameRequest; client.OnMoneyTransferRequest += ProcessMoneyTransferRequest; client.OnAvatarPickerRequest += ProcessAvatarPickerRequest; client.OnSetStartLocationRequest += SetHomeRezPoint; @@ -2959,7 +2989,7 @@ namespace OpenSim.Region.Framework.Scenes public virtual void UnSubscribeToClientGridEvents(IClientAPI client) { - client.OnNameFromUUIDRequest -= CommsManager.HandleUUIDNameRequest; + client.OnNameFromUUIDRequest -= HandleUUIDNameRequest; client.OnMoneyTransferRequest -= ProcessMoneyTransferRequest; client.OnAvatarPickerRequest -= ProcessAvatarPickerRequest; client.OnSetStartLocationRequest -= SetHomeRezPoint; diff --git a/OpenSim/Services/UserAccountService/UserAccountService.cs b/OpenSim/Services/UserAccountService/UserAccountService.cs index c14651d..dacfa51 100644 --- a/OpenSim/Services/UserAccountService/UserAccountService.cs +++ b/OpenSim/Services/UserAccountService/UserAccountService.cs @@ -29,6 +29,7 @@ using System; using System.Reflection; using Nini.Config; using OpenSim.Data; +using OpenSim.Framework.Console; using OpenSim.Services.Interfaces; using System.Collections.Generic; using OpenMetaverse; @@ -37,10 +38,17 @@ namespace OpenSim.Services.UserAccountService { public class UserAccountService : UserAccountServiceBase, IUserAccountService { - public UserAccountService(IConfigSource config) : base(config) + public UserAccountService(IConfigSource config) + : base(config) { + MainConsole.Instance.Commands.AddCommand("UserService", false, + "create user", + "create user [ [ [ [ []]]]]", + "Create a new user", HandleCreateUser); } + #region IUserAccountService + public UserAccount GetUserAccount(UUID scopeID, string firstName, string lastName) { @@ -49,14 +57,14 @@ namespace OpenSim.Services.UserAccountService if (scopeID != UUID.Zero) { d = m_Database.Get( - new string[] {"ScopeID", "FirstName", "LastName"}, - new string[] {scopeID.ToString(), firstName, lastName}); + new string[] { "ScopeID", "FirstName", "LastName" }, + new string[] { scopeID.ToString(), firstName, lastName }); } else { d = m_Database.Get( - new string[] {"FirstName", "LastName"}, - new string[] {firstName, lastName}); + new string[] { "FirstName", "LastName" }, + new string[] { firstName, lastName }); } if (d.Length < 1) @@ -75,12 +83,12 @@ namespace OpenSim.Services.UserAccountService u.Email = d.Data["Email"].ToString(); u.Created = Convert.ToInt32(d.Data["Created"].ToString()); - string[] URLs = d.Data["ServiceURLs"].ToString().Split(new char[] {' '}); + string[] URLs = d.Data["ServiceURLs"].ToString().Split(new char[] { ' ' }); u.ServiceURLs = new Dictionary(); - foreach(string url in URLs) + foreach (string url in URLs) { - string[] parts = url.Split(new char[] {'='}); + string[] parts = url.Split(new char[] { '=' }); if (parts.Length != 2) continue; @@ -101,14 +109,14 @@ namespace OpenSim.Services.UserAccountService if (scopeID != UUID.Zero) { d = m_Database.Get( - new string[] {"ScopeID", "Email"}, - new string[] {scopeID.ToString(), email}); + new string[] { "ScopeID", "Email" }, + new string[] { scopeID.ToString(), email }); } else { d = m_Database.Get( - new string[] {"Email"}, - new string[] {email}); + new string[] { "Email" }, + new string[] { email }); } if (d.Length < 1) @@ -116,7 +124,7 @@ namespace OpenSim.Services.UserAccountService return MakeUserAccount(d[0]); } - + public UserAccount GetUserAccount(UUID scopeID, UUID principalID) { UserAccountData[] d; @@ -124,14 +132,14 @@ namespace OpenSim.Services.UserAccountService if (scopeID != UUID.Zero) { d = m_Database.Get( - new string[] {"ScopeID", "PrincipalID"}, - new string[] {scopeID.ToString(), principalID.ToString()}); + new string[] { "ScopeID", "PrincipalID" }, + new string[] { scopeID.ToString(), principalID.ToString() }); } else { d = m_Database.Get( - new string[] {"PrincipalID"}, - new string[] {principalID.ToString()}); + new string[] { "PrincipalID" }, + new string[] { principalID.ToString() }); } if (d.Length < 1) @@ -148,13 +156,13 @@ namespace OpenSim.Services.UserAccountService d.LastName = data.LastName; d.PrincipalID = data.PrincipalID; d.ScopeID = data.ScopeID; - d.Data = new Dictionary(); + d.Data = new Dictionary(); d.Data["Email"] = data.Email; d.Data["Created"] = data.Created.ToString(); List parts = new List(); - foreach (KeyValuePair kvp in data.ServiceURLs) + foreach (KeyValuePair kvp in data.ServiceURLs) { string key = System.Web.HttpUtility.UrlEncode(kvp.Key); string val = System.Web.HttpUtility.UrlEncode(kvp.Value.ToString()); @@ -180,5 +188,66 @@ namespace OpenSim.Services.UserAccountService return ret; } + + #endregion + + #region Console commands + /// + /// Create a new user + /// + /// string array with parameters: firstname, lastname, password, locationX, locationY, email + protected void HandleCreateUser(string module, string[] cmdparams) + { + string firstName; + string lastName; + string password; + string email; + uint regX = 1000; + uint regY = 1000; + + // IConfig standalone; + // if ((standalone = m_config.Source.Configs["StandAlone"]) != null) + // { + // regX = (uint)standalone.GetInt("default_location_x", (int)regX); + // regY = (uint)standalone.GetInt("default_location_y", (int)regY); + // } + + + // if (cmdparams.Length < 3) + // firstName = MainConsole.Instance.CmdPrompt("First name", "Default"); + // else firstName = cmdparams[2]; + + // if (cmdparams.Length < 4) + // lastName = MainConsole.Instance.CmdPrompt("Last name", "User"); + // else lastName = cmdparams[3]; + + // if (cmdparams.Length < 5) + // password = MainConsole.Instance.PasswdPrompt("Password"); + // else password = cmdparams[4]; + + // if (cmdparams.Length < 6) + // regX = Convert.ToUInt32(MainConsole.Instance.CmdPrompt("Start Region X", regX.ToString())); + // else regX = Convert.ToUInt32(cmdparams[5]); + + // if (cmdparams.Length < 7) + // regY = Convert.ToUInt32(MainConsole.Instance.CmdPrompt("Start Region Y", regY.ToString())); + // else regY = Convert.ToUInt32(cmdparams[6]); + + // if (cmdparams.Length < 8) + // email = MainConsole.Instance.CmdPrompt("Email", ""); + // else email = cmdparams[7]; + + // if (null == m_commsManager.UserProfileCacheService.GetUserDetails(firstName, lastName)) + // { + // m_commsManager.UserAdminService.AddUser(firstName, lastName, password, email, regX, regY); + // } + // else + // { + // m_log.ErrorFormat("[CONSOLE]: A user with the name {0} {1} already exists!", firstName, lastName); + // } + //} + + } + #endregion } } -- cgit v1.1