diff options
Diffstat (limited to 'mail-filter/dcc/files/dcc.initd')
-rw-r--r-- | mail-filter/dcc/files/dcc.initd | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/mail-filter/dcc/files/dcc.initd b/mail-filter/dcc/files/dcc.initd new file mode 100644 index 000000000000..a730ddcdf8f5 --- /dev/null +++ b/mail-filter/dcc/files/dcc.initd @@ -0,0 +1,136 @@ +#!/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 +} |