Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/mythtv/html/setup/js/wizard.js b/mythtv/html/setup/js/wizard.js
- index cf86a4c..f26be17 100644
- --- a/mythtv/html/setup/js/wizard.js
- +++ b/mythtv/html/setup/js/wizard.js
- @@ -1,2 +1,22 @@
- +function testDBSettings( host, user, pass, dbname, dbport ) {
- + var result = 0;
- +
- + alert("Test Function Called.");
- +
- + $.ajaxSetup({ async: false });
- + $.post("/Myth/TestDBSettings",
- + { HostName: host, UserName: user, Password: pass, DBName: dbname, dbPort: dbport},
- + function(data) {
- + if (data.bool == "true")
- + result = 1;
- + else
- + alert("data.bool != true");
- + }, "json").error(function(data) {
- + alert("Database connection failed.");
- + });
- + $.ajaxSetup({ async: true });
- +
- + return result;
- +}
- $("#wizardtabs").tabs();
- diff --git a/mythtv/html/setup/wizard-database.html b/mythtv/html/setup/wizard-database.html
- index 76cf7de..9a67a89 100644
- --- a/mythtv/html/setup/wizard-database.html
- +++ b/mythtv/html/setup/wizard-database.html
- @@ -9,6 +9,7 @@
- <tr><th align=right>Database Password:</th>
- <td><input id='dbPassword' size=20></td></tr>
- </table>
- +<input type=button value='Test Database Settings' onClick='javascript:testDBSettings( '192.168.0.99', 'mythtv', 'fdfasd', 'mythconverg', 3306 )'>
- <hr>
- If the setting you are looking for is not available here, you can go to
- the <a href="javascript:loadScreen('/setup/menus/advanced.html', '/Config/Database', '/setup/js/Config.js')">Advanced Database Setup Screen</a>
- diff --git a/mythtv/libs/libmythbase/mythdbcon.cpp b/mythtv/libs/libmythbase/mythdbcon.cpp
- index 6bdcb09..61f4e54 100644
- --- a/mythtv/libs/libmythbase/mythdbcon.cpp
- +++ b/mythtv/libs/libmythbase/mythdbcon.cpp
- @@ -19,6 +19,32 @@
- static const uint kPurgeTimeout = 60 * 60;
- +bool TestDatabase(QString dbHostName,
- + QString dbUserName,
- + QString dbPassword,
- + QString dbName,
- + int dbPort)
- +{
- + if (dbHostName.isEmpty() || dbUserName.isEmpty())
- + return false;
- +
- + MSqlDatabase *db = new MSqlDatabase("dbtest");
- +
- + if (!db)
- + return false;
- +
- + DatabaseParams dbparms;
- + dbparms.dbName = dbName;
- + dbparms.dbUserName = dbUserName;
- + dbparms.dbPassword = dbPassword;
- + dbparms.dbHostName = dbHostName;
- + dbparms.dbPort = dbPort;
- +
- + db->SetDBParams(dbparms);
- +
- + return db->OpenDatabase(true);
- +}
- +
- MSqlDatabase::MSqlDatabase(const QString &name)
- {
- m_name = name;
- @@ -55,7 +81,7 @@ bool MSqlDatabase::isOpen()
- return false;
- }
- -bool MSqlDatabase::OpenDatabase()
- +bool MSqlDatabase::OpenDatabase(bool skipdb)
- {
- if (!m_db.isValid())
- {
- @@ -68,44 +94,45 @@ bool MSqlDatabase::OpenDatabase()
- if (!m_db.isOpen())
- {
- - DatabaseParams dbparms = GetMythDB()->GetDatabaseParams();
- - m_db.setDatabaseName(dbparms.dbName);
- - m_db.setUserName(dbparms.dbUserName);
- - m_db.setPassword(dbparms.dbPassword);
- - m_db.setHostName(dbparms.dbHostName);
- + if (!skipdb)
- + m_dbparms = GetMythDB()->GetDatabaseParams();
- + m_db.setDatabaseName(m_dbparms.dbName);
- + m_db.setUserName(m_dbparms.dbUserName);
- + m_db.setPassword(m_dbparms.dbPassword);
- + m_db.setHostName(m_dbparms.dbHostName);
- - if (dbparms.dbHostName.isEmpty()) // Bootstrapping without a database?
- + if (m_dbparms.dbHostName.isEmpty()) // Bootstrapping without a database?
- {
- connected = true; // Pretend to be connected
- return true; // to reduce errors
- }
- - if (dbparms.dbPort)
- - m_db.setPort(dbparms.dbPort);
- + if (m_dbparms.dbPort)
- + m_db.setPort(m_dbparms.dbPort);
- - if (dbparms.dbPort && dbparms.dbHostName == "localhost")
- + if (m_dbparms.dbPort && m_dbparms.dbHostName == "localhost")
- m_db.setHostName("127.0.0.1");
- connected = m_db.open();
- - if (!connected && dbparms.wolEnabled)
- + if (!connected && m_dbparms.wolEnabled)
- {
- int trycount = 0;
- - while (!connected && trycount++ < dbparms.wolRetry)
- + while (!connected && trycount++ < m_dbparms.wolRetry)
- {
- VERBOSE(VB_GENERAL, QString(
- "Using WOL to wakeup database server (Try %1 of %2)")
- - .arg(trycount).arg(dbparms.wolRetry));
- + .arg(trycount).arg(m_dbparms.wolRetry));
- - if (myth_system(dbparms.wolCommand) != GENERIC_EXIT_OK)
- + if (myth_system(m_dbparms.wolCommand) != GENERIC_EXIT_OK)
- {
- VERBOSE(VB_IMPORTANT,
- QString("Failed to run WOL command '%1'")
- - .arg(dbparms.wolCommand));
- + .arg(m_dbparms.wolCommand));
- }
- - sleep(dbparms.wolReconnect);
- + sleep(m_dbparms.wolReconnect);
- connected = m_db.open();
- }
- diff --git a/mythtv/libs/libmythbase/mythdbcon.h b/mythtv/libs/libmythbase/mythdbcon.h
- index 77fad59..e6fc099 100644
- --- a/mythtv/libs/libmythbase/mythdbcon.h
- +++ b/mythtv/libs/libmythbase/mythdbcon.h
- @@ -10,9 +10,16 @@
- #include <QList>
- #include "mythbaseexp.h"
- +#include "mythdbparams.h"
- class QSemaphore;
- +MBASE_PUBLIC bool TestDatabase(QString dbHostName,
- + QString dbUserName,
- + QString dbPassword,
- + QString dbName = "mythconverg",
- + int dbPort = 3306);
- +
- /// \brief QSqlDatabase wrapper, used by MSqlQuery. Do not use directly.
- class MBASE_PUBLIC MSqlDatabase
- {
- @@ -22,9 +29,11 @@ class MBASE_PUBLIC MSqlDatabase
- MSqlDatabase(const QString &name);
- ~MSqlDatabase(void);
- + bool OpenDatabase(bool skipdb = false);
- + void SetDBParams(DatabaseParams params) { m_dbparms = params; };
- +
- private:
- bool isOpen(void);
- - bool OpenDatabase(void);
- bool KickDatabase(void);
- QString GetConnectionName(void) const { return m_name; }
- QSqlDatabase db(void) const { return m_db; }
- @@ -34,6 +43,7 @@ class MBASE_PUBLIC MSqlDatabase
- QString m_name;
- QSqlDatabase m_db;
- QDateTime m_lastDBKick;
- + DatabaseParams m_dbparms;
- };
- /// \brief DB connection pool, used by MSqlQuery. Do not use directly.
- diff --git a/mythtv/libs/libmythservicecontracts/services/mythServices.h b/mythtv/libs/libmythservicecontracts/services/mythServices.h
- index 9fbabe4..fdf51d4 100644
- --- a/mythtv/libs/libmythservicecontracts/services/mythServices.h
- +++ b/mythtv/libs/libmythservicecontracts/services/mythServices.h
- @@ -55,6 +55,7 @@ class SERVICE_PUBLIC MythServices : public Service //, public QScriptable ???
- Q_CLASSINFO( "AddStorageGroupDir_Method", "POST" )
- Q_CLASSINFO( "RemoveStorageGroupDir_Method", "POST" )
- Q_CLASSINFO( "ChangePassword_Method", "POST" )
- + Q_CLASSINFO( "TestDBSettings_Method", "POST" )
- public:
- @@ -87,12 +88,18 @@ class SERVICE_PUBLIC MythServices : public Service //, public QScriptable ???
- const QString &DirName,
- const QString &HostName ) = 0;
- - virtual DTC::SettingList* GetSetting ( const QString &HostName,
- - const QString &Key,
- + virtual bool TestDBSettings ( const QString &HostName,
- + const QString &UserName,
- + const QString &Password,
- + const QString &DBName,
- + int dbPort) = 0;
- +
- + virtual DTC::SettingList* GetSetting ( const QString &HostName,
- + const QString &Key,
- const QString &Default ) = 0;
- - virtual bool PutSetting ( const QString &HostName,
- - const QString &Key,
- + virtual bool PutSetting ( const QString &HostName,
- + const QString &Key,
- const QString &Value ) = 0;
- virtual bool ChangePassword ( const QString &UserName,
- diff --git a/mythtv/programs/mythbackend/services/myth.cpp b/mythtv/programs/mythbackend/services/myth.cpp
- index 90e562e..343341f 100644
- --- a/mythtv/programs/mythbackend/services/myth.cpp
- +++ b/mythtv/programs/mythbackend/services/myth.cpp
- @@ -25,6 +25,7 @@
- #include <QCryptographicHash>
- #include "mythcorecontext.h"
- +#include "mythdbcon.h"
- #include "storagegroup.h"
- /////////////////////////////////////////////////////////////////////////////
- @@ -523,3 +524,29 @@ bool Myth::ChangePassword( const QString &sUserName,
- return bResult;
- }
- +/////////////////////////////////////////////////////////////////////////////
- +//
- +/////////////////////////////////////////////////////////////////////////////
- +
- +bool Myth::TestDBSettings( const QString &HostName,
- + const QString &UserName,
- + const QString &Password,
- + const QString &DBName,
- + int dbPort)
- +{
- + bool bResult = false;
- +
- + QString db("mythconverg");
- + int port = 3306;
- +
- + if (!DBName.isEmpty())
- + db = DBName;
- +
- + if (dbPort != 0)
- + port = dbPort;
- +
- + bResult = TestDatabase(HostName, UserName, Password, db, port);
- +
- + return bResult;
- +}
- +
- diff --git a/mythtv/programs/mythbackend/services/myth.h b/mythtv/programs/mythbackend/services/myth.h
- index c6b6973..931cd96 100644
- --- a/mythtv/programs/mythbackend/services/myth.h
- +++ b/mythtv/programs/mythbackend/services/myth.h
- @@ -64,6 +64,12 @@ class Myth : public MythServices
- bool ChangePassword ( const QString &UserName,
- const QString &OldPassword,
- const QString &NewPassword );
- +
- + bool TestDBSettings ( const QString &HostName,
- + const QString &UserName,
- + const QString &Password,
- + const QString &DBName,
- + int dbPort);
- };
- // --------------------------------------------------------------------------
- @@ -137,6 +143,16 @@ class ScriptableMyth : public QObject
- {
- return m_obj.PutSetting( HostName, Key, Value );
- }
- +
- + bool TestDBSettings( const QString &HostName,
- + const QString &UserName,
- + const QString &Password,
- + const QString &DBName,
- + int dbPort)
- + {
- + return m_obj.TestDBSettings( HostName, UserName, Password,
- + DBName, dbPort );
- + }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement