Blob Blame History Raw
diff -up psad-2.1.3/init-scripts/psad-init.fedora.init psad-2.1.3/init-scripts/psad-init.fedora
--- psad-2.1.3/init-scripts/psad-init.fedora.init	2005-06-14 03:00:35.000000000 +0200
+++ psad-2.1.3/init-scripts/psad-init.fedora	2008-08-14 13:33:22.000000000 +0200
@@ -4,14 +4,40 @@
 #
 # Starts the psad daemon
 #
-# chkconfig: 345 95 5
+# chkconfig: - 95 5
 # description: The Port Scan Attack Detector (psad)
 # processname: psad
+#
+# Return values according to LSB for all commands but status:
+# 0 - success
+# 1 - generic or unspecified error
+# 2 - invalid or excess argument(s)
+# 3 - unimplemented feature (e.g. "reload")
+# 4 - insufficient privilege
+# 5 - program is not installed
+# 6 - program is not configured
+# 7 - program is not running
+#
+
+PATH=/sbin:/bin:/usr/bin:/usr/sbin
+prog="psad"
 
 # Source function library.
 . /etc/init.d/functions
 
-test -x /usr/sbin/psad || exit 0
+# Allow anyone to run status
+if [ "$1" = "status" ] ; then
+	if [ -f /var/run/psad/kmsgsd.pid ]; then
+	 	status /usr/sbin/kmsgsd
+	fi
+ 	status /usr/sbin/psadwatchd
+ 	status /usr/sbin/psad
+	RETVAL=$?
+	exit $RETVAL
+fi
+
+# Check that we are root ... so non-root users stop here
+test $EUID = 0  ||  exit 4
 
 RETVAL=0
 
@@ -19,16 +45,34 @@ RETVAL=0
 #   See how we were called.
 #
 
-prog="psad"
 
 start() {
+	echo -n $"Starting $prog: "
+	test -x /usr/sbin/psad || exit 5
+	test -f /etc/psad/psad.conf  || exit 6
+
 	# Check if psad is already running
 	if [ ! -f /var/lock/subsys/psad ]; then
-	    echo -n $"Starting $prog: "
+	    # Create empty fwdata file if it doesn't exist
+	    /bin/touch /var/log/psad/fwdata
+	    chown root.root /var/log/psad/fwdata
+	    chmod 0600 /var/log/psad/fwdata
+	    # Create fifo if it doesn't exist
+	    if [ ! -p /var/lib/psad/psadfifo ]; then
+		[ -e /var/lib/psad/psadfifo ] && \
+		    /bin/rm -f /var/lib/psad/psadfifo
+	        /bin/mknod -m 600 /var/lib/psad/psadfifo p
+	    fi
+	    chown root.root /var/lib/psad/psadfifo
+	    chmod 0600 /var/lib/psad/psadfifo
+
+	    unset HOME MAIL USER USERNAME
 	    daemon /usr/sbin/psad
 	    RETVAL=$?
-	    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/psad
 	    echo
+	    if test $RETVAL = 0 ; then
+		touch /var/lock/subsys/psad
+	    fi
 	fi
 	return $RETVAL
 }
@@ -53,17 +97,10 @@ restart() {
 }	
 
 reload() {
+	test -f /etc/psad/psad.conf  || exit 6
 	restart
 }	
 
-status_psad() {
-	if [ -f /var/run/psad/kmsgsd.pid ]; then
-	 	status /usr/sbin/kmsgsd
-	fi
- 	status /usr/sbin/psadwatchd
- 	status /usr/sbin/psad
-}
-
 case "$1" in
 start)
 	start
@@ -79,13 +116,9 @@ condrestart)
 	    restart
 	fi
 	;;
-status)
-	status_psad
-	;;
 *)
 	echo $"Usage: $0 {start|stop|restart|condrestart|status}"
-	exit 1
+	RETVAL=3
 esac
 
-exit $?
 exit $RETVAL