*** CHANGED CONFIG BEHAVIOUR ***

* Changed really strange LocalSettings behaviour with enforcing hard-coded plugin names if none supplied
* UserServices and InventoryPlugin will only load if supplied with filename
afrisby
lbsa71 2007-09-24 02:41:13 +00:00
parent a9a126063f
commit 5818958a9a
4 changed files with 47 additions and 56 deletions

View File

@ -23,28 +23,28 @@ namespace OpenSim.Framework.InventoryServiceBase
/// <param name="FileName">The filename to the user server plugin DLL</param> /// <param name="FileName">The filename to the user server plugin DLL</param>
public void AddPlugin(string FileName) public void AddPlugin(string FileName)
{ {
MainLog.Instance.Verbose("Inventory", "Inventorystorage: Attempting to load " + FileName); if (!String.IsNullOrEmpty(FileName))
Assembly pluginAssembly = Assembly.LoadFrom(FileName);
foreach (Type pluginType in pluginAssembly.GetTypes())
{ {
if (!pluginType.IsAbstract) MainLog.Instance.Verbose("Inventory", "Inventorystorage: Attempting to load " + FileName);
Assembly pluginAssembly = Assembly.LoadFrom(FileName);
foreach (Type pluginType in pluginAssembly.GetTypes())
{ {
Type typeInterface = pluginType.GetInterface("IInventoryData", true); if (!pluginType.IsAbstract)
if (typeInterface != null)
{ {
IInventoryData plug = (IInventoryData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); Type typeInterface = pluginType.GetInterface("IInventoryData", true);
plug.Initialise();
this.m_plugins.Add(plug.getName(), plug);
MainLog.Instance.Verbose("Inventorystorage: Added IInventoryData Interface");
}
typeInterface = null; if (typeInterface != null)
{
IInventoryData plug =
(IInventoryData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
plug.Initialise();
this.m_plugins.Add(plug.getName(), plug);
MainLog.Instance.Verbose("Inventorystorage: Added IInventoryData Interface");
}
}
} }
} }
pluginAssembly = null;
} }
/// <summary> /// <summary>

View File

@ -25,6 +25,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* *
*/ */
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
@ -32,15 +33,11 @@ using System.Reflection;
using System.Security.Cryptography; using System.Security.Cryptography;
using libsecondlife; using libsecondlife;
using Nwc.XmlRpc; using Nwc.XmlRpc;
using OpenSim.Framework.Configuration;
using OpenSim.Framework.Console; using OpenSim.Framework.Console;
using OpenSim.Framework.Data; using OpenSim.Framework.Data;
using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Inventory;
using OpenSim.Framework.Utilities; using OpenSim.Framework.Utilities;
using OpenSim.Framework.Configuration;
using InventoryFolder = OpenSim.Framework.Inventory.InventoryFolder;
namespace OpenSim.Framework.UserManagement namespace OpenSim.Framework.UserManagement
{ {
public abstract class UserManagerBase public abstract class UserManagerBase
@ -54,32 +51,32 @@ namespace OpenSim.Framework.UserManagement
/// <param name="FileName">The filename to the user server plugin DLL</param> /// <param name="FileName">The filename to the user server plugin DLL</param>
public void AddPlugin(string FileName) public void AddPlugin(string FileName)
{ {
MainLog.Instance.Verbose( "Userstorage: Attempting to load " + FileName); if (!String.IsNullOrEmpty(FileName))
Assembly pluginAssembly = Assembly.LoadFrom(FileName);
MainLog.Instance.Verbose( "Userstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
foreach (Type pluginType in pluginAssembly.GetTypes())
{ {
if (!pluginType.IsAbstract) MainLog.Instance.Verbose("Userstorage: Attempting to load " + FileName);
Assembly pluginAssembly = Assembly.LoadFrom(FileName);
MainLog.Instance.Verbose("Userstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
foreach (Type pluginType in pluginAssembly.GetTypes())
{ {
Type typeInterface = pluginType.GetInterface("IUserData", true); if (!pluginType.IsAbstract)
if (typeInterface != null)
{ {
IUserData plug = (IUserData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); Type typeInterface = pluginType.GetInterface("IUserData", true);
plug.Initialise();
AddPlugin(plug);
}
typeInterface = null; if (typeInterface != null)
{
IUserData plug =
(IUserData) Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
AddPlugin(plug);
}
}
} }
} }
pluginAssembly = null;
} }
private void AddPlugin(IUserData plug) public void AddPlugin(IUserData plug)
{ {
plug.Initialise();
this._plugins.Add(plug.getName(), plug); this._plugins.Add(plug.getName(), plug);
MainLog.Instance.Verbose( "Userstorage: Added IUserData Interface"); MainLog.Instance.Verbose( "Userstorage: Added IUserData Interface");
} }

View File

@ -79,8 +79,8 @@ namespace OpenSim
private bool standaloneAuthenticate = false; private bool standaloneAuthenticate = false;
private string standaloneWelcomeMessage = null; private string standaloneWelcomeMessage = null;
private string standaloneInventoryPlugin = ""; private string standaloneInventoryPlugin = "OpenSim.Framework.Data.SQLite.dll";
private string standaloneUserPlugin = ""; private string standaloneUserPlugin = "OpenSim.Framework.Data.DB4o.dll";
private string m_assetStorage = "db4o"; private string m_assetStorage = "db4o";

View File

@ -44,13 +44,13 @@ namespace OpenSim.Region.Communications.Local
public LocalUserServices UserServices; public LocalUserServices UserServices;
public LocalLoginService LoginServices; public LocalLoginService LoginServices;
public LocalInventoryService InvenServices; public LocalInventoryService InvenServices;
protected LocalSettings m_settings; protected LocalSettings m_settings;
protected CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache ) protected CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache)
: base(serversInfo, httpServer, assetCache) : base(serversInfo, httpServer, assetCache)
{ {
} }
public CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache, LocalSettings settings) public CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache, LocalSettings settings)
@ -94,7 +94,7 @@ namespace OpenSim.Region.Communications.Local
if (cmmdParams.Length < 2) if (cmmdParams.Length < 2)
{ {
firstName = MainLog.Instance.CmdPrompt("First name", "Default"); firstName = MainLog.Instance.CmdPrompt("First name", "Default");
lastName = MainLog.Instance.CmdPrompt("Last name", "User"); lastName = MainLog.Instance.CmdPrompt("Last name", "User");
password = MainLog.Instance.PasswdPrompt("Password"); password = MainLog.Instance.PasswdPrompt("Password");
@ -126,7 +126,7 @@ namespace OpenSim.Region.Communications.Local
{ {
return LLUUID.Zero; return LLUUID.Zero;
} }
else else
{ {
this.InvenServices.CreateNewUserInventory(userProf.UUID); this.InvenServices.CreateNewUserInventory(userProf.UUID);
Console.WriteLine("Created new inventory set for " + firstName + " " + lastName); Console.WriteLine("Created new inventory set for " + firstName + " " + lastName);
@ -136,23 +136,17 @@ namespace OpenSim.Region.Communications.Local
public class LocalSettings public class LocalSettings
{ {
public string WelcomeMessage = ""; public string WelcomeMessage;
public bool AccountAuthentication = false; public bool AccountAuthentication = false;
public string InventoryPlugin = "OpenSim.Framework.Data.SQLite.dll"; public string InventoryPlugin;
public string UserDatabasePlugin = "OpenSim.Framework.Data.DB4o.dll"; public string UserDatabasePlugin;
public LocalSettings(string welcomeMessage, bool accountsAuthenticate, string inventoryPlugin, string userPlugin) public LocalSettings(string welcomeMessage, bool accountsAuthenticate, string inventoryPlugin, string userPlugin)
{ {
WelcomeMessage = welcomeMessage; WelcomeMessage = welcomeMessage;
AccountAuthentication = accountsAuthenticate; AccountAuthentication = accountsAuthenticate;
if (inventoryPlugin != "") InventoryPlugin = inventoryPlugin;
{ UserDatabasePlugin = userPlugin;
InventoryPlugin = inventoryPlugin;
}
if (userPlugin != "")
{
UserDatabasePlugin = userPlugin;
}
} }
} }