diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs index c125976b85..383c12954d 100644 --- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs +++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs @@ -335,8 +335,14 @@ namespace OpenSim.Framework.Communications.Cache createdBaseFolder.Type = createdFolder.Type; createdBaseFolder.Version = createdFolder.Version; - m_commsManager.SecureInventoryService.AddFolder(createdBaseFolder, m_session_id); - + if (m_commsManager.SecureInventoryService != null) + { + m_commsManager.SecureInventoryService.AddFolder(createdBaseFolder, m_session_id); + } + else + { + m_commsManager.InventoryService.AddFolder(createdBaseFolder); + } return true; } else @@ -389,7 +395,14 @@ namespace OpenSim.Framework.Communications.Cache baseFolder.Type = (short)type; baseFolder.Version = RootFolder.Version; - m_commsManager.SecureInventoryService.UpdateFolder(baseFolder, m_session_id); + if (m_commsManager.SecureInventoryService != null) + { + m_commsManager.SecureInventoryService.UpdateFolder(baseFolder, m_session_id); + } + else + { + m_commsManager.InventoryService.UpdateFolder(baseFolder); + } InventoryFolderImpl folder = RootFolder.FindFolder(folderID); if (folder != null) @@ -431,7 +444,14 @@ namespace OpenSim.Framework.Communications.Cache baseFolder.ID = folderID; baseFolder.ParentID = parentID; - m_commsManager.SecureInventoryService.MoveFolder(baseFolder, m_session_id); + if (m_commsManager.SecureInventoryService != null) + { + m_commsManager.SecureInventoryService.MoveFolder(baseFolder, m_session_id); + } + else + { + m_commsManager.InventoryService.MoveFolder(baseFolder); + } InventoryFolderImpl folder = RootFolder.FindFolder(folderID); if (folder != null) @@ -478,7 +498,14 @@ namespace OpenSim.Framework.Communications.Cache purgedBaseFolder.Type = purgedFolder.Type; purgedBaseFolder.Version = purgedFolder.Version; - m_commsManager.SecureInventoryService.PurgeFolder(purgedBaseFolder, m_session_id); + if (m_commsManager.SecureInventoryService != null) + { + m_commsManager.SecureInventoryService.PurgeFolder(purgedBaseFolder, m_session_id); + } + else + { + m_commsManager.InventoryService.PurgeFolder(purgedBaseFolder); + } purgedFolder.Purge(); @@ -515,7 +542,14 @@ namespace OpenSim.Framework.Communications.Cache item.Folder = RootFolder.ID; } ItemReceive(item); - m_commsManager.SecureInventoryService.AddItem(item, m_session_id); + if (m_commsManager.SecureInventoryService != null) + { + m_commsManager.SecureInventoryService.AddItem(item, m_session_id); + } + else + { + m_commsManager.InventoryService.AddItem(item); + } } else { @@ -535,7 +569,14 @@ namespace OpenSim.Framework.Communications.Cache { if (HasInventory) { - m_commsManager.SecureInventoryService.UpdateItem(item, m_session_id); + if (m_commsManager.SecureInventoryService != null) + { + m_commsManager.SecureInventoryService.UpdateItem(item, m_session_id); + } + else + { + m_commsManager.InventoryService.UpdateItem(item); + } } else { @@ -574,7 +615,14 @@ namespace OpenSim.Framework.Communications.Cache if (RootFolder.DeleteItem(item.ID)) { - return m_commsManager.SecureInventoryService.DeleteItem(item, m_session_id); + if (m_commsManager.SecureInventoryService != null) + { + return m_commsManager.SecureInventoryService.DeleteItem(item, m_session_id); + } + else + { + return m_commsManager.InventoryService.DeleteItem(item); + } } } else diff --git a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs index e22dff6be7..d6421b0d64 100644 --- a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs +++ b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs @@ -146,7 +146,14 @@ namespace OpenSim.Framework.Communications.Cache CachedUserInfo userInfo = GetUserDetails(userID); if (userInfo != null) { - m_commsManager.SecureInventoryService.RequestInventoryForUser(userID, userInfo.SessionID, userInfo.InventoryReceive); + if (m_commsManager.SecureInventoryService != null) + { + m_commsManager.SecureInventoryService.RequestInventoryForUser(userID, userInfo.SessionID, userInfo.InventoryReceive); + } + else + { + m_commsManager.InventoryService.RequestInventoryForUser(userID, userInfo.InventoryReceive); + } //IInventoryServices invService = userInfo.GetInventoryService(); //if (invService != null) //{ diff --git a/OpenSim/Framework/Communications/CommunicationsManager.cs b/OpenSim/Framework/Communications/CommunicationsManager.cs index 8caeeb343b..80dfa2c8ef 100644 --- a/OpenSim/Framework/Communications/CommunicationsManager.cs +++ b/OpenSim/Framework/Communications/CommunicationsManager.cs @@ -112,11 +112,23 @@ namespace OpenSim.Framework.Communications protected List m_inventoryServices = new List(); // protected IInventoryServices m_inventoryService; - protected ISecureInventoryService m_secureinventoryServices; + protected List m_secureinventoryServices = new List(); public ISecureInventoryService SecureInventoryService { - get { return m_secureinventoryServices; } + get + { + if (m_secureinventoryServices.Count > 0) + { + // return m_inventoryServices[0]; + ISecureInventoryService invService; + if (TryGetSecureInventoryService(m_defaultInventoryHost, out invService)) + { + return invService; + } + } + return null; + } } public IInventoryServices InventoryService @@ -136,6 +148,29 @@ namespace OpenSim.Framework.Communications } } + public bool TryGetSecureInventoryService(string host, out ISecureInventoryService inventoryService) + { + if ((host == string.Empty) || (host == "default")) + { + host = m_defaultInventoryHost; + } + + lock (m_secureinventoryServices) + { + foreach (ISecureInventoryService service in m_secureinventoryServices) + { + if (service.Host == host) + { + inventoryService = service; + return true; + } + } + } + + inventoryService = null; + return false; + } + public bool TryGetInventoryService(string host, out IInventoryServices inventoryService) { if ((host == string.Empty) || (host == "default")) @@ -164,6 +199,19 @@ namespace OpenSim.Framework.Communications } + public virtual void AddSecureInventoryService(string hostUrl) + { + + } + + public virtual void AddSecureInventoryService(ISecureInventoryService service) + { + lock (m_secureinventoryServices) + { + m_secureinventoryServices.Add(service); + } + } + public virtual void AddInventoryService(IInventoryServices service) { lock (m_inventoryServices) diff --git a/OpenSim/Framework/NetworkServersInfo.cs b/OpenSim/Framework/NetworkServersInfo.cs index 399a365441..43ec11ee18 100644 --- a/OpenSim/Framework/NetworkServersInfo.cs +++ b/OpenSim/Framework/NetworkServersInfo.cs @@ -42,6 +42,7 @@ namespace OpenSim.Framework public string GridURL = String.Empty; public uint HttpListenerPort = DefaultHttpListenerPort; public string InventoryURL = String.Empty; + public bool secureInventoryServer = false; public bool isSandbox; private uint? m_defaultHomeLocX; private uint? m_defaultHomeLocY; @@ -93,6 +94,7 @@ namespace OpenSim.Framework InventoryURL = config.Configs["Network"].GetString("inventory_server_url", "http://127.0.0.1:" + InventoryConfig.DefaultHttpPort.ToString()); + secureInventoryServer = config.Configs["Network"].GetBoolean("secure_inventory_server", true); } } -} \ No newline at end of file +} diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 05e4f46313..6889a61334 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -254,6 +254,7 @@ namespace OpenSim config.Set("user_recv_key", "null"); config.Set("asset_server_url", "http://127.0.0.1:" + AssetConfig.DefaultHttpPort.ToString()); config.Set("inventory_server_url", "http://127.0.0.1:" + InventoryConfig.DefaultHttpPort.ToString()); + config.Set("secure_inventory_server", "true"); } if (DefaultConfig.Configs["RemoteAdmin"] == null) diff --git a/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs b/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs index a6ea1286ef..1926e79fdf 100644 --- a/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs +++ b/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs @@ -41,10 +41,18 @@ namespace OpenSim.Region.Communications.OGS1 m_gridService = gridInterComms; m_interRegion = gridInterComms; - m_secureinventoryServices = new OGS1SecureInventoryService(serversInfo.InventoryURL); - OGS1InventoryService invService = new OGS1InventoryService(serversInfo.InventoryURL); - AddInventoryService(invService); - m_defaultInventoryHost = invService.Host; + if (serversInfo.secureInventoryServer) + { + OGS1SecureInventoryService invService = new OGS1SecureInventoryService(serversInfo.InventoryURL); + AddSecureInventoryService(invService); + m_defaultInventoryHost = invService.Host; + } + else + { + OGS1InventoryService invService = new OGS1InventoryService(serversInfo.InventoryURL); + AddInventoryService(invService); + m_defaultInventoryHost = invService.Host; + } m_userService = new OGS1UserServices(this); m_avatarService = (IAvatarService)m_userService; @@ -55,5 +63,11 @@ namespace OpenSim.Region.Communications.OGS1 OGS1InventoryService invService = new OGS1InventoryService(hostUrl); AddInventoryService(invService); } + + public override void AddSecureInventoryService(string hostUrl) + { + OGS1SecureInventoryService invService = new OGS1SecureInventoryService(hostUrl); + AddSecureInventoryService(invService); + } } }