diff --git a/OpenSim/Data/GridDataBase.cs b/OpenSim/Data/GridDataBase.cs index 036e2ebebc..0c9d24a328 100644 --- a/OpenSim/Data/GridDataBase.cs +++ b/OpenSim/Data/GridDataBase.cs @@ -36,7 +36,7 @@ namespace OpenSim.Data public abstract RegionProfileData GetProfileByString(string regionName); public abstract RegionProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax); public abstract bool AuthenticateSim(LLUUID UUID, ulong regionHandle, string simrecvkey); - public abstract void Initialise(); + public abstract void Initialise(string connect); public abstract void Close(); public abstract string getName(); public abstract string getVersion(); diff --git a/OpenSim/Data/IGridData.cs b/OpenSim/Data/IGridData.cs index b2a8d26440..e242312121 100644 --- a/OpenSim/Data/IGridData.cs +++ b/OpenSim/Data/IGridData.cs @@ -86,7 +86,7 @@ namespace OpenSim.Data /// /// Initialises the interface /// - void Initialise(); + void Initialise(string connect); /// /// Closes the interface diff --git a/OpenSim/Data/ILogData.cs b/OpenSim/Data/ILogData.cs index a533c87a29..72756372d8 100644 --- a/OpenSim/Data/ILogData.cs +++ b/OpenSim/Data/ILogData.cs @@ -69,7 +69,7 @@ namespace OpenSim.Data /// /// Initialises the interface /// - void Initialise(); + void Initialise(string connect); /// /// Closes the interface diff --git a/OpenSim/Data/MSSQL/MSSQLGridData.cs b/OpenSim/Data/MSSQL/MSSQLGridData.cs index 0bdd460aa4..d7adb84533 100644 --- a/OpenSim/Data/MSSQL/MSSQLGridData.cs +++ b/OpenSim/Data/MSSQL/MSSQLGridData.cs @@ -53,8 +53,9 @@ namespace OpenSim.Data.MSSQL /// /// Initialises the Grid Interface /// - override public void Initialise() + override public void Initialise(string connect) { + // TODO: make the connect string actually do something IniFile iniFile = new IniFile("mssql_connection.ini"); string settingDataSource = iniFile.ParseFileReadValue("data_source"); diff --git a/OpenSim/Data/MSSQL/MSSQLLogData.cs b/OpenSim/Data/MSSQL/MSSQLLogData.cs index 2bb58399b3..c75290e798 100644 --- a/OpenSim/Data/MSSQL/MSSQLLogData.cs +++ b/OpenSim/Data/MSSQL/MSSQLLogData.cs @@ -43,8 +43,9 @@ namespace OpenSim.Data.MSSQL /// /// Artificial constructor called when the plugin is loaded /// - public void Initialise() + public void Initialise(string connect) { + // TODO: do something with the connect string IniFile GridDataMySqlFile = new IniFile("mssql_connection.ini"); string settingDataSource = GridDataMySqlFile.ParseFileReadValue("data_source"); string settingInitialCatalog = GridDataMySqlFile.ParseFileReadValue("initial_catalog"); diff --git a/OpenSim/Data/MySQL/MySQLGridData.cs b/OpenSim/Data/MySQL/MySQLGridData.cs index e830133f74..421c283844 100644 --- a/OpenSim/Data/MySQL/MySQLGridData.cs +++ b/OpenSim/Data/MySQL/MySQLGridData.cs @@ -51,19 +51,24 @@ namespace OpenSim.Data.MySQL /// /// Initialises the Grid Interface /// - override public void Initialise() + override public void Initialise(string connect) { - IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini"); - string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname"); - string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database"); - string settingUsername = GridDataMySqlFile.ParseFileReadValue("username"); - string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); - string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling"); - string settingPort = GridDataMySqlFile.ParseFileReadValue("port"); + if (connect != String.Empty) { + database = new MySQLManager(connect); + } else { + m_log.Warn("Using deprecated mysql_connection.ini. Please update database_connect in GridServer_Config.xml and we'll use that instead"); + IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini"); + string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname"); + string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database"); + string settingUsername = GridDataMySqlFile.ParseFileReadValue("username"); + string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); + string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling"); + string settingPort = GridDataMySqlFile.ParseFileReadValue("port"); - database = - new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, - settingPort); + database = + new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, + settingPort); + } TestTables(); } diff --git a/OpenSim/Data/MySQL/MySQLLogData.cs b/OpenSim/Data/MySQL/MySQLLogData.cs index bb34d34232..0873066b7f 100644 --- a/OpenSim/Data/MySQL/MySQLLogData.cs +++ b/OpenSim/Data/MySQL/MySQLLogData.cs @@ -24,6 +24,9 @@ * (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.Reflection; +using log4net; namespace OpenSim.Data.MySQL { @@ -31,7 +34,8 @@ namespace OpenSim.Data.MySQL /// An interface to the log database for MySQL /// internal class MySQLLogData : ILogData - { + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); /// /// The database manager /// @@ -40,19 +44,25 @@ namespace OpenSim.Data.MySQL /// /// Artificial constructor called when the plugin is loaded /// - public void Initialise() + public void Initialise(string connect) { - IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini"); - string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname"); - string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database"); - string settingUsername = GridDataMySqlFile.ParseFileReadValue("username"); - string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); - string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling"); - string settingPort = GridDataMySqlFile.ParseFileReadValue("port"); + if (connect != String.Empty) { + database = new MySQLManager(connect); + } else { + m_log.Warn("Using deprecated mysql_connection.ini. Please update database_connect in GridServer_Config.xml and we'll use that instead"); - database = - new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, - settingPort); + IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini"); + string settingHostname = GridDataMySqlFile.ParseFileReadValue("hostname"); + string settingDatabase = GridDataMySqlFile.ParseFileReadValue("database"); + string settingUsername = GridDataMySqlFile.ParseFileReadValue("username"); + string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); + string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling"); + string settingPort = GridDataMySqlFile.ParseFileReadValue("port"); + + database = + new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, + settingPort); + } } /// diff --git a/OpenSim/Data/SQLite/SQLiteGridData.cs b/OpenSim/Data/SQLite/SQLiteGridData.cs index 989ec77cd8..7c5bb0c520 100644 --- a/OpenSim/Data/SQLite/SQLiteGridData.cs +++ b/OpenSim/Data/SQLite/SQLiteGridData.cs @@ -48,9 +48,9 @@ namespace OpenSim.Data.SQLite /// /// Initialises the Grid Interface /// - override public void Initialise() + override public void Initialise(string connect) { - database = new SQLiteManager("localhost", "db", "user", "password", "false"); + database = new SQLiteManager(connect); } /// diff --git a/OpenSim/Data/SQLite/SQLiteManager.cs b/OpenSim/Data/SQLite/SQLiteManager.cs index e1d2cdf561..4d395274e3 100644 --- a/OpenSim/Data/SQLite/SQLiteManager.cs +++ b/OpenSim/Data/SQLite/SQLiteManager.cs @@ -49,11 +49,21 @@ namespace OpenSim.Data.SQLite /// The username logging into the database /// The password for the user logging in /// Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'. - public SQLiteManager(string hostname, string database, string username, string password, string cpooling) + public SQLiteManager(string connect) { try { - string connectionString = "URI=file:GridServerSqlite.db;"; + string connectionString = String.Empty; + if (connect != String.Empty) + { + connectionString = connect; + } + else + { + m_log.Warn("[SQLITE] grid db not specified, using default"); + connectionString = "URI=file:GridServerSqlite.db;"; + } + dbcon = new SQLiteConnection(connectionString); dbcon.Open(); diff --git a/OpenSim/Framework/GridConfig.cs b/OpenSim/Framework/GridConfig.cs index f0cf91f80f..e405b269b8 100644 --- a/OpenSim/Framework/GridConfig.cs +++ b/OpenSim/Framework/GridConfig.cs @@ -39,6 +39,7 @@ namespace OpenSim.Framework private ConfigurationMember configMember; public string DatabaseProvider = String.Empty; + public string DatabaseConnect = String.Empty; public string DefaultAssetServer = String.Empty; public string DefaultUserServer = String.Empty; public string GridOwner = String.Empty; @@ -85,6 +86,8 @@ namespace OpenSim.Framework "Key to expect from a simulator", "null", false); configMember.addConfigurationOption("database_provider", ConfigurationOption.ConfigurationTypes.TYPE_STRING, "DLL for database provider", "OpenSim.Data.MySQL.dll", false); + configMember.addConfigurationOption("database_connect", ConfigurationOption.ConfigurationTypes.TYPE_STRING, + "Database connect string", "", false); configMember.addConfigurationOption("http_port", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, "Http Listener port", DefaultHttpPort.ToString(), false); @@ -128,6 +131,9 @@ namespace OpenSim.Framework case "database_provider": DatabaseProvider = (string) configuration_result; break; + case "database_connect": + DatabaseConnect = (string) configuration_result; + break; case "http_port": HttpPort = (uint) configuration_result; break; diff --git a/OpenSim/Grid/GridServer/GridManager.cs b/OpenSim/Grid/GridServer/GridManager.cs index d0eec3245f..2933f04198 100644 --- a/OpenSim/Grid/GridServer/GridManager.cs +++ b/OpenSim/Grid/GridServer/GridManager.cs @@ -58,7 +58,7 @@ namespace OpenSim.Grid.GridServer /// Adds a new grid server plugin - grid servers will be requested in the order they were loaded. /// /// The filename to the grid server plugin DLL - public void AddPlugin(string FileName) + public void AddPlugin(string FileName, string Connect) { m_log.Info("[DATA]: Attempting to load " + FileName); Assembly pluginAssembly = Assembly.LoadFrom(FileName); @@ -75,7 +75,7 @@ namespace OpenSim.Grid.GridServer { IGridData plug = (IGridData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); - plug.Initialise(); + plug.Initialise(Connect); _plugins.Add(plug.getName(), plug); m_log.Info("[DATA]: Added IGridData Interface"); } @@ -87,7 +87,7 @@ namespace OpenSim.Grid.GridServer { ILogData plug = (ILogData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); - plug.Initialise(); + plug.Initialise(Connect); _logplugins.Add(plug.getName(), plug); m_log.Info("[DATA]: Added ILogData Interface"); } diff --git a/OpenSim/Grid/GridServer/GridServerBase.cs b/OpenSim/Grid/GridServer/GridServerBase.cs index 4e29cbf884..263866a439 100644 --- a/OpenSim/Grid/GridServer/GridServerBase.cs +++ b/OpenSim/Grid/GridServer/GridServerBase.cs @@ -135,7 +135,7 @@ namespace OpenSim.Grid.GridServer { m_log.Info("[DATA]: Connecting to Storage Server"); m_gridManager = new GridManager(); - m_gridManager.AddPlugin(m_config.DatabaseProvider); + m_gridManager.AddPlugin(m_config.DatabaseProvider, m_config.DatabaseConnect); m_gridManager.Config = m_config; }