2018-07-17 Fred Gleason <fredg@paravelsystems.com>

* Cleaned up SQL quieries in 'rdcatchd/' ensure UTF-8
	compatibility.
This commit is contained in:
Fred Gleason
2018-07-17 19:29:20 +00:00
parent 83511b896f
commit a3e23f24fb
2 changed files with 56 additions and 55 deletions

View File

@@ -17146,3 +17146,6 @@
to be saved to the incorrect Location. to be saved to the incorrect Location.
2018-07-17 Fred Gleason <fredg@paravelsystems.com> 2018-07-17 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in 'RDDeck' that threw a SQL error. * Fixed a bug in 'RDDeck' that threw a SQL error.
2018-07-17 Fred Gleason <fredg@paravelsystems.com>
* Cleaned up SQL quieries in 'rdcatchd/' ensure UTF-8
compatibility.

View File

@@ -1380,9 +1380,11 @@ void MainObject::StartPlayout(int event)
// //
// Get cut parameters // Get cut parameters
// //
QString sql=QString().sprintf("select START_POINT,END_POINT from CUTS\ QString sql=QString("select ")+
where CUT_NAME=\"%s\"", "START_POINT,"+ // 00
(const char *)catch_events[event].cutName()); "END_POINT "+ // 01
"from CUTS where "+
"CUT_NAME=\""+RDEscapeString(catch_events[event].cutName())+"\"";
RDSqlQuery *q=new RDSqlQuery(sql); RDSqlQuery *q=new RDSqlQuery(sql);
if(!q->first()) { if(!q->first()) {
return; return;
@@ -1905,8 +1907,8 @@ void MainObject::LoadEngine(bool adv_day)
catch_events.clear(); catch_events.clear();
LogLine(RDConfig::LogInfo,"rdcatchd engine load starts..."); LogLine(RDConfig::LogInfo,"rdcatchd engine load starts...");
sql=LoadEventSql()+QString().sprintf(" where STATION_NAME=\"%s\"", sql=LoadEventSql()+QString(" where STATION_NAME=\"")+
(const char *)rda->station()->name()); RDEscapeString(rda->station()->name())+"\"";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
while(q->next()) { while(q->next()) {
catch_events.push_back(CatchEvent(rda->station(),RDConfiguration())); catch_events.push_back(CatchEvent(rda->station(),RDConfiguration()));
@@ -2181,8 +2183,9 @@ bool MainObject::AddEvent(int id)
// Load Schedule // Load Schedule
// //
sql=LoadEventSql()+ sql=LoadEventSql()+
QString().sprintf(" where (STATION_NAME=\"%s\")&&(ID=%d)", QString(" where ")+
(const char *)rda->station()->name(),id); "(STATION_NAME=\""+RDEscapeString(rda->station()->name())+"\")&&"+
QString().sprintf("(ID=%d)",id);
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
if(q->first()) { if(q->first()) {
catch_events.push_back(CatchEvent(rda->station(),RDConfiguration())); catch_events.push_back(CatchEvent(rda->station(),RDConfiguration()));
@@ -2380,9 +2383,11 @@ void MainObject::LoadHeartbeat()
if(catch_heartbeat_timer->isActive()) { if(catch_heartbeat_timer->isActive()) {
catch_heartbeat_timer->stop(); catch_heartbeat_timer->stop();
} }
QString sql=QString().sprintf("select HEARTBEAT_CART,HEARTBEAT_INTERVAL\ QString sql=QString("select ")+
from STATIONS where NAME=\"%s\"", "HEARTBEAT_CART,"+ // 00
(const char *)rda->station()->name()); "HEARTBEAT_INTERVAL "+ // 01
"from STATIONS where "+
"NAME=\""+RDEscapeString(rda->station()->name())+"\"";
RDSqlQuery *q=new RDSqlQuery(sql); RDSqlQuery *q=new RDSqlQuery(sql);
if(q->first()) { if(q->first()) {
if((q->value(0).toUInt()!=0)&&(q->value(1).toUInt()!=0)) { if((q->value(0).toUInt()!=0)&&(q->value(1).toUInt()!=0)) {
@@ -2425,20 +2430,24 @@ void MainObject::CheckInPodcast(CatchEvent *e) const
// //
// Purge Stale Casts // Purge Stale Casts
// //
sql=QString().sprintf("delete from PODCASTS where \ sql=QString("delete from PODCASTS where ")+
(FEED_ID=%d)&&(AUDIO_FILENAME=\"%s\")", QString().sprintf("(FEED_ID=%d)&&",e->feedId())+
e->feedId(), "(AUDIO_FILENAME=\""+RDEscapeString(RDGetBasePart(e->resolvedUrl()))+"\")";
(const char *)RDGetBasePart(e->resolvedUrl()));
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
// //
// Get Channel Parameters // Get Channel Parameters
// //
sql=QString().sprintf("select ENABLE_AUTOPOST,CHANNEL_TITLE,\ sql=QString("select ")+
CHANNEL_DESCRIPTION,CHANNEL_CATEGORY,\ "ENABLE_AUTOPOST,"+ // 00
CHANNEL_LINK,MAX_SHELF_LIFE from FEEDS \ "CHANNEL_TITLE,"+ // 01
where ID=%u",e->feedId()); "CHANNEL_DESCRIPTION,"+ // 02
"CHANNEL_CATEGORY,"+ // 03
"CHANNEL_LINK,"+ // 04
"MAX_SHELF_LIFE "+ // 05
"from FEEDS where "+
QString().sprintf("ID=%u",e->feedId());
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
if(!q->first()) { if(!q->first()) {
delete q; delete q;
@@ -2452,29 +2461,19 @@ void MainObject::CheckInPodcast(CatchEvent *e) const
if(q->value(0).toString().lower()=="y") { if(q->value(0).toString().lower()=="y") {
status=RDPodcast::StatusActive; status=RDPodcast::StatusActive;
} }
sql=QString().sprintf("insert into PODCASTS set \ sql=QString("insert into PODCASTS set ")+
FEED_ID=%u,\ QString().sprintf("FEED_ID=%u,",e->feedId())+
STATUS=%u,\ QString().sprintf("STATUS=%u,",status)+
ITEM_TITLE=\"%s\",\ "ITEM_TITLE=\""+RDEscapeString(q->value(1).toString())+"\","+
ITEM_DESCRIPTION=\"%s\",\ "ITEM_DESCRIPTION=\""+RDEscapeString(q->value(2).toString())+"\","+
ITEM_CATEGORY=\"%s\",\ "ITEM_CATEGORY=\""+RDEscapeString(q->value(3).toString())+"\","+
ITEM_LINK=\"%s\",\ "ITEM_LINK=\""+RDEscapeString(q->value(4).toString())+"\","+
AUDIO_FILENAME=\"%s\",\ "AUDIO_FILENAME=\""+RDEscapeString(RDGetBasePart(e->resolvedUrl()))+"\","+
AUDIO_LENGTH=%u,\ QString().sprintf("AUDIO_LENGTH=%u,",e->podcastLength())+
AUDIO_TIME=%u,\ QString().sprintf("AUDIO_TIME=%u,",e->podcastTime())+
SHELF_LIFE=%u,\ QString().sprintf("SHELF_LIFE=%u,",q->value(5).toUInt())+
EFFECTIVE_DATETIME=now(),\ "EFFECTIVE_DATETIME=now(),"+
ORIGIN_DATETIME=now()", "ORIGIN_DATETIME=now()";
e->feedId(),
status,
(const char *)RDEscapeString(q->value(1).toString()),
(const char *)RDEscapeString(q->value(2).toString()),
(const char *)RDEscapeString(q->value(3).toString()),
(const char *)RDEscapeString(q->value(4).toString()),
(const char *)RDGetBasePart(e->resolvedUrl()),
e->podcastLength(),
e->podcastTime(),
q->value(5).toUInt());
delete q; delete q;
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
@@ -2482,8 +2481,9 @@ void MainObject::CheckInPodcast(CatchEvent *e) const
// //
// Update the Build Date // Update the Build Date
// //
sql=QString().sprintf("update FEEDS set LAST_BUILD_DATETIME=now() \ sql=QString("update FEEDS set ")+
where ID=%u",e->feedId()); "LAST_BUILD_DATETIME=now() where "+
QString().sprintf("ID=%u",e->feedId());
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
} }
@@ -2492,8 +2492,8 @@ void MainObject::CheckInPodcast(CatchEvent *e) const
RDRecording::ExitCode MainObject::ReadExitCode(int event) RDRecording::ExitCode MainObject::ReadExitCode(int event)
{ {
RDRecording::ExitCode code=RDRecording::InternalError; RDRecording::ExitCode code=RDRecording::InternalError;
QString sql=QString().sprintf("select EXIT_CODE from RECORDINGS\ QString sql=QString("select EXIT_CODE from RECORDINGS where ")+
where ID=%d",catch_events[event].id()); QString().sprintf("ID=%d",catch_events[event].id());
RDSqlQuery *q=new RDSqlQuery(sql); RDSqlQuery *q=new RDSqlQuery(sql);
if(q->first()) { if(q->first()) {
code=(RDRecording::ExitCode)q->value(0).toInt(); code=(RDRecording::ExitCode)q->value(0).toInt();
@@ -2507,11 +2507,10 @@ RDRecording::ExitCode MainObject::ReadExitCode(int event)
void MainObject::WriteExitCode(int event,RDRecording::ExitCode code, void MainObject::WriteExitCode(int event,RDRecording::ExitCode code,
const QString &err_text) const QString &err_text)
{ {
QString sql=QString().sprintf("update RECORDINGS set EXIT_CODE=%d,\ QString sql=QString("update RECORDINGS set ")+
EXIT_TEXT=\"%s\"\ QString().sprintf("EXIT_CODE=%d,",code)+
where ID=%d",code, "EXIT_TEXT=\""+RDEscapeString(err_text)+"\" where "+
(const char *)RDEscapeString(err_text), QString().sprintf("ID=%d",catch_events[event].id());
catch_events[event].id());
RDSqlQuery *q=new RDSqlQuery(sql); RDSqlQuery *q=new RDSqlQuery(sql);
delete q; delete q;
switch(code) { switch(code) {
@@ -2541,11 +2540,10 @@ void MainObject::WriteExitCode(int event,RDRecording::ExitCode code,
void MainObject::WriteExitCodeById(int id,RDRecording::ExitCode code, void MainObject::WriteExitCodeById(int id,RDRecording::ExitCode code,
const QString &err_text) const QString &err_text)
{ {
QString sql=QString().sprintf("update RECORDINGS set EXIT_CODE=%d,\ QString sql=QString("update RECORDINGS set ")+
EXIT_TEXT=\"%s\" \ QString().sprintf("EXIT_CODE=%d,",code)+
where ID=%d",code, "EXIT_TEXT=\""+RDEscapeString(err_text)+"\" where "+
(const char *)RDEscapeString(err_text), QString().sprintf("ID=%d",id);
id);
RDSqlQuery *q=new RDSqlQuery(sql); RDSqlQuery *q=new RDSqlQuery(sql);
delete q; delete q;
} }