pkgsrc/mail/clamsmtp/files/clamsmtpd.sh
martti 302551e042 Added clamsmtpd_maxwait (default is 600 seconds). This makes it possible
to define how long clamsmtpd should wait for clamd.

PKGREVISION++
2007-06-15 09:47:06 +00:00

89 lines
2.1 KiB
Bash

#!@RCD_SCRIPTS_SHELL@
#
# $NetBSD: clamsmtpd.sh,v 1.8 2007/06/15 09:47:06 martti Exp $
#
# PROVIDE: clamsmtpd
# REQUIRE: LOGIN clamd
# BEFORE: mail
# KEYWORD: shutdown
#
# You will need to set some variables in /etc/rc.conf to start clamsmtpd:
#
# clamsmtpd=YES
#
# The following variables are optional:
#
# clamsmtpd_maxwait="600" # max wait time for clamd
# clamsmtpd_user="@CLAMAV_USER@" # user to run clamsmtpd as
# clamsmtpd_addr="localhost:10026" # address to forward mail to;
# # see clamsmtpd(8).
#
if [ -f /etc/rc.subr ]; then
. /etc/rc.subr
fi
name="clamsmtpd"
rcvar="${name}"
command="@PREFIX@/sbin/${name}"
pidfile="@VARBASE@/run/clamsmtpd.pid"
start_precmd="clamsmtpd_prestart"
start_cmd="clamsmtpd_start"
clamav_conffile="@PKG_SYSCONFDIR@/clamd.conf"
if [ -f "${clamav_conffile}" ]; then
socket=`@AWK@ 'BEGIN {r = "/tmp/clamd"};
/^#/ {next}; /^LocalSocket[ ]/ {r = $2};
END {print r}' ${clamav_conffile}`
: ${clamsmtpd_user=`@AWK@ 'BEGIN {r = "@CLAMAV_USER@"};
/^#/ {next}; /^User[ ]/ {r = $2};
END {print r}' ${clamav_conffile}`}
else
: ${socket="/tmp/clamd"}
: ${clamsmtpd_user="@CLAMAV_USER@"}
fi
: ${clamsmtpd_maxwait="600"}
clamsmtpd_prestart()
{
if [ ! -S "${socket}" ]; then
@ECHO@ -n "Waiting max ${clamsmtpd_maxwait} seconds for clamd to become ready"
while [ ${clamsmtpd_maxwait} -gt 0 -a ! -S "${socket}" ]; do
@ECHO@ -n "."
sleep 10
clamsmtpd_maxwait=$((clamsmtpd_maxwait - 10))
done
if [ ! -S "${socket}" ]; then
@ECHO@ ""
@ECHO@ "ERROR: Unable to start clamsmtpd as clamd is not running!"
exit 1
fi
# Wait another 10 seconds so that clamd is really ready
@ECHO@ -n "."
sleep 10
@ECHO@ ""
fi
@TOUCH@ ${pidfile}
@CHOWN@ ${clamsmtpd_user} ${pidfile}
}
clamsmtpd_start()
{
@ECHO@ "Starting ${name}."
doit="${command} ${clamsmtpd_flags} -p ${pidfile}"
@SU@ -m ${clamsmtpd_user} -c "${doit}"
}
if [ -f /etc/rc.subr -a -d /etc/rc.d -a -f /etc/rc.d/DAEMON ]; then
load_rc_config ${name}
run_rc_command "$1"
else
if [ -f /etc/rc.conf ]; then
. /etc/rc.conf
fi
@ECHO@ -n " ${name}"
eval ${start_precmd}
eval ${start_cmd}
fi