#!/bin/sh
### BEGIN INIT INFO
# Provides:          vpxd
# Required-Start:    $network $remote_fs
# Required-Stop:     $network $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: VPX Daemon
# Description:       VPN client daemon wrapping xray-core
### END INIT INFO

DAEMON=/usr/bin/vpxd
NAME=vpxd
PIDFILE=/var/run/vpxd.pid

[ -x "$DAEMON" ] || exit 0

do_start() {
    if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
        echo "$NAME is already running"
        return 0
    fi
    echo "Starting $NAME..."
    if command -v start-stop-daemon >/dev/null 2>&1; then
        start-stop-daemon --start --background --make-pidfile \
            --pidfile "$PIDFILE" --exec "$DAEMON"
    else
        "$DAEMON" &
        echo $! > "$PIDFILE"
    fi
}

do_stop() {
    if [ ! -f "$PIDFILE" ] || ! kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
        echo "$NAME is not running"
        return 0
    fi
    echo "Stopping $NAME..."
    if command -v start-stop-daemon >/dev/null 2>&1; then
        start-stop-daemon --stop --pidfile "$PIDFILE" --retry 10
    else
        kill "$(cat "$PIDFILE")"
    fi
    rm -f "$PIDFILE"
}

case "$1" in
    start)   do_start ;;
    stop)    do_stop ;;
    restart) do_stop; do_start ;;
    status)
        if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
            echo "$NAME is running (pid $(cat "$PIDFILE"))"
        else
            echo "$NAME is not running"
            exit 1
        fi
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac
