Less refs to UserProfileCacheService. Compiles but likely doesn't run.

slimupdates
Diva Canto 2010-01-09 09:09:32 -08:00
parent 6b60f3cce5
commit 25fdbd6cbc
10 changed files with 163 additions and 113 deletions

View File

@ -135,69 +135,6 @@ namespace OpenSim.Framework.Communications
return; 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<AvatarPickerAvatar> GenerateAgentPickerRequestResponse(UUID queryID, string query) public List<AvatarPickerAvatar> GenerateAgentPickerRequestResponse(UUID queryID, string query)
{ {
List<AvatarPickerAvatar> pickerlist = m_userService.GenerateAgentPickerRequestResponse(queryID, query); List<AvatarPickerAvatar> pickerlist = m_userService.GenerateAgentPickerRequestResponse(queryID, query);

View File

@ -28,6 +28,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using OpenSim.Data; using OpenSim.Data;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Services.Interfaces;
namespace OpenSim.Framework.Communications.Osp namespace OpenSim.Framework.Communications.Osp
{ {
@ -37,12 +38,13 @@ namespace OpenSim.Framework.Communications.Osp
public class OspInventoryWrapperPlugin : IInventoryDataPlugin public class OspInventoryWrapperPlugin : IInventoryDataPlugin
{ {
protected IInventoryDataPlugin m_wrappedPlugin; 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_wrappedPlugin = wrappedPlugin;
m_commsManager = commsManager; m_userAccountService = userService;
} }
public string Name { get { return "OspInventoryWrapperPlugin"; } } public string Name { get { return "OspInventoryWrapperPlugin"; } }
@ -81,7 +83,7 @@ namespace OpenSim.Framework.Communications.Osp
protected InventoryItemBase PostProcessItem(InventoryItemBase item) protected InventoryItemBase PostProcessItem(InventoryItemBase item)
{ {
item.CreatorIdAsUuid = OspResolver.ResolveOspa(item.CreatorId, m_commsManager); item.CreatorIdAsUuid = OspResolver.ResolveOspa(item.CreatorId, m_userAccountService);
return item; return item;
} }

View File

@ -31,6 +31,7 @@ using log4net;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Communications.Cache;
using OpenSim.Services.Interfaces;
namespace OpenSim.Framework.Communications.Osp namespace OpenSim.Framework.Communications.Osp
{ {
@ -55,11 +56,11 @@ namespace OpenSim.Framework.Communications.Osp
/// <param name="userId"></param> /// <param name="userId"></param>
/// <param name="commsManager"></param> /// <param name="commsManager"></param>
/// <returns>The OSPA. Null if a user with the given UUID could not be found.</returns> /// <returns>The OSPA. Null if a user with the given UUID could not be found.</returns>
public static string MakeOspa(UUID userId, CommunicationsManager commsManager) public static string MakeOspa(UUID userId, IUserAccountService userService)
{ {
CachedUserInfo userInfo = commsManager.UserProfileCacheService.GetUserDetails(userId); UserAccount account = userService.GetUserAccount(UUID.Zero, userId);
if (userInfo != null) if (account != null)
return MakeOspa(userInfo.UserProfile.FirstName, userInfo.UserProfile.SurName); return MakeOspa(account.FirstName, account.LastName);
return null; 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 /// A suitable UUID for use in Second Life client communication. If the string was not a valid ospa, then UUID.Zero
/// is returned. /// is returned.
/// </returns> /// </returns>
public static UUID ResolveOspa(string ospa, CommunicationsManager commsManager) public static UUID ResolveOspa(string ospa, IUserAccountService userService)
{ {
if (!ospa.StartsWith(OSPA_PREFIX)) if (!ospa.StartsWith(OSPA_PREFIX))
return UUID.Zero; return UUID.Zero;
@ -112,7 +113,7 @@ namespace OpenSim.Framework.Communications.Osp
string value = tuple.Substring(tupleSeparatorIndex + 1).Trim(); string value = tuple.Substring(tupleSeparatorIndex + 1).Trim();
if (OSPA_NAME_KEY == key) if (OSPA_NAME_KEY == key)
return ResolveOspaName(value, commsManager); return ResolveOspaName(value, userService);
} }
return UUID.Zero; return UUID.Zero;
@ -137,7 +138,7 @@ namespace OpenSim.Framework.Communications.Osp
/// <returns> /// <returns>
/// An OpenSim internal identifier for the name given. Returns null if the name was not valid /// An OpenSim internal identifier for the name given. Returns null if the name was not valid
/// </returns> /// </returns>
protected static UUID ResolveOspaName(string name, CommunicationsManager commsManager) protected static UUID ResolveOspaName(string name, IUserAccountService userService)
{ {
int nameSeparatorIndex = name.IndexOf(OSPA_NAME_VALUE_SEPARATOR); int nameSeparatorIndex = name.IndexOf(OSPA_NAME_VALUE_SEPARATOR);
@ -150,9 +151,9 @@ namespace OpenSim.Framework.Communications.Osp
string firstName = name.Remove(nameSeparatorIndex).TrimEnd(); string firstName = name.Remove(nameSeparatorIndex).TrimEnd();
string lastName = name.Substring(nameSeparatorIndex + 1).TrimStart(); string lastName = name.Substring(nameSeparatorIndex + 1).TrimStart();
CachedUserInfo userInfo = commsManager.UserProfileCacheService.GetUserDetails(firstName, lastName); UserAccount account = userService.GetUserAccount(UUID.Zero, firstName, lastName);
if (userInfo != null) if (account != null)
return userInfo.UserProfile.ID; return account.PrincipalID;
// XXX: Disable temporary user profile creation for now as implementation is incomplete - justincc // XXX: Disable temporary user profile creation for now as implementation is incomplete - justincc
/* /*

View File

@ -130,7 +130,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Combat.CombatModule
} }
else 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.ControllingClient.SendAgentAlertMessage("You impaled yourself on " + part.Name + " owned by " + killer +"!", true);
} }
//DeadAvatar.Scene. part.ObjectOwner //DeadAvatar.Scene. part.ObjectOwner

View File

@ -357,7 +357,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
// Don't use the item ID that's in the file // Don't use the item ID that's in the file
item.ID = UUID.Random(); 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) if (UUID.Zero != ospResolvedId)
{ {
item.CreatorIdAsUuid = ospResolvedId; item.CreatorIdAsUuid = ospResolvedId;

View File

@ -148,7 +148,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
m_userUuids[inventoryItem.CreatorIdAsUuid] = 1; m_userUuids[inventoryItem.CreatorIdAsUuid] = 1;
InventoryItemBase saveItem = (InventoryItemBase)inventoryItem.Clone(); 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); string serialization = UserInventoryItemSerializer.Serialize(saveItem);
m_archiveWriter.WriteFile(filename, serialization); m_archiveWriter.WriteFile(filename, serialization);

View File

@ -649,16 +649,9 @@ namespace OpenSim.Region.CoreModules.World.Estate
lsri.TaskID = sog.UUID; lsri.TaskID = sog.UUID;
lsri.TaskLocalID = sog.LocalId; lsri.TaskLocalID = sog.LocalId;
lsri.TaskName = sog.GetPartName(obj); lsri.TaskName = sog.GetPartName(obj);
if (m_scene.CommsManager.UUIDNameCachedTest(sog.OwnerID)) lsri.OwnerName = "waiting";
{ lock (uuidNameLookupList)
lsri.OwnerName = m_scene.CommsManager.UUIDNameRequestString(sog.OwnerID); uuidNameLookupList.Add(sog.OwnerID);
}
else
{
lsri.OwnerName = "waiting";
lock (uuidNameLookupList)
uuidNameLookupList.Add(sog.OwnerID);
}
if (filter.Length != 0) if (filter.Length != 0)
{ {
@ -709,7 +702,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
for (int i = 0; i < uuidarr.Length; i++) for (int i = 0; i < uuidarr.Length; i++)
{ {
// string lookupname = m_scene.CommsManager.UUIDNameRequestString(uuidarr[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. // we drop it. It gets cached though... so we're ready for the next request.
} }
} }

View File

@ -33,6 +33,7 @@ using OpenMetaverse.Packets;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Framework.Communications; using OpenSim.Framework.Communications;
using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Communications.Cache;
using OpenSim.Services.Interfaces;
namespace OpenSim.Region.Framework.Scenes namespace OpenSim.Region.Framework.Scenes
{ {
@ -416,6 +417,23 @@ 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]);
}
}
}
/// <summary> /// <summary>
/// Handle a fetch inventory request from the client /// Handle a fetch inventory request from the client
/// </summary> /// </summary>

View File

@ -841,6 +841,36 @@ namespace OpenSim.Region.Framework.Scenes
return m_simulatorVersion; 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)";
}
/// <summary> /// <summary>
/// Another region is up. /// Another region is up.
/// ///
@ -2804,7 +2834,7 @@ namespace OpenSim.Region.Framework.Scenes
public virtual void SubscribeToClientGridEvents(IClientAPI client) public virtual void SubscribeToClientGridEvents(IClientAPI client)
{ {
client.OnNameFromUUIDRequest += CommsManager.HandleUUIDNameRequest; client.OnNameFromUUIDRequest += HandleUUIDNameRequest;
client.OnMoneyTransferRequest += ProcessMoneyTransferRequest; client.OnMoneyTransferRequest += ProcessMoneyTransferRequest;
client.OnAvatarPickerRequest += ProcessAvatarPickerRequest; client.OnAvatarPickerRequest += ProcessAvatarPickerRequest;
client.OnSetStartLocationRequest += SetHomeRezPoint; client.OnSetStartLocationRequest += SetHomeRezPoint;
@ -2959,7 +2989,7 @@ namespace OpenSim.Region.Framework.Scenes
public virtual void UnSubscribeToClientGridEvents(IClientAPI client) public virtual void UnSubscribeToClientGridEvents(IClientAPI client)
{ {
client.OnNameFromUUIDRequest -= CommsManager.HandleUUIDNameRequest; client.OnNameFromUUIDRequest -= HandleUUIDNameRequest;
client.OnMoneyTransferRequest -= ProcessMoneyTransferRequest; client.OnMoneyTransferRequest -= ProcessMoneyTransferRequest;
client.OnAvatarPickerRequest -= ProcessAvatarPickerRequest; client.OnAvatarPickerRequest -= ProcessAvatarPickerRequest;
client.OnSetStartLocationRequest -= SetHomeRezPoint; client.OnSetStartLocationRequest -= SetHomeRezPoint;

View File

@ -29,6 +29,7 @@ using System;
using System.Reflection; using System.Reflection;
using Nini.Config; using Nini.Config;
using OpenSim.Data; using OpenSim.Data;
using OpenSim.Framework.Console;
using OpenSim.Services.Interfaces; using OpenSim.Services.Interfaces;
using System.Collections.Generic; using System.Collections.Generic;
using OpenMetaverse; using OpenMetaverse;
@ -37,10 +38,17 @@ namespace OpenSim.Services.UserAccountService
{ {
public class UserAccountService : UserAccountServiceBase, IUserAccountService 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 [<first> [<last> [<pass> [<x> <y> [<email>]]]]]",
"Create a new user", HandleCreateUser);
} }
#region IUserAccountService
public UserAccount GetUserAccount(UUID scopeID, string firstName, public UserAccount GetUserAccount(UUID scopeID, string firstName,
string lastName) string lastName)
{ {
@ -49,14 +57,14 @@ namespace OpenSim.Services.UserAccountService
if (scopeID != UUID.Zero) if (scopeID != UUID.Zero)
{ {
d = m_Database.Get( d = m_Database.Get(
new string[] {"ScopeID", "FirstName", "LastName"}, new string[] { "ScopeID", "FirstName", "LastName" },
new string[] {scopeID.ToString(), firstName, lastName}); new string[] { scopeID.ToString(), firstName, lastName });
} }
else else
{ {
d = m_Database.Get( d = m_Database.Get(
new string[] {"FirstName", "LastName"}, new string[] { "FirstName", "LastName" },
new string[] {firstName, lastName}); new string[] { firstName, lastName });
} }
if (d.Length < 1) if (d.Length < 1)
@ -75,12 +83,12 @@ namespace OpenSim.Services.UserAccountService
u.Email = d.Data["Email"].ToString(); u.Email = d.Data["Email"].ToString();
u.Created = Convert.ToInt32(d.Data["Created"].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<string, object>(); u.ServiceURLs = new Dictionary<string, object>();
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) if (parts.Length != 2)
continue; continue;
@ -101,14 +109,14 @@ namespace OpenSim.Services.UserAccountService
if (scopeID != UUID.Zero) if (scopeID != UUID.Zero)
{ {
d = m_Database.Get( d = m_Database.Get(
new string[] {"ScopeID", "Email"}, new string[] { "ScopeID", "Email" },
new string[] {scopeID.ToString(), email}); new string[] { scopeID.ToString(), email });
} }
else else
{ {
d = m_Database.Get( d = m_Database.Get(
new string[] {"Email"}, new string[] { "Email" },
new string[] {email}); new string[] { email });
} }
if (d.Length < 1) if (d.Length < 1)
@ -124,14 +132,14 @@ namespace OpenSim.Services.UserAccountService
if (scopeID != UUID.Zero) if (scopeID != UUID.Zero)
{ {
d = m_Database.Get( d = m_Database.Get(
new string[] {"ScopeID", "PrincipalID"}, new string[] { "ScopeID", "PrincipalID" },
new string[] {scopeID.ToString(), principalID.ToString()}); new string[] { scopeID.ToString(), principalID.ToString() });
} }
else else
{ {
d = m_Database.Get( d = m_Database.Get(
new string[] {"PrincipalID"}, new string[] { "PrincipalID" },
new string[] {principalID.ToString()}); new string[] { principalID.ToString() });
} }
if (d.Length < 1) if (d.Length < 1)
@ -148,13 +156,13 @@ namespace OpenSim.Services.UserAccountService
d.LastName = data.LastName; d.LastName = data.LastName;
d.PrincipalID = data.PrincipalID; d.PrincipalID = data.PrincipalID;
d.ScopeID = data.ScopeID; d.ScopeID = data.ScopeID;
d.Data = new Dictionary<string,string>(); d.Data = new Dictionary<string, string>();
d.Data["Email"] = data.Email; d.Data["Email"] = data.Email;
d.Data["Created"] = data.Created.ToString(); d.Data["Created"] = data.Created.ToString();
List<string> parts = new List<string>(); List<string> parts = new List<string>();
foreach (KeyValuePair<string,object> kvp in data.ServiceURLs) foreach (KeyValuePair<string, object> kvp in data.ServiceURLs)
{ {
string key = System.Web.HttpUtility.UrlEncode(kvp.Key); string key = System.Web.HttpUtility.UrlEncode(kvp.Key);
string val = System.Web.HttpUtility.UrlEncode(kvp.Value.ToString()); string val = System.Web.HttpUtility.UrlEncode(kvp.Value.ToString());
@ -180,5 +188,66 @@ namespace OpenSim.Services.UserAccountService
return ret; return ret;
} }
#endregion
#region Console commands
/// <summary>
/// Create a new user
/// </summary>
/// <param name="cmdparams">string array with parameters: firstname, lastname, password, locationX, locationY, email</param>
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
} }
} }