From c5de0165369e932d069c1b5881ffae4537a33134 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Wed, 19 Aug 2020 13:28:13 -0400 Subject: [PATCH] 2020-08-19 Fred Gleason * Changed the database field 'FEEDS.PURGE_PASSWORD' from 'varchar(64)' to 'text'. * Changed the contents of the 'FEEDS.PURGE_PASSWORD' database field from plaintext to Base64 encoding. * Incremented the database version to 334. Signed-off-by: Fred Gleason --- ChangeLog | 6 ++++++ docs/tables/feeds.txt | 2 +- lib/dbversion.h | 2 +- lib/rdfeed.cpp | 6 +++--- utils/rddbmgr/revertschema.cpp | 29 +++++++++++++++++++++++++++++ utils/rddbmgr/schemamap.cpp | 2 +- utils/rddbmgr/updateschema.cpp | 25 +++++++++++++++++++++++++ 7 files changed, 66 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0eb7371d..49c81788 100644 --- a/ChangeLog +++ b/ChangeLog @@ -20259,3 +20259,9 @@ rdadmin(1). * Added an 'Authenticate with local identity file' checkbox to the 'Feed' dialog in rdadmin(1). +2020-08-19 Fred Gleason + * Changed the database field 'FEEDS.PURGE_PASSWORD' from + 'varchar(64)' to 'text'. + * Changed the contents of the 'FEEDS.PURGE_PASSWORD' database + field from plaintext to Base64 encoding. + * Incremented the database version to 334. diff --git a/docs/tables/feeds.txt b/docs/tables/feeds.txt index 7d96b5a7..ba02f134 100644 --- a/docs/tables/feeds.txt +++ b/docs/tables/feeds.txt @@ -26,7 +26,7 @@ BASE_URL varchar(191) BASE_PREAMBLE varchar(191) PURGE_URL varchar(191) PURGE_USERNAME varchar(64) -PURGE_PASSWORD varchar(64) +PURGE_PASSWORD text Base64 encoded PURGE_USE_ID_FILE enum('N','Y') RSS_SCHEMA int(10) unsigned 0=Custom, 1=RSS-2.0.2 HEADER_XML text diff --git a/lib/dbversion.h b/lib/dbversion.h index f47f66bb..ab078216 100644 --- a/lib/dbversion.h +++ b/lib/dbversion.h @@ -24,7 +24,7 @@ /* * Current Database Version */ -#define RD_VERSION_DATABASE 333 +#define RD_VERSION_DATABASE 334 #endif // DBVERSION_H diff --git a/lib/rdfeed.cpp b/lib/rdfeed.cpp index f0778747..242e67fb 100644 --- a/lib/rdfeed.cpp +++ b/lib/rdfeed.cpp @@ -455,14 +455,14 @@ void RDFeed::setPurgeUsername(const QString &str) const QString RDFeed::purgePassword() const { - return RDGetSqlValue("FEEDS","KEY_NAME",feed_keyname,"PURGE_PASSWORD"). - toString(); + return QString(QByteArray::fromBase64(RDGetSqlValue("FEEDS","KEY_NAME", + feed_keyname,"PURGE_PASSWORD").toString().toUtf8())); } void RDFeed::setPurgePassword(const QString &str) const { - SetRow("PURGE_PASSWORD",str); + SetRow("PURGE_PASSWORD",QString(str.toUtf8().toBase64())); } diff --git a/utils/rddbmgr/revertschema.cpp b/utils/rddbmgr/revertschema.cpp index aeb1fc4a..65c524e6 100644 --- a/utils/rddbmgr/revertschema.cpp +++ b/utils/rddbmgr/revertschema.cpp @@ -40,6 +40,35 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg) // NEW SCHEMA REVERSIONS GO HERE... + // + // Revert 334 + // + if((cur_schema==334)&&(set_schemanext()) { + QString password(QByteArray::fromBase64(q->value(1).toString().toUtf8())); + sql=QString("update FEEDS set ")+ + "PURGE_PASSWORD=\""+RDEscapeString(password)+"\" where "+ + "KEY_NAME=\""+RDEscapeString(q->value(0).toString())+"\""; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + } + delete q; + sql=QString("alter table FEEDS modify column ")+ + "PURGE_PASSWORD varchar(64)"; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + + WriteSchemaVersion(--cur_schema); + } + + // // Revert 333 // diff --git a/utils/rddbmgr/schemamap.cpp b/utils/rddbmgr/schemamap.cpp index 04981166..f26feca1 100644 --- a/utils/rddbmgr/schemamap.cpp +++ b/utils/rddbmgr/schemamap.cpp @@ -161,7 +161,7 @@ void MainObject::InitializeSchemaMap() { global_version_map["3.2"]=311; global_version_map["3.3"]=314; global_version_map["3.4"]=317; - global_version_map["4.0"]=333; + global_version_map["4.0"]=334; } diff --git a/utils/rddbmgr/updateschema.cpp b/utils/rddbmgr/updateschema.cpp index 86afa464..2fa22817 100644 --- a/utils/rddbmgr/updateschema.cpp +++ b/utils/rddbmgr/updateschema.cpp @@ -10218,6 +10218,31 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg) WriteSchemaVersion(++cur_schema); } + if((cur_schema<334)&&(set_schema>cur_schema)) { + sql=QString("alter table FEEDS modify column ")+ + "PURGE_PASSWORD text"; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + sql=QString("select ")+ + "KEY_NAME,"+ // 00 + "PURGE_PASSWORD "+ // 01 + "from FEEDS"; + q=new RDSqlQuery(sql); + while(q->next()) { + sql=QString("update FEEDS set ")+ + "PURGE_PASSWORD=\""+ + RDEscapeString(q->value(1).toString().toUtf8().toBase64())+"\" where "+ + "KEY_NAME=\""+RDEscapeString(q->value(0).toString())+"\""; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + } + delete q; + + WriteSchemaVersion(++cur_schema); + } +