2021-04-23 Fred Gleason <fredg@paravelsystems.com>

* Escaped all SQL identifiers in 'utils/rdmaint/'.
	* Replaced " with ' delimiters in all SQL literal strings in
	'utils/rdmaint/'.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason
2021-04-23 12:49:08 -04:00
parent 0783ab5344
commit 2ac1051ecd
2 changed files with 62 additions and 66 deletions

View File

@@ -21579,3 +21579,7 @@
* Escaped all SQL identifiers in 'utils/rdimport/'. * Escaped all SQL identifiers in 'utils/rdimport/'.
* Replaced " with ' delimiters in all SQL literal strings in * Replaced " with ' delimiters in all SQL literal strings in
'utils/rdimport/'. 'utils/rdimport/'.
2021-04-23 Fred Gleason <fredg@paravelsystems.com>
* Escaped all SQL identifiers in 'utils/rdmaint/'.
* Replaced " with ' delimiters in all SQL literal strings in
'utils/rdmaint/'.

View File

@@ -112,11 +112,9 @@ void MainObject::userData()
void MainObject::RunSystemMaintenance() void MainObject::RunSystemMaintenance()
{ {
QString sql; QString sql;
RDSqlQuery *q;
sql="update VERSION set LAST_MAINT_DATETIME=now()"; sql="update `VERSION` set `LAST_MAINT_DATETIME`=now()";
q=new RDSqlQuery(sql); RDSqlQuery::apply(sql);
delete q;
PrintMessage("Starting System Maintenance"); PrintMessage("Starting System Maintenance");
@@ -149,22 +147,22 @@ void MainObject::PurgeCuts()
QDateTime dt=QDateTime(QDate::currentDate(),QTime::currentTime()); QDateTime dt=QDateTime(QDate::currentDate(),QTime::currentTime());
sql=QString("select ")+ sql=QString("select ")+
"NAME,"+ // 00 "`NAME`,"+ // 00
"CUT_SHELFLIFE,"+ // 01 "`CUT_SHELFLIFE`,"+ // 01
"DELETE_EMPTY_CARTS "+ // 02 "`DELETE_EMPTY_CARTS` "+ // 02
"from GROUPS where "+ "from `GROUPS` where "+
"CUT_SHELFLIFE>=0"; "`CUT_SHELFLIFE`>=0";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
while(q->next()) { while(q->next()) {
sql=QString("select ")+ sql=QString("select ")+
"CART.NUMBER,"+ // 00 "`CART.NUMBER`,"+ // 00
"CUTS.CUT_NAME "+ // 01 "`CUTS.CUT_NAME` "+ // 01
"from CUTS left join CART "+ "from `CUTS` left join `CART` "+
"on CUTS.CART_NUMBER=CART.NUMBER where "+ "on `CUTS`.`CART_NUMBER`=`CART`.`NUMBER` where "+
"(CART.GROUP_NAME=\""+RDEscapeString(q->value(0).toString())+"\")&&"+ "(`CART`.`GROUP_NAME`='"+RDEscapeString(q->value(0).toString())+"')&&"+
"(CUTS.END_DATETIME<\""+ "(`CUTS`.`END_DATETIME`<'"+
RDEscapeString(dt.addDays(-q->value(1).toInt()).toString("yyyy-MM-dd"))+ RDEscapeString(dt.addDays(-q->value(1).toInt()).toString("yyyy-MM-dd"))+
" 00:00:00\")"; " 00:00:00')";
q1=new RDSqlQuery(sql); q1=new RDSqlQuery(sql);
while(q1->next()) { while(q1->next()) {
RDCart *cart=new RDCart(q1->value(0).toUInt()); RDCart *cart=new RDCart(q1->value(0).toUInt());
@@ -205,10 +203,10 @@ void MainObject::PurgeLogs()
RDSqlQuery *q; RDSqlQuery *q;
QDateTime dt=QDateTime(QDate::currentDate(),QTime::currentTime()); QDateTime dt=QDateTime(QDate::currentDate(),QTime::currentTime());
sql=QString("select NAME from LOGS where ")+ sql=QString("select `NAME` from `LOGS` where ")+
"(PURGE_DATE!=\"0000-00-00\")&&"+ "(`PURGE_DATE`!='0000-00-00')&&"+
"(PURGE_DATE is not null)&&"+ "(`PURGE_DATE` is not null)&&"+
"(PURGE_DATE<\""+dt.date().toString("yyyy-MM-dd")+"\")"; "(`PURGE_DATE`<'"+dt.date().toString("yyyy-MM-dd")+"')";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
while(q->next()) { while(q->next()) {
rda->syslog(LOG_INFO,"purged log %s", rda->syslog(LOG_INFO,"purged log %s",
@@ -232,16 +230,16 @@ void MainObject::PurgeElr()
QDateTime dt=QDateTime(QDate::currentDate(),QTime::currentTime()); QDateTime dt=QDateTime(QDate::currentDate(),QTime::currentTime());
sql=QString("select ")+ sql=QString("select ")+
"NAME,"+ "`NAME`,"+
"ELR_SHELFLIFE "+ "`ELR_SHELFLIFE` "+
"from SERVICES where "+ "from `SERVICES` where "+
"ELR_SHELFLIFE>=0"; "`ELR_SHELFLIFE`>=0";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
while(q->next()) { while(q->next()) {
sql=QString("delete from ELR_LINES where ")+ sql=QString("delete from `ELR_LINES` where ")+
"SERVICE_NAME=\""+RDEscapeString(q->value(0).toString())+"\" && "+ "`SERVICE_NAME`='"+RDEscapeString(q->value(0).toString())+"' && "+
"EVENT_DATETIME<\""+ "`EVENT_DATETIME`<'"+
dt.addDays(-q->value(1).toInt()).toString("yyyy-MM-dd")+" 00:00:00\""; dt.addDays(-q->value(1).toInt()).toString("yyyy-MM-dd")+" 00:00:00'";
RDSqlQuery::apply(sql); RDSqlQuery::apply(sql);
} }
delete q; delete q;
@@ -256,22 +254,20 @@ void MainObject::PurgeDropboxes()
QString sql; QString sql;
RDSqlQuery *q; RDSqlQuery *q;
RDSqlQuery *q1;
sql=QString("select ")+ sql=QString("select ")+
"DROPBOX_PATHS.FILE_PATH,"+ // 00 "`DROPBOX_PATHS`.`FILE_PATH`,"+ // 00
"DROPBOX_PATHS.ID "+ // 01 "`DROPBOX_PATHS`.`ID` "+ // 01
"from DROPBOXES left join DROPBOX_PATHS "+ "from `DROPBOXES` left join `DROPBOX_PATHS` "+
"on (DROPBOXES.ID=DROPBOX_PATHS.DROPBOX_ID) where "+ "on (`DROPBOXES`.`ID`=`DROPBOX_PATHS`.`DROPBOX_ID`) where "+
"DROPBOXES.STATION_NAME=\""+RDEscapeString(rda->config()->stationName())+ "`DROPBOXES`.`STATION_NAME`='"+RDEscapeString(rda->config()->stationName())+
"\""; "'";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
while(q->next()) { while(q->next()) {
if(!QFile::exists(q->value(0).toString())) { if(!QFile::exists(q->value(0).toString())) {
sql=QString("delete from DROPBOX_PATHS where ")+ sql=QString("delete from `DROPBOX_PATHS` where ")+
QString().sprintf("ID=%d",q->value(1).toInt()); QString().sprintf("`ID`=%d",q->value(1).toInt());
q1=new RDSqlQuery(sql); RDSqlQuery::apply(sql);
delete q1;
} }
} }
delete q; delete q;
@@ -286,10 +282,9 @@ void MainObject::PurgeGpioEvents()
QString sql; QString sql;
sql=QString("delete from GPIO_EVENTS where ")+ sql=QString("delete from `GPIO_EVENTS` where ")+
"EVENT_DATETIME<\""+ "`EVENT_DATETIME`<'"+
QDate::currentDate().addDays(-RD_GPIO_EVENT_DAYS).toString("yyyy-MM-dd")+" 00:00:00\""; QDate::currentDate().addDays(-RD_GPIO_EVENT_DAYS).toString("yyyy-MM-dd")+" 00:00:00'";
printf("SQL: %s\n",sql.toUtf8().constData());
RDSqlQuery::apply(sql); RDSqlQuery::apply(sql);
PrintMessage("Starting Completed GpioEvents()"); PrintMessage("Starting Completed GpioEvents()");
@@ -301,11 +296,9 @@ void MainObject::PurgeWebapiAuths()
PrintMessage("Starting PurgeWebapiAuths()"); PrintMessage("Starting PurgeWebapiAuths()");
QString sql; QString sql;
RDSqlQuery *q;
sql=QString("delete from WEBAPI_AUTHS where EXPIRATION_DATETIME<now()"); sql=QString("delete from `WEBAPI_AUTHS` where `EXPIRATION_DATETIME`<now()");
q=new RDSqlQuery(sql); RDSqlQuery::apply(sql);
delete q;
PrintMessage("Completed PurgeWebapiAuths()"); PrintMessage("Completed PurgeWebapiAuths()");
} }
@@ -324,14 +317,14 @@ void MainObject::PurgeStacks()
int artistsep=50000; int artistsep=50000;
int titlesep=50000; int titlesep=50000;
sql="select MAX(ARTISTSEP) from CLOCKS"; sql="select MAX(`ARTISTSEP`) from `CLOCKS`";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
if(q->next()) { if(q->next()) {
artistsep=q->value(0).toInt(); artistsep=q->value(0).toInt();
} }
delete q; delete q;
sql="select MAX(TITLE_SEP) from EVENTS"; sql="select MAX(`TITLE_SEP`) from `EVENTS`";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
if(q->next()) { if(q->next()) {
titlesep=q->value(0).toInt(); titlesep=q->value(0).toInt();
@@ -340,36 +333,35 @@ void MainObject::PurgeStacks()
stacksize=(artistsep<titlesep)?titlesep:artistsep; stacksize=(artistsep<titlesep)?titlesep:artistsep;
sql="select NAME from SERVICES"; sql="select `NAME` from `SERVICES`";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
while(q->next()) { while(q->next()) {
sql=QString("select MAX(SCHED_STACK_ID) from STACK_LINES where ")+ sql=QString("select MAX(`SCHED_STACK_ID`) from `STACK_LINES` where ")+
"SERVICE_NAME=\""+RDEscapeString(q->value(0).toString())+"\""; "`SERVICE_NAME`='"+RDEscapeString(q->value(0).toString())+"'";
q1=new RDSqlQuery(sql); q1=new RDSqlQuery(sql);
if (q1->next()) { if (q1->next()) {
stackid=q1->value(0).toUInt(); stackid=q1->value(0).toUInt();
if (stackid-stacksize > 0) { if (stackid-stacksize > 0) {
sql=QString("select ID from STACK_LINES where ")+ sql=QString("select `ID` from `STACK_LINES` where ")+
"SERVICE_NAME=\""+RDEscapeString(q->value(0).toString())+"\" && "+ "`SERVICE_NAME`='"+RDEscapeString(q->value(0).toString())+"' && "+
QString().sprintf("SCHED_STACK_ID<=%d",stackid-stacksize); QString().sprintf("`SCHED_STACK_ID`<=%d",stackid-stacksize);
q2=new RDSqlQuery(sql); q2=new RDSqlQuery(sql);
while(q2->next()) { while(q2->next()) {
sql=QString("delete from STACK_SCHED_CODES where ")+ sql=QString("delete from `STACK_SCHED_CODES` where ")+
QString().sprintf("STACK_LINES_ID=%u",q2->value(0).toUInt()); QString().sprintf("`STACK_LINES_ID`=%u",q2->value(0).toUInt());
RDSqlQuery::apply(sql); RDSqlQuery::apply(sql);
} }
delete q2; delete q2;
sql=QString("delete from STACK_LINES where ")+ sql=QString("delete from `STACK_LINES` where ")+
"SERVICE_NAME=\""+RDEscapeString(q->value(0).toString())+"\" && "+ "`SERVICE_NAME`='"+RDEscapeString(q->value(0).toString())+"' && "+
QString().sprintf("SCHED_STACK_ID<=%d",stackid-stacksize); QString().sprintf("`SCHED_STACK_ID`<=%d",stackid-stacksize);
RDSqlQuery::apply(sql); RDSqlQuery::apply(sql);
sql=QString("update STACK_LINES set ")+ sql=QString("update `STACK_LINES` set ")+
QString().sprintf("SCHED_STACK_ID=SCHED_STACK_ID-%d where ", QString().sprintf("`SCHED_STACK_ID`=`SCHED_STACK_ID`-%d where ",
stackid-stacksize)+ stackid-stacksize)+
"SERVICE_NAME=\""+RDEscapeString(q->value(0).toString())+"\""; "SERVICE_NAME='"+RDEscapeString(q->value(0).toString())+"'";
q2=new RDSqlQuery(sql); RDSqlQuery::apply(sql);
delete q2;
} }
} }
delete q1; delete q1;
@@ -388,7 +380,7 @@ void MainObject::RehashCuts()
RDSqlQuery *q; RDSqlQuery *q;
RDRehash::ErrorCode err; RDRehash::ErrorCode err;
sql="select CUT_NAME from CUTS where SHA1_HASH is null limit 100"; sql="select `CUT_NAME` from `CUTS` where `SHA1_HASH` is null limit 100";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
while(q->next()) { while(q->next()) {
if((err=RDRehash::rehash(rda->station(),rda->user(),rda->config(), if((err=RDRehash::rehash(rda->station(),rda->user(),rda->config(),