#!/bin/bash
#
# Init Script for CryptNET Keyserver daemon
# Author:    V. Alex Brennen (codepoet@dublin.ie)
#            [ http://cryptnet.net/people/vab/ ]
# Created:   2005.05.01
# Modified:  2005.05.01
#
# This file is part of the CryptNET Keyserver Daemon.
# Full sourcecode and documentation is available from
# the project's web page: http://cryptnet.net/fsp/csk/
#
#
# chkconfig:
# description: CryptNET Keyserver daemon
#
# processname: cks
# config: /etc/cks.conf

# Some macros to improve readability
prog="cksd"

CKSD="/usr/bin/cksd"

start()
{
	if [ -e /var/run/cks/cksd.pid ]; then
		echo "cksd seems to be already running: /var/run/cks/cksd.pid exists."
		echo "Please delete cksd.pid if the server is not running."
		exit 1
	fi
	echo -n $"Starting $prog:"
	if [ -e $CKSD ]; then
		su - _cks -c "nohup nice -n 4 $CKSD 2>&1 >> /dev/null &"
		if [ "$?" = "0" ]; then
			echo "             [OK]"
		else
			echo "             [Failure]"
		fi
	fi
}

stop()
{
	echo -n $"Stopping $prog:"

	if [ -e /var/run/cks/cksd.pid ]; then
		kill -TERM `cat /var/run/cks/cksd.pid`
		for c in $(seq 1 60); do
		if [ -e /var/run/cks/cksd.pid ]; then
			echo -n "."
			sleep 1
		fi
		done
		if [ -e /var/run/cks/cksd.pid ]; then
			echo "              [Failure]"
			echo "cksd did not shutdown cleanly - killing"
			kill -KILL `cat /var/run/cks/cksd.pid`
				rm /var/run/cks/cksd.pid
				sleep 5
		fi
		echo "               [Done]"
	else
		echo "/var/run/cks/cksd.pid is missing. Server stopped already?"
		echo "Trying pkill (if installed):"
		pkill -TERM $CKSD
		if [ "$?" = "0" ]; then
			echo "             [Yes]"
		else
			echo "             [No]"
		fi
        fi
}

reload()
{
	echo -n $"Reloading $prog:"
	
#	pkill -HUP $CKSD
#	echo
	
#	if [ -e /var/run/cks/cksd.pid ]; then
		echo "Reloading the CryptNET Keyserver Daemon..."
#		if ( kill -HUP `cat /var/run/cks/cksd.pid` ); then
#	else
#		echo "/var/run/cks/cksd.pid is missing. Server not running?"
#		start
#	fi
	stop
	start
}

status()
{
	if [ -e /var/run/cks/cksd.pid ]; then
		echo "The CryptNET Keyserver Daemon is running."
		exit 0
	else
		echo "The CryptNET Keyserver Daemon is stopped."
		exit 0
	fi
}

case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	restart)
		stop;
		start;
		;;
	reload)
		reload
		;;
	status)
		status
		;;
	*)
		echo $"Usage: $0 {start|stop|restart|status}"
esac
exit 0
