Opened 16 years ago
Closed 16 years ago
#4265 closed defect (fixed)
Perl Bindings depend on mysql.txt for DB Connection
Reported by: | stuartm | Owned by: | Nigel |
---|---|---|---|
Priority: | blocker | Milestone: | 0.21 |
Component: | perl / nuvexport | Version: | head |
Severity: | medium | Keywords: | |
Cc: | Ticket locked: | no |
Description
The perl bindings require mysql.txt for actions which involve the database e.g. optimize_mythdb.pl
Mysql.txt is deprecated and may not exist on new systems.
Change History (12)
comment:1 Changed 16 years ago by
comment:2 Changed 16 years ago by
It would also be nice if the UPnP detector wrote some of this useful information into the config.xml file. The initial spec asked for this, anyway, so if there was no UPnP connection, the frontend could try to contact the last server directly, too.
comment:3 Changed 16 years ago by
Milestone: | unknown → 0.21 |
---|---|
Priority: | major → blocker |
comment:4 Changed 16 years ago by
Writing the last successful connection into config.xml is pretty easy. Something like this (untested) should do it:
% svn diff mythcontext.cpp Index: mythcontext.cpp =================================================================== --- mythcontext.cpp (revision 15473) +++ mythcontext.cpp (working copy) @@ -69,8 +69,9 @@ // Some common UPnP search and XML value strings const QString gBackendURI = "urn:schemas-mythtv-org:device:MasterMediaServer:1"; -const QString kDefaultPIN = "UPnP/MythFrontend/DefaultBackend/SecurityPin"; -const QString kDefaultUSN = "UPnP/MythFrontend/DefaultBackend/USN"; +const QString kDefaultBE = "UPnP/MythFrontend/DefaultBackend/"; +const QString kDefaultPIN = kDefaultBE + "SecurityPin"; +const QString kDefaultUSN = kDefaultBE + "USN"; int parse_verbose_arg(QString arg) @@ -663,6 +664,12 @@ DBfound: //VERBOSE(VB_GENERAL, "FindDatabase() - Success!"); ResetDatabase(); + m_XML->SetValue(kDefaultBE + "lastDBhostName", m_DBparams.dbHostName); + m_XML->SetValue(kDefaultBE + "lastDBuserName", m_DBparams.dbUserName); + m_XML->SetValue(kDefaultBE + "lastDBpassword", m_DBparams.dbPassword); + m_XML->SetValue(kDefaultBE + "lastDBname", m_DBparams.dbName); + m_XML->SetValue(kDefaultBE + "lastDBport", m_DBparams.dbPort); + m_XML->Save(); DeleteUPnP(); return true;
Note, it would be just as easy to write these into mysql.txt instead of config.xml (and that would automatically handle the "contact the last server directly"), or to only write them when the user elects to "Save backend details" (just move these SetValue?()s to line 1288). It just depends on whether we want to keep the config.xml for UPnP only.
comment:5 Changed 16 years ago by
(In [15618]) Store some more stuff from mysql.txt in config.xml. 1) LocalHostName? can now be specified in the file. No UI editing yet, though. 2) The database connection parameters, as at the time the user chose it,
are also saved there. Having it stored breaks the whole UPnP paradigm, (if the backend host is reconfigured, the saved details will be wrong) but if the backend is down, it allows connection, and it should also help scrips to connect when there is no mysql.txt. See #4265
comment:6 Changed 16 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
(In [15632]) Default DB connection settings, and last location of the saved UPnP backend from config.xml, for Perl scripts. Won't help in the situation where there is neither mysql.txt nor config.xml, but unless someone wants to implement a full UPnP locator in Perl, this will have to do for now. Closes #4265
comment:7 Changed 16 years ago by
Resolution: | fixed |
---|---|
Status: | closed → new |
Running [15633] and I don't see this change working like I suspect that it should. I even blew away my config.xml and it comes back with just the upnp MediaRenderer? tag, nothing else.
comment:8 Changed 16 years ago by
The backend connection details are only saved in the file if the user uses the backend selector (mythfrontend -p), selects a backend, and then clicks the "Save backend details" button. I will think about saving the file in other situations, but saving it in every situation is a big code change that I would rather not commit right now.
comment:9 Changed 16 years ago by
No way to make it just add those extra pieces of data to the file whenever the file gets saved? The whole point of this ticket was to get that info into the file without the users having to do anything special. Having them wipe the file so it re-creates is one thing, but requiring a mythfrontend -p
(which currently appears to require manual configuration -- doesn't see the backend running on the same host) seems a bit overkill.
comment:10 Changed 16 years ago by
Owner: | changed from xris to Nigel |
---|---|
Status: | new → assigned |
I can make it save the details each time the DB connection succeeds. It is the UPnP autoconfig scenario (possibly no config.xml) which is the problem. Still testing.
1) Scripting environments should probably have the "default" values hard-coded in, just in case there isn't a mysql.txt?
2) If there is a local mythbackend running, a query to a particular port (e.g. the default 6543) could provide one for Perl/Python/Java? scripts to parse? It is only on random frontend only machines that this is really difficult.
3) UPnP is also possible, as is prompting the user for dbHostName, dbUserName, dbPassword, but hopefully that won't be necessary?