From 529dd66ed01f598696ef8d20b465b911931d6fe8 Mon Sep 17 00:00:00 2001 From: Mike Mazur Date: Mon, 16 Feb 2009 02:27:34 +0000 Subject: - remove dependency on ExtensionLoader.dll (DBConnString.cs can go) - bring config system in line with other servers - add new plugin filter class which filters on ID - update AssetInventoryServer.ini file --- OpenSim/Framework/AssetInventoryConfig.cs | 146 ++++++++++++++++++++++++++++++ OpenSim/Framework/PluginLoader.cs | 48 +++++++++- 2 files changed, 193 insertions(+), 1 deletion(-) create mode 100644 OpenSim/Framework/AssetInventoryConfig.cs (limited to 'OpenSim/Framework') diff --git a/OpenSim/Framework/AssetInventoryConfig.cs b/OpenSim/Framework/AssetInventoryConfig.cs new file mode 100644 index 0000000..9277b5e --- /dev/null +++ b/OpenSim/Framework/AssetInventoryConfig.cs @@ -0,0 +1,146 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; + +namespace OpenSim.Framework +{ + /// + /// AssetInventoryConfig -- For AssetInventory Server Configuration + /// + public class AssetInventoryConfig + { + private ConfigurationMember configMember; + + public const uint DefaultHttpPort = 8003; + public uint HttpPort = DefaultHttpPort; + + public string AssetStorageProvider = "OpenSimAssetStorage"; + public string AssetDatabaseConnect = String.Empty; + public string InventoryStorageProvider = "OpenSimInventoryStorage"; + public string InventoryDatabaseConnect = String.Empty; + + public string AuthenticationProvider = "NullAuthentication"; + public string AuthorizationProvider = "AuthorizeAll"; + public string MetricsProvider = "NullMetrics"; + public string Frontends = "OpenSimAssetFrontend,OpenSimInventoryFrontend"; + + public AssetInventoryConfig(string description, string filename) + { + configMember = new ConfigurationMember(filename, description, loadConfigurationOptions, handleIncomingConfiguration, true); + configMember.performConfigurationRetrieve(); + } + + public void loadConfigurationOptions() + { + configMember.addConfigurationOption("listen_port", + ConfigurationOption.ConfigurationTypes.TYPE_UINT32, + "HTTP listener port", + DefaultHttpPort.ToString(), + false); + + configMember.addConfigurationOption("asset_storage_provider", + ConfigurationOption.ConfigurationTypes.TYPE_STRING, + "Asset storage provider", + AssetStorageProvider, + false); + configMember.addConfigurationOption("asset_database_connect", + ConfigurationOption.ConfigurationTypes.TYPE_STRING, + "Asset database connection string", + AssetDatabaseConnect, + false); + configMember.addConfigurationOption("inventory_storage_provider", + ConfigurationOption.ConfigurationTypes.TYPE_STRING, + "Inventory storage provider", + InventoryStorageProvider, + false); + configMember.addConfigurationOption("inventory_database_connect", + ConfigurationOption.ConfigurationTypes.TYPE_STRING, + "Inventory database connection string", + InventoryDatabaseConnect, + false); + + configMember.addConfigurationOption("authentication_provider", + ConfigurationOption.ConfigurationTypes.TYPE_STRING, + "Authentication provider", + AuthenticationProvider, + false); + configMember.addConfigurationOption("authorization_provider", + ConfigurationOption.ConfigurationTypes.TYPE_STRING, + "Authentication provider", + AuthorizationProvider, + false); + configMember.addConfigurationOption("metrics_provider", + ConfigurationOption.ConfigurationTypes.TYPE_STRING, + "Metrics provider", + MetricsProvider, + false); + configMember.addConfigurationOption("frontends", + ConfigurationOption.ConfigurationTypes.TYPE_STRING, + "Comma-separated list of frontends", + Frontends, + false); + + } + + public bool handleIncomingConfiguration(string configuration_key, object configuration_result) + { + switch (configuration_key) + { + case "listen_port": + HttpPort = (uint) configuration_result; + break; + case "asset_storage_provider": + AssetStorageProvider = (string) configuration_result; + break; + case "asset_database_connect": + AssetDatabaseConnect = (string) configuration_result; + break; + case "inventory_storage_provider": + InventoryStorageProvider = (string) configuration_result; + break; + case "inventory_database_connect": + InventoryDatabaseConnect = (string) configuration_result; + break; + case "authentication_provider": + AuthenticationProvider = (string) configuration_result; + break; + case "authorization_provider": + AuthorizationProvider = (string) configuration_result; + break; + case "metrics_provider": + MetricsProvider = (string) configuration_result; + break; + case "frontends": + Frontends = (string) configuration_result; + break; + } + + return true; + } + } +} diff --git a/OpenSim/Framework/PluginLoader.cs b/OpenSim/Framework/PluginLoader.cs index 15e0b9f..b586fe3 100644 --- a/OpenSim/Framework/PluginLoader.cs +++ b/OpenSim/Framework/PluginLoader.cs @@ -278,6 +278,9 @@ namespace OpenSim.Framework public class PluginExtensionNode : ExtensionNode { [NodeAttribute] + string id = ""; + + [NodeAttribute] string provider = ""; [NodeAttribute] @@ -285,6 +288,7 @@ namespace OpenSim.Framework Type typeobj; + public string ID { get { return id; } } public string Provider { get { return provider; } } public string TypeName { get { return type; } } @@ -349,7 +353,7 @@ namespace OpenSim.Framework } /// - /// Filters out which plugin to load based on its the plugin name or names given. Plugin names are contained in + /// Filters out which plugin to load based on the plugin name or names given. Plugin names are contained in /// their addin.xml /// public class PluginProviderFilter : IPluginFilter @@ -390,4 +394,46 @@ namespace OpenSim.Framework return false; } } + + /// + /// Filters plugins according to their ID. Plugin IDs are contained in their addin.xml + /// + public class PluginIdFilter : IPluginFilter + { + private string[] m_filters; + + /// + /// Constructor. + /// + /// + /// Plugin ID or IDs on which to filter. Multiple names should be separated by commas. + /// + public PluginIdFilter(string p) + { + m_filters = p.Split(','); + + for (int i = 0; i < m_filters.Length; i++) + { + m_filters[i] = m_filters[i].Trim(); + } + } + + /// + /// Apply this filter to . + /// + /// PluginExtensionNode instance to check whether it passes the filter. + /// true if the plugin's ID matches one of the filters, false otherwise. + public bool Apply (PluginExtensionNode plugin) + { + for (int i = 0; i < m_filters.Length; i++) + { + if (m_filters[i] == plugin.ID) + { + return true; + } + } + + return false; + } + } } -- cgit v1.1