#!/bin/bash # chkconfig: 2345 90 10 # description: A secure socks5 proxy, designed to protect your Internet traffic. ### BEGIN INIT INFO # Provides: ShadowsocksR # Required-Start: $network $syslog # Required-Stop: $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Fast tunnel proxy that helps you bypass firewalls # Description: Start or stop the ShadowsocksR server ### END INIT INFO # Author: Teddysun NAME=ShadowsocksR DAEMON=/usr/local/shadowsocks/server.py if [ -f /etc/shadowsocks-r/config.json ]; then CONF=/etc/shadowsocks-r/config.json elif [ -f /etc/shadowsocks.json ]; then CONF=/etc/shadowsocks.json fi 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) is already running..." exit 0 else $DAEMON -c $CONF -d start RETVAL=$? if [ $RETVAL -eq 0 ]; then echo "Starting $NAME success" else echo "Starting $NAME failed" fi fi } do_stop(){ check_running if [ $? -eq 0 ]; then $DAEMON -c $CONF -d stop RETVAL=$? if [ $RETVAL -eq 0 ]; then echo "Stopping $NAME success" else echo "Stopping $NAME failed" fi else echo "$NAME is stopped" RETVAL=1 fi } do_status(){ check_running if [ $? -eq 0 ]; then echo "$NAME (pid $PID) is running..." else echo "$NAME is stopped" RETVAL=1 fi } do_restart(){ do_stop sleep 0.5 do_start } case "$1" in start|stop|restart|status) do_$1 ;; *) echo "Usage: $0 { start | stop | restart | status }" RETVAL=1 ;; esac exit $RETVAL