mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-04-09 22:43:11 +02:00
2018-11-01 Fred Gleason <fredg@paravelsystems.com>
* Modified rdselect_helper(8) to use the automounter for managing audio store mounts.
This commit is contained in:
parent
171246c81f
commit
f9e0e152ba
@ -17952,3 +17952,6 @@
|
|||||||
* Incremented the package version to 3.0.0alpha01.
|
* Incremented the package version to 3.0.0alpha01.
|
||||||
2018-10-30 Patrick Linstruth <patrick@deltecent.com>
|
2018-10-30 Patrick Linstruth <patrick@deltecent.com>
|
||||||
* Added display of warnings from rddbmgr(8) to rddbconfig(8).
|
* Added display of warnings from rddbmgr(8) to rddbconfig(8).
|
||||||
|
2018-11-01 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Modified rdselect_helper(8) to use the automounter for managing
|
||||||
|
audio store mounts.
|
||||||
|
@ -681,6 +681,10 @@
|
|||||||
<source>Open RDAdmin->ManageHosts->Add to create one.</source>
|
<source>Open RDAdmin->ManageHosts->Add to create one.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unable to update automounter configuration</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RDAddCart</name>
|
<name>RDAddCart</name>
|
||||||
|
@ -677,6 +677,10 @@
|
|||||||
<source>Open RDAdmin->ManageHosts->Add to create one.</source>
|
<source>Open RDAdmin->ManageHosts->Add to create one.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unable to update automounter configuration</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RDAddCart</name>
|
<name>RDAddCart</name>
|
||||||
|
@ -677,6 +677,10 @@
|
|||||||
<source>Open RDAdmin->ManageHosts->Add to create one.</source>
|
<source>Open RDAdmin->ManageHosts->Add to create one.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unable to update automounter configuration</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RDAddCart</name>
|
<name>RDAddCart</name>
|
||||||
|
@ -647,6 +647,10 @@
|
|||||||
<source>Open RDAdmin->ManageHosts->Add to create one.</source>
|
<source>Open RDAdmin->ManageHosts->Add to create one.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unable to update automounter configuration</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RDAddCart</name>
|
<name>RDAddCart</name>
|
||||||
|
@ -677,6 +677,10 @@
|
|||||||
<source>Open RDAdmin->ManageHosts->Add to create one.</source>
|
<source>Open RDAdmin->ManageHosts->Add to create one.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unable to update automounter configuration</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RDAddCart</name>
|
<name>RDAddCart</name>
|
||||||
|
@ -677,6 +677,10 @@
|
|||||||
<source>Open RDAdmin->ManageHosts->Add to create one.</source>
|
<source>Open RDAdmin->ManageHosts->Add to create one.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unable to update automounter configuration</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RDAddCart</name>
|
<name>RDAddCart</name>
|
||||||
|
@ -677,6 +677,10 @@
|
|||||||
<source>Open RDAdmin->ManageHosts->Add to create one.</source>
|
<source>Open RDAdmin->ManageHosts->Add to create one.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unable to update automounter configuration</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RDAddCart</name>
|
<name>RDAddCart</name>
|
||||||
|
@ -814,6 +814,10 @@ QString RDConfig::rdselectExitCodeText(RDSelectExitCode code)
|
|||||||
ret=QObject::tr("mount(8) crashed");
|
ret=QObject::tr("mount(8) crashed");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case RDConfig::RDSelectCantAccessAutomount:
|
||||||
|
ret=QObject::tr("Unable to update automounter configuration");
|
||||||
|
break;
|
||||||
|
|
||||||
case RDConfig::RDSelectLast:
|
case RDConfig::RDSelectLast:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,8 @@ class RDConfig
|
|||||||
RDSelectSymlinkFailed=11,
|
RDSelectSymlinkFailed=11,
|
||||||
RDSelectInvalidName=12,
|
RDSelectInvalidName=12,
|
||||||
RDSelectMountCrashed=13,
|
RDSelectMountCrashed=13,
|
||||||
RDSelectLast=14};
|
RDSelectCantAccessAutomount=14,
|
||||||
|
RDSelectLast=15};
|
||||||
RDConfig();
|
RDConfig();
|
||||||
RDConfig(const QString &filename);
|
RDConfig(const QString &filename);
|
||||||
QString filename() const;
|
QString filename() const;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
## Makefile.am
|
## Makefile.am
|
||||||
##
|
##
|
||||||
## (C) Copyright 2012,2016-2018 Fred Gleason <fredg@paravelsystems.com>
|
## (C) Copyright 2012-2018 Fred Gleason <fredg@paravelsystems.com>
|
||||||
##
|
##
|
||||||
## This program is free software; you can redistribute it and/or modify
|
## 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
|
## it under the terms of the GNU General Public License version 2 as
|
||||||
@ -30,9 +30,13 @@ moc_%.cpp: %.h
|
|||||||
install-exec-hook:
|
install-exec-hook:
|
||||||
mkdir -p $(DESTDIR)$(prefix)/share/rivendell
|
mkdir -p $(DESTDIR)$(prefix)/share/rivendell
|
||||||
cp rdselect_*.qm $(DESTDIR)$(prefix)/share/rivendell
|
cp rdselect_*.qm $(DESTDIR)$(prefix)/share/rivendell
|
||||||
|
mkdir -p $(DESTDIR)/etc/auto.master.d
|
||||||
|
cp rd.audiostore.autofs $(DESTDIR)/etc/auto.master.d/
|
||||||
|
touch $(DESTDIR)/etc/auto.rd.audiostore
|
||||||
|
|
||||||
uninstall-local:
|
uninstall-local:
|
||||||
rm -f $(DESTDIR)$(prefix)/share/rivendell/rdselect_*.qm
|
rm -f $(DESTDIR)$(prefix)/share/rivendell/rdselect_*.qm
|
||||||
|
rm -f $(DESTDIR)/etc/auto.master.d/rd.audiostore.autofs
|
||||||
|
|
||||||
all:
|
all:
|
||||||
lupdate-qt4 rdselect.pro
|
lupdate-qt4 rdselect.pro
|
||||||
@ -46,7 +50,8 @@ nodist_rdselect_SOURCES = moc_rdselect.cpp
|
|||||||
|
|
||||||
rdselect_LDADD = @LIB_RDLIBS@ @LIBVORBIS@ @QT4_LIBS@ -lQt3Support
|
rdselect_LDADD = @LIB_RDLIBS@ @LIBVORBIS@ @QT4_LIBS@ -lQt3Support
|
||||||
|
|
||||||
EXTRA_DIST = rdselect.pro\
|
EXTRA_DIST = rd.audiostore.autofs\
|
||||||
|
rdselect.pro\
|
||||||
rdselect_cs.ts\
|
rdselect_cs.ts\
|
||||||
rdselect_de.ts\
|
rdselect_de.ts\
|
||||||
rdselect_es.ts\
|
rdselect_es.ts\
|
||||||
|
1
rdselect/rd.audiostore.autofs
Normal file
1
rdselect/rd.audiostore.autofs
Normal file
@ -0,0 +1 @@
|
|||||||
|
/- /etc/auto.rd.audiostore
|
@ -45,7 +45,7 @@ Requires: rivendell = @VERSION@, rivendell-webapi = @VERSION@
|
|||||||
|
|
||||||
%package select
|
%package select
|
||||||
Summary: The RDSelect system selector tool for Rivendell.
|
Summary: The RDSelect system selector tool for Rivendell.
|
||||||
Requires: rivendell = @VERSION@
|
Requires: rivendell = @VERSION@, autofs
|
||||||
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@ -141,6 +141,7 @@ cp scripts/rd_backup_system.sh $RPM_BUILD_ROOT/@DOC_PATH@/scripts/
|
|||||||
cp scripts/rd_restore_system.sh $RPM_BUILD_ROOT/@DOC_PATH@/scripts/
|
cp scripts/rd_restore_system.sh $RPM_BUILD_ROOT/@DOC_PATH@/scripts/
|
||||||
cp scripts/engine_conv.py $RPM_BUILD_ROOT/@DOC_PATH@
|
cp scripts/engine_conv.py $RPM_BUILD_ROOT/@DOC_PATH@
|
||||||
cp scripts/init_template_host.py $RPM_BUILD_ROOT/@DOC_PATH@
|
cp scripts/init_template_host.py $RPM_BUILD_ROOT/@DOC_PATH@
|
||||||
|
rm -f $RPM_BUILD_ROOT/etc/auto.rd.audiostore
|
||||||
|
|
||||||
|
|
||||||
%post
|
%post
|
||||||
@ -467,10 +468,20 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%files select
|
%files select
|
||||||
@LOCAL_PREFIX@/bin/rdselect
|
@LOCAL_PREFIX@/bin/rdselect
|
||||||
%attr(4755,root,root) @LOCAL_PREFIX@/bin/rdselect_helper
|
%attr(4755,root,root) @LOCAL_PREFIX@/bin/rdselect_helper
|
||||||
|
/etc/auto.master.d/rd.audiostore.autofs
|
||||||
@LOCAL_PREFIX@/bin/rdmonitor
|
@LOCAL_PREFIX@/bin/rdmonitor
|
||||||
/etc/X11/xinit/xinitrc.d/start-rdmonitor.sh
|
/etc/X11/xinit/xinitrc.d/start-rdmonitor.sh
|
||||||
|
|
||||||
|
|
||||||
|
%post select
|
||||||
|
touch /etc/auto.rd.audiostore
|
||||||
|
systemctl restart autofs
|
||||||
|
|
||||||
|
|
||||||
|
%postun select
|
||||||
|
systemctl restart autofs
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* @RPM_DATESTAMP@ Fred Gleason <fredg@paravelsystems.com> - @VERSION@-@RPM_RELEASE@
|
* @RPM_DATESTAMP@ Fred Gleason <fredg@paravelsystems.com> - @VERSION@-@RPM_RELEASE@
|
||||||
-- Autogenerated from build tree.
|
-- Autogenerated from build tree.
|
||||||
|
@ -96,38 +96,35 @@ void MainObject::Startup()
|
|||||||
{
|
{
|
||||||
QStringList args;
|
QStringList args;
|
||||||
QProcess *proc=NULL;
|
QProcess *proc=NULL;
|
||||||
|
FILE *f=NULL;
|
||||||
|
|
||||||
//
|
|
||||||
// Mount the audio store
|
|
||||||
//
|
|
||||||
if(!helper_config->audioStoreMountSource().isEmpty()) {
|
if(!helper_config->audioStoreMountSource().isEmpty()) {
|
||||||
args.clear();
|
//
|
||||||
if(!helper_config->audioStoreMountType().isEmpty()) {
|
// Stop the Automounter
|
||||||
args.push_back("-t");
|
//
|
||||||
args.push_back(helper_config->audioStoreMountType());
|
ControlAutomounter("stop");
|
||||||
|
|
||||||
|
//
|
||||||
|
// Update the Automounter
|
||||||
|
//
|
||||||
|
if((f=fopen(RDSELECT_AUTOMOUNT_CONFIG,"w"))==NULL) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"rdselect_helper: unable to open automount configuration \"%s\" [%s]\n",
|
||||||
|
RDSELECT_AUTOMOUNT_CONFIG,
|
||||||
|
strerror(errno));
|
||||||
|
exit(RDConfig::RDSelectCantAccessAutomount);
|
||||||
}
|
}
|
||||||
args.push_back("-o");
|
fprintf(f,"%s",RDSELECT_AUTOMOUNT_WARNING);
|
||||||
if(helper_config->audioStoreMountOptions().isEmpty()) {
|
fprintf(f,"%s\t-fstype=%s\t%s\n",
|
||||||
args.push_back("defaults");
|
(const char *)helper_config->audioRoot().toUtf8(),
|
||||||
}
|
(const char *)helper_config->audioStoreMountType().toUtf8(),
|
||||||
else {
|
(const char *)helper_config->audioStoreMountSource().toUtf8());
|
||||||
args.push_back(helper_config->audioStoreMountOptions());
|
fclose(f);
|
||||||
}
|
|
||||||
args.push_back(helper_config->audioStoreMountSource());
|
//
|
||||||
args.push_back(helper_config->audioRoot());
|
// Restart the Automounter
|
||||||
proc=new QProcess(this);
|
//
|
||||||
proc->start("/bin/mount",args);
|
ControlAutomounter("start");
|
||||||
proc->waitForFinished();
|
|
||||||
if(proc->exitStatus()!=QProcess::NormalExit) {
|
|
||||||
fprintf(stderr,"rdselect_helper: mount(8) command crashed\n");
|
|
||||||
exit(RDConfig::RDSelectMountCrashed);
|
|
||||||
}
|
|
||||||
if(proc->exitCode()!=0) {
|
|
||||||
fprintf(stderr,"rdselect_helper: mount exited with error code %d\n",
|
|
||||||
proc->exitCode());
|
|
||||||
exit(RDConfig::RDSelectAudioMountFailed);
|
|
||||||
}
|
|
||||||
delete proc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -160,6 +157,7 @@ void MainObject::Startup()
|
|||||||
void MainObject::Shutdown()
|
void MainObject::Shutdown()
|
||||||
{
|
{
|
||||||
QStringList args;
|
QStringList args;
|
||||||
|
FILE *f=NULL;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Stop Rivendell Service
|
// Stop Rivendell Service
|
||||||
@ -179,6 +177,11 @@ void MainObject::Shutdown()
|
|||||||
}
|
}
|
||||||
delete proc;
|
delete proc;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Stop the Automounter
|
||||||
|
//
|
||||||
|
ControlAutomounter("stop");
|
||||||
|
|
||||||
//
|
//
|
||||||
// Unmount the audio store
|
// Unmount the audio store
|
||||||
//
|
//
|
||||||
@ -190,6 +193,46 @@ void MainObject::Shutdown()
|
|||||||
exit(RDConfig::RDSelectAudioUnmountFailed);
|
exit(RDConfig::RDSelectAudioUnmountFailed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Update the Automounter
|
||||||
|
//
|
||||||
|
if((f=fopen(RDSELECT_AUTOMOUNT_CONFIG,"w"))==NULL) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"rdselect_helper: unable to open automount configuration \"%s\" [%s]\n",
|
||||||
|
RDSELECT_AUTOMOUNT_CONFIG,
|
||||||
|
strerror(errno));
|
||||||
|
exit(RDConfig::RDSelectCantAccessAutomount);
|
||||||
|
}
|
||||||
|
fprintf(f,"%s",RDSELECT_AUTOMOUNT_WARNING);
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Restart the Automounter
|
||||||
|
//
|
||||||
|
ControlAutomounter("start");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainObject::ControlAutomounter(const QString &cmd)
|
||||||
|
{
|
||||||
|
QStringList args;
|
||||||
|
|
||||||
|
args.push_back(cmd);
|
||||||
|
args.push_back("autofs");
|
||||||
|
QProcess *proc=new QProcess(this);
|
||||||
|
proc->start("/bin/systemctl",args);
|
||||||
|
proc->waitForFinished();
|
||||||
|
if(proc->exitStatus()!=QProcess::NormalExit) {
|
||||||
|
fprintf(stderr,"rdselect_helper: systemctl(8) crashed\n");
|
||||||
|
exit(RDConfig::RDSelectSystemctlCrashed);
|
||||||
|
}
|
||||||
|
if(proc->exitCode()!=0) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"rdselect_helper: automounter control failed [systemctl exit code: %d]\n",
|
||||||
|
proc->exitCode());
|
||||||
|
}
|
||||||
|
delete proc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,6 +29,9 @@
|
|||||||
|
|
||||||
#include "rdconfig.h"
|
#include "rdconfig.h"
|
||||||
|
|
||||||
|
#define RDSELECT_AUTOMOUNT_CONFIG "/etc/auto.rd.audiostore"
|
||||||
|
#define RDSELECT_AUTOMOUNT_WARNING "# THE CONTENTS OF THIS FILE ARE MANAGED BY RIVENDELL'S RDSELECT SYSTEM!\n# DO NOT HAND EDIT!\n\n"
|
||||||
|
|
||||||
class MainObject : public QObject
|
class MainObject : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT;
|
Q_OBJECT;
|
||||||
@ -38,6 +41,7 @@ class MainObject : public QObject
|
|||||||
private:
|
private:
|
||||||
void Startup();
|
void Startup();
|
||||||
void Shutdown();
|
void Shutdown();
|
||||||
|
void ControlAutomounter(const QString &cmd);
|
||||||
bool ProcessActive(const QStringList &cmds) const;
|
bool ProcessActive(const QStringList &cmds) const;
|
||||||
bool ModulesActive() const;
|
bool ModulesActive() const;
|
||||||
QString helper_config_filename;
|
QString helper_config_filename;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user