From 230a7ecaec47f5891f39a8893f7587e86a2efb41 Mon Sep 17 00:00:00 2001
From: Dahlia Trimble
Date: Fri, 18 Jul 2008 03:23:40 +0000
Subject: masks MySQL password from console startup messages

---
 OpenSim/Data/MySQL/MySQLDataStore.cs  | 23 ++++++++++++++++++++++-
 OpenSim/Data/MySQL/MySQLEstateData.cs | 27 +++++++++++++++++++++++++--
 2 files changed, 47 insertions(+), 3 deletions(-)

(limited to 'OpenSim/Data/MySQL')

diff --git a/OpenSim/Data/MySQL/MySQLDataStore.cs b/OpenSim/Data/MySQL/MySQLDataStore.cs
index 25956d5..d1db064 100644
--- a/OpenSim/Data/MySQL/MySQLDataStore.cs
+++ b/OpenSim/Data/MySQL/MySQLDataStore.cs
@@ -113,7 +113,28 @@ namespace OpenSim.Data.MySQL
             m_dataSet = new DataSet();
             this.persistPrimInventories = persistPrimInventories;
 
-            m_log.Info("[REGION DB]: MySql - connecting: " + m_connectionString);
+            int passPosition = 0;
+            int passEndPosition = 0;
+            string displayConnectionString = null;
+
+            try
+            {  // hide the password in the connection string
+                passPosition = m_connectionString.IndexOf("password", StringComparison.OrdinalIgnoreCase);
+                passPosition = m_connectionString.IndexOf("=", passPosition);
+                if (passPosition < m_connectionString.Length)
+                    passPosition += 1;
+                passEndPosition = m_connectionString.IndexOf(";", passPosition);
+
+                displayConnectionString = m_connectionString.Substring(0, passPosition);
+                displayConnectionString += "***";
+                displayConnectionString += m_connectionString.Substring(passEndPosition, m_connectionString.Length - passEndPosition);
+            }
+            catch (Exception e )
+            {
+                m_log.Debug("Exception: password not found in connection string\n" + e.ToString());
+            }
+
+            m_log.Info("[REGION DB]: MySql - connecting: " + displayConnectionString);
             m_connection = new MySqlConnection(m_connectionString);
             m_connection.Open();
             
diff --git a/OpenSim/Data/MySQL/MySQLEstateData.cs b/OpenSim/Data/MySQL/MySQLEstateData.cs
index eeff31b..052c404 100644
--- a/OpenSim/Data/MySQL/MySQLEstateData.cs
+++ b/OpenSim/Data/MySQL/MySQLEstateData.cs
@@ -59,9 +59,32 @@ namespace OpenSim.Data.MySQL
 
         public void Initialise(string connectionString)
         {
-            m_connectionString = connectionString;
+            m_connectionString = connectionString;
+
+            int passPosition = 0;
+            int passEndPosition = 0;
+            string displayConnectionString = null;
+
+            try
+            {  // hide the password in the connection string
+                passPosition = m_connectionString.IndexOf("password", StringComparison.OrdinalIgnoreCase);
+                passPosition = m_connectionString.IndexOf("=", passPosition);
+                if (passPosition < m_connectionString.Length)
+                    passPosition += 1;
+                passEndPosition = m_connectionString.IndexOf(";", passPosition);
+
+                displayConnectionString = m_connectionString.Substring(0, passPosition);
+                displayConnectionString += "***";
+                displayConnectionString += m_connectionString.Substring(passEndPosition, m_connectionString.Length - passEndPosition);
+            }
+            catch (Exception e)
+            {
+                m_log.Debug("Exception: password not found in connection string\n" + e.ToString());
+            }
+
+            m_log.Info("[REGION DB]: MySql - connecting: " + displayConnectionString);
             
-            m_log.Info("[ESTATE DB]: MySql - connecting: "+m_connectionString);
+            //m_log.Info("[ESTATE DB]: MySql - connecting: "+m_connectionString);
 
             m_connection = new MySqlConnection(m_connectionString);
             m_connection.Open();
-- 
cgit v1.1