#!/bin/sh
# PhotoRelay sur Synology DSM 7 (plan, phase 7S) : lancé par le Centre de
# paquets sous le compte du paquet. Après une mise à jour automatique, le
# service sort avec le code 3 : la boucle le relance avec le nouveau binaire.
BIN="$SYNOPKG_PKGDEST/bin/photorelay"
VAR="${SYNOPKG_PKGVAR:-/var/packages/PhotoRelay/var}"
LOOP="$VAR/boucle.pid"
AGENT="$VAR/agent.pid"
export PHOTORELAY_DSM=1 PHOTORELAY_STATE_DIR="$VAR"

running() { [ -f "$1" ] && kill -0 "$(cat "$1")" 2>/dev/null; }

case "$1" in
start)
	running "$LOOP" && exit 0
	(
		while :; do
			"$BIN" service </dev/null >/dev/null 2>>"$VAR/erreurs.log" &
			echo $! >"$AGENT"
			wait $!
			[ $? -eq 3 ] || break
			sleep 1
		done
		rm -f "$AGENT" "$LOOP"
	) </dev/null >/dev/null 2>&1 &
	echo $! >"$LOOP"
	exit 0
	;;
stop)
	running "$LOOP" && kill "$(cat "$LOOP")" 2>/dev/null
	if running "$AGENT"; then
		kill -TERM "$(cat "$AGENT")" 2>/dev/null
		for _ in 1 2 3 4 5 6 7 8 9 10; do running "$AGENT" || break; sleep 1; done
		running "$AGENT" && kill -KILL "$(cat "$AGENT")" 2>/dev/null
	fi
	rm -f "$AGENT" "$LOOP"
	exit 0
	;;
status)
	running "$AGENT" && exit 0
	exit 3
	;;
log)
	echo "$VAR/logs/agent.log"
	exit 0
	;;
esac
exit 0
