From b73ce1143a6d8000f682abed6bc516504cf8ab33 Mon Sep 17 00:00:00 2001 From: diva Date: Mon, 30 Mar 2009 19:35:55 +0000 Subject: [PATCH] Adds support at the inventory server for direct inventory manipulation from authorized clients using capabilities. Provided keys are verified with the designated authority. The added code is only executed for clients following HGLoginAuth procedure or similar. It does not remove any existing behavior. --- OpenSim/Framework/InventoryConfig.cs | 24 +++++++++++++++++++++++- OpenSim/Grid/InventoryServer/Main.cs | 9 ++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/OpenSim/Framework/InventoryConfig.cs b/OpenSim/Framework/InventoryConfig.cs index ef8a28a23a..90e44827d6 100644 --- a/OpenSim/Framework/InventoryConfig.cs +++ b/OpenSim/Framework/InventoryConfig.cs @@ -41,8 +41,11 @@ namespace OpenSim.Framework public string DatabaseProvider = String.Empty; public string DefaultStartupMsg = String.Empty; public uint HttpPort = DefaultHttpPort; + public string InventoryServerURL = String.Empty; public string UserServerURL = String.Empty; + public string AssetServerURL = String.Empty; public bool SessionLookUp = true; + public bool RegionAccessToAgentsInventory = true; public InventoryConfig(string description, string filename) { @@ -53,10 +56,18 @@ namespace OpenSim.Framework public void loadConfigurationOptions() { + configMember.addConfigurationOption("default_inventory_server", + ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, + "Default Inventory Server URI (this server's external name)", + "http://127.0.0.1:8004", false); configMember.addConfigurationOption("default_user_server", ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, "Default User Server URI", - "http://127.0.0.1:" + UserConfig.DefaultHttpPort.ToString(), false); + "http://127.0.0.1:8002", false); + configMember.addConfigurationOption("default_asset_server", + ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, + "Default Asset Server URI", + "http://127.0.0.1:8003", false); configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "DLL for database provider", "OpenSim.Data.MySQL.dll", false); configMember.addConfigurationOption("database_connect", ConfigurationOption.ConfigurationTypes.TYPE_STRING, @@ -65,15 +76,23 @@ namespace OpenSim.Framework "Http Listener port", DefaultHttpPort.ToString(), false); configMember.addConfigurationOption("session_lookup", ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN, "Enable session lookup security", "False", false); + configMember.addConfigurationOption("region_access", ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN, + "Allow direct region access to users inventories? (Keep True if you don't know what this is about)", "True", false); } public bool handleIncomingConfiguration(string configuration_key, object configuration_result) { switch (configuration_key) { + case "default_inventory_server": + InventoryServerURL = (string)configuration_result; + break; case "default_user_server": UserServerURL = (string) configuration_result; break; + case "default_asset_server": + AssetServerURL = (string)configuration_result; + break; case "database_provider": DatabaseProvider = (string) configuration_result; break; @@ -86,6 +105,9 @@ namespace OpenSim.Framework case "session_lookup": SessionLookUp = (bool)configuration_result; break; + case "region_access": + RegionAccessToAgentsInventory = (bool)configuration_result; + break; } return true; diff --git a/OpenSim/Grid/InventoryServer/Main.cs b/OpenSim/Grid/InventoryServer/Main.cs index e4cd44687e..07fb19c7c0 100644 --- a/OpenSim/Grid/InventoryServer/Main.cs +++ b/OpenSim/Grid/InventoryServer/Main.cs @@ -33,6 +33,7 @@ using log4net; using log4net.Config; using OpenMetaverse; using OpenSim.Framework; +using OpenSim.Framework.Communications.Services; using OpenSim.Framework.Console; using OpenSim.Framework.Servers; @@ -43,6 +44,7 @@ namespace OpenSim.Grid.InventoryServer private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private GridInventoryService m_inventoryService; + private HGInventoryService m_directInventoryService; public const string LogName = "INVENTORY"; @@ -70,14 +72,19 @@ namespace OpenSim.Grid.InventoryServer m_inventoryService.DoLookup = config.SessionLookUp; m_inventoryService.AddPlugin(config.DatabaseProvider, config.DatabaseConnect); + m_log.Info("[" + LogName + "]: Starting HTTP server ..."); m_httpServer = new BaseHttpServer(config.HttpPort); - AddHttpHandlers(); + if (config.RegionAccessToAgentsInventory) + AddHttpHandlers(); + m_httpServer.Start(); m_log.Info("[" + LogName + "]: Started HTTP server"); + m_directInventoryService = new HGInventoryService(m_inventoryService, config.AssetServerURL, config.UserServerURL, m_httpServer, config.InventoryServerURL); + base.StartupSpecific(); m_console.Commands.AddCommand("inventoryserver", false, "add user",