#!/sbin/runscript # Copyright 1999-2013 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/mail-filter/dcc/files/dcc.initd-1.3.140,v 1.2 2013/01/01 18:03:36 polynomial-c Exp $ depend() { use logger need net before mta } checkconfig() { if [ ! -f "/etc/dcc/dcc_conf" ]; then eerror "You need a DCC configuration in /etc/dcc/dcc_conf" return 1 fi for i in DCCD_ENABLE GREY_ENABLE DCCM_ENABLE DCCIFD_ENABLE DCC_LIBEXEC DCC_RUNDIR \ SOCKET_USER SOCKET_GROUP SOCKET_MODE; do read -r ${i} <<-EOF $( grep ^[[:space:]]*${i} /etc/dcc/dcc_conf | sed s/.*=// ) EOF done DCC_RUNDIR="${DCC_RUNDIR:-/var/run/dcc}" if [ ! -d "${DCC_RUNDIR}" ]; then checkpath -q -d -o root:root -m 0755 "${DCC_RUNDIR}" || return 1 fi } start() { checkconfig || return 1 local atleastone="${DCCD_ENABLE}${GREY_ENABLE}${DCCM_ENABLE}${DCCIFD_ENABLE}" atleastone=$( echo ${atleastone} | tr -d 'off' ) if [ -z "${atleastone}" ]; then eend 1 "At least one service should be 'on' in /etc/dcc/dcc_conf" return 1 fi if [ "${DCCD_ENABLE}" = "on" ] && [ -x "${DCC_LIBEXEC}/start-dccd" ]; then ebegin "Starting dccd" ${DCC_LIBEXEC}/start-dccd >/dev/null 2>&1 eend ${?} fi if [ "${GREY_ENABLE}" = "on" ] && [ -x "${DCC_LIBEXEC}/start-grey" ]; then ebegin "Starting grey" ${DCC_LIBEXEC}/start-grey >/dev/null 2>&1 eend ${?} fi if [ "${DCCM_ENABLE}" = "on" ] && [ -x "${DCC_LIBEXEC}/start-dccm" ]; then ebegin "Starting dccm" ${DCC_LIBEXEC}/start-dccm >/dev/null 2>&1 eend ${?} local dccmtimeout=0 while [ ${dcctimeout} -le 20 ] ; do if [ -S "${DCC_RUNDIR}/dccm" ] || [ -r "${DCC_RUNDIR}/dccm" ]; then break else sleep 1 dcctimeout=$(($dcctimeout + 1)) 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 1>/dev/null 2>&1 || return 1 fi if [ "${DCCIFD_ENABLE}" = "on" ] && [ -x "${DCC_LIBEXEC}/start-dccifd" ]; then ebegin "Starting dccif" ${DCC_LIBEXEC}/start-dccifd >/dev/null 2>&1 eend ${?} 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 }