#!/bin/sh
#
# $Id: ods-control.in 3763 2010-08-20 06:51:46Z rb $
#
# Copyright (c) 2009 .SE (The Internet Infrastructure Foundation)
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#

progname="ods-control"
bindir="/usr/bin"
sbindir="/usr/sbin"
enforcer_pid_file="/var/run/opendnssec/enforcerd.pid"


case "$1" in

'ksm')
	shift
	"$bindir/ods-ksmutil" $@
	exit $?
	;;

'hsm')
	shift
	"$bindir/ods-hsmutil" $@
	exit $?
	;;
	
'signer')
	shift
	"$sbindir/ods-signer" $@
	exit $?
	;;

'enforcer')
	case "$2" in

	'start')
		if [ -r "$enforcer_pid_file" ]; then
			echo "Enforcer is already running"
			RETVAL=-1
		else
			echo "Starting enforcer..."
			"$sbindir/ods-enforcerd"
			RETVAL=$?
			if [ $RETVAL = 0 ]; then
				while [ ! -r "$enforcer_pid_file" ]; do
					sleep 1
				done
			fi
		fi
		exit $RETVAL
		;;

	'stop')
		echo "Stopping enforcer..."
		if [ -r "$enforcer_pid_file" ]; then
			kill -TERM `cat "$enforcer_pid_file"`
			RETVAL=$?
			while [ -r "$enforcer_pid_file" ]; do
				sleep 1
			done
		else
			echo "Cannot find PID file"
			RETVAL=1
		fi
		exit $RETVAL
		;;

	'notify')
		echo "Notifying enforcer of new database..."
		if [ -r "$enforcer_pid_file" ]; then
			kill -HUP `cat "$enforcer_pid_file"`
			RETVAL=$?
		else
			echo "Cannot find PID file"
			RETVAL=1
		fi
		exit $RETVAL
		;;

	*)
		echo "usage: $progname enforcer start|stop|notify" >&2
		exit 3
		;;

	esac
	;;

'start')
	echo "Starting signer engine..."
	"$sbindir/ods-signer" start

	"$0" enforcer start
	;;

'stop')
	"$0" enforcer stop

	echo "Stopping signer engine.."
	"$sbindir/ods-signer" stop
	exit $?
	;;
	
*)
	echo "usage: $progname ksm|hsm|signer|enforcer|start|stop ..." >&2
	exit 3
	;;

esac

