diff misc/rcDCC.in @ 0:c7f6b056b673

First import of vendor version
author Peter Gervai <grin@grin.hu>
date Tue, 10 Mar 2009 13:49:58 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/misc/rcDCC.in	Tue Mar 10 13:49:58 2009 +0100
@@ -0,0 +1,185 @@
+#!/bin/sh
+
+# chkconfig: 2345 40 80
+# description: rcDCC is a startup script for DCC  http://www.rhyolite.com/dcc/
+# processname: dccd
+# processname: dccm
+# processname: dccifd
+
+### BEGIN INIT INFO
+# Provides:	    dccd dccm dccifd
+# Required-Start:   $network $named $syslog $time
+# Should-Start:	    ypbind sendmail
+# Required-Stop:
+# Should-Stop:
+# Default-Start:     3 5
+# Default-Stop:
+# Short-Description: DCC daemons providing mail filtering
+# Description:       Start dccm, dccifd, and/or dccd to support DCC mail
+#	filtering via sendmail, postfix, or SpamAssassin
+### END INIT INFO
+
+
+
+# start or stop dccd, dccifd, and dccm for Solaris, System V, IRIX,
+#   Redhat Linux, or FreeBSD
+
+# dccm must be started before sendmail and stopped after sendmail to avoid
+#   complaints from sendmail
+# dccd must be should before the first mail message arrives
+# Thus on some Solaris systems, this script can be installed as
+#   rc0.d/K37DCC  rc1.d/K37DCC  rc2.d/S88DCC  rcS.d/K37DCC
+# On some Linux systems it can be installed as rc.d/init.d/DCC and linked
+#   to rc.d/rc0.d/K31DCC rc.d/rc1.d/K31DCC rc.d/rc2.d/S80DCC rc.d/rc3.d/S80DCC
+#   rc.d/rc4.d/S80DCC rc.d/rc5.d/S80DCC and rc.d/rc6.d/K31DCC
+# On other Linux systems such as SUSE, link this script to /etc/init.d/DCC and
+#   run `insserv DCC`
+# On FreeBSD 5.* and 6.* systems, link this file to
+#	/usr/local/etc/rc.d/rcDCC.sh
+
+
+# Copyright (c) 2008 by Rhyolite Software, LLC
+#
+# This agreement is not applicable to any entity which sells anti-spam
+# solutions to others or provides an anti-spam solution as part of a
+# security solution sold to other entities, or to a private network
+# which employs the DCC or uses data provided by operation of the DCC
+# but does not provide corresponding data to other users.
+#
+# Permission to use, copy, modify, and distribute this software without
+# changes for any purpose with or without fee is hereby granted, provided
+# that the above copyright notice and this permission notice appear in all
+# copies and any distributed versions or copies are either unchanged
+# or not called anything similar to "DCC" or "Distributed Checksum
+# Clearinghouse".
+#
+# Parties not eligible to receive a license under this agreement can
+# obtain a commercial license to use DCC by contacting Rhyolite Software
+# at sales@rhyolite.com.
+#
+# A commercial license would be for Distributed Checksum and Reputation
+# Clearinghouse software.  That software includes additional features.  This
+# free license for Distributed ChecksumClearinghouse Software does not in any
+# way grant permision to use Distributed Checksum and Reputation Clearinghouse
+# software
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND RHYOLITE SOFTWARE, LLC DISCLAIMS ALL
+# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL RHYOLITE SOFTWARE, LLC
+# BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
+# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+# SOFTWARE.
+#	Rhyolite Software DCC 1.3.103-1.36 $Revision$
+#	@configure_input@
+
+
+DCC_HOMEDIR=@prefix@
+DCC_LIBEXEC=@libexecdir@	    # in case dcc_conf has disappeared
+. $DCC_HOMEDIR/dcc_conf
+if test -z "$DCC_RUNDIR" -a -n "$DCCM_RUNDIR"; then
+    # deal with old dcc_conf files
+    DCC_RUNDIR="$DCCM_RUNDIR"
+fi
+
+USAGE="`basename $0`: [-x] [-m dccd|dccifd|dccm|grey] start|stop"
+
+DEBUG=
+DAEMON=
+while getopts "xm:" c; do
+    case $c in
+	x) set -x; DEBUG=-x;;
+	m) if test "$OPTARG" = dccd -o "$OPTARG" = dccifd		\
+			-o "$OPTARG" = dccm -o "$OPTARG" = grey; then
+		DAEMON=$OPTARG
+	    else
+		echo "unrecognized daemon $OPTARG" 1>&2
+		DAEMON=
+	    fi
+	    ;;
+	*) echo "$USAGE" 1>&2;;
+    esac
+done
+shift `expr $OPTIND - 1 || true`
+
+
+MODULE=
+if test `uname` = Linux; then
+    # Convince the Redhat shutdown mechanism to invoke us at shutdown
+    # by including this string:
+    # . /etc/rc.d/init.d/functions
+
+    # Some Linux systems need a module name in /var/lock/subsys that matches
+    # the name to which this script is linked to /etc/rc.d/rc?.d for the
+    # shutdown or Kxx script.
+    MODULE=`basename $0 | sed -n -e 's/^[SK][0-9][0-9]\(.*\)/\1/p'`
+    # If @libexecdir@/updatedcc runs @libexecdir@/rcDCC, then the running name
+    # of this program will not be the needed module name
+    if test -z "$MODULE" -a -d /etc/rc.d; then
+	for NM in `find /etc/rc.d -follow -name 'K[0-9][0-9]*dcc*'	\
+				-o -name 'K[0-9][0-9]*DCC*'`; do
+	  if test -n "`grep ddb7d6d95cbf42fd4fdb $NM 2>/dev/null`"; then
+	      MODULE=`basename $NM | sed -e 's/^K[0-9][0-9]//'`
+	      break
+	  fi
+	done
+    fi
+fi
+
+
+case "$1" in
+start|restart|reload)
+	if test -z "$DAEMON" -o "$DAEMON" = dccd; then
+	    $DCC_LIBEXEC/start-dccd $DEBUG
+	fi
+	if test -z "$DAEMON" -o "$DAEMON" = grey; then
+	    $DCC_LIBEXEC/start-grey $DEBUG
+	fi
+	if test -z "$DAEMON" -o "$DAEMON" = dccm; then
+	    $DCC_LIBEXEC/start-dccm $DEBUG
+	fi
+	if test -z "$DAEMON" -o "$DAEMON" = dccifd; then
+	    $DCC_LIBEXEC/start-dccifd $DEBUG
+	fi
+	if test -n "$MODULE" -a -d /var/lock/subsys; then
+	    touch /var/lock/subsys/$MODULE
+	fi
+	;;
+
+stop)
+	# stop dccm and dccifd
+	PIDS=
+	if test -z "$DAEMON" -o "$DAEMON" = dccm; then
+	    PIDS="$PIDS `cat $DCC_RUNDIR/dccm.pid 2>/dev/null`"
+	    PIDS="$PIDS `cat $DCC_HOMEDIR/dccm.pid 2>/dev/null`"
+	fi
+	if test -z "$DAEMON" -o "$DAEMON" = dccifd 2>/dev/null; then
+	    PIDS="$PIDS `cat $DCC_RUNDIR/dccifd.pid 2>/dev/null`"
+	    PIDS="$PIDS `cat $DCC_HOMEDIR/dccifd.pid 2>/dev/null`"
+	fi
+	if expr "$PIDS" : '.*[0-9]' >/dev/null; then
+	    # signal the process group because on Linux systems signaling the
+	    # main process for a threaded application does not work.
+	      /bin/kill -15 $PIDS
+	fi
+	# Tell dccd about operating system shutdown, including deleting
+	# dcc_db.hash, which will be rebuilt by dbclean when dccd is restarted.
+	if test -z "$DAEMON" -o "$DAEMON" = dccd; then
+	    $DCC_LIBEXEC/stop-dccd -S $DEBUG
+	fi
+	if test -z "$DAEMON" -o "$DAEMON" = grey; then
+	    $DCC_LIBEXEC/stop-dccd -G -S $DEBUG
+	fi
+	if test -n "$MODULE" -a -f /var/lock/subsys/$MODULE; then
+	    rm /var/lock/subsys/$MODULE
+	fi
+	;;
+
+*)
+	echo "$USAGE" 1>&2
+	exit 1
+	;;
+
+esac
+exit 0