diff --git a/ChangeLog b/ChangeLog index d804cefa..3b84ceba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -15988,3 +15988,6 @@ * Added an 'RDRenderer' class in 'lib/rdrenderer.cpp' and 'lib/rdrenderer.h'. * Refactored rdrender(1) to use the 'RDRenderer' class. +2017-08-31 Fred Gleason + * Modified web client components to use a distinctive http USER_AGENT + string. diff --git a/cae/cae.cpp b/cae/cae.cpp index ace2e364..db6f7f36 100644 --- a/cae/cae.cpp +++ b/cae/cae.cpp @@ -131,6 +131,7 @@ MainObject::MainObject(QObject *parent,const char *name) // rd_config=new RDConfig(RD_CONF_FILE); rd_config->load(); + rd_config->setModuleName("caed"); // // Make sure we're the only instance running diff --git a/importers/nexgen_filter.cpp b/importers/nexgen_filter.cpp index c80d7d2b..164d55b9 100644 --- a/importers/nexgen_filter.cpp +++ b/importers/nexgen_filter.cpp @@ -134,6 +134,7 @@ MainObject::MainObject(QObject *parent) // rdconfig=new RDConfig(RD_CONF_FILE); rdconfig->load(); + rdconfig->setModuleName("nexgen_filter"); // // Open Database diff --git a/importers/panel_copy.cpp b/importers/panel_copy.cpp index 6c644214..a2331005 100644 --- a/importers/panel_copy.cpp +++ b/importers/panel_copy.cpp @@ -52,6 +52,7 @@ MainObject::MainObject(QObject *parent) rd_config=new RDConfig(RD_CONF_FILE); rd_config->load(); + rd_config->setModuleName("panel_copy"); // // Read Switches diff --git a/importers/rdcatch_copy.cpp b/importers/rdcatch_copy.cpp index 3d6b26e2..52a49240 100644 --- a/importers/rdcatch_copy.cpp +++ b/importers/rdcatch_copy.cpp @@ -52,6 +52,7 @@ MainObject::MainObject(QObject *parent) rd_config=new RDConfig(RD_CONF_FILE); rd_config->load(); + rd_config->setModuleName("rdcatch_copy"); // // Read Switches diff --git a/importers/rivendell_filter.cpp b/importers/rivendell_filter.cpp index d1ea9b58..e56d7ee3 100644 --- a/importers/rivendell_filter.cpp +++ b/importers/rivendell_filter.cpp @@ -79,6 +79,7 @@ MainObject::MainObject(QObject *parent) rdconfig=new RDConfig(RD_CONF_FILE); rdconfig->load(); + rdconfig->setModuleName("rivendell_filter"); // // Open Local Database diff --git a/importers/sas_filter.cpp b/importers/sas_filter.cpp index 90367ec0..b35c644a 100644 --- a/importers/sas_filter.cpp +++ b/importers/sas_filter.cpp @@ -59,6 +59,8 @@ MainObject::MainObject(QObject *parent) rd_config=new RDConfig(RD_CONF_FILE); rd_config->load(); + rd_config->setModuleName("sas_filter"); + filter_switch_count=0; filter_macro_count=0; diff --git a/importers/wings_filter.cpp b/importers/wings_filter.cpp index 7342b9d4..b466ead5 100644 --- a/importers/wings_filter.cpp +++ b/importers/wings_filter.cpp @@ -62,6 +62,7 @@ MainObject::MainObject(QObject *parent) rdconfig=new RDConfig(RD_CONF_FILE); rdconfig->load(); + rdconfig->setModuleName("wings_filter"); // // Open Database diff --git a/lib/rdaudioexport.cpp b/lib/rdaudioexport.cpp index 29d2b3dc..c9283627 100644 --- a/lib/rdaudioexport.cpp +++ b/lib/rdaudioexport.cpp @@ -2,7 +2,7 @@ // // Export an Audio File using the RdXport Web Service // -// (C) Copyright 2010,2016 Fred Gleason +// (C) Copyright 2010,2016-2017 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -175,6 +175,8 @@ RDAudioExport::ErrorCode RDAudioExport::runExport(const QString &username, curl_easy_setopt(curl,CURLOPT_WRITEDATA,f); curl_easy_setopt(curl,CURLOPT_POST,1); curl_easy_setopt(curl,CURLOPT_POSTFIELDS,(const char *)post); + curl_easy_setopt(curl,CURLOPT_USERAGENT, + (const char *)conv_config->userAgent()); curl_easy_setopt(curl,CURLOPT_TIMEOUT,RD_CURL_TIMEOUT); curl_easy_setopt(curl,CURLOPT_PROGRESSFUNCTION,ExportProgressCallback); curl_easy_setopt(curl,CURLOPT_PROGRESSDATA,this); diff --git a/lib/rdaudioimport.cpp b/lib/rdaudioimport.cpp index 3589b5d9..d9d0b56d 100644 --- a/lib/rdaudioimport.cpp +++ b/lib/rdaudioimport.cpp @@ -2,7 +2,7 @@ // // Import an Audio File using the RdXport Web Service // -// (C) Copyright 2010-2014,2016 Fred Gleason +// (C) Copyright 2010-2014,2016-2017 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -169,6 +169,8 @@ RDAudioImport::ErrorCode RDAudioImport::runImport(const QString &username, } curl_easy_setopt(curl,CURLOPT_WRITEDATA,stdout); curl_easy_setopt(curl,CURLOPT_HTTPPOST,first); + curl_easy_setopt(curl,CURLOPT_USERAGENT, + (const char *)conv_config->userAgent()); curl_easy_setopt(curl,CURLOPT_TIMEOUT,RD_CURL_TIMEOUT); curl_easy_setopt(curl,CURLOPT_PROGRESSFUNCTION,ImportProgressCallback); curl_easy_setopt(curl,CURLOPT_PROGRESSDATA,this); diff --git a/lib/rdaudioinfo.cpp b/lib/rdaudioinfo.cpp index ef762285..79a5f45d 100644 --- a/lib/rdaudioinfo.cpp +++ b/lib/rdaudioinfo.cpp @@ -2,7 +2,7 @@ // // Get information about a cut in the audio store. // -// (C) Copyright 2011,2016 Fred Gleason +// (C) Copyright 2011,2016-2017 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -141,6 +141,8 @@ RDAudioInfo::ErrorCode RDAudioInfo::runInfo(const QString &username, curl_easy_setopt(curl,CURLOPT_WRITEDATA,&conv_xml); curl_easy_setopt(curl,CURLOPT_POST,1); curl_easy_setopt(curl,CURLOPT_POSTFIELDS,(const char *)post); + curl_easy_setopt(curl,CURLOPT_USERAGENT, + (const char *)conv_config->userAgent()); curl_easy_setopt(curl,CURLOPT_TIMEOUT,RD_CURL_TIMEOUT); switch(curl_err=curl_easy_perform(curl)) { diff --git a/lib/rdaudiostore.cpp b/lib/rdaudiostore.cpp index 3fe62af1..85ce0bc6 100644 --- a/lib/rdaudiostore.cpp +++ b/lib/rdaudiostore.cpp @@ -2,7 +2,7 @@ // // Get information about the audio store. // -// (C) Copyright 2014-2016 Fred Gleason +// (C) Copyright 2014-2017 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -97,6 +97,8 @@ RDAudioStore::ErrorCode RDAudioStore::runStore(const QString &username, curl_easy_setopt(curl,CURLOPT_WRITEDATA,&conv_xml); curl_easy_setopt(curl,CURLOPT_POST,1); curl_easy_setopt(curl,CURLOPT_POSTFIELDS,(const char *)post); + curl_easy_setopt(curl,CURLOPT_USERAGENT, + (const char *)conv_config->userAgent()); curl_easy_setopt(curl,CURLOPT_TIMEOUT,RD_CURL_TIMEOUT); switch(curl_err=curl_easy_perform(curl)) { diff --git a/lib/rdcart.cpp b/lib/rdcart.cpp index 544d977c..64904192 100644 --- a/lib/rdcart.cpp +++ b/lib/rdcart.cpp @@ -32,6 +32,7 @@ #include #include +#include #include #include #include @@ -1641,6 +1642,8 @@ bool RDCart::removeCutAudio(RDStation *station,RDUser *user,unsigned cart_num, curl_easy_setopt(curl,CURLOPT_URL,url); curl_easy_setopt(curl,CURLOPT_POST,1); curl_easy_setopt(curl,CURLOPT_POSTFIELDS,(const char *)post); + curl_easy_setopt(curl,CURLOPT_USERAGENT, + (const char *)RDConfig::userAgent("")); curl_easy_setopt(curl,CURLOPT_TIMEOUT,RD_CURL_TIMEOUT); curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,CartWriteCallback); curl_easy_setopt(curl,CURLOPT_WRITEDATA,&xml); diff --git a/lib/rdconfig.cpp b/lib/rdconfig.cpp index bca64698..ce1b1209 100644 --- a/lib/rdconfig.cpp +++ b/lib/rdconfig.cpp @@ -49,7 +49,7 @@ RDConfig::RDConfig() } -RDConfig::RDConfig(QString filename) +RDConfig::RDConfig(const QString &filename) { clear(); conf_filename=filename; @@ -67,37 +67,62 @@ void RDConfig::setFilename(QString filename) conf_filename=filename; } + +QString RDConfig::moduleName() const +{ + return conf_module_name; +} + + +void RDConfig::setModuleName(const QString &modname) +{ + conf_module_name=modname; +} + + +QString RDConfig::userAgent() const +{ + return RDConfig::userAgent(conf_module_name); +} + + QString RDConfig::audioRoot() const { return conf_audio_root; } + QString RDConfig::audioExtension() const { return conf_audio_extension; } + QString RDConfig::audioFileName (QString cutname) { return audioRoot() + QString("/") + cutname + QString(".") + audioExtension(); }; + QString RDConfig::label() const { return conf_label; } + QString RDConfig::audioStoreMountSource() const { return conf_audio_store_mount_source; } + QString RDConfig::audioStoreMountType() const { return conf_audio_store_mount_type; } + QString RDConfig::audioStoreMountOptions() const { return conf_audio_store_mount_options; @@ -523,6 +548,7 @@ void RDConfig::clear() #else conf_filename=RD_CONF_FILE; #endif + conf_module_name=""; conf_mysql_hostname=""; conf_mysql_username=""; conf_mysql_dbname=""; @@ -573,3 +599,12 @@ void RDConfig::clear() conf_sas_tty_device=""; conf_destinations.clear(); } + + +QString RDConfig::userAgent(const QString &modname) +{ + if(modname.isEmpty()) { + return QString("Mozilla/5.0")+" rivendell/"+VERSION; + } + return QString("Mozilla/5.0 rivendell/")+VERSION+" ("+modname+")"; +} diff --git a/lib/rdconfig.h b/lib/rdconfig.h index 58c16aad..82e0c38d 100644 --- a/lib/rdconfig.h +++ b/lib/rdconfig.h @@ -47,9 +47,12 @@ class RDConfig #endif // WIN32 RDConfig(); - RDConfig(QString filename); + RDConfig(const QString &filename); QString filename() const; void setFilename(QString filename); + QString moduleName() const; + void setModuleName(const QString &modname); + QString userAgent() const; QString mysqlHostname() const; QString mysqlUsername() const; QString mysqlDbname() const; @@ -103,9 +106,11 @@ class RDConfig QString destination(unsigned n); void load(); void clear(); + static QString userAgent(const QString &modname); private: QString conf_filename; + QString conf_module_name; QString conf_mysql_hostname; QString conf_mysql_username; QString conf_mysql_dbname; diff --git a/lib/rdcopyaudio.cpp b/lib/rdcopyaudio.cpp index 0879311c..186f933c 100644 --- a/lib/rdcopyaudio.cpp +++ b/lib/rdcopyaudio.cpp @@ -102,6 +102,8 @@ RDCopyAudio::ErrorCode RDCopyAudio::runCopy(const QString &username, curl_easy_setopt(curl,CURLOPT_URL,url); curl_easy_setopt(curl,CURLOPT_POST,1); curl_easy_setopt(curl,CURLOPT_POSTFIELDS,(const char *)post); + curl_easy_setopt(curl,CURLOPT_USERAGENT, + (const char *)conv_config->userAgent()); curl_easy_setopt(curl,CURLOPT_TIMEOUT,RD_CURL_TIMEOUT); switch(curl_easy_perform(curl)) { diff --git a/lib/rddelete.cpp b/lib/rddelete.cpp index 48b87390..1d90a17e 100644 --- a/lib/rddelete.cpp +++ b/lib/rddelete.cpp @@ -2,7 +2,7 @@ // // Delete a file from the audio store via the Rivendell Web Service // -// (C) Copyright 2010,2016 Fred Gleason +// (C) Copyright 2010,2016-2017 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -67,9 +67,10 @@ int DeleteErrorCallback(CURL *curl,curl_infotype type,char *msg,size_t size, } -RDDelete::RDDelete(QObject *parent) +RDDelete::RDDelete(RDConfig *config,QObject *parent) : QObject(parent) { + conv_config=config; } @@ -104,9 +105,10 @@ RDDelete::ErrorCode RDDelete::runDelete(const QString &username, (const char *)password),256); curl_easy_setopt(curl,CURLOPT_USERPWD,userpwd); curl_easy_setopt(curl,CURLOPT_HTTPAUTH,CURLAUTH_ANY); - printf("HERE\n"); curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,DeleteWriteCallback); curl_easy_setopt(curl,CURLOPT_WRITEDATA,&xml); + curl_easy_setopt(curl,CURLOPT_USERAGENT, + (const char *)conv_config->userAgent()); if(log_debug) { curl_easy_setopt(curl,CURLOPT_VERBOSE,1); curl_easy_setopt(curl,CURLOPT_DEBUGFUNCTION,DeleteErrorCallback); diff --git a/lib/rddelete.h b/lib/rddelete.h index 10032c9f..38126b8b 100644 --- a/lib/rddelete.h +++ b/lib/rddelete.h @@ -24,6 +24,8 @@ #include #include +#include + class RDDelete : public QObject { Q_OBJECT; @@ -34,7 +36,7 @@ class RDDelete : public QObject ErrorUnspecified=8,ErrorInvalidUser=9, ErrorInvalidLogin=11,ErrorRemoteAccess=12, ErrorRemoteConnection=13,ErrorUnknown=14}; - RDDelete(QObject *parent=0); + RDDelete(RDConfig *config,QObject *parent=0); void setTargetUrl(const QString &url); RDDelete::ErrorCode runDelete(const QString &username, const QString &password, @@ -43,6 +45,7 @@ class RDDelete : public QObject private: QUrl conv_target_url; + RDConfig *conv_config; }; diff --git a/lib/rddownload.cpp b/lib/rddownload.cpp index 94f04c2e..6ce86bd1 100644 --- a/lib/rddownload.cpp +++ b/lib/rddownload.cpp @@ -2,7 +2,7 @@ // // Download a File // -// (C) Copyright 2010,2016 Fred Gleason +// (C) Copyright 2010,2016-2017 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -68,9 +68,10 @@ int DownloadErrorCallback(CURL *curl,curl_infotype type,char *msg,size_t size, } -RDDownload::RDDownload(const QString &station_name,QObject *parent) +RDDownload::RDDownload(RDConfig *config,QObject *parent) : QObject(parent) { + conv_config=config; conv_aborting=false; } @@ -142,6 +143,8 @@ RDDownload::ErrorCode RDDownload::runDownload(const QString &username, curl_easy_setopt(curl,CURLOPT_PROGRESSFUNCTION,DownloadProgressCallback); curl_easy_setopt(curl,CURLOPT_PROGRESSDATA,this); curl_easy_setopt(curl,CURLOPT_NOPROGRESS,0); + curl_easy_setopt(curl,CURLOPT_USERAGENT, + (const char *)conv_config->userAgent()); if(log_debug) { curl_easy_setopt(curl,CURLOPT_VERBOSE,1); curl_easy_setopt(curl,CURLOPT_DEBUGFUNCTION,DownloadErrorCallback); diff --git a/lib/rddownload.h b/lib/rddownload.h index 0eb43095..da6300a9 100644 --- a/lib/rddownload.h +++ b/lib/rddownload.h @@ -2,7 +2,7 @@ // // Download a File // -// (C) Copyright 2010,2016 Fred Gleason +// (C) Copyright 2010,2016-2017 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -24,6 +24,8 @@ #include #include +#include + class RDDownload : public QObject { Q_OBJECT; @@ -34,7 +36,7 @@ class RDDownload : public QObject ErrorUnspecified=8,ErrorInvalidUser=9,ErrorAborted=10, ErrorInvalidLogin=11,ErrorRemoteAccess=12, ErrorRemoteConnection=13}; - RDDownload(const QString &station_name,QObject *parent=0); + RDDownload(RDConfig *config,QObject *parent=0); void setSourceUrl(const QString &url); void setDestinationFile(const QString &filename); int totalSteps() const; @@ -58,6 +60,7 @@ class RDDownload : public QObject QString conv_dst_filename; bool conv_aborting; uint conv_dst_size; + RDConfig *conv_config; }; diff --git a/lib/rdfeed.cpp b/lib/rdfeed.cpp index 54d43c80..279d8c28 100644 --- a/lib/rdfeed.cpp +++ b/lib/rdfeed.cpp @@ -37,13 +37,14 @@ #include #include -RDFeed::RDFeed(const QString &keyname,QObject *parent) +RDFeed::RDFeed(const QString &keyname,RDConfig *config,QObject *parent) : QObject(parent) { RDSqlQuery *q; QString sql; feed_keyname=keyname; + feed_config=config; sql=QString().sprintf("select ID from FEEDS where KEY_NAME=\"%s\"", (const char *)RDEscapeString(keyname)); @@ -55,13 +56,14 @@ RDFeed::RDFeed(const QString &keyname,QObject *parent) } -RDFeed::RDFeed(unsigned id,QObject *parent) +RDFeed::RDFeed(unsigned id,RDConfig *config,QObject *parent) : QObject(parent) { RDSqlQuery *q; QString sql; feed_id=id; + feed_config=config; sql=QString().sprintf("select KEY_NAME from FEEDS where ID=%u",id); q=new RDSqlQuery(sql); @@ -507,7 +509,7 @@ QString RDFeed::audioUrl(RDFeed::MediaLinkMode mode, break; case RDFeed::LinkDirect: - cast=new RDPodcast(cast_id); + cast=new RDPodcast(feed_config,cast_id); ret=QString().sprintf("%s/%s", (const char *)baseUrl(), (const char *)cast->audioFilename()); @@ -601,8 +603,8 @@ unsigned RDFeed::postCut(RDUser *user,RDStation *station, int length=file.size(); unsigned cast_id=CreateCast(&destfile,length,cut->length()); delete cut; - cast=new RDPodcast(cast_id); - upload=new RDUpload(station->name(),this); + cast=new RDPodcast(feed_config,cast_id); + upload=new RDUpload(feed_config,this); upload->setSourceFile(tmpfile); upload->setDestinationUrl(purgeUrl()+"/"+cast->audioFilename()); switch((upload_err=upload->runUpload(purgeUsername(),purgePassword(), @@ -714,8 +716,8 @@ unsigned RDFeed::postFile(RDStation *station,const QString &srcfile,Error *err, int length=file.size(); unsigned cast_id=CreateCast(&destfile,length,time_length); - RDPodcast *cast=new RDPodcast(cast_id); - upload=new RDUpload(station->name(),this); + RDPodcast *cast=new RDPodcast(feed_config,cast_id); + upload=new RDUpload(feed_config,this); upload->setSourceFile(tmpfile); upload->setDestinationUrl(purgeUrl()+"/"+cast->audioFilename()); switch((upload_err=upload->runUpload(purgeUsername(),purgePassword(), @@ -909,4 +911,4 @@ void RDFeed::SetRow(const QString ¶m,const QDateTime &value, (const char *)feed_keyname); q=new RDSqlQuery(sql); delete q; -} \ No newline at end of file +} diff --git a/lib/rdfeed.h b/lib/rdfeed.h index e64af84d..38f9c84b 100644 --- a/lib/rdfeed.h +++ b/lib/rdfeed.h @@ -38,8 +38,8 @@ class RDFeed : public QObject enum Error {ErrorOk=0,ErrorNoFile=1,ErrorCannotOpenFile=2, ErrorUnsupportedType=3,ErrorUploadFailed=4,ErrorGeneral=5}; enum MediaLinkMode {LinkNone=0,LinkDirect=1,LinkCounted=2}; - RDFeed(const QString &keyname,QObject *parent=0); - RDFeed(unsigned id,QObject *parent=0); + RDFeed(const QString &keyname,RDConfig *config,QObject *parent=0); + RDFeed(unsigned id,RDConfig *config,QObject *parent=0); QString keyName() const; unsigned id() const; bool exists() const; @@ -127,7 +127,8 @@ class RDFeed : public QObject const QString &format) const; QString feed_keyname; unsigned feed_id; + RDConfig *feed_config; }; -#endif +#endif // RDFEED_H diff --git a/lib/rdpeaksexport.cpp b/lib/rdpeaksexport.cpp index 13d084cc..8f983279 100644 --- a/lib/rdpeaksexport.cpp +++ b/lib/rdpeaksexport.cpp @@ -123,6 +123,8 @@ RDPeaksExport::ErrorCode RDPeaksExport::runExport(const QString &username, curl_easy_setopt(curl,CURLOPT_POSTFIELDS,(const char *)post); curl_easy_setopt(curl,CURLOPT_TIMEOUT,RD_CURL_TIMEOUT); curl_easy_setopt(curl,CURLOPT_NOPROGRESS,1); + curl_easy_setopt(curl,CURLOPT_USERAGENT, + (const char *)conv_config->userAgent()); //curl_easy_setopt(curl,CURLOPT_VERBOSE,1); switch((curl_err=curl_easy_perform(curl))) { diff --git a/lib/rdpodcast.cpp b/lib/rdpodcast.cpp index f0766f30..086c9cff 100644 --- a/lib/rdpodcast.cpp +++ b/lib/rdpodcast.cpp @@ -47,8 +47,10 @@ int PodcastErrorCallback(CURL *curl,curl_infotype type,char *msg,size_t size, } -RDPodcast::RDPodcast(unsigned id) +RDPodcast::RDPodcast(RDConfig *config,unsigned id) { + podcast_config=config; + RDSqlQuery *q; QString sql; @@ -314,6 +316,8 @@ bool RDPodcast::removeAudio(RDFeed *feed,QString *err_text,bool log_debug) const (const char *)feed->purgePassword()),256); curl_easy_setopt(curl,CURLOPT_USERPWD,userpwd); curl_easy_setopt(curl,CURLOPT_HTTPAUTH,CURLAUTH_ANY); + curl_easy_setopt(curl,CURLOPT_USERAGENT, + (const char *)podcast_config->userAgent()); if(log_debug) { curl_easy_setopt(curl,CURLOPT_VERBOSE,1); curl_easy_setopt(curl,CURLOPT_DEBUGFUNCTION,PodcastErrorCallback); @@ -412,4 +416,4 @@ void RDPodcast::SetRow(const QString ¶m,const QDateTime &value, podcast_id); q=new RDSqlQuery(sql); delete q; -} \ No newline at end of file +} diff --git a/lib/rdpodcast.h b/lib/rdpodcast.h index f89ec2f6..33e89fe7 100644 --- a/lib/rdpodcast.h +++ b/lib/rdpodcast.h @@ -2,7 +2,7 @@ // // Abstract a Rivendell Podcast Entry // -// (C) Copyright 2002-2007,2016 Fred Gleason +// (C) Copyright 2002-2007,2016-2017 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -20,6 +20,7 @@ #include +#include #include #ifndef RDPODCAST_H @@ -29,7 +30,7 @@ class RDPodcast { public: enum Status {StatusPending=1,StatusActive=2,StatusExpired=3}; - RDPodcast(unsigned id); + RDPodcast(RDConfig *config,unsigned id); unsigned id() const; QString keyName() const; bool exists() const; @@ -79,6 +80,7 @@ class RDPodcast void SetRow(const QString ¶m,const QDateTime &datetime,const QString &value) const; QString podcast_keyname; unsigned podcast_id; + RDConfig *podcast_config; }; diff --git a/lib/rdrehash.cpp b/lib/rdrehash.cpp index 2963380f..ccb2d7bc 100644 --- a/lib/rdrehash.cpp +++ b/lib/rdrehash.cpp @@ -94,6 +94,8 @@ RDRehash::ErrorCode RDRehash::runRehash(const QString &username, curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,__RDRehashCallback); curl_easy_setopt(curl,CURLOPT_POST,1); curl_easy_setopt(curl,CURLOPT_POSTFIELDS,(const char *)post); + curl_easy_setopt(curl,CURLOPT_USERAGENT, + (const char *)conv_config->userAgent()); curl_easy_setopt(curl,CURLOPT_TIMEOUT,RD_CURL_TIMEOUT); switch(curl_err=curl_easy_perform(curl)) { diff --git a/lib/rdtrimaudio.cpp b/lib/rdtrimaudio.cpp index 081b6423..c910ea3f 100644 --- a/lib/rdtrimaudio.cpp +++ b/lib/rdtrimaudio.cpp @@ -120,6 +120,8 @@ RDTrimAudio::ErrorCode RDTrimAudio::runTrim(const QString &username, curl_easy_setopt(curl,CURLOPT_WRITEDATA,&conv_xml); curl_easy_setopt(curl,CURLOPT_POST,1); curl_easy_setopt(curl,CURLOPT_POSTFIELDS,(const char *)post); + curl_easy_setopt(curl,CURLOPT_USERAGENT, + (const char *)conv_config->userAgent()); curl_easy_setopt(curl,CURLOPT_TIMEOUT,RD_CURL_TIMEOUT); switch(curl_err=curl_easy_perform(curl)) { diff --git a/lib/rdupload.cpp b/lib/rdupload.cpp index 4891ca3b..5b4948e4 100644 --- a/lib/rdupload.cpp +++ b/lib/rdupload.cpp @@ -2,7 +2,7 @@ // // Upload a File // -// (C) Copyright 2010,2016 Fred Gleason +// (C) Copyright 2010,2016-2017 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -70,9 +70,10 @@ int UploadErrorCallback(CURL *curl,curl_infotype type,char *msg,size_t size, } -RDUpload::RDUpload(const QString &station_name,QObject *parent) +RDUpload::RDUpload(RDConfig *config,QObject *parent) : QObject(parent) { + conv_config=config; conv_aborting=false; } @@ -145,6 +146,8 @@ RDUpload::ErrorCode RDUpload::runUpload(const QString &username, curl_easy_setopt(curl,CURLOPT_PROGRESSFUNCTION,UploadProgressCallback); curl_easy_setopt(curl,CURLOPT_PROGRESSDATA,this); curl_easy_setopt(curl,CURLOPT_NOPROGRESS,0); + curl_easy_setopt(curl,CURLOPT_USERAGENT, + (const char *)conv_config->userAgent()); if(log_debug) { curl_easy_setopt(curl,CURLOPT_VERBOSE,1); curl_easy_setopt(curl,CURLOPT_DEBUGFUNCTION,UploadErrorCallback); diff --git a/lib/rdupload.h b/lib/rdupload.h index 8600bd8e..7fb26e62 100644 --- a/lib/rdupload.h +++ b/lib/rdupload.h @@ -2,7 +2,7 @@ // // Upload a File // -// (C) Copyright 2010,2016 Fred Gleason +// (C) Copyright 2010,2016-2017 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -24,6 +24,8 @@ #include #include +#include + class RDUpload : public QObject { Q_OBJECT; @@ -34,7 +36,7 @@ class RDUpload : public QObject ErrorUnspecified=8,ErrorInvalidUser=9,ErrorAborted=10, ErrorInvalidLogin=11,ErrorRemoteAccess=12, ErrorRemoteConnection=13}; - RDUpload(const QString &station_name,QObject *parent=0); + RDUpload(RDConfig *config,QObject *parent=0); void setSourceFile(const QString &filename); void setDestinationUrl(const QString &url); int totalSteps() const; @@ -58,6 +60,7 @@ class RDUpload : public QObject QUrl conv_dst_url; bool conv_aborting; uint conv_src_size; + RDConfig *conv_config; }; diff --git a/pam_rd/pam_rd.cpp b/pam_rd/pam_rd.cpp index f85601d6..60f7a04b 100644 --- a/pam_rd/pam_rd.cpp +++ b/pam_rd/pam_rd.cpp @@ -243,8 +243,9 @@ PAM_EXTERN int pam_sm_authenticate (pam_handle_t *pamh, } /* Load configs */ - login_config=new RDConfig(); + login_config=new RDConfig(RD_CONF_FILE); login_config->load(); + login_config->setModuleName("pam_rd"); /* kill daemons if requested */ if (ctrl & PAM_RD_KILL_RD_DAEMONS) { diff --git a/rdadmin/edit_feed.cpp b/rdadmin/edit_feed.cpp index 5a045bc2..f9d02811 100644 --- a/rdadmin/edit_feed.cpp +++ b/rdadmin/edit_feed.cpp @@ -45,7 +45,7 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent) setMinimumHeight(sizeHint().height()); setMaximumHeight(sizeHint().height()); - feed_feed=new RDFeed(feed,this); + feed_feed=new RDFeed(feed,admin_config,this); setCaption(tr("Feed: ")+feed); diff --git a/rdadmin/list_feeds.cpp b/rdadmin/list_feeds.cpp index af9198ef..d81c8b78 100644 --- a/rdadmin/list_feeds.cpp +++ b/rdadmin/list_feeds.cpp @@ -232,7 +232,7 @@ void ListFeeds::deleteData() default: break; } - feed=new RDFeed(feedname); + feed=new RDFeed(feedname,admin_config); // // Delete Casts @@ -251,7 +251,7 @@ void ListFeeds::deleteData() while(q->next()) { pd->setProgress(pd->progress()+1); qApp->processEvents(); - cast=new RDPodcast(q->value(0).toUInt()); + cast=new RDPodcast(admin_config,q->value(0).toUInt()); cast->removeAudio(feed,&errs,admin_config->logXloadDebugData()); delete cast; } diff --git a/rdadmin/rdadmin.cpp b/rdadmin/rdadmin.cpp index dd6bc7b8..845feb43 100644 --- a/rdadmin/rdadmin.cpp +++ b/rdadmin/rdadmin.cpp @@ -144,8 +144,9 @@ MainWidget::MainWidget(QWidget *parent) // // Load Configs // - admin_config=new RDConfig(); + admin_config=new RDConfig(RD_CONF_FILE); admin_config->load(); + admin_config->setModuleName("RDAdmin"); str=QString(tr("RDAdmin")+" v"+VERSION+" - Host:"); setCaption(QString(). diff --git a/rdairplay/rdairplay.cpp b/rdairplay/rdairplay.cpp index 44840e70..a6f85a12 100644 --- a/rdairplay/rdairplay.cpp +++ b/rdairplay/rdairplay.cpp @@ -224,8 +224,10 @@ MainWidget::MainWidget(QWidget *parent) // // Load Local Configs // - air_config=new RDConfig(); + air_config=new RDConfig(RD_CONF_FILE); air_config->load(); + air_config->setModuleName("RDAirPlay"); + logfile=air_config->airplayLogname(); str=QString("RDAirPlay")+" v"+VERSION+" - "+tr("Host:"); diff --git a/rdcartslots/rdcartslots.cpp b/rdcartslots/rdcartslots.cpp index a92009fc..1e6b519f 100644 --- a/rdcartslots/rdcartslots.cpp +++ b/rdcartslots/rdcartslots.cpp @@ -60,8 +60,9 @@ MainWidget::MainWidget(QWidget *parent) // // Load Local Configs // - panel_config=new RDConfig(); + panel_config=new RDConfig(RD_CONF_FILE); panel_config->load(); + panel_config->setModuleName("RDCartSlots"); // // Load the command-line arguments diff --git a/rdcastmanager/edit_cast.cpp b/rdcastmanager/edit_cast.cpp index 3c028b57..778e88d3 100644 --- a/rdcastmanager/edit_cast.cpp +++ b/rdcastmanager/edit_cast.cpp @@ -45,8 +45,8 @@ EditCast::EditCast(unsigned cast_id,QWidget *parent) RDSqlQuery *q1; int ypos=0; - cast_cast=new RDPodcast(cast_id); - cast_feed=new RDFeed(cast_cast->feedId()); + cast_cast=new RDPodcast(config,cast_id); + cast_feed=new RDFeed(cast_cast->feedId(),config); cast_status=cast_cast->status(); setCaption(tr("Editing PodCast")); diff --git a/rdcastmanager/list_casts.cpp b/rdcastmanager/list_casts.cpp index 7d363597..9b0ff6b3 100644 --- a/rdcastmanager/list_casts.cpp +++ b/rdcastmanager/list_casts.cpp @@ -95,7 +95,7 @@ ListCasts::ListCasts(unsigned feed_id,QWidget *parent) // // The Feed // - list_feed=new RDFeed(feed_id,this); + list_feed=new RDFeed(feed_id,config,this); // // Progress Dialog @@ -335,7 +335,7 @@ void ListCasts::deleteData() qApp->processEvents(); sleep(1); qApp->processEvents(); - RDPodcast *cast=new RDPodcast(item->id()); + RDPodcast *cast=new RDPodcast(config,item->id()); if(!cast->removeAudio(list_feed,&err_text,config->logXloadDebugData())) { if(QMessageBox::warning(this,tr("Remote Error"), tr("Unable to delete remote audio!\n")+ @@ -513,7 +513,7 @@ void ListCasts::GetEncoderId() RDSqlQuery *q; list_encoder_id=-1; - RDFeed *feed=new RDFeed(list_feed_id); + RDFeed *feed=new RDFeed(list_feed_id,config); int format=feed->uploadFormat(); delete feed; if((format>0)&&(format<100)) { // Built-in format diff --git a/rdcastmanager/pick_report_dates.cpp b/rdcastmanager/pick_report_dates.cpp index a0849b8c..3cc13eed 100644 --- a/rdcastmanager/pick_report_dates.cpp +++ b/rdcastmanager/pick_report_dates.cpp @@ -191,7 +191,7 @@ void PickReportDates::GenerateSubscriptionReport(const QString &keyname, QString sql; RDSqlQuery *q; - RDFeed *feed=new RDFeed(keyname,this); + RDFeed *feed=new RDFeed(keyname,config,this); unsigned total=0; unsigned rss_total=0; unsigned audio_total=0; @@ -253,8 +253,8 @@ void PickReportDates::GenerateEpisodeReport(const QString &keyname, QString sql; RDSqlQuery *q; - RDFeed *feed=new RDFeed(keyname,this); - RDPodcast *cast=new RDPodcast(cast_id); + RDFeed *feed=new RDFeed(keyname,config,this); + RDPodcast *cast=new RDPodcast(config,cast_id); // // Header diff --git a/rdcastmanager/rdcastmanager.cpp b/rdcastmanager/rdcastmanager.cpp index df6a7531..df21163d 100644 --- a/rdcastmanager/rdcastmanager.cpp +++ b/rdcastmanager/rdcastmanager.cpp @@ -96,8 +96,10 @@ MainWidget::MainWidget(QWidget *parent) // // Load Local Configs // - config=new RDConfig(); + config=new RDConfig(RD_CONF_FILE); config->load(); + config->setModuleName("RDCastManager"); + str1=QString("RDCastManager")+" v"+VERSION+" - "+tr("Host"); str2=QString(tr("User: [Unknown]")); setCaption(QString().sprintf("%s: %s, %s",(const char *)str1, diff --git a/rdcatch/rdcatch.cpp b/rdcatch/rdcatch.cpp index 6b6a46a6..24f0456d 100644 --- a/rdcatch/rdcatch.cpp +++ b/rdcatch/rdcatch.cpp @@ -2,7 +2,7 @@ // // The Event Schedule Manager for Rivendell. // -// (C) Copyright 2002-2015 Fred Gleason +// (C) Copyright 2002-2017 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -202,6 +202,7 @@ MainWidget::MainWidget(QWidget *parent) // catch_config=new RDConfig(); catch_config->load(); + catch_config->setModuleName("RDCatch"); str=QString("RDCatch")+" v"+VERSION+" - "+tr("Host")+":"; setCaption(QString().sprintf("%s %s",(const char *)str, diff --git a/rdcatchd/batch.cpp b/rdcatchd/batch.cpp index 42e50532..54a9c5f5 100644 --- a/rdcatchd/batch.cpp +++ b/rdcatchd/batch.cpp @@ -199,7 +199,7 @@ void MainObject::RunDownload(CatchEvent *evt) (const char *)evt->resolvedUrl(), (const char *)evt->tempName(), evt->id())); - RDDownload *conv=new RDDownload(catch_config->stationName(),this); + RDDownload *conv=new RDDownload(catch_config,this); conv->setSourceUrl(RDUrlEscape(evt->resolvedUrl())); conv->setDestinationFile(evt->tempName()); @@ -321,7 +321,7 @@ void MainObject::RunUpload(CatchEvent *evt) (const char *)evt-> resolvedUrl(), evt->id())); - RDUpload *conv=new RDUpload(catch_config->stationName(),this); + RDUpload *conv=new RDUpload(catch_config,this); conv->setSourceFile(evt->tempName()); conv->setDestinationUrl(evt->resolvedUrl()); QString url_username=evt->urlUsername(); diff --git a/rdcatchd/rdcatchd.cpp b/rdcatchd/rdcatchd.cpp index c305e4cb..029ac387 100644 --- a/rdcatchd/rdcatchd.cpp +++ b/rdcatchd/rdcatchd.cpp @@ -133,6 +133,7 @@ MainObject::MainObject(QObject *parent) // catch_config=new RDConfig(); catch_config->load(); + catch_config->setModuleName("rdcatchd"); // // Read Command Options diff --git a/rdlibrary/rdlibrary.cpp b/rdlibrary/rdlibrary.cpp index 0fdc51f6..c2d9f43a 100644 --- a/rdlibrary/rdlibrary.cpp +++ b/rdlibrary/rdlibrary.cpp @@ -181,6 +181,7 @@ MainWidget::MainWidget(QWidget *parent) // lib_config=new RDConfig(); lib_config->load(); + lib_config->setModuleName("RDLibrary"); SetCaption(""); lib_import_path=RDGetHomeDir(); diff --git a/rdlogedit/rdlogedit.cpp b/rdlogedit/rdlogedit.cpp index 1c2822d2..5792de17 100644 --- a/rdlogedit/rdlogedit.cpp +++ b/rdlogedit/rdlogedit.cpp @@ -144,6 +144,8 @@ MainWidget::MainWidget(QWidget *parent) // log_config=new RDConfig(); log_config->load(); + log_config->setModuleName("RDLogEdit"); + str1=QString("RDLogEdit")+"v"+VERSION+" - "+tr("Host"); str2=tr("User")+": ["+tr("Unknown")+"]"; setCaption(QString().sprintf("%s: %s, %s",(const char *)str1, diff --git a/rdlogin/rdlogin.cpp b/rdlogin/rdlogin.cpp index 184b96be..f9a5b9f2 100644 --- a/rdlogin/rdlogin.cpp +++ b/rdlogin/rdlogin.cpp @@ -106,6 +106,7 @@ MainWidget::MainWidget(QWidget *parent) // login_config=new RDConfig(); login_config->load(); + login_config->setModuleName("RDLogin"); str=QString(tr("RDLogin - Station:")); setCaption(QString().sprintf("%s %s",(const char *)str, diff --git a/rdlogmanager/rdlogmanager.cpp b/rdlogmanager/rdlogmanager.cpp index 2bef2238..194b0aaf 100644 --- a/rdlogmanager/rdlogmanager.cpp +++ b/rdlogmanager/rdlogmanager.cpp @@ -122,6 +122,8 @@ MainWidget::MainWidget(QWidget *parent) // log_config=new RDConfig(); log_config->load(); + log_config->setModuleName("RDLogManager"); + setCaption(tr("RDLogManager")); // diff --git a/rdmonitor/rdmonitor.cpp b/rdmonitor/rdmonitor.cpp index 60ed6f08..0f8c6927 100644 --- a/rdmonitor/rdmonitor.cpp +++ b/rdmonitor/rdmonitor.cpp @@ -102,6 +102,8 @@ MainWidget::MainWidget(QWidget *parent) // mon_rdconfig=new RDConfig(); mon_rdconfig->load(); + mon_rdconfig->setModuleName("RDMonitor"); + mon_desktop_widget=new QDesktopWidget(); mon_config=new RDMonitorConfig(); mon_config->load(); diff --git a/rdpanel/rdpanel.cpp b/rdpanel/rdpanel.cpp index 207d2d76..8e01cf24 100644 --- a/rdpanel/rdpanel.cpp +++ b/rdpanel/rdpanel.cpp @@ -122,6 +122,7 @@ MainWidget::MainWidget(QWidget *parent) // panel_config=new RDConfig(); panel_config->load(); + panel_config->setModuleName("RDPanel"); // // Open Database diff --git a/rdrepld/citadelxds.cpp b/rdrepld/citadelxds.cpp index 2038fecc..43db69ec 100644 --- a/rdrepld/citadelxds.cpp +++ b/rdrepld/citadelxds.cpp @@ -40,8 +40,8 @@ #define RD_MAX_CART_NUMBER 999999 -CitadelXds::CitadelXds(ReplConfig *config) - : ReplFactory(config) +CitadelXds::CitadelXds(ReplConfig *repl_config) + : ReplFactory(repl_config) { QString sql; RDSqlQuery *q; @@ -379,7 +379,7 @@ bool CitadelXds::PostCut(const QString &cutname,const QString &filename) // // Upload File // - RDUpload *upload=new RDUpload(rdconfig->stationName()); + RDUpload *upload=new RDUpload(rdconfig); upload->setSourceFile(tempfile); upload->setDestinationUrl(config()->url()+"/"+filename); switch(upload_err=upload->runUpload(config()->urlUsername(), @@ -432,7 +432,7 @@ void CitadelXds::PurgeCuts() path+="/"; } QUrl url(path+q->value(1).toString()); - conv=new RDDelete(); + conv=new RDDelete(rdconfig); conv->setTargetUrl(url); if((conv_err=conv->runDelete(config()->urlUsername(), config()->urlPassword(), diff --git a/rdrepld/citadelxds.h b/rdrepld/citadelxds.h index 340ec15f..ae51ab58 100644 --- a/rdrepld/citadelxds.h +++ b/rdrepld/citadelxds.h @@ -21,12 +21,13 @@ #ifndef CITADELXDS_H #define CITADELXDS_H -#include +#include "globals.h" +#include "replfactory.h" class CitadelXds : public ReplFactory { public: - CitadelXds(ReplConfig *config); + CitadelXds(ReplConfig *repl_config); void startProcess(); bool processCart(const unsigned cartnum); diff --git a/rdrepld/rdrepld.cpp b/rdrepld/rdrepld.cpp index ef1f9aac..9c484115 100644 --- a/rdrepld/rdrepld.cpp +++ b/rdrepld/rdrepld.cpp @@ -71,6 +71,7 @@ MainObject::MainObject(QObject *parent) // rdconfig=new RDConfig(); rdconfig->load(); + rdconfig->setModuleName("rdrepld"); // // Read Command Options diff --git a/rdselect/rdselect.cpp b/rdselect/rdselect.cpp index 293e654f..b3cff03f 100644 --- a/rdselect/rdselect.cpp +++ b/rdselect/rdselect.cpp @@ -148,6 +148,7 @@ MainWidget::MainWidget(QWidget *parent) select_configs.push_back(new RDConfig()); select_configs.back()->setFilename(select_filenames[i]); select_configs.back()->load(); + select_configs.back()->setModuleName("RDSelect"); } // diff --git a/ripcd/ripcd.cpp b/ripcd/ripcd.cpp index b45f9470..759fdb56 100644 --- a/ripcd/ripcd.cpp +++ b/ripcd/ripcd.cpp @@ -103,6 +103,7 @@ MainObject::MainObject(QObject *parent) // ripcd_config=new RDConfig(RD_CONF_FILE); ripcd_config->load(); + ripcd_config->setModuleName("ripcd"); // // Make sure we're the only instance running diff --git a/tests/audio_convert_test.cpp b/tests/audio_convert_test.cpp index dacdb070..63a6269c 100644 --- a/tests/audio_convert_test.cpp +++ b/tests/audio_convert_test.cpp @@ -166,6 +166,7 @@ MainObject::MainObject(QObject *parent) // rdconfig=new RDConfig(); rdconfig->load(); + rdconfig->setModuleName("audio_convert_test"); // // Open Database diff --git a/tests/audio_export_test.cpp b/tests/audio_export_test.cpp index f2378e74..fa77d859 100644 --- a/tests/audio_export_test.cpp +++ b/tests/audio_export_test.cpp @@ -185,6 +185,7 @@ MainObject::MainObject(QObject *parent) // rdconfig=new RDConfig(); rdconfig->load(); + rdconfig->setModuleName("audio_export_test"); // // Open Database diff --git a/tests/audio_import_test.cpp b/tests/audio_import_test.cpp index 2f323eb4..1b10e31a 100644 --- a/tests/audio_import_test.cpp +++ b/tests/audio_import_test.cpp @@ -125,6 +125,7 @@ MainObject::MainObject(QObject *parent) // rdconfig=new RDConfig(); rdconfig->load(); + rdconfig->setModuleName("audio_import_test"); // // Open Database diff --git a/tests/reserve_carts_test.cpp b/tests/reserve_carts_test.cpp index a5f8b055..afd49e60 100644 --- a/tests/reserve_carts_test.cpp +++ b/tests/reserve_carts_test.cpp @@ -87,6 +87,7 @@ MainObject::MainObject(QObject *parent) // config=new RDConfig(); config->load(); + config->setModuleName("reserve_carts_test"); // // Open Database diff --git a/tests/sas_switch_torture.cpp b/tests/sas_switch_torture.cpp index 8e8bef87..30f95ce8 100644 --- a/tests/sas_switch_torture.cpp +++ b/tests/sas_switch_torture.cpp @@ -55,6 +55,7 @@ MainWidget::MainWidget(QWidget *parent) // rd_config=new RDConfig(RD_CONF_FILE); rd_config->load(); + rd_config->setModuleName("sas_switch_torture"); QString err; test_db=RDInitDb(&schema,&err); diff --git a/tests/sas_torture.cpp b/tests/sas_torture.cpp index c24ef3bc..68eb2966 100644 --- a/tests/sas_torture.cpp +++ b/tests/sas_torture.cpp @@ -55,6 +55,8 @@ MainWidget::MainWidget(QWidget *parent) // rd_config=new RDConfig(RD_CONF_FILE); rd_config->load(); + rd_config->setModuleName("sas_torture"); + QString err; test_db=RDInitDb(&schema,&err); if(!test_db) { diff --git a/tests/upload_test.cpp b/tests/upload_test.cpp index be29ed3b..826d43ad 100644 --- a/tests/upload_test.cpp +++ b/tests/upload_test.cpp @@ -72,6 +72,7 @@ MainObject::MainObject(QObject *parent) // rdconfig=new RDConfig(); rdconfig->load(); + rdconfig->setModuleName("upload_test"); // // Open Database @@ -84,7 +85,7 @@ MainObject::MainObject(QObject *parent) exit(256); } - RDUpload *conv=new RDUpload(rdconfig->stationName(),this); + RDUpload *conv=new RDUpload(rdconfig,this); conv->setSourceFile(source_filename); conv->setDestinationUrl(destination_url); printf("Uploading...\n"); diff --git a/utils/rdcheckcuts/rdcheckcuts.cpp b/utils/rdcheckcuts/rdcheckcuts.cpp index 9c659f91..7bfc6f13 100644 --- a/utils/rdcheckcuts/rdcheckcuts.cpp +++ b/utils/rdcheckcuts/rdcheckcuts.cpp @@ -60,6 +60,7 @@ MainObject::MainObject(QObject *parent) // cut_config=new RDConfig(); cut_config->load(); + cut_config->setModuleName("rdcheckcuts"); // // Open Database diff --git a/utils/rdclilogedit/rdclilogedit.cpp b/utils/rdclilogedit/rdclilogedit.cpp index 94755936..65b7db91 100644 --- a/utils/rdclilogedit/rdclilogedit.cpp +++ b/utils/rdclilogedit/rdclilogedit.cpp @@ -62,6 +62,7 @@ MainObject::MainObject(QObject *parent) // edit_config=new RDConfig(); edit_config->load(); + edit_config->setModuleName("rdclilogedit"); // // Open Database diff --git a/utils/rdconvert/rdconvert.cpp b/utils/rdconvert/rdconvert.cpp index 5f012391..b87f61e2 100644 --- a/utils/rdconvert/rdconvert.cpp +++ b/utils/rdconvert/rdconvert.cpp @@ -173,6 +173,7 @@ MainObject::MainObject(QObject *parent) // rdconfig=new RDConfig(); rdconfig->load(); + rdconfig->setModuleName("rdconvert"); // // Open Database diff --git a/utils/rddbcheck/rddbcheck.cpp b/utils/rddbcheck/rddbcheck.cpp index 3ced9e12..51825847 100644 --- a/utils/rddbcheck/rddbcheck.cpp +++ b/utils/rddbcheck/rddbcheck.cpp @@ -137,6 +137,7 @@ MainObject::MainObject(QObject *parent) // rdconfig=new RDConfig(); rdconfig->load(); + rdconfig->setModuleName("rddbcheck"); // // Open Database diff --git a/utils/rddelete/rddelete.cpp b/utils/rddelete/rddelete.cpp index 2383fdbb..d33b938a 100644 --- a/utils/rddelete/rddelete.cpp +++ b/utils/rddelete/rddelete.cpp @@ -97,6 +97,7 @@ MainObject::MainObject(QObject *parent) // del_config=new RDConfig(); del_config->load(); + del_config->setModuleName("rddelete"); // // Open Database diff --git a/utils/rddgimport/rddgimport.cpp b/utils/rddgimport/rddgimport.cpp index 75d9e741..2392c228 100644 --- a/utils/rddgimport/rddgimport.cpp +++ b/utils/rddgimport/rddgimport.cpp @@ -71,6 +71,7 @@ MainWidget::MainWidget(QWidget *parent) // dg_config=new RDConfig(); dg_config->load(); + dg_config->setModuleName("RDDgiImport"); // // Open Database diff --git a/utils/rddiscimport/rddiscimport.cpp b/utils/rddiscimport/rddiscimport.cpp index 0d7eff7a..143da728 100644 --- a/utils/rddiscimport/rddiscimport.cpp +++ b/utils/rddiscimport/rddiscimport.cpp @@ -74,6 +74,7 @@ MainWidget::MainWidget(QWidget *parent) // dg_config=new RDConfig(); dg_config->load(); + dg_config->setModuleName("RDDiscImport"); // // Get Temporary File diff --git a/utils/rdexport/rdexport.cpp b/utils/rdexport/rdexport.cpp index de86aaff..9a36f7a1 100644 --- a/utils/rdexport/rdexport.cpp +++ b/utils/rdexport/rdexport.cpp @@ -205,6 +205,7 @@ MainObject::MainObject(QObject *parent) // export_config=new RDConfig(); export_config->load(); + export_config->setModuleName("rdexport"); // // Open Database diff --git a/utils/rdgpimon/rdgpimon.cpp b/utils/rdgpimon/rdgpimon.cpp index b926228e..41b56311 100644 --- a/utils/rdgpimon/rdgpimon.cpp +++ b/utils/rdgpimon/rdgpimon.cpp @@ -89,6 +89,7 @@ MainWidget::MainWidget(QWidget *parent) // gpi_config=new RDConfig(); gpi_config->load(); + gpi_config->setModuleName("RDGpiMon"); // // Open Database diff --git a/utils/rdimport/rdimport.cpp b/utils/rdimport/rdimport.cpp index 33d22589..d1837f3a 100644 --- a/utils/rdimport/rdimport.cpp +++ b/utils/rdimport/rdimport.cpp @@ -420,6 +420,7 @@ MainObject::MainObject(QObject *parent) // import_config=new RDConfig(); import_config->load(); + import_config->setModuleName("rdimport"); // // Open Database diff --git a/utils/rdmaint/rdmaint.cpp b/utils/rdmaint/rdmaint.cpp index 833a4be0..968cc344 100644 --- a/utils/rdmaint/rdmaint.cpp +++ b/utils/rdmaint/rdmaint.cpp @@ -82,6 +82,7 @@ MainObject::MainObject(QObject *parent) // maint_config=new RDConfig(); maint_config->load(); + maint_config->setModuleName("rdmaint"); // // Open Database diff --git a/utils/rdmarkerset/rdmarkerset.cpp b/utils/rdmarkerset/rdmarkerset.cpp index d47e0db4..16a64f29 100644 --- a/utils/rdmarkerset/rdmarkerset.cpp +++ b/utils/rdmarkerset/rdmarkerset.cpp @@ -129,6 +129,7 @@ MainObject::MainObject(QObject *parent) // set_config=new RDConfig(); set_config->load(); + set_config->setModuleName("rdmarkerset"); // // Open Database diff --git a/utils/rdpurgecasts/rdpurgecasts.cpp b/utils/rdpurgecasts/rdpurgecasts.cpp index 5136ff38..216d9109 100644 --- a/utils/rdpurgecasts/rdpurgecasts.cpp +++ b/utils/rdpurgecasts/rdpurgecasts.cpp @@ -76,6 +76,7 @@ MainObject::MainObject(QObject *parent) // purge_config=new RDConfig(); purge_config->load(); + purge_config->setModuleName("rdpurgecasts"); // // Open Database @@ -128,8 +129,8 @@ void MainObject::PurgeCast(unsigned id) where PODCASTS.ID=%u",id); q=new RDSqlQuery(sql); while(q->next()) { - feed=new RDFeed(q->value(0).toUInt()); - cast=new RDPodcast(id); + feed=new RDFeed(q->value(0).toUInt(),purge_config); + cast=new RDPodcast(purge_config,id); cast->removeAudio(feed,&errs,purge_config->logXloadDebugData()); if(purge_verbose) { printf("purging cast: ID=%d,cmd=\"%s\"\n",id,(const char *)cmd); diff --git a/utils/rdrender/rdrender.cpp b/utils/rdrender/rdrender.cpp index 295c5c7a..8f287234 100644 --- a/utils/rdrender/rdrender.cpp +++ b/utils/rdrender/rdrender.cpp @@ -248,6 +248,7 @@ MainObject::MainObject(QObject *parent) // render_config=new RDConfig(); render_config->load(); + render_config->setModuleName("rdrender"); // // Open Database diff --git a/utils/rdrevert/rdrevert.cpp b/utils/rdrevert/rdrevert.cpp index 4292420f..e6f7dcc6 100644 --- a/utils/rdrevert/rdrevert.cpp +++ b/utils/rdrevert/rdrevert.cpp @@ -85,6 +85,7 @@ MainObject::MainObject(QObject *parent) // rev_config=new RDConfig(); rev_config->load(); + rev_config->setModuleName("rdrevert"); // // Open Database diff --git a/utils/sas_shim/sas_shim.cpp b/utils/sas_shim/sas_shim.cpp index 2eac3f5d..671ef135 100644 --- a/utils/sas_shim/sas_shim.cpp +++ b/utils/sas_shim/sas_shim.cpp @@ -56,6 +56,7 @@ MainObject::MainObject(QObject *parent) rd_config=new RDConfig(RD_CONF_FILE); rd_config->load(); + rd_config->setModuleName("sas_shim"); // // Open Database diff --git a/web/rdcastmanager/rdcastmanager.cpp b/web/rdcastmanager/rdcastmanager.cpp index dadc75bd..57a705ef 100644 --- a/web/rdcastmanager/rdcastmanager.cpp +++ b/web/rdcastmanager/rdcastmanager.cpp @@ -63,6 +63,7 @@ MainObject::MainObject(QObject *parent) // cast_config=new RDConfig(); cast_config->load(); + cast_config->setModuleName("rdcastmanager.cgi"); // // Open Database @@ -803,7 +804,7 @@ void MainObject::ServeEditCast(int cast_id) QDateTime origin_datetime=RDUtcToLocal(q->value(10).toDateTime()); QDateTime effective_datetime=RDUtcToLocal(q->value(12).toDateTime()); - RDFeed *feed=new RDFeed(cast_feed_id); + RDFeed *feed=new RDFeed(cast_feed_id,cast_config); printf("Content-type: text/html\n\n"); printf("\n"); @@ -1450,8 +1451,8 @@ void MainObject::DeleteCast() Exit(0); } - RDFeed *feed=new RDFeed(cast_feed_id); - RDPodcast *cast=new RDPodcast(cast_cast_id); + RDFeed *feed=new RDFeed(cast_feed_id,cast_config); + RDPodcast *cast=new RDPodcast(cast_config,cast_cast_id); cast->removeAudio(feed,&errs,cast_config->logXloadDebugData()); delete cast; delete feed; @@ -1482,7 +1483,7 @@ void MainObject::ServeSubscriptionReport() Exit(0); } cast_cast_id=-1; - RDFeed *feed=new RDFeed(cast_key_name,this); + RDFeed *feed=new RDFeed(cast_key_name,cast_config,this); printf("Content-type: text/html\n\n"); printf("\n"); @@ -1616,7 +1617,7 @@ void MainObject::PostEpisode() Exit(0); } RDFeed::Error err; - RDFeed *feed=new RDFeed(cast_feed_id,this); + RDFeed *feed=new RDFeed(cast_feed_id,cast_config,this); int cast_id=feed->postFile(station,media_file,&err, cast_config->logXloadDebugData(),cast_config); delete feed; @@ -1650,7 +1651,7 @@ void MainObject::ServeEpisodeReport() RDCgiError("Missing CAST_ID"); Exit(0); } - RDPodcast *cast=new RDPodcast(cast_cast_id); + RDPodcast *cast=new RDPodcast(cast_config,cast_cast_id); printf("Content-type: text/html\n\n"); printf("\n"); diff --git a/web/rdfeed/rdfeed_script.cpp b/web/rdfeed/rdfeed_script.cpp index d5ffd97e..1c4749d8 100644 --- a/web/rdfeed/rdfeed_script.cpp +++ b/web/rdfeed/rdfeed_script.cpp @@ -85,8 +85,9 @@ MainObject::MainObject(QObject *parent) // // Read Configuration // - RDConfig *config=new RDConfig(); + config=new RDConfig(); config->load(); + config->setModuleName("rdfeed.cgi"); // // Determine Range @@ -279,7 +280,7 @@ QString MainObject::ResolveChannelWildcards(RDSqlQuery *chan_q) QString MainObject::ResolveItemWildcards(const QString &keyname, RDSqlQuery *item_q,RDSqlQuery *chan_q) { - RDFeed *feed=new RDFeed(keyname); + RDFeed *feed=new RDFeed(keyname,config); QString ret=chan_q->value(11).toString(); ret.replace("%ITEM_TITLE%",RDXmlEscape(item_q->value(0).toString())); ret.replace("%ITEM_DESCRIPTION%", diff --git a/web/rdfeed/rdfeed_script.h b/web/rdfeed/rdfeed_script.h index 55ad9d0b..286ddb13 100644 --- a/web/rdfeed/rdfeed_script.h +++ b/web/rdfeed/rdfeed_script.h @@ -24,6 +24,7 @@ #include #include +#include #include class MainObject : public QObject @@ -41,6 +42,7 @@ class MainObject : public QObject unsigned cast_id); bool ShouldCount(const QString &hdr); void Redirect(const QString &url); + RDConfig *config; }; diff --git a/web/rdxport/rdxport.cpp b/web/rdxport/rdxport.cpp index af1ba3f8..ab73130b 100644 --- a/web/rdxport/rdxport.cpp +++ b/web/rdxport/rdxport.cpp @@ -52,6 +52,7 @@ Xport::Xport(QObject *parent) // xport_config=new RDConfig(); xport_config->load(); + xport_config->setModuleName("rdxport.cgi"); // // Drop root permissions