diff options
Diffstat (limited to 'OpenSim/Region')
9 files changed, 88 insertions, 68 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index a19bbfd..0833154 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs | |||
@@ -493,7 +493,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
493 | } | 493 | } |
494 | else | 494 | else |
495 | { | 495 | { |
496 | sceneObjects.Add(SceneObjectSerializer.FromOriginalXmlFormat(xmlData)); | 496 | SceneObjectGroup deserializedObject = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); |
497 | |||
498 | if (deserializedObject != null) | ||
499 | sceneObjects.Add(deserializedObject); | ||
497 | } | 500 | } |
498 | 501 | ||
499 | foreach (SceneObjectGroup sog in sceneObjects) | 502 | foreach (SceneObjectGroup sog in sceneObjects) |
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs index d20c9eb..eaadc1b 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 | |||
55 | // private Dictionary<string, InventoryClient> m_inventoryServers = new Dictionary<string, InventoryClient>(); | 55 | // private Dictionary<string, InventoryClient> m_inventoryServers = new Dictionary<string, InventoryClient>(); |
56 | 56 | ||
57 | private Scene m_scene; | 57 | private Scene m_scene; |
58 | private string m_ProfileServerURI; | 58 | private string m_HomeURI; |
59 | 59 | ||
60 | #endregion | 60 | #endregion |
61 | 61 | ||
62 | #region Constructor | 62 | #region Constructor |
63 | 63 | ||
64 | public HGAssetMapper(Scene scene, string profileURL) | 64 | public HGAssetMapper(Scene scene, string homeURL) |
65 | { | 65 | { |
66 | m_scene = scene; | 66 | m_scene = scene; |
67 | m_ProfileServerURI = profileURL; | 67 | m_HomeURI = homeURL; |
68 | } | 68 | } |
69 | 69 | ||
70 | #endregion | 70 | #endregion |
@@ -150,7 +150,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
150 | UUID.TryParse(meta.CreatorID, out uuid); | 150 | UUID.TryParse(meta.CreatorID, out uuid); |
151 | UserAccount creator = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, uuid); | 151 | UserAccount creator = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, uuid); |
152 | if (creator != null) | 152 | if (creator != null) |
153 | meta.CreatorID = m_ProfileServerURI + "/" + meta.CreatorID + ";" + creator.FirstName + " " + creator.LastName; | 153 | meta.CreatorID = m_HomeURI + ";" + creator.FirstName + " " + creator.LastName; |
154 | } | 154 | } |
155 | } | 155 | } |
156 | 156 | ||
@@ -193,7 +193,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
193 | if (!hasCreatorData && creator != null) | 193 | if (!hasCreatorData && creator != null) |
194 | { | 194 | { |
195 | XmlElement creatorData = doc.CreateElement("CreatorData"); | 195 | XmlElement creatorData = doc.CreateElement("CreatorData"); |
196 | creatorData.InnerText = m_ProfileServerURI + "/" + creator.PrincipalID + ";" + creator.FirstName + " " + creator.LastName; | 196 | creatorData.InnerText = m_HomeURI + ";" + creator.FirstName + " " + creator.LastName; |
197 | sop.AppendChild(creatorData); | 197 | sop.AppendChild(creatorData); |
198 | } | 198 | } |
199 | } | 199 | } |
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs index bf24ebc..0c4ff7f 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 | |||
54 | get { return m_assMapper; } | 54 | get { return m_assMapper; } |
55 | } | 55 | } |
56 | 56 | ||
57 | private string m_ProfileServerURI; | 57 | private string m_HomeURI; |
58 | private bool m_OutboundPermission; | 58 | private bool m_OutboundPermission; |
59 | private string m_ThisGatekeeper; | 59 | private string m_ThisGatekeeper; |
60 | 60 | ||
@@ -84,7 +84,10 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
84 | IConfig thisModuleConfig = source.Configs["HGInventoryAccessModule"]; | 84 | IConfig thisModuleConfig = source.Configs["HGInventoryAccessModule"]; |
85 | if (thisModuleConfig != null) | 85 | if (thisModuleConfig != null) |
86 | { | 86 | { |
87 | m_ProfileServerURI = thisModuleConfig.GetString("ProfileServerURI", string.Empty); | 87 | // legacy configuration [obsolete] |
88 | m_HomeURI = thisModuleConfig.GetString("ProfileServerURI", string.Empty); | ||
89 | // preferred | ||
90 | m_HomeURI = thisModuleConfig.GetString("HomeURI", m_HomeURI); | ||
88 | m_OutboundPermission = thisModuleConfig.GetBoolean("OutboundPermission", true); | 91 | m_OutboundPermission = thisModuleConfig.GetBoolean("OutboundPermission", true); |
89 | m_ThisGatekeeper = thisModuleConfig.GetString("Gatekeeper", string.Empty); | 92 | m_ThisGatekeeper = thisModuleConfig.GetString("Gatekeeper", string.Empty); |
90 | } | 93 | } |
@@ -100,7 +103,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
100 | return; | 103 | return; |
101 | 104 | ||
102 | base.AddRegion(scene); | 105 | base.AddRegion(scene); |
103 | m_assMapper = new HGAssetMapper(scene, m_ProfileServerURI); | 106 | m_assMapper = new HGAssetMapper(scene, m_HomeURI); |
104 | scene.EventManager.OnNewInventoryItemUploadComplete += UploadInventoryItem; | 107 | scene.EventManager.OnNewInventoryItemUploadComplete += UploadInventoryItem; |
105 | 108 | ||
106 | } | 109 | } |
diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs index 37292d6..2ad30a0 100644 --- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs +++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs | |||
@@ -423,58 +423,62 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement | |||
423 | AddUser(uuid, profileURL + ";" + first + " " + last); | 423 | AddUser(uuid, profileURL + ";" + first + " " + last); |
424 | } | 424 | } |
425 | 425 | ||
426 | public void AddUser(UUID id, string creatorData) | 426 | public void AddUser (UUID id, string creatorData) |
427 | { | 427 | { |
428 | lock (m_UserCache) | 428 | UserData oldUser; |
429 | { | 429 | //lock the whole block - prevent concurrent update |
430 | if (m_UserCache.ContainsKey(id)) | 430 | lock (m_UserCache) { |
431 | return; | 431 | m_UserCache.TryGetValue (id, out oldUser); |
432 | } | 432 | if (oldUser != null) { |
433 | 433 | if (creatorData == null || creatorData == String.Empty) { | |
434 | // m_log.DebugFormat("[USER MANAGEMENT MODULE]: Adding user with id {0}, craetorData {1}", id, creatorData); | 434 | //ignore updates without creator data |
435 | 435 | return; | |
436 | UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, id); | 436 | } |
437 | 437 | //try update unknown users | |
438 | if (account != null) | 438 | //and creator's home URL's |
439 | { | 439 | if ((oldUser.FirstName == "Unknown" && !creatorData.Contains ("Unknown")) || (oldUser.HomeURL != null && !creatorData.StartsWith (oldUser.HomeURL))) { |
440 | AddUser(id, account.FirstName, account.LastName); | 440 | m_UserCache.Remove (id); |
441 | } | 441 | // m_log.DebugFormat("[USER MANAGEMENT MODULE]: Re-adding user with id {0}, creatorData [{1}] and old HomeURL {2}", id, creatorData,oldUser.HomeURL); |
442 | else | 442 | } else { |
443 | { | 443 | //we have already a valid user within the cache |
444 | UserData user = new UserData(); | 444 | return; |
445 | user.Id = id; | ||
446 | user.Flags = -1; | ||
447 | user.Created = -1; | ||
448 | |||
449 | if (creatorData != null && creatorData != string.Empty) | ||
450 | { | ||
451 | //creatorData = <endpoint>;<name> | ||
452 | |||
453 | string[] parts = creatorData.Split(';'); | ||
454 | if (parts.Length >= 1) | ||
455 | { | ||
456 | user.HomeURL = parts[0]; | ||
457 | try | ||
458 | { | ||
459 | Uri uri = new Uri(parts[0]); | ||
460 | user.LastName = "@" + uri.Authority; | ||
461 | } | ||
462 | catch (UriFormatException) | ||
463 | { | ||
464 | m_log.DebugFormat("[SCENE]: Unable to parse Uri {0}", parts[0]); | ||
465 | user.LastName = "@unknown"; | ||
466 | } | ||
467 | } | 445 | } |
468 | if (parts.Length >= 2) | ||
469 | user.FirstName = parts[1].Replace(' ', '.'); | ||
470 | } | 446 | } |
471 | else | 447 | // m_log.DebugFormat("[USER MANAGEMENT MODULE]: Adding user with id {0}, creatorData {1}", id, creatorData); |
472 | { | 448 | |
473 | user.FirstName = "Unknown"; | 449 | UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount (m_Scenes[0].RegionInfo.ScopeID, id); |
474 | user.LastName = "User"; | 450 | |
451 | if (account != null) { | ||
452 | AddUser (id, account.FirstName, account.LastName); | ||
453 | } else { | ||
454 | UserData user = new UserData (); | ||
455 | user.Id = id; | ||
456 | user.Flags = -1; | ||
457 | user.Created = -1; | ||
458 | |||
459 | if (creatorData != null && creatorData != string.Empty) { | ||
460 | //creatorData = <endpoint>;<name> | ||
461 | |||
462 | string[] parts = creatorData.Split (';'); | ||
463 | if (parts.Length >= 1) { | ||
464 | user.HomeURL = parts[0]; | ||
465 | try { | ||
466 | Uri uri = new Uri (parts[0]); | ||
467 | user.LastName = "@" + uri.Authority; | ||
468 | } catch (UriFormatException) { | ||
469 | m_log.DebugFormat ("[SCENE]: Unable to parse Uri {0}", parts[0]); | ||
470 | user.LastName = "@unknown"; | ||
471 | } | ||
472 | } | ||
473 | if (parts.Length >= 2) | ||
474 | user.FirstName = parts[1].Replace (' ', '.'); | ||
475 | } else { | ||
476 | user.FirstName = "Unknown"; | ||
477 | user.LastName = "User"; | ||
478 | } | ||
479 | |||
480 | AddUserInternal (user); | ||
475 | } | 481 | } |
476 | |||
477 | AddUserInternal(user); | ||
478 | } | 482 | } |
479 | } | 483 | } |
480 | 484 | ||
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs index 238863e..a22f619 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs | |||
@@ -422,6 +422,12 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
422 | string extension = filename.Substring(i); | 422 | string extension = filename.Substring(i); |
423 | string uuid = filename.Remove(filename.Length - extension.Length); | 423 | string uuid = filename.Remove(filename.Length - extension.Length); |
424 | 424 | ||
425 | if (m_scene.AssetService.GetMetadata(uuid) != null) | ||
426 | { | ||
427 | // m_log.DebugFormat("[ARCHIVER]: found existing asset {0}",uuid); | ||
428 | return true; | ||
429 | } | ||
430 | |||
425 | if (ArchiveConstants.EXTENSION_TO_ASSET_TYPE.ContainsKey(extension)) | 431 | if (ArchiveConstants.EXTENSION_TO_ASSET_TYPE.ContainsKey(extension)) |
426 | { | 432 | { |
427 | sbyte assetType = ArchiveConstants.EXTENSION_TO_ASSET_TYPE[extension]; | 433 | sbyte assetType = ArchiveConstants.EXTENSION_TO_ASSET_TYPE[extension]; |
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs index f44a3ba..0707cbe 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 | |||
125 | Dictionary<string, object> options = new Dictionary<string, object>(); | 125 | Dictionary<string, object> options = new Dictionary<string, object>(); |
126 | 126 | ||
127 | OptionSet ops = new OptionSet(); | 127 | OptionSet ops = new OptionSet(); |
128 | // ops.Add("v|version=", delegate(string v) { options["version"] = v; }); | 128 | |
129 | ops.Add("p|profile=", delegate(string v) { options["profile"] = v; }); | 129 | // legacy argument [obsolete] |
130 | ops.Add("p|profile=", delegate(string v) { Console.WriteLine("\n WARNING: -profile option is obsolete and it will not work. Use -home instead.\n"); }); | ||
131 | // preferred | ||
132 | ops.Add("h|home=", delegate(string v) { options["home"] = v; }); | ||
133 | |||
130 | ops.Add("noassets", delegate(string v) { options["noassets"] = v != null; }); | 134 | ops.Add("noassets", delegate(string v) { options["noassets"] = v != null; }); |
131 | ops.Add("perm=", delegate(string v) { options["checkPermissions"] = v; }); | 135 | ops.Add("perm=", delegate(string v) { options["checkPermissions"] = v; }); |
132 | 136 | ||
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index c45cfb8..193ef0d 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -405,7 +405,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
405 | 405 | ||
406 | private string m_creatorData = string.Empty; | 406 | private string m_creatorData = string.Empty; |
407 | /// <summary> | 407 | /// <summary> |
408 | /// Data about the creator in the form profile_url;name | 408 | /// Data about the creator in the form home_url;name |
409 | /// </summary> | 409 | /// </summary> |
410 | public string CreatorData | 410 | public string CreatorData |
411 | { | 411 | { |
@@ -416,7 +416,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
416 | /// <summary> | 416 | /// <summary> |
417 | /// Used by the DB layer to retrieve / store the entire user identification. | 417 | /// Used by the DB layer to retrieve / store the entire user identification. |
418 | /// The identification can either be a simple UUID or a string of the form | 418 | /// The identification can either be a simple UUID or a string of the form |
419 | /// uuid[;profile_url[;name]] | 419 | /// uuid[;home_url[;name]] |
420 | /// </summary> | 420 | /// </summary> |
421 | public string CreatorIdentification | 421 | public string CreatorIdentification |
422 | { | 422 | { |
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index 3f24991..c776fa5 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs | |||
@@ -54,7 +54,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
54 | /// Deserialize a scene object from the original xml format | 54 | /// Deserialize a scene object from the original xml format |
55 | /// </summary> | 55 | /// </summary> |
56 | /// <param name="xmlData"></param> | 56 | /// <param name="xmlData"></param> |
57 | /// <returns></returns> | 57 | /// <returns>The scene object deserialized. Null on failure.</returns> |
58 | public static SceneObjectGroup FromOriginalXmlFormat(string xmlData) | 58 | public static SceneObjectGroup FromOriginalXmlFormat(string xmlData) |
59 | { | 59 | { |
60 | //m_log.DebugFormat("[SOG]: Starting deserialization of SOG"); | 60 | //m_log.DebugFormat("[SOG]: Starting deserialization of SOG"); |
@@ -1147,12 +1147,12 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
1147 | 1147 | ||
1148 | if (sop.CreatorData != null && sop.CreatorData != string.Empty) | 1148 | if (sop.CreatorData != null && sop.CreatorData != string.Empty) |
1149 | writer.WriteElementString("CreatorData", sop.CreatorData); | 1149 | writer.WriteElementString("CreatorData", sop.CreatorData); |
1150 | else if (options.ContainsKey("profile")) | 1150 | else if (options.ContainsKey("home")) |
1151 | { | 1151 | { |
1152 | if (m_UserManagement == null) | 1152 | if (m_UserManagement == null) |
1153 | m_UserManagement = sop.ParentGroup.Scene.RequestModuleInterface<IUserManagement>(); | 1153 | m_UserManagement = sop.ParentGroup.Scene.RequestModuleInterface<IUserManagement>(); |
1154 | string name = m_UserManagement.GetUserName(sop.CreatorID); | 1154 | string name = m_UserManagement.GetUserName(sop.CreatorID); |
1155 | writer.WriteElementString("CreatorData", (string)options["profile"] + "/" + sop.CreatorID + ";" + name); | 1155 | writer.WriteElementString("CreatorData", (string)options["home"] + ";" + name); |
1156 | } | 1156 | } |
1157 | 1157 | ||
1158 | WriteUUID(writer, "FolderID", sop.FolderID, options); | 1158 | WriteUUID(writer, "FolderID", sop.FolderID, options); |
@@ -1298,12 +1298,12 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
1298 | 1298 | ||
1299 | if (item.CreatorData != null && item.CreatorData != string.Empty) | 1299 | if (item.CreatorData != null && item.CreatorData != string.Empty) |
1300 | writer.WriteElementString("CreatorData", item.CreatorData); | 1300 | writer.WriteElementString("CreatorData", item.CreatorData); |
1301 | else if (options.ContainsKey("profile")) | 1301 | else if (options.ContainsKey("home")) |
1302 | { | 1302 | { |
1303 | if (m_UserManagement == null) | 1303 | if (m_UserManagement == null) |
1304 | m_UserManagement = scene.RequestModuleInterface<IUserManagement>(); | 1304 | m_UserManagement = scene.RequestModuleInterface<IUserManagement>(); |
1305 | string name = m_UserManagement.GetUserName(item.CreatorID); | 1305 | string name = m_UserManagement.GetUserName(item.CreatorID); |
1306 | writer.WriteElementString("CreatorData", (string)options["profile"] + "/" + item.CreatorID + ";" + name); | 1306 | writer.WriteElementString("CreatorData", (string)options["home"] + ";" + name); |
1307 | } | 1307 | } |
1308 | 1308 | ||
1309 | writer.WriteElementString("Description", item.Description); | 1309 | writer.WriteElementString("Description", item.Description); |
diff --git a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs index 58b9b9f..db70e56 100644 --- a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs | |||
@@ -289,7 +289,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden | |||
289 | if (images.Length > 0) | 289 | if (images.Length > 0) |
290 | { | 290 | { |
291 | report.AppendFormat( | 291 | report.AppendFormat( |
292 | "{0,-36} {1,-8} {2,-9} {3,-9} {4,-9} {5,-7}\n", | 292 | "{0,-36} {1,-8} {2,-10} {3,-9} {4,-9} {5,-7}\n", |
293 | "Texture ID", | 293 | "Texture ID", |
294 | "Last Seq", | 294 | "Last Seq", |
295 | "Priority", | 295 | "Priority", |
@@ -299,7 +299,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden | |||
299 | 299 | ||
300 | foreach (J2KImage image in images) | 300 | foreach (J2KImage image in images) |
301 | report.AppendFormat( | 301 | report.AppendFormat( |
302 | "{0,36} {1,8} {2,9} {3,10} {4,9} {5,7}\n", | 302 | "{0,36} {1,8} {2,10} {3,10} {4,9} {5,7}\n", |
303 | image.TextureID, image.LastSequence, image.Priority, image.StartPacket, image.HasAsset, image.IsDecoded); | 303 | image.TextureID, image.LastSequence, image.Priority, image.StartPacket, image.HasAsset, image.IsDecoded); |
304 | } | 304 | } |
305 | } | 305 | } |