From 8d6a971d7d26f7796816d1c1e512764accc7ac0a Mon Sep 17 00:00:00 2001 From: Yuk1n0 <39364985+Yuk1n0@users.noreply.github.com> Date: Thu, 31 Oct 2019 22:22:53 +0800 Subject: [PATCH] Add some useful scripts --- shadowsocks | 97 +++++++++++++++++++++++++++++++ shadowsocks-debian | 95 +++++++++++++++++++++++++++++++ shadowsocks-go | 120 +++++++++++++++++++++++++++++++++++++++ shadowsocks-go-debian | 112 ++++++++++++++++++++++++++++++++++++ shadowsocks-libev | 110 +++++++++++++++++++++++++++++++++++ shadowsocks-libev-debian | 109 +++++++++++++++++++++++++++++++++++ shadowsocksR | 93 ++++++++++++++++++++++++++++++ shadowsocksR-debian | 91 +++++++++++++++++++++++++++++ 8 files changed, 827 insertions(+) create mode 100644 shadowsocks create mode 100644 shadowsocks-debian create mode 100644 shadowsocks-go create mode 100644 shadowsocks-go-debian create mode 100644 shadowsocks-libev create mode 100644 shadowsocks-libev-debian create mode 100644 shadowsocksR create mode 100644 shadowsocksR-debian diff --git a/shadowsocks b/shadowsocks new file mode 100644 index 0000000..ab00103 --- /dev/null +++ b/shadowsocks @@ -0,0 +1,97 @@ +#!/bin/bash +# chkconfig: 2345 90 10 +# description: A secure socks5 proxy, designed to protect your Internet traffic. + +### BEGIN INIT INFO +# Provides: Shadowsocks +# 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 Shadowsocks server +### END INIT INFO + +# Author: Teddysun + +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 +if [ -f /etc/shadowsocks-python/config.json ]; then + CONF=/etc/shadowsocks-python/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 diff --git a/shadowsocks-debian b/shadowsocks-debian new file mode 100644 index 0000000..b0fe0c0 --- /dev/null +++ b/shadowsocks-debian @@ -0,0 +1,95 @@ +#!/bin/bash + +### BEGIN INIT INFO +# Provides: Shadowsocks +# Required-Start: $network $local_fs $remote_fs +# Required-Stop: $network $local_fs $remote_fs +# 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 Shadowsocks server +### END INIT INFO + +# Author: Teddysun + +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 +if [ -f /etc/shadowsocks-python/config.json ]; then + CONF=/etc/shadowsocks-python/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 diff --git a/shadowsocks-go b/shadowsocks-go new file mode 100644 index 0000000..081ecf2 --- /dev/null +++ b/shadowsocks-go @@ -0,0 +1,120 @@ +#!/bin/bash +# chkconfig: 2345 90 10 +# description: A secure socks5 proxy, designed to protect your Internet traffic. + +### BEGIN INIT INFO +# Provides: Shadowsocks-go +# 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 Shadowsocks-go server +### END INIT INFO + +# Author: Teddysun + +# Source function library +. /etc/rc.d/init.d/functions + +# Check that networking is up. +[ ${NETWORKING} ="yes" ] || exit 0 + +NAME=Shadowsocks-go +DAEMON=/usr/bin/shadowsocks-server +if [ -f /etc/shadowsocks-go/config.json ]; then + CONF=/etc/shadowsocks-go/config.json +elif [ -f /etc/shadowsocks/config.json ]; then + CONF=/etc/shadowsocks/config.json +fi +PID_DIR=/var/run +PID_FILE=$PID_DIR/shadowsocks-go.pid +RET_VAL=0 + +[ -x $DAEMON ] || exit 0 + +if [ ! -d $PID_DIR ]; then + mkdir -p $PID_DIR + if [ $? -ne 0 ]; then + echo "Creating PID directory $PID_DIR failed" + exit 1 + fi +fi + +if [ ! -f $CONF ]; then + echo "$NAME config file $CONF not found" + exit 1 +fi + +check_running() { + if [ -r $PID_FILE ]; then + read PID < $PID_FILE + if [ -d "/proc/$PID" ]; then + return 0 + else + rm -f $PID_FILE + return 1 + fi + else + return 2 + fi +} + +do_status() { + check_running + case $? in + 0) + echo "$NAME (pid $PID) is running..." + ;; + 1|2) + echo "$NAME is stopped" + RET_VAL=1 + ;; + esac +} + +do_start() { + if check_running; then + echo "$NAME (pid $PID) is already running..." + return 0 + fi + $DAEMON -u -c $CONF 2>&1 > /dev/null & + PID=$! + echo $PID > $PID_FILE + sleep 0.3 + if check_running; then + echo "Starting $NAME success" + else + echo "Starting $NAME failed" + RET_VAL=1 + fi +} + +do_stop() { + if check_running; then + kill -9 $PID + rm -f $PID_FILE + echo "Stopping $NAME success" + else + echo "$NAME is stopped" + RET_VAL=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 }" + RET_VAL=1 + ;; +esac + +exit $RET_VAL diff --git a/shadowsocks-go-debian b/shadowsocks-go-debian new file mode 100644 index 0000000..3813937 --- /dev/null +++ b/shadowsocks-go-debian @@ -0,0 +1,112 @@ +#!/bin/bash + +### BEGIN INIT INFO +# Provides: Shadowsocks-go +# Required-Start: $network $local_fs $remote_fs +# Required-Stop: $network $local_fs $remote_fs +# 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 Shadowsocks-go server +### END INIT INFO + +# Author: Teddysun + +NAME=Shadowsocks-go +DAEMON=/usr/bin/shadowsocks-server +if [ -f /etc/shadowsocks-go/config.json ]; then + CONF=/etc/shadowsocks-go/config.json +elif [ -f /etc/shadowsocks/config.json ]; then + CONF=/etc/shadowsocks/config.json +fi +PID_DIR=/var/run +PID_FILE=$PID_DIR/shadowsocks-go.pid +RET_VAL=0 + +[ -x $DAEMON ] || exit 0 + +if [ ! -d $PID_DIR ]; then + mkdir -p $PID_DIR + if [ $? -ne 0 ]; then + echo "Creating PID directory $PID_DIR failed" + exit 1 + fi +fi + +if [ ! -f $CONF ]; then + echo "$NAME config file $CONF not found" + exit 1 +fi + +check_running() { + if [ -r $PID_FILE ]; then + read PID < $PID_FILE + if [ -d "/proc/$PID" ]; then + return 0 + else + rm -f $PID_FILE + return 1 + fi + else + return 2 + fi +} + +do_status() { + check_running + case $? in + 0) + echo "$NAME (pid $PID) is running..." + ;; + 1|2) + echo "$NAME is stopped" + RET_VAL=1 + ;; + esac +} + +do_start() { + if check_running; then + echo "$NAME (pid $PID) is already running..." + return 0 + fi + $DAEMON -u -c $CONF 2>&1 > /dev/null & + PID=$! + echo $PID > $PID_FILE + sleep 0.3 + if check_running; then + echo "Starting $NAME success" + else + echo "Starting $NAME failed" + RET_VAL=1 + fi +} + +do_stop() { + if check_running; then + kill -9 $PID + rm -f $PID_FILE + echo "Stopping $NAME success" + else + echo "$NAME is stopped" + RET_VAL=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 }" + RET_VAL=1 + ;; +esac + +exit $RET_VAL diff --git a/shadowsocks-libev b/shadowsocks-libev new file mode 100644 index 0000000..a0a062d --- /dev/null +++ b/shadowsocks-libev @@ -0,0 +1,110 @@ +#!/usr/bin/env bash +# chkconfig: 2345 90 10 +# description: A secure socks5 proxy, designed to protect your Internet traffic. + +### BEGIN INIT INFO +# Provides: Shadowsocks-libev +# 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 Shadowsocks-libev server +### END INIT INFO + +# Author: Teddysun +if [ -f /usr/local/bin/ss-server ]; then + DAEMON=/usr/local/bin/ss-server +elif [ -f /usr/bin/ss-server ]; then + DAEMON=/usr/bin/ss-server +fi +NAME=Shadowsocks-libev +CONF=/etc/shadowsocks-libev/config.json +PID_DIR=/var/run +PID_FILE=$PID_DIR/shadowsocks-libev.pid +RET_VAL=0 + +[ -x $DAEMON ] || exit 0 + +if [ ! -d $PID_DIR ]; then + mkdir -p $PID_DIR + if [ $? -ne 0 ]; then + echo "Creating PID directory $PID_DIR failed" + exit 1 + fi +fi + +if [ ! -f $CONF ]; then + echo "$NAME config file $CONF not found" + exit 1 +fi + +check_running() { + if [ -r $PID_FILE ]; then + read PID < $PID_FILE + if [ -d "/proc/$PID" ]; then + return 0 + else + rm -f $PID_FILE + return 1 + fi + else + return 2 + fi +} + +do_status() { + check_running + case $? in + 0) + echo "$NAME (pid $PID) is running..." + ;; + 1|2) + echo "$NAME is stopped" + RET_VAL=1 + ;; + esac +} + +do_start() { + if check_running; then + echo "$NAME (pid $PID) is already running..." + return 0 + fi + $DAEMON -v -c $CONF -f $PID_FILE + if check_running; then + echo "Starting $NAME success" + else + echo "Starting $NAME failed" + RET_VAL=1 + fi +} + +do_stop() { + if check_running; then + kill -9 $PID + rm -f $PID_FILE + echo "Stopping $NAME success" + else + echo "$NAME is stopped" + RET_VAL=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 }" + RET_VAL=1 + ;; +esac + +exit $RET_VAL diff --git a/shadowsocks-libev-debian b/shadowsocks-libev-debian new file mode 100644 index 0000000..f6360f8 --- /dev/null +++ b/shadowsocks-libev-debian @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +### BEGIN INIT INFO +# Provides: Shadowsocks-libev +# Required-Start: $network $local_fs $remote_fs +# Required-Stop: $network $local_fs $remote_fs +# 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 Shadowsocks-libev server +### END INIT INFO + +# Author: Teddysun + +if [ -f /usr/local/bin/ss-server ]; then + DAEMON=/usr/local/bin/ss-server +elif [ -f /usr/bin/ss-server ]; then + DAEMON=/usr/bin/ss-server +fi +NAME=Shadowsocks-libev +CONF=/etc/shadowsocks-libev/config.json +PID_DIR=/var/run +PID_FILE=$PID_DIR/shadowsocks-libev.pid +RET_VAL=0 + +[ -x $DAEMON ] || exit 0 + +if [ ! -d $PID_DIR ]; then + mkdir -p $PID_DIR + if [ $? -ne 0 ]; then + echo "Creating PID directory $PID_DIR failed" + exit 1 + fi +fi + +if [ ! -f $CONF ]; then + echo "$NAME config file $CONF not found" + exit 1 +fi + +check_running() { + if [ -r $PID_FILE ]; then + read PID < $PID_FILE + if [ -d "/proc/$PID" ]; then + return 0 + else + rm -f $PID_FILE + return 1 + fi + else + return 2 + fi +} + +do_status() { + check_running + case $? in + 0) + echo "$NAME (pid $PID) is running..." + ;; + 1|2) + echo "$NAME is stopped" + RET_VAL=1 + ;; + esac +} + +do_start() { + if check_running; then + echo "$NAME (pid $PID) is already running..." + return 0 + fi + $DAEMON -v -c $CONF -f $PID_FILE + if check_running; then + echo "Starting $NAME success" + else + echo "Starting $NAME failed" + RET_VAL=1 + fi +} + +do_stop() { + if check_running; then + kill -9 $PID + rm -f $PID_FILE + echo "Stopping $NAME success" + else + echo "$NAME is stopped" + RET_VAL=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 }" + RET_VAL=1 + ;; +esac + +exit $RET_VAL diff --git a/shadowsocksR b/shadowsocksR new file mode 100644 index 0000000..88420d5 --- /dev/null +++ b/shadowsocksR @@ -0,0 +1,93 @@ +#!/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 diff --git a/shadowsocksR-debian b/shadowsocksR-debian new file mode 100644 index 0000000..adb2b76 --- /dev/null +++ b/shadowsocksR-debian @@ -0,0 +1,91 @@ +#!/bin/bash + +### BEGIN INIT INFO +# Provides: ShadowsocksR +# Required-Start: $network $local_fs $remote_fs +# Required-Stop: $network $local_fs $remote_fs +# 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