#! /bin/sh

### BEGIN INIT INFO
# Provides:		pioneers-console
# Required-Start:	$network
# Required-Stop:	$network
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
# Short-Description:	Meta-server for Pioneers
# Description:		Start a meta-server for Pioneers, to allow
#			clients to find servers.
### END INIT INFO

# These defaults can be overridden in /etc/default/pioneers-console

# Set this to "yes" (in /etc/default) to actually run the meta-server
RUN_META_SERVER="no"

# Program to run.
DAEMON=/usr/games/pioneers-meta-server

# Arguments to start-stop-daemon.
ARGS="--quiet --chuid nobody:nogroup"

# Arguments to meta-server.
META_SERVER_ARGS="-d -p 5560-5569"

# Reported hostname for servers started by the meta-server.
PIONEERS_META_SERVER="`dnsdomainname --fqdn`"

# File for storing the pid.  You probably don't need to change this.
PIDFILE=/var/run/pioneers-meta-server.pid

# End of variable list.

test -x "$DAEMON" || exit 0

if test -r /etc/default/pioneers-console ; then
	. /etc/default/pioneers-console
fi

test "$RUN_META_SERVER" = "yes" || exit 0

export PIONEERS_META_SERVER
NAME="Pioneers meta-server"

case "$1" in
	start)
		echo -n "Starting $NAME: pioneers-meta-server..."
		if start-stop-daemon --pidfile $PIDFILE --start $ARGS --exec "$DAEMON" -- $META_SERVER_ARGS ; then
			echo "done."
		else
			echo "failed."
		fi
		;;
	stop)
		echo -n "Stopping $NAME: pioneers-meta-server..."
		if start-stop-daemon --pidfile $PIDFILE --stop $ARGS --exec "$DAEMON" ; then
			echo "done."
		else
			echo "failed."
		fi
		;;
	restart|force-reload)
		echo -n "Restarting $NAME: pioneers-meta-server..."
		start-stop-daemon --pidfile $PIDFILE --stop $ARGS --exec $DAEMON --oknodo
		sleep 2
		if start-stop-daemon --pidfile $PIDFILE --start $ARGS --exec $DAEMON -- $META_SERVER_ARGS ; then
			echo "done."
		else
			echo "failed."
		fi
		;;
	status)
		if start-stop-daemon --test --pidfile $PIDFILE --start $ARGS --exec "$DAEMON" -- $META_SERVER_ARGS >/dev/null ; then
			echo "$NAME is not running."
			# Use proper exit codes, see LSB 3.1.0
			if [ -e $PIDFILE ] ; then
				exit 1 # not running, but pidfile exists
			else
				exit 3 # not running
			fi
		elif start-stop-daemon --test --pidfile $PIDFILE --stop $ARGS --exec "$DAEMON" >/dev/null ; then
			echo "$NAME is running."
			exit 0 # running
		else
			echo "Cannot get status of $NAME."
			exit 4 # status is unknown
		fi
		;;
	*)
		echo "Usage: /etc/init.d/pioneers-console {start|stop|restart|force-reload|status}"
		exit 1
		;;
esac

exit 0
