2020-08-07 Fred Gleason <fredg@paravelsystems.com>

* Added a 'SYSTEM.RSS_PROCESSOR_STATION' field to the database.
	* Added a 'PODCASTS.EXPIRATION_DATETIME' field to the database.
	* Dropped the 'PODCASTS.SHELF_LIFE' field from the database.
	* Incremented the database version to 329.
	* Modified convention to use local system time for all podcast
	components.
	* Added 'RDPodcast::expirationDateTime()' and
	'RDPodcast::setExpirationDateTime()' methods.
	* Removed 'RDPodcast::shelfLife()' and 'RDPodcast::setShelfLife()'
	methods.
	* Added an rdrssd(8) daemon.
	* Removed the rdpurgecasts(8) utility.
	* Added 'RDSystem::rssProcessorStation()' and
	'RDSystem::setRssProcessorStation()' methods.
	* Added a 'Process RSS Updates' control to the 'System-Wide Settings'
	dialog in rdadmin(1).

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason
2020-08-07 17:06:50 -04:00
parent 7d62e200ba
commit e0af63d3e1
45 changed files with 818 additions and 438 deletions

View File

@@ -2,7 +2,7 @@
//
// Rivendell Maintenance Routines
//
// (C) Copyright 2008-2019 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2008-2020 Fred Gleason <fredg@paravelsystems.com>
//
// 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
@@ -83,11 +83,6 @@ void MainObject::RunSystemMaintRoutine()
args.push_back("--system");
RunEphemeralProcess(RDSERVICE_SYSTEMMAINT_ID,
QString(RD_PREFIX)+"/bin/rdmaint",args);
args.clear();
RunEphemeralProcess(RDSERVICE_PURGECASTS_ID,
QString(RD_PREFIX)+"/bin/rdpurgecasts",args);
rda->syslog(LOG_INFO,"ran system-wide maintenance routines");
}

View File

@@ -2,7 +2,7 @@
//
// Rivendell Services Manager
//
// (C) Copyright 2018 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2018-2020 Fred Gleason <fredg@paravelsystems.com>
//
// 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
@@ -34,9 +34,9 @@
#define RDSERVICE_RDPADENGINED_ID 4
#define RDSERVICE_RDVAIRPLAYD_ID 5
#define RDSERVICE_RDREPLD_ID 6
#define RDSERVICE_LOCALMAINT_ID 7
#define RDSERVICE_SYSTEMMAINT_ID 8
#define RDSERVICE_PURGECASTS_ID 9
#define RDSERVICE_RDRSSD_ID 7
#define RDSERVICE_LOCALMAINT_ID 8
#define RDSERVICE_SYSTEMMAINT_ID 9
#define RDSERVICE_LAST_ID 10
#define RDSERVICE_FIRST_DROPBOX_ID 100
@@ -46,7 +46,8 @@ class MainObject : public QObject
public:
enum StartupTarget {TargetCaed=0,TargetRipcd=1,TargetRdcatchd=2,
TargetRdpadd=3,TargetRdpadengined=4,
TargetRdvairplayd=5,TargetRdrepld=6,TargetAll=7};
TargetRdvairplayd=5,TargetRdrepld=6,
TargetRdrssd=7,TargetAll=8};
MainObject(QObject *parent=0);
private slots:

View File

@@ -40,6 +40,7 @@ bool MainObject::Startup(QString *err_msg)
//
// Kill Stale Programs
//
KillProgram("rdrssd");
KillProgram("rdrepld");
KillProgram("rdvairplayd");
KillProgram("rdpadengined");
@@ -180,6 +181,31 @@ bool MainObject::Startup(QString *err_msg)
return true;
}
//
// rdrssd(8)
//
sql=QString("select RSS_PROCESSOR_STATION from SYSTEM");
q=new RDSqlQuery(sql);
if(q->first()) {
if(q->value(0).toString().toLower()==rda->station()->name().toLower()) {
svc_processes[RDSERVICE_RDRSSD_ID]=
new RDProcess(RDSERVICE_RDRSSD_ID,this);
args.clear();
svc_processes[RDSERVICE_RDRSSD_ID]->
start(QString(RD_PREFIX)+"/sbin/rdrssd",args);
if(!svc_processes[RDSERVICE_RDRSSD_ID]->process()->waitForStarted(-1)) {
*err_msg=tr("unable to start rdrssd(8)")+": "+
svc_processes[RDSERVICE_RDRSSD_ID]->errorText();
return false;
}
}
if(svc_startup_target==MainObject::TargetRdrssd) {
fprintf(stderr,"Startup target rdrssd(8) reached\n");
return true;
}
}
delete q;
if(!StartDropboxes(err_msg)) {
return false;
}
@@ -352,6 +378,9 @@ QString MainObject::TargetCommandString(MainObject::StartupTarget target) const
case MainObject::TargetRdrepld:
return QString("--end-startup-after-rdrepld");
case MainObject::TargetRdrssd:
return QString("--end-startup-after-rdrssd");
case MainObject::TargetAll:
break;
}