TianZD
3 years ago
committed by
GitHub
1 changed files with 178 additions and 0 deletions
@ -0,0 +1,178 @@ |
|||
#!/bin/bash |
|||
# 作者:老徐 |
|||
# SSR免费分享网站(所有帐号均来源于网上别人的分享):http://ss.pythonic.life |
|||
# 源代码主页:https://github.com/the0demiurge |
|||
# 访问https://github.com/the0demiurge/CharlesScripts/blob/master/charles/bin/ssr获取本脚本的最新版 |
|||
# 使用方法:把该脚本放到$PATH里面并加入可执行权限就行(比如说放到/usr/local/bin) |
|||
# 首次使用输入ssr install后安装时会自动安装到 $HOME/.local/share/shadowsocksr |
|||
# 输入ssr config进行配置,输入JSON格式的配置文件 |
|||
# 输入ssr uninstall卸载 |
|||
# 输入ssr help 展示帮助信息 |
|||
|
|||
set -e |
|||
if [ -z "$EDITOR" ]; then |
|||
EDITOR=vi |
|||
fi |
|||
|
|||
WEBSITE=http://ss.pythonic.life |
|||
BRANCH=manyuser |
|||
GIT_REPO=https://github.com/shadowsocksrr/shadowsocksr.git |
|||
INSTALL_PATH=$HOME/.local/share/shadowsocksr |
|||
|
|||
ssr_help() { |
|||
echo ShadowSocksR python client tool |
|||
echo -e if you have not installed ssr, run \`ssr install\` first |
|||
echo Usage: |
|||
echo -e "\t" "ssr help" |
|||
echo -e "\n" "Install/Uninstall" |
|||
echo -e "\t" "ssr install install shadowsocksr client" |
|||
echo -e "\t" "ssr uninstall uninstall shadowsocksr client" |
|||
echo -e "\n" "Config and Subscribe" |
|||
echo -e "\t" "ssr update update subscription from $WEBSITE" |
|||
echo -e "\t" "ssr config edit config.json" |
|||
echo -e "\t" "ssr xclip paste configs from clipboard to config.json" |
|||
echo -e "\n" "Start/Stop/Restart" |
|||
echo -e "\t" "ssr start start the shadowsocks service" |
|||
echo -e "\t" "ssr stop stop the shadowsocks service" |
|||
echo -e "\t" "ssr restart restart the shadowsocks service" |
|||
echo -e "\n" "Testing and Maintenance" |
|||
echo -e "\t" "ssr test get ip from cip.cc using socks5 proxy" |
|||
echo -e "\t" "ssr log cat the log of shadowsocks" |
|||
echo -e "\t" "ssr shell cd into ssr installation dir" |
|||
echo -e "\t" "ssr clean clean ssr configuration backups" |
|||
} |
|||
|
|||
ssr_install() { |
|||
git clone -b $BRANCH $GIT_REPO $INSTALL_PATH |
|||
echo -e "Install finished!\nYou can visit my website $WEBSITE to acquire free ssr configs" |
|||
} |
|||
|
|||
ssr_uninstall() { |
|||
echo "Danger! are you to remove $INSTALL_PATH forever?(y/N)" |
|||
read doit |
|||
if [ $doit == 'y' ]; then rm -rvf $INSTALL_PATH; fi |
|||
} |
|||
|
|||
ssr_test() { |
|||
echo Testing Connection... |
|||
if [[ ! -z $(which jq 2>/dev/null) ]]; then |
|||
echo 'jq in use' |
|||
PORT=$(jq .local_port $INSTALL_PATH/config.json) |
|||
else |
|||
PORT=$(sed -r 's/\/\/.*$|\s+//g' $INSTALL_PATH/config.json | grep -oP '(?<!//)(?<="local_port":)\d+') |
|||
echo "local_port is $PORT; if any exceptions orrured, please install jq" |
|||
fi |
|||
|
|||
echo 'connection information:' |
|||
curl ipinfo.io --socks5 localhost:$PORT |
|||
echo |
|||
curl cip.cc --socks5 localhost:$PORT |
|||
|
|||
if [ $? == 0 ]; then |
|||
if [[ -z $(which proxychains4 2>/dev/null) ]]; then |
|||
echo "You may install proxychains4 and configure it properly to test net delay" |
|||
else |
|||
echo -e '\nChecking delay...' |
|||
proxychains4 ping -c 5 cip.cc |
|||
fi |
|||
fi |
|||
} |
|||
|
|||
ssr_start() { |
|||
cd $INSTALL_PATH/shadowsocks/ |
|||
python local.py -d start --pid-file=$INSTALL_PATH/ssr.pid --log-file=$INSTALL_PATH/ssr.log |
|||
sleep 1 |
|||
ssr_test |
|||
} |
|||
|
|||
ssr_stop() { |
|||
cd $INSTALL_PATH/shadowsocks/ |
|||
python local.py -d stop --pid-file=$INSTALL_PATH/ssr.pid --log-file=$INSTALL_PATH/ssr.log |
|||
} |
|||
|
|||
ssr_restart() { |
|||
ssr_stop |
|||
ssr_start |
|||
} |
|||
|
|||
ssr_config() { |
|||
$EDITOR $INSTALL_PATH/config.json |
|||
ssr_restart |
|||
} |
|||
|
|||
BLOCKED=' |
|||
Update failed! For more information, see |
|||
https://github.com/the0demiurge/ShadowSocksShare-OpenShift/issues/17 |
|||
And edit `$WEBSITE` in this script.' |
|||
|
|||
ISSUE=' |
|||
The response was empty, try it 10 mins later or report it on |
|||
https://github.com/the0demiurge/CharlesScripts/issues' |
|||
|
|||
ssr_update() { |
|||
JSON=$(curl -L $WEBSITE/json) |
|||
# If failed |
|||
case $? in |
|||
0) ;; |
|||
*) |
|||
echo -e $BLOCKED |
|||
exit $? |
|||
;; |
|||
esac |
|||
|
|||
# If json is empty |
|||
case $JSON in |
|||
'Not Found') |
|||
echo -e $BLOCKED |
|||
exit $? |
|||
;; |
|||
'' | '{}') |
|||
echo $ISSUE |
|||
exit 2 |
|||
;; |
|||
esac |
|||
|
|||
mv $INSTALL_PATH/config.json $INSTALL_PATH/config.json.bak.$(date +%y-%m-%d-%T) |
|||
echo -e "$JSON" | tee $INSTALL_PATH/config.json |
|||
ssr_restart |
|||
echo -e "Updated from $WEBSITE" |
|||
} |
|||
|
|||
ssr_xclip() { |
|||
xclip -o | tee $INSTALL_PATH/config.json |
|||
ssr_restart |
|||
} |
|||
|
|||
ssr_log() { |
|||
tail -f $INSTALL_PATH/ssr.log |
|||
} |
|||
|
|||
ssr_shell() { |
|||
cd $INSTALL_PATH |
|||
$SHELL |
|||
} |
|||
|
|||
ssr_clean() { |
|||
rm -ri $INSTALL_PATH/config.json.bak.* |
|||
} |
|||
|
|||
ssr_main() { |
|||
case $1 in |
|||
help) ssr_help ;; |
|||
install) ssr_install ;; |
|||
uninstall) ssr_uninstall ;; |
|||
update) ssr_update ;; |
|||
config) ssr_config ;; |
|||
xclip) ssr_xclip ;; |
|||
start) ssr_start ;; |
|||
stop) ssr_stop ;; |
|||
restart) ssr_restart ;; |
|||
test) ssr_test ;; |
|||
log) ssr_log ;; |
|||
shell) ssr_shell ;; |
|||
clean) ssr_clean ;; |
|||
*) ssr_help ;; |
|||
esac |
|||
} |
|||
|
|||
ssr_main $1 |
Loading…
Reference in new issue