From 2f948276bbe94107cf040f55912bc408550c8896 Mon Sep 17 00:00:00 2001 From: Yuk1n0 <39364985+Yuk1n0@users.noreply.github.com> Date: Wed, 4 Mar 2020 01:32:43 +0800 Subject: [PATCH] Remove unsafe shadowsocks server version --- README.md | 33 +-- shadowsocks | 97 -------- shadowsocks-all.sh | 518 +++++++++--------------------------------- shadowsocks-debian | 95 -------- shadowsocks-go | 120 ---------- shadowsocks-go-debian | 112 --------- 6 files changed, 114 insertions(+), 861 deletions(-) delete mode 100644 shadowsocks delete mode 100644 shadowsocks-debian delete mode 100644 shadowsocks-go delete mode 100644 shadowsocks-go-debian diff --git a/README.md b/README.md index 769d8ca..1223575 100644 --- a/README.md +++ b/README.md @@ -21,36 +21,24 @@ chmod +x shadowsocks-all.sh **How to start | stop | restart your server** -Shadowsocks-Python: -/etc/init.d/shadowsocks-python start | stop | restart | status +Shadowsocks-libev: +/etc/init.d/shadowsocks-libev start | stop | restart | status ShadowsocksR: /etc/init.d/shadowsocks-r start | stop | restart | status -Shadowsocks-Go: -/etc/init.d/shadowsocks-go start | stop | restart | status - -Shadowsocks-libev: -/etc/init.d/shadowsocks-libev start | stop | restart | status - **** **Configuration Files** -Shadowsocks-Python : -/etc/shadowsocks-python/config.json - -ShadowsocksR : -/etc/shadowsocks-r/config.json - -Shadowsocks-Go : -/etc/shadowsocks-go/config.json - Shadowsocks-libev : /etc/shadowsocks-libev/config.json +ShadowsocksR : +/etc/shadowsocks-r/config.json + **** -**Ciphers(Python and libev):** +**Ciphers(libev):** aes-256-gcm aes-192-gcm aes-128-gcm @@ -66,15 +54,6 @@ camellia-256-cfb chacha20-ietf-poly1305 chacha20-ietf -**Ciphers(Go):** -aes-256-cfb -aes-192-cfb -aes-128-cfb -aes-256-ctr -aes-192-ctr -aes-128-ctr -chacha20-ietf - **ciphers(none means unencrypted,ShadowsocksR):** none aes-256-cfb diff --git a/shadowsocks b/shadowsocks deleted file mode 100644 index f691834..0000000 --- a/shadowsocks +++ /dev/null @@ -1,97 +0,0 @@ -#!/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-all.sh b/shadowsocks-all.sh index 92f517d..54d1aab 100644 --- a/shadowsocks-all.sh +++ b/shadowsocks-all.sh @@ -38,7 +38,7 @@ plain='\033[0m' [[ $EUID -ne 0 ]] && echo -e "[${red}Error${plain}] This script must be run as root!" && exit 1 cur_dir=$(pwd) -software=(Shadowsocks-Python ShadowsocksR Shadowsocks-Go Shadowsocks-libev) +software=(Shadowsocks-libev ShadowsocksR) libsodium_file="libsodium-1.0.18" libsodium_url="https://github.com/jedisct1/libsodium/releases/download/1.0.18-RELEASE/libsodium-1.0.18.tar.gz" @@ -46,12 +46,11 @@ libsodium_url="https://github.com/jedisct1/libsodium/releases/download/1.0.18-RE mbedtls_file="mbedtls-2.16.3" mbedtls_url="https://tls.mbed.org/download/mbedtls-2.16.3-gpl.tgz" -shadowsocks_python_file="shadowsocks-master" -shadowsocks_python_url="https://github.com/shadowsocks/shadowsocks/archive/master.zip" -shadowsocks_python_init="/etc/init.d/shadowsocks-python" -shadowsocks_python_config="/etc/shadowsocks-python/config.json" -shadowsocks_python_centos="https://raw.githubusercontent.com/Yuk1n0/Shadowsocks-Install/master/shadowsocks" -shadowsocks_python_debian="https://raw.githubusercontent.com/Yuk1n0/Shadowsocks-Install/master/shadowsocks-debian" +shadowsocks_libev_init="/etc/init.d/shadowsocks-libev" +shadowsocks_libev_config="/etc/shadowsocks-libev/config.json" +shadowsocks_libev_centos="https://raw.githubusercontent.com/Yuk1n0/Shadowsocks-Install/master/shadowsocks-libev" +shadowsocks_libev_debian="https://raw.githubusercontent.com/Yuk1n0/Shadowsocks-Install/master/shadowsocks-libev-debian" +v2ray_file=$(wget -qO- https://api.github.com/repos/shadowsocks/v2ray-plugin/releases/latest | grep linux-amd64 | grep name | cut -f4 -d\") shadowsocks_r_file="shadowsocksr-3.2.2" shadowsocks_r_url="https://github.com/shadowsocksrr/shadowsocksr/archive/3.2.2.tar.gz" @@ -60,21 +59,6 @@ shadowsocks_r_config="/etc/shadowsocks-r/config.json" shadowsocks_r_centos="https://raw.githubusercontent.com/Yuk1n0/Shadowsocks-Install/master/shadowsocksR" shadowsocks_r_debian="https://raw.githubusercontent.com/Yuk1n0/Shadowsocks-Install/master/shadowsocksR-debian" -shadowsocks_go_file_64="shadowsocks-server-linux64-1.2.2" -shadowsocks_go_url_64="https://dl.lamp.sh/shadowsocks/shadowsocks-server-linux64-1.2.2.gz" -shadowsocks_go_file_32="shadowsocks-server-linux32-1.2.2" -shadowsocks_go_url_32="https://dl.lamp.sh/shadowsocks/shadowsocks-server-linux32-1.2.2.gz" -shadowsocks_go_init="/etc/init.d/shadowsocks-go" -shadowsocks_go_config="/etc/shadowsocks-go/config.json" -shadowsocks_go_centos="https://raw.githubusercontent.com/Yuk1n0/Shadowsocks-Install/master/shadowsocks-go" -shadowsocks_go_debian="https://raw.githubusercontent.com/Yuk1n0/Shadowsocks-Install/master/shadowsocks-go-debian" - -shadowsocks_libev_init="/etc/init.d/shadowsocks-libev" -shadowsocks_libev_config="/etc/shadowsocks-libev/config.json" -shadowsocks_libev_centos="https://raw.githubusercontent.com/Yuk1n0/Shadowsocks-Install/master/shadowsocks-libev" -shadowsocks_libev_debian="https://raw.githubusercontent.com/Yuk1n0/Shadowsocks-Install/master/shadowsocks-libev-debian" -v2ray_file=$(wget -qO- https://api.github.com/repos/shadowsocks/v2ray-plugin/releases/latest | grep linux-amd64 | grep name | cut -f4 -d\") - # Stream Ciphers common_ciphers=( aes-256-gcm @@ -93,15 +77,6 @@ common_ciphers=( chacha20-ietf-poly1305 chacha20-ietf ) -go_ciphers=( - aes-256-cfb - aes-192-cfb - aes-128-cfb - aes-256-ctr - aes-192-ctr - aes-128-ctr - chacha20-ietf -) r_ciphers=( none aes-256-cfb @@ -306,15 +281,6 @@ get_opsy() { [ -f /etc/lsb-release ] && awk -F'[="]+' '/DESCRIPTION/{print $2}' /etc/lsb-release && return } -# shadowsocks-go -is_64bit() { - if [ $(getconf WORD_BIT) = '32' ] && [ $(getconf LONG_BIT) = '64' ]; then - return 0 - else - return 1 - fi -} - debianversion() { if check_sys sysRelease debian; then local version=$(get_opsy) @@ -346,33 +312,7 @@ download() { download_files() { cd ${cur_dir} - if [ "${selected}" == "1" ]; then - download "${shadowsocks_python_file}.zip" "${shadowsocks_python_url}" - if check_sys packageManager yum; then - download "${shadowsocks_python_init}" "${shadowsocks_python_centos}" - elif check_sys packageManager apt; then - download "${shadowsocks_python_init}" "${shadowsocks_python_debian}" - fi - elif [ "${selected}" == "2" ]; then - download "${shadowsocks_r_file}.tar.gz" "${shadowsocks_r_url}" - if check_sys packageManager yum; then - download "${shadowsocks_r_init}" "${shadowsocks_r_centos}" - elif check_sys packageManager apt; then - download "${shadowsocks_r_init}" "${shadowsocks_r_debian}" - fi - elif [ "${selected}" == "3" ]; then - if is_64bit; then - download "${shadowsocks_go_file_64}.gz" "${shadowsocks_go_url_64}" - else - download "${shadowsocks_go_file_32}.gz" "${shadowsocks_go_url_32}" - fi - if check_sys packageManager yum; then - download "${shadowsocks_go_init}" "${shadowsocks_go_centos}" - elif check_sys packageManager apt; then - download "${shadowsocks_go_init}" "${shadowsocks_go_debian}" - fi - elif [ "${selected}" == "4" ]; then get_libev_ver shadowsocks_libev_file="shadowsocks-libev-$(echo ${libev_ver} | sed -e 's/^[a-zA-Z]//g')" shadowsocks_libev_url="https://github.com/shadowsocks/shadowsocks-libev/releases/download/${libev_ver}/${shadowsocks_libev_file}.tar.gz" @@ -383,8 +323,14 @@ download_files() { elif check_sys packageManager apt; then download "${shadowsocks_libev_init}" "${shadowsocks_libev_debian}" fi + elif [ "${selected}" == "2" ]; then + download "${shadowsocks_r_file}.tar.gz" "${shadowsocks_r_url}" + if check_sys packageManager yum; then + download "${shadowsocks_r_init}" "${shadowsocks_r_centos}" + elif check_sys packageManager apt; then + download "${shadowsocks_r_init}" "${shadowsocks_r_debian}" + fi fi - } get_char() { @@ -448,60 +394,6 @@ config_shadowsocks() { fi if [ "${selected}" == "1" ]; then - if [ ! -d "$(dirname ${shadowsocks_python_config})" ]; then - mkdir -p $(dirname ${shadowsocks_python_config}) - fi - cat >${shadowsocks_python_config} <<-EOF -{ - "server":"0.0.0.0", - "server_port":${shadowsocksport}, - "local_address":"127.0.0.1", - "local_port":1080, - "password":"${shadowsockspwd}", - "timeout":300, - "method":"${shadowsockscipher}", - "fast_open":${fast_open} -} -EOF - elif [ "${selected}" == "2" ]; then - if [ ! -d "$(dirname ${shadowsocks_r_config})" ]; then - mkdir -p $(dirname ${shadowsocks_r_config}) - fi - cat >${shadowsocks_r_config} <<-EOF -{ - "server":"0.0.0.0", - "server_ipv6":"::", - "server_port":${shadowsocksport}, - "local_address":"127.0.0.1", - "local_port":1080, - "password":"${shadowsockspwd}", - "timeout":120, - "method":"${shadowsockscipher}", - "protocol":"${shadowsockprotocol}", - "protocol_param":"", - "obfs":"${shadowsockobfs}", - "obfs_param":"", - "redirect":"", - "dns_ipv6":false, - "fast_open":${fast_open}, - "workers":1 -} -EOF - elif [ "${selected}" == "3" ]; then - if [ ! -d "$(dirname ${shadowsocks_go_config})" ]; then - mkdir -p $(dirname ${shadowsocks_go_config}) - fi - cat >${shadowsocks_go_config} <<-EOF -{ - "server":"0.0.0.0", - "server_port":${shadowsocksport}, - "local_port":1080, - "password":"${shadowsockspwd}", - "method":"${shadowsockscipher}", - "timeout":300 -} -EOF - elif [ "${selected}" == "4" ]; then local server_value="\"0.0.0.0\"" if get_ipv6; then server_value="[\"[::0]\",\"0.0.0.0\"]" @@ -556,6 +448,30 @@ EOF EOF fi + elif [ "${selected}" == "2" ]; then + if [ ! -d "$(dirname ${shadowsocks_r_config})" ]; then + mkdir -p $(dirname ${shadowsocks_r_config}) + fi + cat >${shadowsocks_r_config} <<-EOF +{ + "server":"0.0.0.0", + "server_ipv6":"::", + "server_port":${shadowsocksport}, + "local_address":"127.0.0.1", + "local_port":1080, + "password":"${shadowsockspwd}", + "timeout":120, + "method":"${shadowsockscipher}", + "protocol":"${shadowsockprotocol}", + "protocol_param":"", + "obfs":"${shadowsockobfs}", + "obfs_param":"", + "redirect":"", + "dns_ipv6":false, + "fast_open":${fast_open}, + "workers":1 +} +EOF fi } @@ -619,19 +535,19 @@ install_select() { echo -e "${green}${i}${plain}) ${hint}" done read -p "Please enter a number (Default ${software[3]}):" selected - [ -z "${selected}" ] && selected="4" + [ -z "${selected}" ] && selected="1" case "${selected}" in - 1 | 2 | 3 | 4) + 1 | 2) echo echo "You choose = ${software[${selected} - 1]}" - if [ "${selected}" == "4" ]; then + if [ "${selected}" == "1" ]; then echo -e "[${green}Info${plain}] Current official Shadowsocks-libev Version:${libev_ver}" fi echo break ;; *) - echo -e "[${red}Error${plain}] Please only enter a number [1-4]" + echo -e "[${red}Error${plain}] Please only enter a number [1-2]" ;; esac done @@ -639,8 +555,8 @@ install_select() { install_prepare_password() { echo "Please enter password for ${software[${selected} - 1]}" - read -p "(Default password: teddysun.com):" shadowsockspwd - [ -z "${shadowsockspwd}" ] && shadowsockspwd="teddysun.com" + read -p "(Default password: shadowsocks):" shadowsockspwd + [ -z "${shadowsockspwd}" ] && shadowsockspwd="shadowsocks" echo echo "password = ${shadowsockspwd}" echo @@ -669,7 +585,7 @@ install_prepare_cipher() { while true; do echo -e "Please select stream cipher for ${software[${selected} - 1]}:" - if [[ "${selected}" == "1" || "${selected}" == "4" ]]; then + if [ "${selected}" == "1" ]; then for ((i = 1; i <= ${#common_ciphers[@]}; i++)); do hint="${common_ciphers[$i - 1]}" echo -e "${green}${i}${plain}) ${hint}" @@ -703,23 +619,6 @@ install_prepare_cipher() { continue fi shadowsockscipher=${r_ciphers[$pick - 1]} - elif [ "${selected}" == "3" ]; then - for ((i = 1; i <= ${#go_ciphers[@]}; i++)); do - hint="${go_ciphers[$i - 1]}" - echo -e "${green}${i}${plain}) ${hint}" - done - read -p "Which cipher you'd select(Default: ${go_ciphers[0]}):" pick - [ -z "$pick" ] && pick=1 - expr ${pick} + 1 &>/dev/null - if [ $? -ne 0 ]; then - echo -e "[${red}Error${plain}] Please enter a number" - continue - fi - if [[ "$pick" -lt 1 || "$pick" -gt ${#go_ciphers[@]} ]]; then - echo -e "[${red}Error${plain}] Please enter a number between 1 and ${#go_ciphers[@]}" - continue - fi - shadowsockscipher=${go_ciphers[$pick - 1]} fi echo @@ -883,14 +782,12 @@ get_cert() { } install_prepare() { - if [[ "${selected}" == "1" || "${selected}" == "3" || "${selected}" == "4" ]]; then + if [ "${selected}" == "1" ]; then install_prepare_password install_prepare_port install_prepare_cipher - if [ "${selected}" == "4" ]; then - install_prepare_libev_obfs - install_prepare_domain - fi + install_prepare_libev_obfs + install_prepare_domain elif [ "${selected}" == "2" ]; then install_prepare_password install_prepare_port @@ -938,21 +835,14 @@ install_mbedtls() { fi } -install_shadowsocks_python() { +install_shadowsocks_libev() { cd ${cur_dir} - unzip -q ${shadowsocks_python_file}.zip - if [ $? -ne 0 ]; then - echo -e "[${red}Error${plain}] unzip ${shadowsocks_python_file}.zip failed, please check unzip command." - install_cleanup - exit 1 - fi - - cd ${shadowsocks_python_file} - python setup.py install --record /usr/local/shadowsocks_python.log - - if [ -f /usr/bin/ssserver ] || [ -f /usr/local/bin/ssserver ]; then - chmod +x ${shadowsocks_python_init} - local service_name=$(basename ${shadowsocks_python_init}) + tar zxf ${shadowsocks_libev_file}.tar.gz + cd ${shadowsocks_libev_file} + ./configure --disable-documentation && make && make install + if [ $? -eq 0 ]; then + chmod +x ${shadowsocks_libev_init} + local service_name=$(basename ${shadowsocks_libev_init}) if check_sys packageManager yum; then chkconfig --add ${service_name} chkconfig ${service_name} on @@ -961,7 +851,7 @@ install_shadowsocks_python() { fi else echo - echo -e "[${red}Error${plain}] ${software[0]} install failed." + echo -e "[${red}Error${plain}] ${software[3]} install failed." install_cleanup exit 1 fi @@ -988,67 +878,6 @@ install_shadowsocks_r() { fi } -install_shadowsocks_go() { - cd ${cur_dir} - if is_64bit; then - gzip -d ${shadowsocks_go_file_64}.gz - if [ $? -ne 0 ]; then - echo -e "[${red}Error${plain}] Decompress ${shadowsocks_go_file_64}.gz failed." - install_cleanup - exit 1 - fi - mv -f ${shadowsocks_go_file_64} /usr/bin/shadowsocks-server - else - gzip -d ${shadowsocks_go_file_32}.gz - if [ $? -ne 0 ]; then - echo -e "[${red}Error${plain}] Decompress ${shadowsocks_go_file_32}.gz failed." - install_cleanup - exit 1 - fi - mv -f ${shadowsocks_go_file_32} /usr/bin/shadowsocks-server - fi - - if [ -f /usr/bin/shadowsocks-server ]; then - chmod +x /usr/bin/shadowsocks-server - chmod +x ${shadowsocks_go_init} - - local service_name=$(basename ${shadowsocks_go_init}) - if check_sys packageManager yum; then - chkconfig --add ${service_name} - chkconfig ${service_name} on - elif check_sys packageManager apt; then - update-rc.d -f ${service_name} defaults - fi - else - echo - echo -e "[${red}Error${plain}] ${software[2]} install failed." - install_cleanup - exit 1 - fi -} - -install_shadowsocks_libev() { - cd ${cur_dir} - tar zxf ${shadowsocks_libev_file}.tar.gz - cd ${shadowsocks_libev_file} - ./configure --disable-documentation && make && make install - if [ $? -eq 0 ]; then - chmod +x ${shadowsocks_libev_init} - local service_name=$(basename ${shadowsocks_libev_init}) - if check_sys packageManager yum; then - chkconfig --add ${service_name} - chkconfig ${service_name} on - elif check_sys packageManager apt; then - update-rc.d -f ${service_name} defaults - fi - else - echo - echo -e "[${red}Error${plain}] ${software[3]} install failed." - install_cleanup - exit 1 - fi -} - install_shadowsocks_libev_obfs() { if [ "${libev_obfs}" == "y" ] || [ "${libev_obfs}" == "Y" ]; then cd ${cur_dir} @@ -1100,41 +929,6 @@ install_shadowsocks_libev_v2ray_plugin() { fi } -install_completed_python() { - clear - ${shadowsocks_python_init} start - echo - echo -e "Congratulations, ${green}${software[0]}${plain} server install completed!" - echo -e "Your Server IP : ${red} $(get_ip) ${plain}" - echo -e "Your Server Port : ${red} ${shadowsocksport} ${plain}" - echo -e "Your Password : ${red} ${shadowsockspwd} ${plain}" - echo -e "Your Encryption Method: ${red} ${shadowsockscipher} ${plain}" -} - -install_completed_r() { - clear - ${shadowsocks_r_init} start - echo - echo -e "Congratulations, ${green}${software[1]}${plain} server install completed!" - echo -e "Your Server IP : ${red} $(get_ip) ${plain}" - echo -e "Your Server Port : ${red} ${shadowsocksport} ${plain}" - echo -e "Your Password : ${red} ${shadowsockspwd} ${plain}" - echo -e "Your Protocol : ${red} ${shadowsockprotocol} ${plain}" - echo -e "Your obfs : ${red} ${shadowsockobfs} ${plain}" - echo -e "Your Encryption Method: ${red} ${shadowsockscipher} ${plain}" -} - -install_completed_go() { - clear - ${shadowsocks_go_init} start - echo - echo -e "Congratulations, ${green}${software[2]}${plain} server install completed!" - echo -e "Your Server IP : ${red} $(get_ip) ${plain}" - echo -e "Your Server Port : ${red} ${shadowsocksport} ${plain}" - echo -e "Your Password : ${red} ${shadowsockspwd} ${plain}" - echo -e "Your Encryption Method: ${red} ${shadowsockscipher} ${plain}" -} - install_completed_libev() { clear ldconfig @@ -1158,16 +952,29 @@ install_completed_libev() { echo -e "Your Encryption Method: ${red} ${shadowsockscipher} ${plain}" } -qr_generate_python() { +install_completed_r() { + clear + ${shadowsocks_r_init} start + echo + echo -e "Congratulations, ${green}${software[1]}${plain} server install completed!" + echo -e "Your Server IP : ${red} $(get_ip) ${plain}" + echo -e "Your Server Port : ${red} ${shadowsocksport} ${plain}" + echo -e "Your Password : ${red} ${shadowsockspwd} ${plain}" + echo -e "Your Protocol : ${red} ${shadowsockprotocol} ${plain}" + echo -e "Your obfs : ${red} ${shadowsockobfs} ${plain}" + echo -e "Your Encryption Method: ${red} ${shadowsockscipher} ${plain}" +} + +qr_generate_libev() { if [ "$(command -v qrencode)" ]; then local tmp=$(echo -n "${shadowsockscipher}:${shadowsockspwd}@$(get_ip):${shadowsocksport}" | base64 -w0) local qr_code="ss://${tmp}" echo echo "Your QR Code: (For Shadowsocks Windows, OSX, Android and iOS clients)" echo -e "${green} ${qr_code} ${plain}" - echo -n "${qr_code}" | qrencode -s8 -o ${cur_dir}/shadowsocks_python_qr.png + echo -n "${qr_code}" | qrencode -s8 -o ${cur_dir}/shadowsocks_libev_qr.png echo "Your QR Code has been saved as a PNG file path:" - echo -e "${green} ${cur_dir}/shadowsocks_python_qr.png ${plain}" + echo -e "${green} ${cur_dir}/shadowsocks_libev_qr.png ${plain}" fi } @@ -1185,32 +992,6 @@ qr_generate_r() { fi } -qr_generate_go() { - if [ "$(command -v qrencode)" ]; then - local tmp=$(echo -n "${shadowsockscipher}:${shadowsockspwd}@$(get_ip):${shadowsocksport}" | base64 -w0) - local qr_code="ss://${tmp}" - echo - echo "Your QR Code: (For Shadowsocks Windows, OSX, Android and iOS clients)" - echo -e "${green} ${qr_code} ${plain}" - echo -n "${qr_code}" | qrencode -s8 -o ${cur_dir}/shadowsocks_go_qr.png - echo "Your QR Code has been saved as a PNG file path:" - echo -e "${green} ${cur_dir}/shadowsocks_go_qr.png ${plain}" - fi -} - -qr_generate_libev() { - if [ "$(command -v qrencode)" ]; then - local tmp=$(echo -n "${shadowsockscipher}:${shadowsockspwd}@$(get_ip):${shadowsocksport}" | base64 -w0) - local qr_code="ss://${tmp}" - echo - echo "Your QR Code: (For Shadowsocks Windows, OSX, Android and iOS clients)" - echo -e "${green} ${qr_code} ${plain}" - echo -n "${qr_code}" | qrencode -s8 -o ${cur_dir}/shadowsocks_libev_qr.png - echo "Your QR Code has been saved as a PNG file path:" - echo -e "${green} ${cur_dir}/shadowsocks_libev_qr.png ${plain}" - fi -} - install_main() { install_libsodium if ! ldconfig -p | grep -wq "/usr/lib"; then @@ -1219,24 +1000,16 @@ install_main() { ldconfig if [ "${selected}" == "1" ]; then - install_shadowsocks_python - install_completed_python - qr_generate_python - elif [ "${selected}" == "2" ]; then - install_shadowsocks_r - install_completed_r - qr_generate_r - elif [ "${selected}" == "3" ]; then - install_shadowsocks_go - install_completed_go - qr_generate_go - elif [ "${selected}" == "4" ]; then install_mbedtls install_shadowsocks_libev install_shadowsocks_libev_obfs install_shadowsocks_libev_v2ray_plugin install_completed_libev qr_generate_libev + elif [ "${selected}" == "2" ]; then + install_shadowsocks_r + install_completed_r + qr_generate_r fi echo @@ -1249,10 +1022,8 @@ install_cleanup() { rm -rf simple-obfs rm -rf ${libsodium_file} ${libsodium_file}.tar.gz rm -rf ${mbedtls_file} ${mbedtls_file}-gpl.tgz - rm -rf ${shadowsocks_python_file} ${shadowsocks_python_file}.zip - rm -rf ${shadowsocks_r_file} ${shadowsocks_r_file}.tar.gz - rm -rf ${shadowsocks_go_file_64}.gz ${shadowsocks_go_file_32}.gz rm -rf ${shadowsocks_libev_file} ${shadowsocks_libev_file}.tar.gz + rm -rf ${shadowsocks_r_file} ${shadowsocks_r_file}.tar.gz rm -rf $v2ray_file } @@ -1270,90 +1041,6 @@ install_shadowsocks() { install_cleanup } -uninstall_shadowsocks_python() { - printf "Are you sure uninstall ${red}${software[0]}${plain}? [y/n]\n" - read -p "(default: n):" answer - [ -z ${answer} ] && answer="n" - if [ "${answer}" == "y" ] || [ "${answer}" == "Y" ]; then - ${shadowsocks_python_init} status >/dev/null 2>&1 - if [ $? -eq 0 ]; then - ${shadowsocks_python_init} stop - fi - local service_name=$(basename ${shadowsocks_python_init}) - if check_sys packageManager yum; then - chkconfig --del ${service_name} - elif check_sys packageManager apt; then - update-rc.d -f ${service_name} remove - fi - - rm -fr $(dirname ${shadowsocks_python_config}) - rm -f ${shadowsocks_python_init} - rm -f /var/log/shadowsocks.log - if [ -f /usr/local/shadowsocks_python.log ]; then - cat /usr/local/shadowsocks_python.log | xargs rm -rf - rm -f /usr/local/shadowsocks_python.log - fi - echo -e "[${green}Info${plain}] ${software[0]} uninstall success" - else - echo - echo -e "[${green}Info${plain}] ${software[0]} uninstall cancelled, nothing to do..." - echo - fi -} - -uninstall_shadowsocks_r() { - printf "Are you sure uninstall ${red}${software[1]}${plain}? [y/n]\n" - read -p "(default: n):" answer - [ -z ${answer} ] && answer="n" - if [ "${answer}" == "y" ] || [ "${answer}" == "Y" ]; then - ${shadowsocks_r_init} status >/dev/null 2>&1 - if [ $? -eq 0 ]; then - ${shadowsocks_r_init} stop - fi - local service_name=$(basename ${shadowsocks_r_init}) - if check_sys packageManager yum; then - chkconfig --del ${service_name} - elif check_sys packageManager apt; then - update-rc.d -f ${service_name} remove - fi - rm -fr $(dirname ${shadowsocks_r_config}) - rm -f ${shadowsocks_r_init} - rm -f /var/log/shadowsocks.log - rm -fr /usr/local/shadowsocks - echo -e "[${green}Info${plain}] ${software[1]} uninstall success" - else - echo - echo -e "[${green}Info${plain}] ${software[1]} uninstall cancelled, nothing to do..." - echo - fi -} - -uninstall_shadowsocks_go() { - printf "Are you sure uninstall ${red}${software[2]}${plain}? [y/n]\n" - read -p "(default: n):" answer - [ -z ${answer} ] && answer="n" - if [ "${answer}" == "y" ] || [ "${answer}" == "Y" ]; then - ${shadowsocks_go_init} status >/dev/null 2>&1 - if [ $? -eq 0 ]; then - ${shadowsocks_go_init} stop - fi - local service_name=$(basename ${shadowsocks_go_init}) - if check_sys packageManager yum; then - chkconfig --del ${service_name} - elif check_sys packageManager apt; then - update-rc.d -f ${service_name} remove - fi - rm -fr $(dirname ${shadowsocks_go_config}) - rm -f ${shadowsocks_go_init} - rm -f /usr/bin/shadowsocks-server - echo -e "[${green}Info${plain}] ${software[2]} uninstall success" - else - echo - echo -e "[${green}Info${plain}] ${software[2]} uninstall cancelled, nothing to do..." - echo - fi -} - uninstall_shadowsocks_libev() { printf "Are you sure uninstall ${red}${software[3]}${plain}? [y/n]\n" read -p "(default: n):" answer @@ -1402,6 +1089,33 @@ uninstall_shadowsocks_libev() { fi } +uninstall_shadowsocks_r() { + printf "Are you sure uninstall ${red}${software[1]}${plain}? [y/n]\n" + read -p "(default: n):" answer + [ -z ${answer} ] && answer="n" + if [ "${answer}" == "y" ] || [ "${answer}" == "Y" ]; then + ${shadowsocks_r_init} status >/dev/null 2>&1 + if [ $? -eq 0 ]; then + ${shadowsocks_r_init} stop + fi + local service_name=$(basename ${shadowsocks_r_init}) + if check_sys packageManager yum; then + chkconfig --del ${service_name} + elif check_sys packageManager apt; then + update-rc.d -f ${service_name} remove + fi + rm -fr $(dirname ${shadowsocks_r_config}) + rm -f ${shadowsocks_r_init} + rm -f /var/log/shadowsocks.log + rm -fr /usr/local/shadowsocks + echo -e "[${green}Info${plain}] ${software[1]} uninstall success" + else + echo + echo -e "[${green}Info${plain}] ${software[1]} uninstall cancelled, nothing to do..." + echo + fi +} + uninstall_shadowsocks() { while true; do echo "Which Shadowsocks server you want to uninstall?" @@ -1409,23 +1123,23 @@ uninstall_shadowsocks() { hint="${software[$i - 1]}" echo -e "${green}${i}${plain}) ${hint}" done - read -p "Please enter a number [1-4]:" un_select + read -p "Please enter a number [1-2]:" un_select case "${un_select}" in - 1 | 2 | 3 | 4) + 1 | 2) echo echo "You choose = ${software[${un_select} - 1]}" echo break ;; *) - echo -e "[${red}Error${plain}] Please only enter a number [1-4]" + echo -e "[${red}Error${plain}] Please only enter a number [1-2]" ;; esac done if [ "${un_select}" == "1" ]; then - if [ -f ${shadowsocks_python_init} ]; then - uninstall_shadowsocks_python + if [ -f ${shadowsocks_libev_init} ]; then + uninstall_shadowsocks_libev else echo -e "[${red}Error${plain}] ${software[${un_select} - 1]} not installed, please check it and try again." echo @@ -1439,22 +1153,6 @@ uninstall_shadowsocks() { echo exit 1 fi - elif [ "${un_select}" == "3" ]; then - if [ -f ${shadowsocks_go_init} ]; then - uninstall_shadowsocks_go - else - echo -e "[${red}Error${plain}] ${software[${un_select} - 1]} not installed, please check it and try again." - echo - exit 1 - fi - elif [ "${un_select}" == "4" ]; then - if [ -f ${shadowsocks_libev_init} ]; then - uninstall_shadowsocks_libev - else - echo -e "[${red}Error${plain}] ${software[${un_select} - 1]} not installed, please check it and try again." - echo - exit 1 - fi fi } diff --git a/shadowsocks-debian b/shadowsocks-debian deleted file mode 100644 index b10059e..0000000 --- a/shadowsocks-debian +++ /dev/null @@ -1,95 +0,0 @@ -#!/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 deleted file mode 100644 index ed34dcf..0000000 --- a/shadowsocks-go +++ /dev/null @@ -1,120 +0,0 @@ -#!/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 deleted file mode 100644 index 12ebcd3..0000000 --- a/shadowsocks-go-debian +++ /dev/null @@ -1,112 +0,0 @@ -#!/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