#!/bin/bash

### BEGIN INIT INFO
# Provides:          flyzy2005.com
# Required-Start:    $network $syslog
# Required-Stop:     $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: shadowsocks control
# Description:       shadowsocks control
### END INIT INFO
NAME=Shadowsocks
if [ -f /usr/bin/ssserver ]; then
    DAEMON=/usr/bin/ssserver
elif [ -f /usr/local/bin/ssserver ]; then
    DAEMON=/usr/local/bin/ssserver
fi
CONF=/etc/shadowsocks.json
RETVAL=0

check_running(){
    PID=$(ps -ef | grep -v grep | grep -i "${DAEMON}" | awk '{print $2}')
    if [ -n "$PID" ]; then
        return 0
    else
        return 1
    fi
}

do_start(){
    check_running
    if [ $? -eq 0 ]; then
        echo "$NAME (pid $PID)正在运行"
        exit 0
    else
        $DAEMON -c $CONF -d start
        RETVAL=$?
        if [ $RETVAL -eq 0 ]; then
            echo "$NAME启动成功"
        else
            echo "$NAME启动失败，请检查日志信息定位问题"
        fi
    fi
}

do_stop(){
    check_running
    if [ $? -eq 0 ]; then
        $DAEMON -c $CONF -d stop
        RETVAL=$?
        if [ $RETVAL -eq 0 ]; then
            echo "$NAME停止成功"
        else
            echo "$NAME停止失败，请检查日志信息定位问题"
        fi
    else
        echo "$NAME已经停止了"
        RETVAL=1
    fi
}

do_status(){
    check_running
    if [ $? -eq 0 ]; then
        echo "$NAME (pid $PID)正在运行"
    else
        echo "$NAME未运行。可以执行/etc/init.d/ss-fly start启动ss"
        RETVAL=1
    fi
}

do_restart(){
    do_stop
    sleep 0.5
    do_start
}

case "$1" in
    start|stop|restart|status)
    do_$1
    ;;
    *)
    echo "使用方法: $0 { start | stop | restart | status }"
    RETVAL=1
    ;;
esac

exit $RETVAL