blob: a730ddcdf8f5eaa485871e6a8ed75b3ee4199b0a [file] [log] [blame]
#!/sbin/runscript
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
depend() {
use logger
need net
before mta
}
checkconfig() {
if [[ ! -f "/etc/dcc/dcc_conf" || ! -r "/etc/dcc/dcc_conf" ]]
then
eerror "You need a DCC configuration in /etc/dcc/dcc_conf"
return 1
else
source "/etc/dcc/dcc_conf"
fi
}
start() {
checkconfig || return 1
if [[ "${START_DCC_DCCD}" == "yes" ]]
then
if [[ "${DCCD_ENABLE}" != "on" ]]
then
einfo "DCCD_ENABLE is not setto 'on' in dcc_conf"
else
if [[ -x "${DCC_LIBEXEC}/start-dccd" ]]
then
ebegin "Starting dccd"
${DCC_LIBEXEC}/start-dccd >/dev/null 2>&1
eend ${?}
else
eerror "You enabled DCCD but start-dccd is missing or not executable"
fi
fi
fi
if [[ "${START_DCC_GREY}" == "yes" ]]
then
if [[ "${GREY_ENABLE}" != "on" ]]
then
einfo "GREY_ENABLE is not set to 'on' in dcc_conf"
else
if [[ -x "${DCC_LIBEXEC}/start-grey" ]]
then
ebegin "Starting grey"
${DCC_LIBEXEC}/start-grey >/dev/null 2>&1
eend ${?}
else
eerror "You enabled GREY but start-grey is missing or not executable"
fi
fi
fi
if [[ "${START_DCC_DCCM}" == "yes" ]]
then
if [[ "${DCCM_ENABLE}" != "on" ]]
then
einfo "DCCM_ENABLE is not set to 'on' in dcc_conf"
else
if [[ -x "${DCC_LIBEXEC}/start-dccm" ]]
then
ebegin "Starting dccm"
${DCC_LIBEXEC}/start-dccm >/dev/null 2>&1
eend ${?}
for ((dccmtimeout=0 ; dccmtimeout <= 20 ; dccmtimeout++))
do
if [[ ! -S "${DCC_RUNDIR}/dccm" || ! -r "${DCC_RUNDIR}/dccm" ]]
then
sleep 1
else
break
fi
done
chown ${SOCKET_USER:-milter}:${SOCKET_GROUP:-milter} ${DCC_RUNDIR}/dccm 1>/dev/null 2>&1
chmod ${SOCKET_MODE:-664} ${DCC_RUNDIR}/dccm 1>/dev/null 2>&1
sed -i -e "s:^\-::" ${DCC_RUNDIR}/dccm.pid
else
eerror "You enabled DCCM but start-dccm is missing or not executable"
fi
fi
fi
if [[ "${START_DCC_DCCIF}" == "yes" ]]
then
if [[ "${DCCIFD_ENABLE}" != "on" ]]
then
einfo "DCCIFD_ENABLE is not set to 'on' in dcc_conf"
else
if [[ -x "${DCC_LIBEXEC}/start-dccifd" ]]
then
ebegin "Starting dccif"
${DCC_LIBEXEC}/start-dccifd >/dev/null 2>&1
eend ${?}
else
eerror "You enabled DCCIF but start-dccif is missing or not executable"
fi
fi
fi
}
stop() {
checkconfig || return 1
if [[ -r "${DCC_RUNDIR}/dccifd.pid" ]]
then
ebegin "Stopping dccif"
kill -15 $(< ${DCC_RUNDIR}/dccifd.pid) 2>/dev/null
eend ${?}
fi
if [[ -r "${DCC_RUNDIR}/dccm.pid" ]]
then
ebegin "Stopping dccm"
kill -15 $(< ${DCC_RUNDIR}/dccm.pid) 2>/dev/null
eend ${?}
fi
if (pidof dccd >/dev/null 2>&1) && [[ -x "${DCC_LIBEXEC}/stop-dccd" ]]
then
ebegin "Stopping dccd"
${DCC_LIBEXEC}/stop-dccd >/dev/null 2>&1
eend ${?}
fi
if (pidof dccd >/dev/null 2>&1) && [[ -x "${DCC_LIBEXEC}/stop-dccd" ]]
then
ebegin "Stopping grey"
${DCC_LIBEXEC}/stop-dccd -G >/dev/null 2>&1
eend ${?}
fi
}