| #!/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 |
| } |