#!/bin/sh

SCRIPT=/home/xui
USER=$(whoami)

if [ $USER != "root" ]]; then
  echo "Please run as root!"
  exit 0
fi

start() {
  pids=$(pgrep -u xui nginx | wc -l)
  if [ $pids != 0 ]; then
    echo 'XUI is already running'
    return 1
  fi
  echo 'Starting XUI...'
  sudo chown -R xui:xui /sys/class/net
  sudo chown -R xui:xui /home/xui/content/streams
  sudo chown -R xui:xui /home/xui/tmp
  if [ -f $SCRIPT/bin/redis/redis-server ]; then
    sudo -u xui $SCRIPT/bin/redis/redis-server $SCRIPT/bin/redis/redis.conf >/dev/null 2>/dev/null
  fi
  sudo -u xui $SCRIPT/bin/nginx/sbin/nginx >/dev/null 2>/dev/null
  sudo -u xui $SCRIPT/bin/nginx_rtmp/sbin/nginx_rtmp >/dev/null 2>/dev/null
  sudo -u xui $SCRIPT/bin/daemons.sh
  sudo $SCRIPT/bin/php/bin/php $SCRIPT/includes/cli/startup.php
  sudo -u xui $SCRIPT/bin/php/bin/php $SCRIPT/includes/cli/signals.php >/dev/null 2>/dev/null &
  sudo -u xui $SCRIPT/bin/php/bin/php $SCRIPT/includes/cli/watchdog.php >/dev/null 2>/dev/null &
  sudo -u xui $SCRIPT/bin/php/bin/php $SCRIPT/includes/cli/queue.php >/dev/null 2>/dev/null &
  if [ -f $SCRIPT/includes/cli/cache_handler.php ]; then
    sudo -u xui $SCRIPT/bin/php/bin/php $SCRIPT/includes/cli/cache_handler.php >/dev/null 2>/dev/null &
  fi
  if [ -f $SCRIPT/includes/cli/connection_sync.php ]; then
    sudo -u xui $SCRIPT/bin/php/bin/php $SCRIPT/includes/cli/connection_sync.php >/dev/null 2>/dev/null &
  fi
  echo 'Running in foreground...'
  sleep infinity
}

stop() {
  pids=$(pgrep -u xui nginx | wc -l)
  if [ $pids = 0 ]; then
    echo 'XUI is not running'
    return 1
  fi
  echo 'Stopping XUI...'
  sudo killall -u xui
  sleep 1
  sudo killall -u xui
  sleep 1
  sudo killall -u xui
}

restart() {
  ps -U xui | egrep -v "ffmpeg|PID" | awk '{print $1}' | xargs kill -9
  start
}

reload() {
  pids=$(pgrep -u xui nginx | wc -l)
  if [ $pids = 0 ]]; then
    echo 'XUI is not running'
    return 1
  fi
  echo 'Reloading XUI...'
  sudo -u xui $SCRIPT/bin/nginx/sbin/nginx -s reload
  sudo -u xui $SCRIPT/bin/nginx_rtmp/sbin/nginx_rtmp -s reload
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  reload)
    reload
    ;;
  restart)
    restart
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|reload}"
esac

exit 0
