#!/bin/sh
### BEGIN INIT INFO
# Provides:          eyefiserver
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Should-Start:      $time
# Should-Stop:       $time
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Startup script for the EyeFiServer
# Description:       EyeFiServer sits on port 59278 waiting for soap requests
#                    from an EyeFi SD card; see http://www.eye.fi
### END INIT INFO
# -*- coding: utf-8 -*-

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Eye-Fi deamon"
NAME=eyefiserver
DAEMON=/usr/bin/${NAME}
DEFFILE=/etc/default/$NAME
LOGFILE=/var/log/$NAME.log
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
PSNAME=python # name of the process

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

# Load default file
if [ -f "$DEFFILE" ]
then
	. "$DEFFILE"
fi

#
#	Function that starts the daemon/service.
#
d_start() {
	if [ -z "$EYEFIUSER" ]
	then
		log_action_msg "$DESC not activated in $DEFFILE"
		return
	fi

	touch $LOGFILE
	chown $EYEFIUSER:$EYEFIGROUP $LOGFILE

	if [ -e $PIDFILE ]; then
		if $0 status > /dev/null ; then
			log_success_msg "$DESC already started; not starting."
			return
		else
			log_success_msg "Removing stale PID file $PIDFILE."
			rm -f $PIDFILE
		fi
	fi

	log_daemon_msg "Starting $DESC" "$NAME"
	start-stop-daemon --start   \
		--chuid $EYEFIUSER:$EYEFIGROUP \
		--pidfile $PIDFILE \
		--startas $DAEMON \
		--background \
		--make-pidfile \
		-- --log $LOGFILE
	log_end_msg $?
}


#	Function that stops the daemon/service.
#
d_stop() {
	log_daemon_msg "Stopping $DESC" "$NAME"
	start-stop-daemon  --stop --quiet --oknodo --pidfile $PIDFILE --name $PSNAME
	log_end_msg $?
	rm -rf $PIDFILE
}

#
#	Function that sends a SIGHUP to the daemon/service.
#
d_reload() {
	log_action_begin_msg "Reloading $DESC config"
	start-stop-daemon --stop --quiet --pidfile $PIDFILE \
		--name $PSNAME --signal 1
	log_action_end_msg $?
}

case "$1" in
  start)
	d_start
	;;
  stop)
	d_stop
	;;
  reload|force-reload)
	d_reload
	;;
  restart)
	d_stop
	sleep 1
	d_start
	;;
  status)
    status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
    ;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload|status}" >&2
	exit 2
	;;
esac

exit 0
