mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-11-09 06:05:22 +00:00
Create ss-qr.sh
Bash script to generate QR code on shadowsocks-libev server.
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env bash
|
||||
config_file="/etc/shadowsocks-libev/config.json"
|
||||
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
||||
export PATH
|
||||
#
|
||||
# Generate QR Code for Shadowsocks Windows, OSX, Android and iOS clients
|
||||
# (use on server with installed Shadowsocks-libev)
|
||||
#
|
||||
# This script is mostly borrowed from the script:
|
||||
# Auto Install Shadowsocks Server for CentOS/Debian/Ubuntu
|
||||
# by teddysun
|
||||
# (https://github.com/teddysun/shadowsocks_install)
|
||||
#
|
||||
|
||||
red='\033[0;31m'
|
||||
green='\033[0;32m'
|
||||
yellow='\033[0;33m'
|
||||
plain='\033[0m'
|
||||
|
||||
|
||||
function call() { # var=func [args ...]
|
||||
REPLY=; "${1#*=}" "${@:2}"; eval "${1%%=*}=\$REPLY; return $?"
|
||||
}
|
||||
|
||||
get_json_value() {
|
||||
if [ "$(command -v python3)" = "" ]; then
|
||||
echo ""
|
||||
echo -e "${red}Error: ${plain}There is no 'python3' command in the system"
|
||||
return 1
|
||||
fi
|
||||
REPLY="$(echo "$1" | python3 -c "import sys, json; print(json.load(sys.stdin)['$2'])")"
|
||||
}
|
||||
|
||||
get_ip(){
|
||||
local IP=$( ip addr | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | egrep -v "^192\.168|^172\.1[6-9]\.|^172\.2[0-9]\.|^172\.3[0-2]\.|^10\.|^127\.|^255\.|^0\." | head -n 1 )
|
||||
[ -z ${IP} ] && IP=$( wget -qO- -t1 -T2 ipv4.icanhazip.com )
|
||||
[ -z ${IP} ] && IP=$( wget -qO- -t1 -T2 ipinfo.io/ip )
|
||||
echo ${IP}
|
||||
}
|
||||
|
||||
get_ipv6(){
|
||||
local ipv6=$(wget -qO- -t1 -T2 ipv6.icanhazip.com)
|
||||
[ -z ${ipv6} ] && return 1 || return 0
|
||||
}
|
||||
|
||||
qr_generate_libev(){
|
||||
if [ "$(command -v qrencode)" = "" ]; then
|
||||
echo ""
|
||||
echo -e "${red}Error: ${plain}There is no 'qrencode' command in the system"
|
||||
return 1
|
||||
fi
|
||||
local tmp=$(echo -n "${shadowsockscipher}:${shadowsockspwd}@$(get_ip):${shadowsocksport}" | base64 -w0)
|
||||
local qr_code="ss://${tmp}"
|
||||
local cur_dir=$(pwd)
|
||||
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}"
|
||||
}
|
||||
|
||||
|
||||
config_str=$(cat "$config_file")
|
||||
|
||||
call shadowsockscipher=get_json_value "$config_str" "method"
|
||||
if [ $? -eq 1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
call shadowsockspwd=get_json_value "$config_str" "password"
|
||||
call shadowsocksport=get_json_value "$config_str" "server_port"
|
||||
|
||||
|
||||
qr_generate_libev
|
||||
if [ $? -eq 1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user