diff options
Diffstat (limited to 'main/hylafax/hylafax.initd')
-rw-r--r-- | main/hylafax/hylafax.initd | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/main/hylafax/hylafax.initd b/main/hylafax/hylafax.initd new file mode 100644 index 0000000000..d5c5df37f4 --- /dev/null +++ b/main/hylafax/hylafax.initd @@ -0,0 +1,176 @@ +#!/sbin/openrc-run +# Copyright 1999-2008 Gentoo Foundation +# Author Geaaru +# Distributed under the terms of the GNU General Public License v2 + +opts="zap" + +depend() { + use lo +} + +checkconfig() { + ebegin "Check hylafax server configuration..." + + if [ x$spooldir == x ] ; then + eerror "No spooldir directory defined" + return 1 + else + SPOOL=$spooldir + einfo "Use spool directory $SPOOL" + fi + + if [ x$mode == x ] ; then + eerror "No mode defined" + return 1 + fi + + if [ ! -f $SPOOL/etc/setup.cache ] ; then + eerror "No $SPOOL/etc/setup.cache file founded. Use faxsetup command" + return 1 + fi + + if [[ x$hfaxd == x || ! -f $hfaxd ]] ; then + eerror "No hfaxd daemon founded" + return 1 + fi + + if [[ x$faxq == x || ! -f $faxq ]] ; then + eerror "No faxq program founded" + return 1 + fi + + if [[ x$faxgetty == x || ! -f $faxgetty ]] ; then + eerror "No faxgetty program founded" + return 1 + fi + + if [ x$faxbind == x ] ; then + eerror "No binding address supply" + return 1 + fi + + if [ x$piddir == x ] ; then + PIDDIR=$SPOOL + else + PIDDIR=$piddir + fi + + + hfaxd_args="-l $faxbind -q $SPOOL" + + case $mode in + newproto) + if [[ x$faxport == x ]] ; then + eerror "No faxport defined" + return 1 + fi + hfaxd_args="$hfaxd_args -i $faxport" + ;; + oldproto) + if [[ x$oldprotoport == x ]] ; then + eerror "No oldprotoport defined" + return 1 + fi + hfaxd_args="$hfaxd_args -o $oldprotoport" + ;; + snpp) + if [[ x$snppport == x ]] ; then + eerror "No snppport defined" + return 1 + fi + hfaxd_args="$hfaxd_args -s $snppport" + ;; + any) + if [[ x$faxport == x || x$snppport == x || x$oldprotoport == x ]] ; then + eerror "No port data founded for old services" + return 1 + fi + hfaxd_args="$hfaxd_args -i $faxport -s $snppport -o $oldprotoport" + ;; + *) + eerror "Invalid mode" + return 1 + ;; + + esac + + faxq_args="-q $SPOOL" + + # workaround for manage save of pidfile with start-stop-daemon + hfaxd_args="$hfaxd_args -d" + faxq_args="$faxq_args -D" + + return 0 +} + +start() { + local result + + checkconfig || return 1 + + ebegin "Starting HylaFAX server daemons" + + start_faxq + result=$? + + if [ $result -ne 0 ] ; then + eerror "Error on start $faxq daemon" + return 1 + fi + + start_hfaxd + result=$? + + eend $result +} + +start_hfaxd() { + local arguments="--start \ + --make-pidfile --pidfile $PIDDIR/hfaxd.pid" + + einfo "Starting $hfaxd with args $hfaxd_args" + + start-stop-daemon -b ${arguments} --exec $hfaxd -- $hfaxd_args > /dev/null 2>&1 + + return $?; +} + +start_faxq() { + local arguments="--start \ + --make-pidfile --pidfile $PIDDIR/faxq.pid" + einfo "Starting $faxq ... " + + start-stop-daemon -b ${arguments} --exec $faxq -- $faxq_args > /dev/null 2>&1 + + return $? +} + +stop() { + checkconfig || return 1 + + ebegin "Stopping HylaFAX server daemons" + + start-stop-daemon --stop --quiet --pidfile $PIDDIR/hfaxd.pid + start-stop-daemon --stop --quiet --pidfile $PIDDIR/faxq.pid + eend $? +} + +zap() { + checkconfig || return 1 + + ebegin "Zap HylaFAX server daemon files" + + if [ -f $PIDFILE/hfaxd.pid ] ; then + rm -f $PIDFILE/hfaxd.pid + fi + + if [ -f $PIDFILE/faxq.pid ] ; then + rm -f $PIDFILE/faxq.pid + fi +} + +restart() { + stop + start +} |