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