#! /bin/sh
#

### BEGIN INIT INFO
# Provides:          rustdesk-hbbr
# Required-Start:    $local_fs $remote_fs $syslog $named $network $time
# Required-Stop:     $local_fs $remote_fs $syslog $named $network
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/Stop the RustDesk hbbr server
### END INIT INFO


PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
SERVICE="hbbr"

DAEMON=/usr/sbin/$SERVICE
NAME=ku-rustdesk-server-$SERVICE
DESC="[ku] RustDesk Server ($SERVICE)"
DEFAULT=/etc/default/$NAME

WORKDIR="/var/lib/rustdesk-server"
LOGDIR="/var/log/rustdesk-server"

test -x $DAEMON || exit 0

if ! [ -x "/lib/lsb/init-functions" ]; then
	. /lib/lsb/init-functions
else
	/bin/echo -e "\nerror: /lib/lsb/init-functions not found, lsb-base (>= 3.0-6) needed\n"
	exit 1
fi

# Include defaults if available
if [ -f $DEFAULT ] ; then
	. $DEFAULT
fi

# recreate dirs if needed
for dir in "$WORKDIR" "$LOGDIR"
do
	[ -d "$dir" ] || {
		mkdir -p "$dir"
		##chown XXX "$WORKDIR"
	}
done

proc_status()
{
	local out=$(ps axuwww | grep " $DAEMON" | grep -v grep)
	[ "X$out" = "X" ] && {
		/bin/echo -e "\nservice $DESC not running\n"
		return 1
	}
	/bin/echo -e "\nservice $DESC is running:\n"
	echo "$out"
	echo
	return 0
}

set -e

case "$1" in
  start)
	if [ "$INETD" = 1 ]; then
		exit 0
	fi
	case ${SERVICE_ENABLE} in
	  yes|true|1)	;;
	  no|false|0)	log_daemon_msg "NOT Starting $DESCT (disabled)"
	  		exit 0
			;;
	  *)		/bin/echo -e "\nerror in $DEFAULT: \$SERVICE_ENABLE must be true or false\n" >&2
	  		exit 1
			;;
	esac
	log_daemon_msg "Starting $DESC" "$NAME"
	cd "$WORKDIR"
	$DAEMON $SERVICE_OPTIONS >>"$LOGDIR/$NAME.log" 2>>"$LOGDIR/$NAME.err" &
	log_end_msg $?
	;;
  stop)
	log_daemon_msg "Stopping $DESC" "$NAME"
	start-stop-daemon --stop --quiet --oknodo -x $DAEMON --retry 15
	log_end_msg $?
	;;
  reload|force-reload)
	log_daemon_msg "Reloading $DESC configuration files" "$NAME"
	start-stop-daemon --stop --signal HUP --quiet -x $DAEMON
	log_end_msg $?
	;;
  status)
    proc_status && exit 0 || exit $?
    ;;
  restart)
	$0 stop
	sleep 1
	$0 start
	;;
  *)
	log_failure_msg "Usage: $N {start|stop|restart|reload|force-reload}" 
	exit 1
	;;
esac

exit 0
