#!/bin/sh # # Startup script for dansguardian # # chkconfig: 35 92 08 # description: A web content filtering plugin for web \ # proxies, developed to filter using lists of \ # banned phrases, MIME types, filename \ # extensions and PICS labelling. # processname: dansguardian # pidfile: /var/run/dansguardian.pid # config: /etc/dansguardian/dansguardian.conf CONFFILELOCATION=/etc/dansguardian/ BINARYLOCATION=/usr/sbin/ PIDDIR=/var/run/ # Source function library . /etc/rc.d/init.d/functions # File includes changes by Thomas Jarosch function wait_for_pid() { local PID=$1 local RET=0 if [ $PID -eq 0 ] ; then return $RET fi # give 60 secs then KILL local COUNTDOWN=60 while [ -d /proc/${PID} ] && [ $COUNTDOWN -gt 0 ] ; do sleep 1 COUNTDOWN=$[$COUNTDOWN-1] done if [ -d /proc/${PID} ]; then COMMAND=`ps h -o command ${PID}` logger "dansguardian: timeout waiting for PID ${PID}: ${COMMAND}; sending SIGKILL" kill -KILL $PID >/dev/null 2>&1 RET=1 fi return $RET } # See how we were called. case "$1" in start) # Check if the service is already running? if [ ! -f /var/lock/subsys/dansguardian ]; then if [ -f ${BINARYLOCATION}dansguardian ] && [ -f ${CONFFILELOCATION}dansguardian.conf ]; then msg_starting dansguardian run_cmd ${BINARYLOCATION}dansguardian 2>/dev/null RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dansguardian fi else msg_already_running dansguardian fi ;; stop) if [ -f /var/lock/subsys/dansguardian ]; then msg_stopping dansguardian busy WAITPID=0 if [ -f ${PIDDIR}dansguardian.pid ] ; then WAITPID=`cat ${PIDDIR}dansguardian.pid` fi if ${BINARYLOCATION}dansguardian -q 2> /dev/null; then if wait_for_pid $WAITPID ; then ok else fail fi rm -f ${PIDDIR}dansguardian.pid rm -f /tmp/.dguardianipc [ -d /var/lock/subsys ] && /bin/rm -f /var/lock/subsys/dansguardian else fail fi else msg_not_running dansguardian fi ;; restart|force-reload) $0 stop $0 start ;; status) if [ -f ${BINARYLOCATION}dansguardian ]; then ${BINARYLOCATION}dansguardian -s fi status dansguardian exit $? ;; *) msg_usage "$0 {start|stop|restart|force-reload|status}" exit 3 esac exit $RETVAL