From de1908cb5357b226c5b5a43cc9bbab132c7c7315 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Tue, 20 Sep 2022 10:18:23 -0400 Subject: [PATCH] 2022-09-20 Fred Gleason * Changed the 'RECORDINGS.URL_PASSWORD' from 'varchar(64)' to 'text'. * Base64 encoded the contents of the 'RECORDINGS.URL_PASSWORD' field. * Incremented the database version to 358. Signed-off-by: Fred Gleason --- ChangeLog | 4 ++++ lib/dbversion.h | 2 +- lib/rdrecording.cpp | 4 ++-- rdcatchd/rdcatchd.cpp | 2 +- utils/rddbmgr/revertschema.cpp | 28 ++++++++++++++++++++++++++++ utils/rddbmgr/schemamap.cpp | 2 +- utils/rddbmgr/updateschema.cpp | 24 ++++++++++++++++++++++++ 7 files changed, 61 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index a7159c06..75f4179d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -23345,3 +23345,7 @@ 2022-09-20 Fred Gleason * Added an appendix 'Creating and Configuring a Secure Shell Identity Key-pair for Rivendell' to the Operations Guide. +2022-09-20 Fred Gleason + * Changed the 'RECORDINGS.URL_PASSWORD' from 'varchar(64)' to 'text'. + * Base64 encoded the contents of the 'RECORDINGS.URL_PASSWORD' field. + * Incremented the database version to 358. diff --git a/lib/dbversion.h b/lib/dbversion.h index f48104f4..0645775b 100644 --- a/lib/dbversion.h +++ b/lib/dbversion.h @@ -24,7 +24,7 @@ /* * Current Database Version */ -#define RD_VERSION_DATABASE 357 +#define RD_VERSION_DATABASE 358 #endif // DBVERSION_H diff --git a/lib/rdrecording.cpp b/lib/rdrecording.cpp index c3910031..dc061bca 100644 --- a/lib/rdrecording.cpp +++ b/lib/rdrecording.cpp @@ -603,13 +603,13 @@ void RDRecording::setUrlUsername(QString name) const QString RDRecording::urlPassword() const { - return GetStringValue("URL_PASSWORD"); + return QByteArray::fromBase64(GetStringValue("URL_PASSWORD").toUtf8()); } void RDRecording::setUrlPassword(QString passwd) const { - SetRow("URL_PASSWORD",passwd); + SetRow("URL_PASSWORD",QString(passwd.toUtf8().toBase64())); } diff --git a/rdcatchd/rdcatchd.cpp b/rdcatchd/rdcatchd.cpp index 5e14668d..d4e1ce47 100644 --- a/rdcatchd/rdcatchd.cpp +++ b/rdcatchd/rdcatchd.cpp @@ -1948,7 +1948,7 @@ void MainObject::LoadEvent(RDSqlQuery *q,CatchEvent *e,bool add) e->setBitrate(q->value(22).toInt()); e->setUrl(q->value(37).toString()); e->setUrlUsername(q->value(38).toString()); - e->setUrlPassword(q->value(39).toString()); + e->setUrlPassword(QByteArray::fromBase64(q->value(39).toString().toUtf8())); e->setUseSshIdentity(q->value(40).toString()=='Y'); e->setQuality(q->value(41).toInt()); e->setNormalizeLevel(q->value(42).toInt()); diff --git a/utils/rddbmgr/revertschema.cpp b/utils/rddbmgr/revertschema.cpp index 9a5d2b9a..84224acf 100644 --- a/utils/rddbmgr/revertschema.cpp +++ b/utils/rddbmgr/revertschema.cpp @@ -41,6 +41,34 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg) // NEW SCHEMA REVERSIONS GO HERE... + // + // Revert 358 + // + if((cur_schema==358)&&(set_schemanext()) { + sql=QString("update `RECORDINGS` set ")+ + "`URL_PASSWORD`='"+ + RDEscapeString(QByteArray::fromBase64(q->value(1).toString().toUtf8()))+"' "+ + QString::asprintf("where `ID`=%u",q->value(0).toUInt()); + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + } + delete q; + sql=QString("alter table `RECORDINGS` ")+ + "modify column `URL_PASSWORD` varchar(64)"; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + + WriteSchemaVersion(--cur_schema); + } + // // Revert 357 // diff --git a/utils/rddbmgr/schemamap.cpp b/utils/rddbmgr/schemamap.cpp index 166ef943..1e3348c3 100644 --- a/utils/rddbmgr/schemamap.cpp +++ b/utils/rddbmgr/schemamap.cpp @@ -160,7 +160,7 @@ void MainObject::InitializeSchemaMap() { global_version_map["3.4"]=317; global_version_map["3.5"]=346; global_version_map["3.6"]=347; - global_version_map["4.0"]=357; + global_version_map["4.0"]=358; } diff --git a/utils/rddbmgr/updateschema.cpp b/utils/rddbmgr/updateschema.cpp index 790a32c6..0390880b 100644 --- a/utils/rddbmgr/updateschema.cpp +++ b/utils/rddbmgr/updateschema.cpp @@ -11022,6 +11022,30 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg) WriteSchemaVersion(++cur_schema); } + if((cur_schema<358)&&(set_schema>cur_schema)) { + sql=QString("alter table `RECORDINGS` modify column `URL_PASSWORD` text"); + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + sql=QString("select ")+ + "`ID`,"+ // 00 + "`URL_PASSWORD` " // 01 + "from `RECORDINGS`"; + q=new RDSqlQuery(sql); + while(q->next()) { + sql=QString("update `RECORDINGS` set ")+ + "`URL_PASSWORD`='"+ + RDEscapeString(q->value(1).toString().toUtf8().toBase64())+"' "+ + QString::asprintf("where `ID`=%u",q->value(0).toUInt()); + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + } + delete q; + + WriteSchemaVersion(++cur_schema); + } + // NEW SCHEMA UPDATES GO HERE...