mirror of
https://github.com/opensim/opensim.git
synced 2026-08-10 19:36:07 +08:00
- 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:
146
OpenSim/Framework/AssetInventoryConfig.cs
Normal file
146
OpenSim/Framework/AssetInventoryConfig.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user