diff --git a/OpenSim/Framework/Serialization/External/ExternalRepresentationUtils.cs b/OpenSim/Framework/Serialization/External/ExternalRepresentationUtils.cs
index 6e8c2ee173..7447ac28ea 100644
--- a/OpenSim/Framework/Serialization/External/ExternalRepresentationUtils.cs
+++ b/OpenSim/Framework/Serialization/External/ExternalRepresentationUtils.cs
@@ -44,13 +44,13 @@ namespace OpenSim.Framework.Serialization.External
/// with creator data added to it.
///
/// The SceneObjectPart represented in XML2
- /// The URL of the profile service for the creator
+ /// The URL of the user agents service (home) for the creator
/// The service for retrieving user account information
/// The scope of the user account information (Grid ID)
/// The SceneObjectPart represented in XML2
- public static string RewriteSOP(string xml, string profileURL, IUserAccountService userService, UUID scopeID)
+ public static string RewriteSOP(string xml, string homeURL, IUserAccountService userService, UUID scopeID)
{
- if (xml == string.Empty || profileURL == string.Empty || userService == null)
+ if (xml == string.Empty || homeURL == string.Empty || userService == null)
return xml;
XmlDocument doc = new XmlDocument();
@@ -83,7 +83,7 @@ namespace OpenSim.Framework.Serialization.External
if (!hasCreatorData && creator != null)
{
XmlElement creatorData = doc.CreateElement("CreatorData");
- creatorData.InnerText = profileURL + "/" + creator.PrincipalID + ";" + creator.FirstName + " " + creator.LastName;
+ creatorData.InnerText = homeURL + ";" + creator.FirstName + " " + creator.LastName;
sop.AppendChild(creatorData);
}
}
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs
index d20c9eb0a0..eaadc1b8be 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs
@@ -55,16 +55,16 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
// private Dictionary m_inventoryServers = new Dictionary();
private Scene m_scene;
- private string m_ProfileServerURI;
+ private string m_HomeURI;
#endregion
#region Constructor
- public HGAssetMapper(Scene scene, string profileURL)
+ public HGAssetMapper(Scene scene, string homeURL)
{
m_scene = scene;
- m_ProfileServerURI = profileURL;
+ m_HomeURI = homeURL;
}
#endregion
@@ -150,7 +150,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
UUID.TryParse(meta.CreatorID, out uuid);
UserAccount creator = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, uuid);
if (creator != null)
- meta.CreatorID = m_ProfileServerURI + "/" + meta.CreatorID + ";" + creator.FirstName + " " + creator.LastName;
+ meta.CreatorID = m_HomeURI + ";" + creator.FirstName + " " + creator.LastName;
}
}
@@ -193,7 +193,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
if (!hasCreatorData && creator != null)
{
XmlElement creatorData = doc.CreateElement("CreatorData");
- creatorData.InnerText = m_ProfileServerURI + "/" + creator.PrincipalID + ";" + creator.FirstName + " " + creator.LastName;
+ creatorData.InnerText = m_HomeURI + ";" + creator.FirstName + " " + creator.LastName;
sop.AppendChild(creatorData);
}
}
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs
index bf24ebc66a..0c4ff7f81d 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs
@@ -54,7 +54,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
get { return m_assMapper; }
}
- private string m_ProfileServerURI;
+ private string m_HomeURI;
private bool m_OutboundPermission;
private string m_ThisGatekeeper;
@@ -84,7 +84,10 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
IConfig thisModuleConfig = source.Configs["HGInventoryAccessModule"];
if (thisModuleConfig != null)
{
- m_ProfileServerURI = thisModuleConfig.GetString("ProfileServerURI", string.Empty);
+ // legacy configuration [obsolete]
+ m_HomeURI = thisModuleConfig.GetString("ProfileServerURI", string.Empty);
+ // preferred
+ m_HomeURI = thisModuleConfig.GetString("HomeURI", m_HomeURI);
m_OutboundPermission = thisModuleConfig.GetBoolean("OutboundPermission", true);
m_ThisGatekeeper = thisModuleConfig.GetString("Gatekeeper", string.Empty);
}
@@ -100,7 +103,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
return;
base.AddRegion(scene);
- m_assMapper = new HGAssetMapper(scene, m_ProfileServerURI);
+ m_assMapper = new HGAssetMapper(scene, m_HomeURI);
scene.EventManager.OnNewInventoryItemUploadComplete += UploadInventoryItem;
}
diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
index 37292d66fd..80ab30c3ef 100644
--- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
@@ -413,68 +413,71 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
user.Id = uuid;
user.FirstName = first;
user.LastName = last;
- // user.ProfileURL = we should initialize this to the default
AddUserInternal(user);
}
- public void AddUser(UUID uuid, string first, string last, string profileURL)
+ public void AddUser(UUID uuid, string first, string last, string homeURL)
{
- AddUser(uuid, profileURL + ";" + first + " " + last);
+ AddUser(uuid, homeURL + ";" + first + " " + last);
}
- public void AddUser(UUID id, string creatorData)
+ public void AddUser (UUID id, string creatorData)
{
- lock (m_UserCache)
- {
- if (m_UserCache.ContainsKey(id))
- return;
- }
-
-// m_log.DebugFormat("[USER MANAGEMENT MODULE]: Adding user with id {0}, craetorData {1}", id, creatorData);
-
- UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, id);
-
- if (account != null)
- {
- AddUser(id, account.FirstName, account.LastName);
- }
- else
- {
- UserData user = new UserData();
- user.Id = id;
- user.Flags = -1;
- user.Created = -1;
-
- if (creatorData != null && creatorData != string.Empty)
- {
- //creatorData = ;
-
- string[] parts = creatorData.Split(';');
- if (parts.Length >= 1)
- {
- user.HomeURL = parts[0];
- try
- {
- Uri uri = new Uri(parts[0]);
- user.LastName = "@" + uri.Authority;
- }
- catch (UriFormatException)
- {
- m_log.DebugFormat("[SCENE]: Unable to parse Uri {0}", parts[0]);
- user.LastName = "@unknown";
- }
+ UserData oldUser;
+ //lock the whole block - prevent concurrent update
+ lock (m_UserCache) {
+ m_UserCache.TryGetValue (id, out oldUser);
+ if (oldUser != null) {
+ if (creatorData == null || creatorData == String.Empty) {
+ //ignore updates without creator data
+ return;
+ }
+ //try update unknown users
+ //and creator's home URL's
+ if ((oldUser.FirstName == "Unknown" && !creatorData.Contains ("Unknown")) || (oldUser.HomeURL != null && !creatorData.StartsWith (oldUser.HomeURL))) {
+ m_UserCache.Remove (id);
+// m_log.DebugFormat("[USER MANAGEMENT MODULE]: Re-adding user with id {0}, creatorData [{1}] and old HomeURL {2}", id, creatorData,oldUser.HomeURL);
+ } else {
+ //we have already a valid user within the cache
+ return;
}
- if (parts.Length >= 2)
- user.FirstName = parts[1].Replace(' ', '.');
}
- else
- {
- user.FirstName = "Unknown";
- user.LastName = "User";
+// m_log.DebugFormat("[USER MANAGEMENT MODULE]: Adding user with id {0}, creatorData {1}", id, creatorData);
+
+ UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount (m_Scenes[0].RegionInfo.ScopeID, id);
+
+ if (account != null) {
+ AddUser (id, account.FirstName, account.LastName);
+ } else {
+ UserData user = new UserData ();
+ user.Id = id;
+ user.Flags = -1;
+ user.Created = -1;
+
+ if (creatorData != null && creatorData != string.Empty) {
+ //creatorData = ;
+
+ string[] parts = creatorData.Split (';');
+ if (parts.Length >= 1) {
+ user.HomeURL = parts[0];
+ try {
+ Uri uri = new Uri (parts[0]);
+ user.LastName = "@" + uri.Authority;
+ } catch (UriFormatException) {
+ m_log.DebugFormat ("[SCENE]: Unable to parse Uri {0}", parts[0]);
+ user.LastName = "@unknown";
+ }
+ }
+ if (parts.Length >= 2)
+ user.FirstName = parts[1].Replace (' ', '.');
+ } else {
+ user.FirstName = "Unknown";
+ user.LastName = "User";
+ }
+
+ AddUserInternal (user);
}
-
- AddUserInternal(user);
}
}
@@ -488,36 +491,6 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
// user.Id, user.FirstName, user.LastName, user.HomeURL);
}
- //public void AddUser(UUID uuid, string userData)
- //{
- // if (m_UserCache.ContainsKey(uuid))
- // return;
-
- // UserData user = new UserData();
- // user.Id = uuid;
-
- // // userData = ;
- // string[] parts = userData.Split(';');
- // if (parts.Length >= 1)
- // user.ProfileURL = parts[0].Trim();
- // if (parts.Length >= 2)
- // {
- // string[] name = parts[1].Trim().Split(' ');
- // if (name.Length >= 1)
- // user.FirstName = name[0];
- // if (name.Length >= 2)
- // user.LastName = name[1];
- // else
- // user.LastName = "?";
- // }
-
- // lock (m_UserCache)
- // m_UserCache.Add(uuid, user);
-
- // m_log.DebugFormat("[USER MANAGEMENT MODULE]: Added user {0} {1} {2} {3}", user.Id, user.FirstName, user.LastName, user.ProfileURL);
-
- //}
-
public bool IsLocalGridUser(UUID uuid)
{
UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, uuid);
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
index f44a3bac05..0707cbe745 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
@@ -125,8 +125,12 @@ namespace OpenSim.Region.CoreModules.World.Archiver
Dictionary options = new Dictionary();
OptionSet ops = new OptionSet();
-// ops.Add("v|version=", delegate(string v) { options["version"] = v; });
- ops.Add("p|profile=", delegate(string v) { options["profile"] = v; });
+
+ // legacy argument [obsolete]
+ ops.Add("p|profile=", delegate(string v) { Console.WriteLine("\n WARNING: -profile option is obsolete and it will not work. Use -home instead.\n"); });
+ // preferred
+ ops.Add("h|home=", delegate(string v) { options["home"] = v; });
+
ops.Add("noassets", delegate(string v) { options["noassets"] = v != null; });
ops.Add("perm=", delegate(string v) { options["checkPermissions"] = v; });
diff --git a/OpenSim/Region/Framework/Interfaces/IUserManagement.cs b/OpenSim/Region/Framework/Interfaces/IUserManagement.cs
index 54dfaf4c63..4f62e28789 100644
--- a/OpenSim/Region/Framework/Interfaces/IUserManagement.cs
+++ b/OpenSim/Region/Framework/Interfaces/IUserManagement.cs
@@ -50,7 +50,7 @@ namespace OpenSim.Region.Framework.Interfaces
///
///
///
- void AddUser(UUID uuid, string firstName, string lastName, string profileURL);
+ void AddUser(UUID uuid, string firstName, string lastName, string homeURL);
bool IsLocalGridUser(UUID uuid);
}
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 51d35868e2..e9c33eb276 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -394,7 +394,7 @@ namespace OpenSim.Region.Framework.Scenes
private string m_creatorData = string.Empty;
///
- /// Data about the creator in the form profile_url;name
+ /// Data about the creator in the form home_url;name
///
public string CreatorData
{
@@ -405,7 +405,7 @@ namespace OpenSim.Region.Framework.Scenes
///
/// Used by the DB layer to retrieve / store the entire user identification.
/// The identification can either be a simple UUID or a string of the form
- /// uuid[;profile_url[;name]]
+ /// uuid[;home_url[;name]]
///
public string CreatorIdentification
{
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
index 38d12317f1..7c60ddd8a3 100644
--- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
+++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
@@ -1134,12 +1134,12 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
if (sop.CreatorData != null && sop.CreatorData != string.Empty)
writer.WriteElementString("CreatorData", sop.CreatorData);
- else if (options.ContainsKey("profile"))
+ else if (options.ContainsKey("home"))
{
if (m_UserManagement == null)
m_UserManagement = sop.ParentGroup.Scene.RequestModuleInterface();
string name = m_UserManagement.GetUserName(sop.CreatorID);
- writer.WriteElementString("CreatorData", (string)options["profile"] + "/" + sop.CreatorID + ";" + name);
+ writer.WriteElementString("CreatorData", (string)options["home"] + ";" + name);
}
WriteUUID(writer, "FolderID", sop.FolderID, options);
@@ -1282,12 +1282,12 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
if (item.CreatorData != null && item.CreatorData != string.Empty)
writer.WriteElementString("CreatorData", item.CreatorData);
- else if (options.ContainsKey("profile"))
+ else if (options.ContainsKey("home"))
{
if (m_UserManagement == null)
m_UserManagement = scene.RequestModuleInterface();
string name = m_UserManagement.GetUserName(item.CreatorID);
- writer.WriteElementString("CreatorData", (string)options["profile"] + "/" + item.CreatorID + ";" + name);
+ writer.WriteElementString("CreatorData", (string)options["home"] + ";" + name);
}
writer.WriteElementString("Description", item.Description);
diff --git a/OpenSim/Services/HypergridService/HGAssetService.cs b/OpenSim/Services/HypergridService/HGAssetService.cs
index e518329f58..22e233a368 100644
--- a/OpenSim/Services/HypergridService/HGAssetService.cs
+++ b/OpenSim/Services/HypergridService/HGAssetService.cs
@@ -53,7 +53,7 @@ namespace OpenSim.Services.HypergridService
LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
- private string m_ProfileServiceURL;
+ private string m_HomeURL;
private IUserAccountService m_UserAccountService;
private UserAccountCache m_Cache;
@@ -74,7 +74,10 @@ namespace OpenSim.Services.HypergridService
if (m_UserAccountService == null)
throw new Exception(String.Format("Unable to create UserAccountService from {0}", userAccountsDll));
- m_ProfileServiceURL = assetConfig.GetString("ProfileServerURI", string.Empty);
+ // legacy configuration [obsolete]
+ m_HomeURL = assetConfig.GetString("ProfileServerURI", string.Empty);
+ // Preferred
+ m_HomeURL = assetConfig.GetString("HomeURI", m_HomeURL);
m_Cache = UserAccountCache.CreateUserAccountCache(m_UserAccountService);
}
@@ -134,13 +137,13 @@ namespace OpenSim.Services.HypergridService
UserAccount creator = m_Cache.GetUser(meta.CreatorID);
if (creator != null)
- meta.CreatorID = m_ProfileServiceURL + "/" + meta.CreatorID + ";" + creator.FirstName + " " + creator.LastName;
+ meta.CreatorID = meta.CreatorID + ";" + m_HomeURL + "/" + creator.FirstName + " " + creator.LastName;
}
protected byte[] AdjustIdentifiers(byte[] data)
{
string xml = Utils.BytesToString(data);
- return Utils.StringToBytes(ExternalRepresentationUtils.RewriteSOP(xml, m_ProfileServiceURL, m_Cache, UUID.Zero));
+ return Utils.StringToBytes(ExternalRepresentationUtils.RewriteSOP(xml, m_HomeURL, m_Cache, UUID.Zero));
}
}
diff --git a/OpenSim/Services/HypergridService/HGInventoryService.cs b/OpenSim/Services/HypergridService/HGInventoryService.cs
index 4eb61ba6b9..daf8c3a1e1 100644
--- a/OpenSim/Services/HypergridService/HGInventoryService.cs
+++ b/OpenSim/Services/HypergridService/HGInventoryService.cs
@@ -55,7 +55,7 @@ namespace OpenSim.Services.HypergridService
protected new IXInventoryData m_Database;
- private string m_ProfileServiceURL;
+ private string m_HomeURL;
private IUserAccountService m_UserAccountService;
private UserAccountCache m_Cache;
@@ -100,7 +100,10 @@ namespace OpenSim.Services.HypergridService
if (m_UserAccountService == null)
throw new Exception(String.Format("Unable to create UserAccountService from {0}", userAccountsDll));
- m_ProfileServiceURL = invConfig.GetString("ProfileServerURI", string.Empty);
+ // legacy configuration [obsolete]
+ m_HomeURL = invConfig.GetString("ProfileServerURI", string.Empty);
+ // Preferred
+ m_HomeURL = invConfig.GetString("HomeURI", m_HomeURL);
m_Cache = UserAccountCache.CreateUserAccountCache(m_UserAccountService);
}
@@ -321,7 +324,7 @@ namespace OpenSim.Services.HypergridService
// Adjust the creator data
if (user != null && it != null && (it.CreatorData == null || it.CreatorData == string.Empty))
- it.CreatorData = m_ProfileServiceURL + "/" + it.CreatorId + ";" + user.FirstName + " " + user.LastName;
+ it.CreatorData = m_HomeURL + ";" + user.FirstName + " " + user.LastName;
return it;
}
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example
index 97102a20c0..f9b405d81f 100755
--- a/bin/OpenSim.ini.example
+++ b/bin/OpenSim.ini.example
@@ -171,9 +171,9 @@
; physics = basicphysics
; physics = POS
- ;# {permissionmodules} {} {Permission modules to use (may specify multiple modules, separated by space} {} DefaultPermissionsModule
- ;; Permission modules to use, separated by space.
- ; permissionmodules = "DefaultPermissionsModule"
+ ;# {permissionmodules} {} {Permission modules to use (may specify multiple modules, separated by comma} {} DefaultPermissionsModule
+ ;; Permission modules to use, separated by comma.
+ ; permissionmodules = DefaultPermissionsModule
;# {serverside_object_permissions} {permissionmodules:DefaultPermissionsModule} {Activate permission handling by the sim?} {true false} true
;; These are the parameters for the default permissions module
diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example
index 49ee41a5b6..668fabc448 100644
--- a/bin/Robust.HG.ini.example
+++ b/bin/Robust.HG.ini.example
@@ -380,7 +380,7 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003
; For the InventoryServiceInConnector
LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGInventoryService"
UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
- ProfileServerURI = "http://127.0.0.1:8002/user"
+ HomeURI = "http://127.0.0.1:8002"
; * The interface that local users get when they are in other grids.
; * This restricts the access that the rest of the world has to
@@ -389,7 +389,7 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003
[HGAssetService]
LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGAssetService"
UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
- ProfileServerURI = "http://127.0.0.1:8002/user"
+ HomeURI = "http://127.0.0.1:8002"
[HGFriendsService]
LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService"
diff --git a/bin/config-include/GridCommon.ini.example b/bin/config-include/GridCommon.ini.example
index e3682497fc..815e08cac3 100644
--- a/bin/config-include/GridCommon.ini.example
+++ b/bin/config-include/GridCommon.ini.example
@@ -123,7 +123,7 @@
; Change this to your server
; accessible from other grids
;
- ProfileServerURI = "http://mygridserver.com:8002/user"
+ HomeURI = "http://mygridserver.com:8002/user"
Gatekeeper = "http://mygridserver.com:8002"
;; If you want to protect your assets from being copied by foreign visitors
;; uncomment the next line. You may want to do this on sims that have licensed content.
diff --git a/bin/config-include/StandaloneCommon.ini.example b/bin/config-include/StandaloneCommon.ini.example
index 84611ec258..2f39218b13 100644
--- a/bin/config-include/StandaloneCommon.ini.example
+++ b/bin/config-include/StandaloneCommon.ini.example
@@ -48,13 +48,13 @@
AssetLoaderArgs = "assets/AssetSets.xml"
[HGInventoryService]
- ProfileServerURI = "http://127.0.0.1:9000/profiles"
+ HomeURI = "http://127.0.0.1:9000"
[HGAssetService]
- ProfileServerURI = "http://127.0.0.1:9000/profiles"
+ HomeURI = "http://127.0.0.1:9000"
[HGInventoryAccessModule]
- ProfileServerURI = "http://127.0.0.1:9000/profiles"
+ HomeURI = "http://127.0.0.1:9000"
Gatekeeper = "http://127.0.0.1:9000"
;; If you want to protect your assets from being copied by foreign visitors