From c0beeb929e22509329781cdf85f7a5d90c4b0e36 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 12 Oct 2009 17:00:01 -0700 Subject: * Fixes http://opensimulator.org/mantis/view.php?id=4225 * Fixes http://opensimulator.org/mantis/view.php?id=3959 * Allows for viewing inventory textures outside home grid --- .../ServiceConnectorsOut/Asset/HGAssetBroker.cs | 44 +++++++++++++++++++++- .../ServiceConnectorsOut/Grid/HGGridConnector.cs | 1 + .../Inventory/BaseInventoryConnector.cs | 3 ++ .../Inventory/HGInventoryBroker.cs | 2 + 4 files changed, 49 insertions(+), 1 deletion(-) (limited to 'OpenSim/Region/CoreModules/ServiceConnectorsOut') diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs index 7b4e374..0aa753d 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs @@ -31,6 +31,7 @@ using System; using System.Collections.Generic; using System.Reflection; using OpenSim.Framework; +using OpenSim.Framework.Communications.Cache; using OpenSim.Server.Base; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; @@ -40,7 +41,7 @@ using OpenMetaverse; namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset { public class HGAssetBroker : - ISharedRegionModule, IAssetService + ISharedRegionModule, IAssetService, IHyperAssetService { private static readonly ILog m_log = LogManager.GetLogger( @@ -50,6 +51,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset private IAssetService m_GridService; private IAssetService m_HGService; + private Scene m_aScene; + private string m_LocalAssetServiceURI; + private bool m_Enabled = false; public Type ReplaceableInterface @@ -114,6 +118,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset return; } + m_LocalAssetServiceURI = assetConfig.GetString("AssetServerURI", string.Empty); + if (m_LocalAssetServiceURI == string.Empty) + { + IConfig netConfig = source.Configs["Network"]; + m_LocalAssetServiceURI = netConfig.GetString("asset_server_url", string.Empty); + } + + if (m_LocalAssetServiceURI != string.Empty) + m_LocalAssetServiceURI = m_LocalAssetServiceURI.Trim('/'); + m_Enabled = true; m_log.Info("[HG ASSET CONNECTOR]: HG asset broker enabled"); } @@ -132,8 +146,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset { if (!m_Enabled) return; + + m_aScene = scene; scene.RegisterModuleInterface(this); + scene.RegisterModuleInterface(this); } public void RemoveRegion(Scene scene) @@ -344,5 +361,30 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset else return m_GridService.Delete(id); } + + #region IHyperAssetService + + public string GetUserAssetServer(UUID userID) + { + CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(userID); + if ((uinfo != null) && (uinfo.UserProfile != null)) + { + if ((uinfo.UserProfile.UserAssetURI == string.Empty) || (uinfo.UserProfile.UserAssetURI == "")) + return m_LocalAssetServiceURI; + return uinfo.UserProfile.UserAssetURI.Trim('/'); + } + else + { + // we don't know anyting about this user + return string.Empty; + } + } + + public string GetSimAssetServer() + { + return m_LocalAssetServiceURI; + } + + #endregion } } diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs index 148331b..1422add 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs @@ -759,6 +759,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid } + protected bool IsLocalRegion(ulong handle) { return m_LocalScenes.ContainsKey(handle); diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs index bd32f3b..811569f 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs @@ -159,6 +159,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory /// true if the item was successfully added public bool AddItem(InventoryItemBase item) { + if (item == null) + return false; + if (item.Folder == UUID.Zero) { InventoryFolderBase f = GetFolderForType(item.Owner, (AssetType)item.AssetType); diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs index fd1a759..f073f32 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs @@ -386,7 +386,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory return false; if (IsLocalGridUser(item.Owner)) + { return m_GridService.AddItem(item); + } else { UUID sessionID = GetSessionID(item.Owner); -- cgit v1.1