From 31362a67dfb5b1fe22100be17204e80252f261d9 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Sat, 4 Oct 2008 20:27:55 +0000 Subject: [PATCH] * Tidy up configuration stuff, eliminated default setting duplication along the way * This revision also makes the exception catcher of last resort print to the log instead of just the console * This means logs should now capture sim crashing exceptions, though not those which are caused by a crash of the virtual machine itself --- OpenSim/Region/Application/Application.cs | 8 +- OpenSim/Region/Application/OpenSimBase.cs | 95 ++++++++++------------- 2 files changed, 45 insertions(+), 58 deletions(-) diff --git a/OpenSim/Region/Application/Application.cs b/OpenSim/Region/Application/Application.cs index 8d2ce55a97..86661b839e 100644 --- a/OpenSim/Region/Application/Application.cs +++ b/OpenSim/Region/Application/Application.cs @@ -27,6 +27,8 @@ using System; using System.Net; +using System.Reflection; +using log4net; using log4net.Config; using Nini.Config; using OpenSim.Framework; @@ -36,6 +38,8 @@ namespace OpenSim { public class Application { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + public static string iniFilePath = ""; //could move our main function into OpenSimMain and kill this class @@ -124,9 +128,7 @@ namespace OpenSim msg += "\r\n"; msg += "Application is terminating: " + e.IsTerminating.ToString() + "\r\n"; - // Do we not always want to see exception messages? -// if (e.IsTerminating) - MainConsole.Instance.Error("[APPLICATION]: " + msg); + m_log.ErrorFormat("[APPLICATION]: {0}", msg); // Try to post errormessage to an URL try diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index c1a5825cf8..710dafbef8 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -150,48 +150,39 @@ namespace OpenSim set { m_moduleLoader = value; } } + /// + /// Constructor. + /// + /// public OpenSimBase(IConfigSource configSource) : base() { IConfig startupConfig = configSource.Configs["Startup"]; - Application.iniFilePath = startupConfig.GetString("inifile", "OpenSim.ini"); + string iniFileName = startupConfig.GetString("inifile", "OpenSim.ini"); + Application.iniFilePath = Path.Combine(Util.configDir(), iniFileName); m_config = new OpenSimConfigSource(); m_config.Source = new IniConfigSource(); - // IConfigSource icong; - + m_config.Source.Merge(DefaultConfig()); + //check for .INI file (either default or name passed in command line) if (File.Exists(Application.iniFilePath)) { + // From reading Nini's code, it seems that later merged keys replace earlier ones. m_config.Source.Merge(new IniConfigSource(Application.iniFilePath)); - m_config.Source.Merge(configSource); + m_config.Source.Merge(configSource); } - else - { - Application.iniFilePath = Path.Combine(Util.configDir(), Application.iniFilePath); + else + { + // check for a xml config file + Application.iniFilePath = Path.Combine(Util.configDir(), "OpenSim.xml"); + if (File.Exists(Application.iniFilePath)) { - m_config.Source.Merge(new IniConfigSource(Application.iniFilePath)); + m_config.Source = new XmlConfigSource(); + m_config.Source.Merge(new XmlConfigSource(Application.iniFilePath)); m_config.Source.Merge(configSource); } - else - { - if (File.Exists("OpenSim.xml")) - { - // check for a xml config file - Application.iniFilePath = "OpenSim.xml"; - m_config.Source = new XmlConfigSource(); - m_config.Source.Merge(new XmlConfigSource(Application.iniFilePath)); - m_config.Source.Merge(configSource); - } - else - { - // using OpenSim.ini instead - m_config.Source.Merge(DefaultConfig()); - m_config.Source.Merge(configSource); - m_config.Save(Application.iniFilePath); - } - } } ReadConfigSettings(); @@ -213,17 +204,17 @@ namespace OpenSim config.Set("gridmode", false); config.Set("physics", "basicphysics"); + config.Set("meshing", "ZeroMesher"); config.Set("physical_prim", true); config.Set("see_into_this_sim_from_neighbor", true); config.Set("serverside_object_permissions", false); config.Set("storage_plugin", "OpenSim.Data.SQLite.dll"); - config.Set("storage_connection_string", "URI=file:OpenSim.db,version=3"); + config.Set("storage_connection_string", "URI=file:OpenSim.db,version=3"); config.Set("storage_prim_inventories", true); config.Set("startup_console_commands_file", String.Empty); config.Set("shutdown_console_commands_file", String.Empty); config.Set("script_engine", "OpenSim.Region.ScriptEngine.DotNetEngine.dll"); config.Set("DefaultScriptEngine", "DotNetEngine"); - config.Set("asset_database", "sqlite"); config.Set("clientstack_plugin", "OpenSim.Region.ClientStack.LindenUDP.dll"); } @@ -277,48 +268,42 @@ namespace OpenSim if (startupConfig != null) { - m_sandbox = !startupConfig.GetBoolean("gridmode", false); - m_physicsEngine = startupConfig.GetString("physics", "basicphysics"); - m_meshEngineName = startupConfig.GetString("meshing", "ZeroMesher"); + m_sandbox = !startupConfig.GetBoolean("gridmode"); + m_physicsEngine = startupConfig.GetString("physics"); + m_meshEngineName = startupConfig.GetString("meshing"); - m_physicalPrim = startupConfig.GetBoolean("physical_prim", true); + m_physicalPrim = startupConfig.GetBoolean("physical_prim"); - m_see_into_region_from_neighbor = startupConfig.GetBoolean("see_into_this_sim_from_neighbor", true); + m_see_into_region_from_neighbor = startupConfig.GetBoolean("see_into_this_sim_from_neighbor"); - m_storageDll = startupConfig.GetString("storage_plugin", "OpenSim.Data.SQLite.dll"); + m_storageDll = startupConfig.GetString("storage_plugin"); if (m_storageDll == "OpenSim.DataStore.MonoSqlite.dll") { m_storageDll = "OpenSim.Data.SQLite.dll"; Console.WriteLine("WARNING: OpenSim.DataStore.MonoSqlite.dll is deprecated. Set storage_plugin to OpenSim.Data.SQLite.dll."); Thread.Sleep(3000); } - m_storageConnectionString - = startupConfig.GetString("storage_connection_string", "URI=file:OpenSim.db,version=3"); - m_estateConnectionString - = startupConfig.GetString("estate_connection_string", m_storageConnectionString); - m_assetStorage = startupConfig.GetString("asset_database", "local"); - m_clientstackDll = startupConfig.GetString("clientstack_plugin", "OpenSim.Region.ClientStack.LindenUDP.dll"); + + m_storageConnectionString = startupConfig.GetString("storage_connection_string"); + m_estateConnectionString = startupConfig.GetString("estate_connection_string", m_storageConnectionString); + m_assetStorage = startupConfig.GetString("asset_database"); + m_clientstackDll = startupConfig.GetString("clientstack_plugin"); } IConfig standaloneConfig = m_config.Source.Configs["StandAlone"]; if (standaloneConfig != null) { - m_standaloneAuthenticate = standaloneConfig.GetBoolean("accounts_authenticate", false); - m_standaloneWelcomeMessage = standaloneConfig.GetString("welcome_message", "Welcome to OpenSim"); - m_standaloneInventoryPlugin = - standaloneConfig.GetString("inventory_plugin", "OpenSim.Data.SQLite.dll"); - m_standaloneInventorySource = - standaloneConfig.GetString("inventory_source",""); - m_standaloneUserPlugin = - standaloneConfig.GetString("userDatabase_plugin", "OpenSim.Data.SQLite.dll"); - m_standaloneUserSource = - standaloneConfig.GetString("user_source",""); - m_standaloneAssetPlugin = - standaloneConfig.GetString("asset_plugin", "OpenSim.Data.SQLite.dll"); - m_standaloneAssetSource = - standaloneConfig.GetString("asset_source",""); + m_standaloneAuthenticate = standaloneConfig.GetBoolean("accounts_authenticate"); + m_standaloneWelcomeMessage = standaloneConfig.GetString("welcome_message"); + + m_standaloneInventoryPlugin = standaloneConfig.GetString("inventory_plugin"); + m_standaloneInventorySource = standaloneConfig.GetString("inventory_source"); + m_standaloneUserPlugin = standaloneConfig.GetString("userDatabase_plugin"); + m_standaloneUserSource = standaloneConfig.GetString("user_source"); + m_standaloneAssetPlugin = standaloneConfig.GetString("asset_plugin"); + m_standaloneAssetSource = standaloneConfig.GetString("asset_source"); - m_dumpAssetsToFile = standaloneConfig.GetBoolean("dump_assets_to_file", false); + m_dumpAssetsToFile = standaloneConfig.GetBoolean("dump_assets_to_file"); } m_networkServersInfo.loadFromConfiguration(m_config.Source);