- 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
This commit is contained in:
Mike Mazur
2009-02-16 02:27:34 +00:00
parent f8ea274090
commit 529dd66ed0
9 changed files with 344 additions and 384 deletions

View File

@@ -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
{
/// <summary>
/// AssetInventoryConfig -- For AssetInventory Server Configuration
/// </summary>
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;
}
}
}

View File

@@ -277,6 +277,9 @@ namespace OpenSim.Framework
public class PluginExtensionNode : ExtensionNode
{
[NodeAttribute]
string id = "";
[NodeAttribute]
string provider = "";
@@ -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
}
/// <summary>
/// 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
/// </summary>
public class PluginProviderFilter : IPluginFilter
@@ -390,4 +394,46 @@ namespace OpenSim.Framework
return false;
}
}
/// <summary>
/// Filters plugins according to their ID. Plugin IDs are contained in their addin.xml
/// </summary>
public class PluginIdFilter : IPluginFilter
{
private string[] m_filters;
/// <summary>
/// Constructor.
/// </summary>
/// <param name="p">
/// Plugin ID or IDs on which to filter. Multiple names should be separated by commas.
/// </param>
public PluginIdFilter(string p)
{
m_filters = p.Split(',');
for (int i = 0; i < m_filters.Length; i++)
{
m_filters[i] = m_filters[i].Trim();
}
}
/// <summary>
/// Apply this filter to <paramref name="plugin" />.
/// </summary>
/// <param name="plugin">PluginExtensionNode instance to check whether it passes the filter.</param>
/// <returns>true if the plugin's ID matches one of the filters, false otherwise.</returns>
public bool Apply (PluginExtensionNode plugin)
{
for (int i = 0; i < m_filters.Length; i++)
{
if (m_filters[i] == plugin.ID)
{
return true;
}
}
return false;
}
}
}