Advertisement
Guest User

Untitled

a guest
Aug 7th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.00 KB | None | 0 0
  1. diff --git a/mythtv/libs/libmythbase/mythdbcon.cpp b/mythtv/libs/libmythbase/mythdbcon.cpp
  2. index 6bdcb09..61f4e54 100644
  3. --- a/mythtv/libs/libmythbase/mythdbcon.cpp
  4. +++ b/mythtv/libs/libmythbase/mythdbcon.cpp
  5. @@ -19,6 +19,32 @@
  6.  
  7. static const uint kPurgeTimeout = 60 * 60;
  8.  
  9. +bool TestDatabase(QString dbHostName,
  10. + QString dbUserName,
  11. + QString dbPassword,
  12. + QString dbName,
  13. + int dbPort)
  14. +{
  15. + if (dbHostName.isEmpty() || dbUserName.isEmpty())
  16. + return false;
  17. +
  18. + MSqlDatabase *db = new MSqlDatabase("dbtest");
  19. +
  20. + if (!db)
  21. + return false;
  22. +
  23. + DatabaseParams dbparms;
  24. + dbparms.dbName = dbName;
  25. + dbparms.dbUserName = dbUserName;
  26. + dbparms.dbPassword = dbPassword;
  27. + dbparms.dbHostName = dbHostName;
  28. + dbparms.dbPort = dbPort;
  29. +
  30. + db->SetDBParams(dbparms);
  31. +
  32. + return db->OpenDatabase(true);
  33. +}
  34. +
  35. MSqlDatabase::MSqlDatabase(const QString &name)
  36. {
  37. m_name = name;
  38. @@ -55,7 +81,7 @@ bool MSqlDatabase::isOpen()
  39. return false;
  40. }
  41.  
  42. -bool MSqlDatabase::OpenDatabase()
  43. +bool MSqlDatabase::OpenDatabase(bool skipdb)
  44. {
  45. if (!m_db.isValid())
  46. {
  47. @@ -68,44 +94,45 @@ bool MSqlDatabase::OpenDatabase()
  48.  
  49. if (!m_db.isOpen())
  50. {
  51. - DatabaseParams dbparms = GetMythDB()->GetDatabaseParams();
  52. - m_db.setDatabaseName(dbparms.dbName);
  53. - m_db.setUserName(dbparms.dbUserName);
  54. - m_db.setPassword(dbparms.dbPassword);
  55. - m_db.setHostName(dbparms.dbHostName);
  56. + if (!skipdb)
  57. + m_dbparms = GetMythDB()->GetDatabaseParams();
  58. + m_db.setDatabaseName(m_dbparms.dbName);
  59. + m_db.setUserName(m_dbparms.dbUserName);
  60. + m_db.setPassword(m_dbparms.dbPassword);
  61. + m_db.setHostName(m_dbparms.dbHostName);
  62.  
  63. - if (dbparms.dbHostName.isEmpty()) // Bootstrapping without a database?
  64. + if (m_dbparms.dbHostName.isEmpty()) // Bootstrapping without a database?
  65. {
  66. connected = true; // Pretend to be connected
  67. return true; // to reduce errors
  68. }
  69.  
  70. - if (dbparms.dbPort)
  71. - m_db.setPort(dbparms.dbPort);
  72. + if (m_dbparms.dbPort)
  73. + m_db.setPort(m_dbparms.dbPort);
  74.  
  75. - if (dbparms.dbPort && dbparms.dbHostName == "localhost")
  76. + if (m_dbparms.dbPort && m_dbparms.dbHostName == "localhost")
  77. m_db.setHostName("127.0.0.1");
  78.  
  79. connected = m_db.open();
  80.  
  81. - if (!connected && dbparms.wolEnabled)
  82. + if (!connected && m_dbparms.wolEnabled)
  83. {
  84. int trycount = 0;
  85.  
  86. - while (!connected && trycount++ < dbparms.wolRetry)
  87. + while (!connected && trycount++ < m_dbparms.wolRetry)
  88. {
  89. VERBOSE(VB_GENERAL, QString(
  90. "Using WOL to wakeup database server (Try %1 of %2)")
  91. - .arg(trycount).arg(dbparms.wolRetry));
  92. + .arg(trycount).arg(m_dbparms.wolRetry));
  93.  
  94. - if (myth_system(dbparms.wolCommand) != GENERIC_EXIT_OK)
  95. + if (myth_system(m_dbparms.wolCommand) != GENERIC_EXIT_OK)
  96. {
  97. VERBOSE(VB_IMPORTANT,
  98. QString("Failed to run WOL command '%1'")
  99. - .arg(dbparms.wolCommand));
  100. + .arg(m_dbparms.wolCommand));
  101. }
  102.  
  103. - sleep(dbparms.wolReconnect);
  104. + sleep(m_dbparms.wolReconnect);
  105. connected = m_db.open();
  106. }
  107.  
  108. diff --git a/mythtv/libs/libmythbase/mythdbcon.h b/mythtv/libs/libmythbase/mythdbcon.h
  109. index 77fad59..e6fc099 100644
  110. --- a/mythtv/libs/libmythbase/mythdbcon.h
  111. +++ b/mythtv/libs/libmythbase/mythdbcon.h
  112. @@ -10,9 +10,16 @@
  113. #include <QList>
  114.  
  115. #include "mythbaseexp.h"
  116. +#include "mythdbparams.h"
  117.  
  118. class QSemaphore;
  119.  
  120. +MBASE_PUBLIC bool TestDatabase(QString dbHostName,
  121. + QString dbUserName,
  122. + QString dbPassword,
  123. + QString dbName = "mythconverg",
  124. + int dbPort = 3306);
  125. +
  126. /// \brief QSqlDatabase wrapper, used by MSqlQuery. Do not use directly.
  127. class MBASE_PUBLIC MSqlDatabase
  128. {
  129. @@ -22,9 +29,11 @@ class MBASE_PUBLIC MSqlDatabase
  130. MSqlDatabase(const QString &name);
  131. ~MSqlDatabase(void);
  132.  
  133. + bool OpenDatabase(bool skipdb = false);
  134. + void SetDBParams(DatabaseParams params) { m_dbparms = params; };
  135. +
  136. private:
  137. bool isOpen(void);
  138. - bool OpenDatabase(void);
  139. bool KickDatabase(void);
  140. QString GetConnectionName(void) const { return m_name; }
  141. QSqlDatabase db(void) const { return m_db; }
  142. @@ -34,6 +43,7 @@ class MBASE_PUBLIC MSqlDatabase
  143. QString m_name;
  144. QSqlDatabase m_db;
  145. QDateTime m_lastDBKick;
  146. + DatabaseParams m_dbparms;
  147. };
  148.  
  149. /// \brief DB connection pool, used by MSqlQuery. Do not use directly.
  150. diff --git a/mythtv/libs/libmythservicecontracts/services/mythServices.h b/mythtv/libs/libmythservicecontracts/services/mythServices.h
  151. index 9fbabe4..0b89129 100644
  152. --- a/mythtv/libs/libmythservicecontracts/services/mythServices.h
  153. +++ b/mythtv/libs/libmythservicecontracts/services/mythServices.h
  154. @@ -55,6 +55,7 @@ class SERVICE_PUBLIC MythServices : public Service //, public QScriptable ???
  155. Q_CLASSINFO( "AddStorageGroupDir_Method", "POST" )
  156. Q_CLASSINFO( "RemoveStorageGroupDir_Method", "POST" )
  157. Q_CLASSINFO( "ChangePassword_Method", "POST" )
  158. + Q_CLASSINFO( "TestDBSettings_Method", "POST" )
  159.  
  160. public:
  161.  
  162. @@ -87,12 +88,18 @@ class SERVICE_PUBLIC MythServices : public Service //, public QScriptable ???
  163. const QString &DirName,
  164. const QString &HostName ) = 0;
  165.  
  166. - virtual DTC::SettingList* GetSetting ( const QString &HostName,
  167. - const QString &Key,
  168. + virtual bool TestDBSettings ( const QString &HostName,
  169. + const QString &UserName,
  170. + const QString &Password,
  171. + const QString &DBName = "mythconverg",
  172. + int dbPort = 3306 ) = 0;
  173. +
  174. + virtual DTC::SettingList* GetSetting ( const QString &HostName,
  175. + const QString &Key,
  176. const QString &Default ) = 0;
  177.  
  178. - virtual bool PutSetting ( const QString &HostName,
  179. - const QString &Key,
  180. + virtual bool PutSetting ( const QString &HostName,
  181. + const QString &Key,
  182. const QString &Value ) = 0;
  183.  
  184. virtual bool ChangePassword ( const QString &UserName,
  185. diff --git a/mythtv/programs/mythbackend/services/myth.cpp b/mythtv/programs/mythbackend/services/myth.cpp
  186. index 90e562e..b0a287f 100644
  187. --- a/mythtv/programs/mythbackend/services/myth.cpp
  188. +++ b/mythtv/programs/mythbackend/services/myth.cpp
  189. @@ -25,6 +25,7 @@
  190. #include <QCryptographicHash>
  191.  
  192. #include "mythcorecontext.h"
  193. +#include "mythdbcon.h"
  194. #include "storagegroup.h"
  195.  
  196. /////////////////////////////////////////////////////////////////////////////
  197. @@ -523,3 +524,20 @@ bool Myth::ChangePassword( const QString &sUserName,
  198. return bResult;
  199. }
  200.  
  201. +/////////////////////////////////////////////////////////////////////////////
  202. +//
  203. +/////////////////////////////////////////////////////////////////////////////
  204. +
  205. +bool Myth::TestDBSettings( const QString &HostName,
  206. + const QString &UserName,
  207. + const QString &Password,
  208. + const QString &DBName,
  209. + int dbPort)
  210. +{
  211. + bool bResult = false;
  212. +
  213. + bResult = TestDatabase(HostName, UserName, Password, DBName, dbPort);
  214. +
  215. + return bResult;
  216. +}
  217. +
  218. diff --git a/mythtv/programs/mythbackend/services/myth.h b/mythtv/programs/mythbackend/services/myth.h
  219. index c6b6973..663456a 100644
  220. --- a/mythtv/programs/mythbackend/services/myth.h
  221. +++ b/mythtv/programs/mythbackend/services/myth.h
  222. @@ -64,6 +64,12 @@ class Myth : public MythServices
  223. bool ChangePassword ( const QString &UserName,
  224. const QString &OldPassword,
  225. const QString &NewPassword );
  226. +
  227. + bool TestDBSettings ( const QString &HostName,
  228. + const QString &UserName,
  229. + const QString &Password,
  230. + const QString &DBName = "mythconverg",
  231. + int dbPort = 3306 );
  232. };
  233.  
  234. // --------------------------------------------------------------------------
  235. @@ -137,6 +143,16 @@ class ScriptableMyth : public QObject
  236. {
  237. return m_obj.PutSetting( HostName, Key, Value );
  238. }
  239. +
  240. + bool TestDBSettings( const QString &HostName,
  241. + const QString &UserName,
  242. + const QString &Password,
  243. + const QString &DBName = "mythconverg",
  244. + int dbPort = 3306 )
  245. + {
  246. + return m_obj.TestDBSettings( HostName, UserName, Password,
  247. + DBName, dbPort );
  248. + }
  249. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement