#!/bin/sh # # Startup script for dansguardian # # processname: dansguardian # pidfile: /var/run/dansguardian.pid # config: /etc/dansguardian/dansguardian.conf # 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) if [ -f /usr/sbin/dansguardian ] && [ -f /etc/dansguardian/dansguardian.conf ]; then echo -n "Starting dansguardian: " if /usr/sbin/dansguardian 2> /dev/null; then echo " OK" else echo " FAILED" fi fi ;; stop) echo -n "Shutting down dansguardian: " WAITPID=0 if [ -f /var/run/dansguardian.pid ] ; then WAITPID=`cat /var/run/dansguardian.pid` fi if /usr/sbin/dansguardian -q 2> /dev/null; then if wait_for_pid $WAITPID ; then echo " OK" else echo " FAILED" fi /bin/rm -f /var/run/dansguardian.pid /bin/rm -f /tmp/.dguardianipc else echo " FAILED" fi ;; restart) $0 stop $0 start ;; status) if [ -x /usr/sbin/dansguardian ]; then /usr/sbin/dansguardian -s else echo "Dansguardian is not installed!" fi ;; *) echo "Usage: $0 {start|stop|restart|status}" >&2 ;; esac exit 0