diff --git a/OpenSim/Framework/AssetInventoryConfig.cs b/OpenSim/Framework/AssetInventoryConfig.cs
new file mode 100644
index 0000000000..9277b5e836
--- /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 15e0b9f7ab..b586fe35cd 100644
--- a/OpenSim/Framework/PluginLoader.cs
+++ b/OpenSim/Framework/PluginLoader.cs
@@ -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
}
///
- /// 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;
+ }
+ }
}
diff --git a/OpenSim/Grid/AssetInventoryServer/AssetInventoryServer.cs b/OpenSim/Grid/AssetInventoryServer/AssetInventoryServer.cs
index bd05d59c9c..f6d46e89d0 100644
--- a/OpenSim/Grid/AssetInventoryServer/AssetInventoryServer.cs
+++ b/OpenSim/Grid/AssetInventoryServer/AssetInventoryServer.cs
@@ -32,11 +32,6 @@ using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Reflection;
-using System.Security.Cryptography.X509Certificates;
-using System.ServiceProcess;
-using ExtensionLoader;
-using ExtensionLoader.Config;
-//using HttpServer;
using log4net;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
@@ -44,12 +39,11 @@ using OpenSim.Framework.Console;
namespace OpenSim.Grid.AssetInventoryServer
{
- public class AssetInventoryServer : BaseOpenSimServer//ServiceBase
+ public class AssetInventoryServer : BaseOpenSimServer
{
public const string CONFIG_FILE = "AssetInventoryServer.ini";
- //public WebServer HttpServer;
- public IniConfigSource ConfigFile;
+ public AssetInventoryConfig ConfigFile;
public IAssetStorageProvider StorageProvider;
public IInventoryStorageProvider InventoryProvider;
@@ -57,72 +51,39 @@ namespace OpenSim.Grid.AssetInventoryServer
public IAuthorizationProvider AuthorizationProvider;
public IMetricsProvider MetricsProvider;
- private List frontends = new List();
- private List backends = new List();
+ private List m_frontends = new List();
+ private List m_backends = new List();
public AssetInventoryServer()
{
m_console = new ConsoleBase("Asset");
MainConsole.Instance = m_console;
- //this.ServiceName = "OpenSimAssetInventoryServer";
}
public bool Start()
{
Logger.Log.Info("Starting Asset Server");
- List extensionList = null;
- int port = 0;
- X509Certificate2 serverCert = null;
+ uint port = 0;
- try { ConfigFile = new IniConfigSource(CONFIG_FILE); }
+ try { ConfigFile = new AssetInventoryConfig("AssetInventory Server", (Path.Combine(Util.configDir(), "AssetInventoryServer.ini"))); }
catch (Exception)
{
Logger.Log.Error("Failed to load the config file " + CONFIG_FILE);
return false;
}
- try
- {
- IConfig extensionConfig = ConfigFile.Configs["Config"];
+ StorageProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/StorageProvider", ConfigFile.AssetStorageProvider) as IAssetStorageProvider;
+ m_backends.Add(StorageProvider);
- // Load the port number to listen on
- port = extensionConfig.GetInt("ListenPort");
+ InventoryProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/InventoryProvider", ConfigFile.InventoryStorageProvider) as IInventoryStorageProvider;
+ m_backends.Add(InventoryProvider);
- // Load the server certificate file
- string certFile = extensionConfig.GetString("SSLCertFile");
- if (!String.IsNullOrEmpty(certFile))
- serverCert = new X509Certificate2(certFile);
- }
- catch (Exception)
- {
- Logger.Log.Error("Failed to load [Config] section from " + CONFIG_FILE);
- return false;
- }
+ MetricsProvider = LoadAssetInventoryServerPlugins("/OpenSim/AssetInventoryServer/MetricsProvider", ConfigFile.MetricsProvider) as IMetricsProvider;
+ m_backends.Add(MetricsProvider);
try
{
- // Load the extension list (and ordering) from our config file
- IConfig extensionConfig = ConfigFile.Configs["Extensions"];
- extensionList = new List(extensionConfig.GetKeys());
- }
- catch (Exception)
- {
- Logger.Log.Error("Failed to load [Extensions] section from " + CONFIG_FILE);
- return false;
- }
-
- StorageProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/StorageProvider", "OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.dll") as IAssetStorageProvider;
- backends.Add(StorageProvider);
-
- InventoryProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/InventoryProvider", "OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.dll") as IInventoryStorageProvider;
- backends.Add(InventoryProvider);
-
- MetricsProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/MetricsProvider", String.Empty) as IMetricsProvider;
- backends.Add(MetricsProvider);
-
- try
- {
- InitHttpServer(port, serverCert);
+ InitHttpServer(ConfigFile.HttpPort);
}
catch (Exception ex)
{
@@ -131,13 +92,13 @@ namespace OpenSim.Grid.AssetInventoryServer
return false;
}
- frontends.AddRange(LoadAssetInventoryServerPlugins("/OpenSim/AssetInventoryServer/Frontend", String.Empty));
+ AuthenticationProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/AuthenticationProvider", ConfigFile.AuthenticationProvider) as IAuthenticationProvider;
+ m_backends.Add(AuthenticationProvider);
- AuthenticationProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/AuthenticationProvider", String.Empty) as IAuthenticationProvider;
- backends.Add(AuthenticationProvider);
+ AuthorizationProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/AuthorizationProvider", ConfigFile.AuthorizationProvider) as IAuthorizationProvider;
+ m_backends.Add(AuthorizationProvider);
- AuthorizationProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/AuthorizationProvider", String.Empty) as IAuthorizationProvider;
- backends.Add(AuthorizationProvider);
+ m_frontends.AddRange(LoadAssetInventoryServerPlugins("/OpenSim/AssetInventoryServer/Frontend", ConfigFile.Frontends));
return true;
}
@@ -154,7 +115,7 @@ namespace OpenSim.Grid.AssetInventoryServer
public override void ShutdownSpecific()
{
- foreach (IAssetInventoryServerPlugin plugin in frontends)
+ foreach (IAssetInventoryServerPlugin plugin in m_frontends)
{
Logger.Log.Debug("Disposing plugin " + plugin.Name);
try { plugin.Dispose(); }
@@ -162,7 +123,7 @@ namespace OpenSim.Grid.AssetInventoryServer
{ Logger.Log.ErrorFormat("Failure shutting down plugin {0}: {1}", plugin.Name, ex.Message); }
}
- foreach (IAssetInventoryServerPlugin plugin in backends)
+ foreach (IAssetInventoryServerPlugin plugin in m_backends)
{
Logger.Log.Debug("Disposing plugin " + plugin.Name);
try { plugin.Dispose(); }
@@ -174,47 +135,14 @@ namespace OpenSim.Grid.AssetInventoryServer
HttpServer.Stop();
}
- void InitHttpServer(int port, X509Certificate serverCert)
+ void InitHttpServer(uint port)
{
- //if (serverCert != null)
- // HttpServer = new WebServer(IPAddress.Any, port, serverCert, null, false);
- //else
- // HttpServer = new WebServer(IPAddress.Any, port);
-
- //HttpServer.LogWriter = new log4netLogWriter(Logger.Log);
-
- //HttpServer.Set404Handler(
- // delegate(IHttpClientContext client, IHttpRequest request, IHttpResponse response)
- // {
- // Logger.Log.Warn("Requested page was not found: " + request.Uri.PathAndQuery);
-
- // string notFoundString = "Page Not FoundThe requested page or method was not found";
- // byte[] buffer = System.Text.Encoding.UTF8.GetBytes(notFoundString);
- // response.Body.Write(buffer, 0, buffer.Length);
- // response.Status = HttpStatusCode.NotFound;
- // return true;
- // }
- //);
-
- m_httpServer = new BaseHttpServer(8003);
- HttpServer.Start();
+ m_httpServer = new BaseHttpServer(port);
+ m_httpServer.Start();
Logger.Log.Info("Asset server is listening on port " + port);
}
- #region ServiceBase Overrides
-
- //protected override void OnStart(string[] args)
- //{
- // Start();
- //}
- //protected override void OnStop()
- //{
- // Shutdown();
- //}
-
- #endregion
-
private IAssetInventoryServerPlugin LoadAssetInventoryServerPlugin(string addinPath, string provider)
{
PluginLoader loader = new PluginLoader(new AssetInventoryServerPluginInitialiser(this));
@@ -222,7 +150,7 @@ namespace OpenSim.Grid.AssetInventoryServer
if (provider == String.Empty)
loader.Add(addinPath);
else
- loader.Add(addinPath, new PluginProviderFilter(provider));
+ loader.Add(addinPath, new PluginIdFilter(provider));
//loader.Add(addinPath, new PluginCountConstraint(1));
loader.Load();
@@ -237,7 +165,7 @@ namespace OpenSim.Grid.AssetInventoryServer
if (provider == String.Empty)
loader.Add(addinPath);
else
- loader.Add(addinPath, new PluginProviderFilter(provider));
+ loader.Add(addinPath, new PluginIdFilter(provider));
//loader.Add(addinPath, new PluginCountConstraint(1));
loader.Load();
@@ -245,37 +173,4 @@ namespace OpenSim.Grid.AssetInventoryServer
return loader.Plugins;
}
}
-
- //public class log4netLogWriter : ILogWriter
- //{
- // ILog Log;
-
- // public log4netLogWriter(ILog log)
- // {
- // Log = log;
- // }
-
- // public void Write(object source, LogPrio prio, string message)
- // {
- // switch (prio)
- // {
- // case LogPrio.Trace:
- // case LogPrio.Debug:
- // Log.DebugFormat("{0}: {1}", source, message);
- // break;
- // case LogPrio.Info:
- // Log.InfoFormat("{0}: {1}", source, message);
- // break;
- // case LogPrio.Warning:
- // Log.WarnFormat("{0}: {1}", source, message);
- // break;
- // case LogPrio.Error:
- // Log.ErrorFormat("{0}: {1}", source, message);
- // break;
- // case LogPrio.Fatal:
- // Log.FatalFormat("{0}: {1}", source, message);
- // break;
- // }
- // }
- //}
}
diff --git a/OpenSim/Grid/AssetInventoryServer/Extensions/DBConnString.cs b/OpenSim/Grid/AssetInventoryServer/Extensions/DBConnString.cs
deleted file mode 100644
index 78761be69b..0000000000
--- a/OpenSim/Grid/AssetInventoryServer/Extensions/DBConnString.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2008 Intel Corporation
- * All rights reserved.
- * 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 Intel Corporation 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 COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``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 INTEL OR ITS
- * 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;
-using System.Xml;
-using ExtensionLoader.Config;
-using MySql.Data.MySqlClient;
-
-namespace OpenSim.Grid.AssetInventoryServer.Extensions
-{
- public static class DBConnString
- {
- private static string connectionString;
-
- ///
- /// Parses the MySQL connection string out of either the asset server
- /// .ini or a OpenSim-style .xml file and caches the result for future
- /// requests
- ///
- public static string GetConnectionString(IniConfigSource configFile)
- {
- if (connectionString == null)
- {
- // Try parsing from the ini file
- try
- {
- // Load the extension list (and ordering) from our config file
- IConfig extensionConfig = configFile.Configs["MySQL"];
- connectionString = extensionConfig.GetString("database_connect", null);
- }
- catch (Exception) { }
-
- if (connectionString != null)
- {
- // Force MySQL's broken connection pooling off
- MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder(connectionString);
- builder.Pooling = false;
- if (String.IsNullOrEmpty(builder.Database))
- Logger.Log.Error("No database selected in the connectionString: " + connectionString);
- connectionString = builder.ToString();
- }
- else
- {
- Logger.Log.Error("Database connection string is missing, check that the database_connect line is " +
- "correct and uncommented in AssetInventoryServer.ini");
- }
- }
-
- return connectionString;
- }
- }
-}
diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimAssetStoragePlugin.cs b/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimAssetStoragePlugin.cs
index e35092b0e0..b7aef08611 100644
--- a/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimAssetStoragePlugin.cs
+++ b/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimAssetStoragePlugin.cs
@@ -35,7 +35,6 @@ using MySql.Data.MySqlClient;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
-using OpenSim.Grid.AssetInventoryServer.Extensions;
using OpenSim.Data;
namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
@@ -58,7 +57,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
metadata = null;
BackendResponse ret;
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.AssetDatabaseConnect))
{
IDataReader reader;
@@ -104,7 +103,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
assetData = null;
BackendResponse ret;
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.AssetDatabaseConnect))
{
IDataReader reader;
@@ -156,7 +155,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
{
BackendResponse ret;
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.AssetDatabaseConnect))
{
try
{
@@ -205,7 +204,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
{
int rowCount = 0;
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.AssetDatabaseConnect))
{
MySqlDataReader reader;
@@ -255,7 +254,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
try
{
- m_assetProvider = DataPluginFactory.LoadDataPlugin("OpenSim.Data.MySQL.dll", server.ConfigFile.Configs["MySQL"].GetString("database_connect", null));
+ m_assetProvider = DataPluginFactory.LoadDataPlugin("OpenSim.Data.MySQL.dll", server.ConfigFile.AssetDatabaseConnect);
if (m_assetProvider == null)
{
Logger.Log.Error("[ASSET]: Failed to load a database plugin, server halting.");
diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimInventoryStoragePlugin.cs b/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimInventoryStoragePlugin.cs
index a7d2f92c83..0ad6c80af3 100644
--- a/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimInventoryStoragePlugin.cs
+++ b/OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim/OpenSimInventoryStoragePlugin.cs
@@ -35,7 +35,6 @@ using MySql.Data.MySqlClient;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
-using OpenSim.Grid.AssetInventoryServer.Extensions;
using OpenSim.Data;
namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
@@ -58,7 +57,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
item = null;
BackendResponse ret;
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.InventoryDatabaseConnect))
{
IDataReader reader;
@@ -120,7 +119,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
folder = null;
BackendResponse ret;
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.InventoryDatabaseConnect))
{
IDataReader reader;
@@ -167,7 +166,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
contents = null;
BackendResponse ret;
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.InventoryDatabaseConnect))
{
IDataReader reader;
@@ -267,7 +266,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
if (Utils.TryGetOpenSimUUID(owner, out ownerID))
{
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.InventoryDatabaseConnect))
{
IDataReader reader;
@@ -333,7 +332,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
// Fetch inventory items
if (Utils.TryGetOpenSimUUID(owner, out ownerID))
{
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.InventoryDatabaseConnect))
{
IDataReader reader;
@@ -405,7 +404,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
if (Utils.TryGetOpenSimUUID(owner, out ownerID))
{
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.InventoryDatabaseConnect))
{
IDataReader reader;
@@ -470,7 +469,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
{
BackendResponse ret;
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.InventoryDatabaseConnect))
{
try
{
@@ -537,7 +536,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
{
BackendResponse ret;
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.InventoryDatabaseConnect))
{
try
{
@@ -593,7 +592,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
if (Utils.TryGetOpenSimUUID(owner, out ownerID))
{
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.InventoryDatabaseConnect))
{
try
{
@@ -639,7 +638,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
if (Utils.TryGetOpenSimUUID(owner, out ownerID))
{
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.InventoryDatabaseConnect))
{
try
{
@@ -685,7 +684,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
if (Utils.TryGetOpenSimUUID(owner, out ownerID))
{
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.InventoryDatabaseConnect))
{
try
{
@@ -739,7 +738,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
{
int rowCount = 0;
- using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
+ using (MySqlConnection dbConnection = new MySqlConnection(server.ConfigFile.InventoryDatabaseConnect))
{
MySqlDataReader reader;
@@ -789,7 +788,7 @@ namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
try
{
- m_inventoryProvider = DataPluginFactory.LoadDataPlugin("OpenSim.Data.MySQL.dll", server.ConfigFile.Configs["MySQL"].GetString("database_connect", null));
+ m_inventoryProvider = DataPluginFactory.LoadDataPlugin("OpenSim.Data.MySQL.dll", server.ConfigFile.InventoryDatabaseConnect);
if (m_inventoryProvider == null)
{
Logger.Log.Error("[INVENTORY]: Failed to load a database plugin, server halting.");
diff --git a/OpenSim/Grid/AssetInventoryServer/Plugins/Resources/AssetInventoryServerPlugins.addin.xml b/OpenSim/Grid/AssetInventoryServer/Plugins/Resources/AssetInventoryServerPlugins.addin.xml
index 67c4cd209d..c1e5c4d3fb 100644
--- a/OpenSim/Grid/AssetInventoryServer/Plugins/Resources/AssetInventoryServerPlugins.addin.xml
+++ b/OpenSim/Grid/AssetInventoryServer/Plugins/Resources/AssetInventoryServerPlugins.addin.xml
@@ -8,7 +8,7 @@
-
+
diff --git a/bin/AssetInventoryServer.ini.example b/bin/AssetInventoryServer.ini.example
index f346624775..503870e412 100644
--- a/bin/AssetInventoryServer.ini.example
+++ b/bin/AssetInventoryServer.ini.example
@@ -1,153 +1,107 @@
-[Config]
-
-; The port number for the asset server to listen on. If a valid SSL certificate
-; file is given for SSLCertFile, the HTTPS protocol will be used. Otherwise, the
-; HTTP protocol is used.
-ListenPort = 8003
-
-; An SSL certificate file for the server. If a valid raw certificate or PKCS#12
-; file is given the server will run in HTTPS mode.
-;SSLCertFile = server.p12
-
-[Extensions]
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Storage Providers
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-; Simple storage is a very basic storage system for the purposes of illustrating
-; a storage backend example. The assets are stored in SimpleAssets/ and
-; TempAssets/ (which is deleted when the server shuts down). Metadata is
-; generated for all of the files at startup and when new assets are uploaded.
-;SimpleStorage
-
-; OpenSimMySQL storage connects to a MySQL server that has an assets table created
-; by OpenSim. Open the AssetServer_Config.xml file from OpenSim and use the
-; database connection string for the database_connect option in the MySQL section
-; below. This backend combined with the OpenSimFrontend will allow the asset
-; server to be used as a drop-in replacement for OpenSim.Grid.AssetServer.exe,
-; while also allowing other frontends to run.
-OpenSimMySQLStorage
-
-; Uses Amazon.com's Simple Storage Service (http://aws.amazon.com/s3/) to store
-; asset data and metadata. This backend does not handle any data requests, as the
-; data is stored remotely and metadata replies will contain the amazon.com URL
-; holding the actual asset data. Your Access Key ID and Secret Access Key must be
-; set in the [Amazon] section below for this backend to function. If
-; UseCloudFront is true and your Amazon account has CloudFront enabled,
-; CloudFront URLs will be returned in metadata instead of normal S3 URLs.
-;AmazonS3Storage
-
-; Uses memcached (http://www.danga.com/memcached/) as a caching layer on top of
-; another storage backend. If you use this, make sure you enable another storage
-; provider as the actual backend, and that the MemcacheStorage line appears in
-; this config file after the other storage provider.
-;MemcachedStorage
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Inventory Providers
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-; Simple inventory is a very basic inventory storage system for the purposes of
-; illustrating an inventory backend example. The inventory is stored in
-; SimpleInventory/ by creating a folder for each agent that contains all of the
-; inventory items and folders serialized as XML files.
-;SimpleInventory
-
-; OpenSimMySQL inventory connects to a MySQL server that has an inventory table
-; created by OpenSim. If the OpenSimMySQLStorage backend is also being used, the
-; inventory and asset tables must be stored in the same database. The
-; database_connect string in the MySQL section below is used to connect to the
-; database. This backend combined with the OpenSimInventoryFrontend will allow
-; the server to be used as a drop-in replacement for
-; OpenSim.Grid.InventoryServer.exe, while also allowing other frontends to run.
-OpenSimMySQLInventory
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Authentication Providers
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-; OpenID provides a direct method of authenticating with the asset server. Users
-; can provide credentials and receive a session token directly from the asset
-; server. The OpenIdAuth module provides a browser-based form login and an
-; XML-based API, both accessible through the URL /authenticate.
-;OpenIdAuth
-NullAuthentication
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Authorization Providers
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-; Authorize all is a dummy authorization module that allows all requests for
-; metadata, data, and asset creation. Use this extension if your primary
-; storage provider or front-end interface does not support authentication.
-AuthorizeAll
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Metrics Providers
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-; NullMetrics contains empty logging functions. Use this metrics provider if
-; you want to disable metrics collection and reporting.
-NullMetrics
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Frontends
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-; A simple frontend that provides three basic REST methods. /assetid/metadata
-; will return the metadata for an asset (currently in LLSD format, that will
-; change soon). /assetid/data will return the raw asset data with proper
-; Content-Type and Content-Disposition headers to make downloading assets in a
-; web browser easy.
-ReferenceFrontend
-
-; A frontend that matches the existing OpenSim XML for transferring grid
-; assets. This will allow the asset server to function as a drop-in replacement
-; for OpenSim.Grid.AssetServer.exe, and can be combined with OpenSimMySQLStorage
-; to provide an identical replacement or any other storage backend.
-OpenSimFrontend
-
-; A frontend that matches the existing OpenSim XML for handling inventory
-; transactions. This will allow the asset server to function as a drop-in
-; replacement for OpenSim.Grid.InventoryServer.exe, and can be combined with
-; OpenSimMySQLInventory to provide an identical replacement or any other
-; inventory backend.
-OpenSimInventoryFrontend
-
-; An HTML interface for browsing through the asset store
-BrowseFrontend
-
-[MySQL]
-
-; Database connection string used by the OpenSim MySQL backend. If this line is
-; commented out or missing, the server will look for an AssetServer_Config.xml
-; in the current working directory. This file is generated by
-; OpenSim.Grid.AssetServer.exe and can be used without modification.
-database_connect = "Server=localhost; Database=opensim; User=changeme; Password=changeme;"
-
-[Amazon]
-
-; Get these values by logging in to your Amazon S3 account and going to
-; https://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=access-key
-AccessKeyID = xxxxxxxxxxxxxxxxxxxx
-SecretAccessKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-
-; The bucket, or namespace, in your Amazon S3 account for storing assets in.
-; Bucket names on S3 are global identifiers, and must be unique. Think up
-; something clever or random.
-BucketName = changeme
-
-; Amazon CloudFront is a Content Distribution Network for S3 stores. If this is
-; set to true, AmazonS3Storage will try to locate the first available CloudFront
-; distribution tied to the active S3 bucket. If no usable distribution is found,
-; a new one will be created.
-UseCloudFront = true
-
-[Memcached]
-
-; A comma-separated list of the memcached servers that make up your caching
-; pool. Each server is a hostname or IP address, optionally followed by a
-; colon and port number if the server is not listening on the default 11211
-; port.
-Servers = localhost
+;[Config]
+
+; The port number for the asset server to listen on.
+listen_port = 8003
+
+;[Extensions]
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Asset Storage Provider
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; Simple storage is a very basic storage system for the purposes of illustrating
+; a storage backend example. The assets are stored in SimpleAssets/ and
+; TempAssets/ (which is deleted when the server shuts down). Metadata is
+; generated for all of the files at startup and when new assets are uploaded.
+;asset_storage_provider = SimpleAssetStorage
+
+; OpenSimMySQL storage connects to a MySQL server that has an assets table created
+; by OpenSim. Open the AssetServer_Config.xml file from OpenSim and use the
+; database connection string for the database_connect option in the MySQL section
+; below. This backend combined with the OpenSimFrontend will allow the asset
+; server to be used as a drop-in replacement for OpenSim.Grid.AssetServer.exe,
+; while also allowing other frontends to run.
+asset_storage_provider = OpenSimAssetStorage
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Inventory Storage Provider
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; Simple inventory is a very basic inventory storage system for the purposes of
+; illustrating an inventory backend example. The inventory is stored in
+; SimpleInventory/ by creating a folder for each agent that contains all of the
+; inventory items and folders serialized as XML files.
+;inventory_asset_provider = SimpleInventoryStorage
+
+; OpenSimMySQL inventory connects to a MySQL server that has an inventory table
+; created by OpenSim. If the OpenSimMySQLStorage backend is also being used, the
+; inventory and asset tables must be stored in the same database. The
+; database_connect string in the MySQL section below is used to connect to the
+; database. This backend combined with the OpenSimInventoryFrontend will allow
+; the server to be used as a drop-in replacement for
+; OpenSim.Grid.InventoryServer.exe, while also allowing other frontends to run.
+inventory_asset_provider = OpenSimInventoryStorage
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Authentication Provider
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; NullAuthentication does nothing.
+authentication_provider = NullAuthentication
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Authorization Provider
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; Authorize all is a dummy authorization module that allows all requests for
+; metadata, data, and asset creation. Use this extension if your primary
+; storage provider or front-end interface does not support authentication.
+authroization_provider = AuthorizeAll
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Metrics Provider
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; NullMetrics contains empty logging functions. Use this metrics provider if
+; you want to disable metrics collection and reporting.
+metrics_provider = NullMetrics
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Frontends
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; Specify multiple frontends as a comma-separated list.
+
+; ReferenceFrontend is a simple frontend that provides three basic REST
+; methods. /assetid/metadata will return the metadata for an asset (currently in
+; LLSD format, that will change soon). /assetid/data will return the raw asset
+; data with proper Content-Type and Content-Disposition headers to make
+; downloading assets in a web browser easy.
+
+; OpenSimAssetFrontend is a frontend that matches the existing OpenSim XML for
+; transferring grid assets. This will allow the asset server to function as a
+; drop-in replacement for OpenSim.Grid.AssetServer.exe, and can be combined with
+; OpenSimAssetStorage to provide an identical replacement, or any other asset
+; storage backend.
+
+; OpenSimInventoryFrontend is a frontend that matches the existing OpenSim XML
+; for transferring inventory. This will allow the inventory server to function as
+; a drop-in replacement for OpenSim.Grid.InventoryServer.exe, and can be combined
+; with OpenSimInventoryStorage to provide an identical replacement, or any other
+; inventory storage backend.
+; *** NOTE: Inventory is not currently implemented.
+
+; BrowseFrontend is an HTML interface for browsing through the asset store.
+
+frontends = ReferenceFrontend,OpenSimAssetFrontend,OpenSimInventoryFrontend,BrowseFrontend
+
+;[MySQL]
+
+; Database connection string used by the OpenSim MySQL backend. If these lines
+; are commented out or missing, the server will look for an
+; AssetServer_Config.xml or InventoryServer_Config.xml file in the current
+; working directory. These files are generated by OpenSim.Grid.AssetServer.exe
+; and OpenSim.Grid.InventoryServer.exe, respectively, and can be used without
+; modification.
+asset_database_connect = "Server=localhost; Database=opensim; User=changeme; Password=changeme;"
+inventory_database_connect = "Server=localhost; Database=opensim; User=changeme; Password=changeme;"
diff --git a/prebuild.xml b/prebuild.xml
index e63bb4fdea..75879d95e4 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -769,7 +769,6 @@
-