#!/bin/sh
# Startup script for radicale
#
# chkconfig: 345 95 5
# description: Simple CalDAV server
#
### BEGIN INIT INFO
# Provides:		radicale
# Required-Start:	$local_fs $network
# Required-Stop:        $local_fs $network
# Default-Start:	
# Default-Stop:		
# Short-Description:    Simple CalDAV server
# Description:          The Radicale Project is a complete CalDAV calendar server solution.
#			It canstore multiple calendars.
### END INIT INFO

prog=radicale

# Source function library.
. /etc/rc.d/init.d/functions

[ -f /usr/bin/radicale ] || exit 0

if [[ $EUID -ne 0 ]]; then
	echo "This script must be run as root" 1>&2
	exit 1
fi

start() {
	if [ -f /run/radicale/$prog.pid ]; then
		echo -n $"Starting $prog: already running"
		failure $"$prog shutdown"
		echo
		exit 3
	fi
	echo -n $"Starting $prog: "
	mkdir -p /run/radicale
	chown radicale:radicale /run/radicale
	daemon --user radicale $prog -p /run/radicale/$prog.pid
	RETVAL=$?
	if [ $RETVAL -eq 0 ]; then
		touch /var/lock/subsys/$prog

		success $"$prog shutdown"
	else
		failure $"$prog shutdown"
	fi
	echo
}

stop() {
	if [ ! -f /run/radicale/$prog.pid ]; then
		echo -n $"Stopping $prog: not running "
		failure $"$prog shutdown"
		echo
		exit 3
	fi
	echo -n $"Stopping $prog: "
	pid=$(cat /run/radicale/$prog.pid)
	kill -9 $pid >/dev/null 2>&1
	success $"$prog shutdown"
	echo
	rm -f /var/lock/subsys/$prog
	rm -f /run/radicale/$prog.pid
	return 0
}

case "$1" in
	start)
		start
		;;
	
	stop)
		stop
		;;
	
	status)
			if ! [ -f /run/radicale/$prog.pid ]; then
				echo $"$prog is not running."
				exit 3
		fi
			pid=$(cat /run/radicale/$prog.pid)
		kill -0 $pid >/dev/null 2>&1
		if [ $? == 0 ]; then
			echo $"$prog (pid $pid) is running..."
			exit 0
		fi
		echo "$prog is stopped\n"
		exit 3
		;;
	reload)
		stop
		start
		;;
	restart)
		stop
		start
		;;
	condrestart)
		if [ -f /var/lock/subsys/$prog ]; then
			stop
			start
		fi
		;;
	
	*)
		echo "Usage: %s\n" "$prog {start|stop|restart|condrestart|status}"
		exit 1

esac

exit 0
