Update menu.sh

dependabot/github_actions/actions/checkout-3.1.0
fscarmen 3 years ago committed by GitHub
parent 1cb8924cec
commit 2df7af0b9c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 65
      menu.sh

@ -2,14 +2,14 @@
export LANG=en_US.UTF-8
# 当前脚本版本号和新增功能
VERSION=2.42
VERSION=2.43
declare -A T
T[E0]="\n Language:\n 1.English (default) \n 2.简体中文\n"
T[C0]="${T[E0]}"
T[E1]="1.Add shortcut hints in the menu; 2.Remove the shortcut of S. Single and dual stacks swithing can directly use [warp 4/6/d]"
T[C1]="1.在菜单中增加快捷方式的提示; 2.移除快捷方式 s,单双栈相互切换可以直接 [warp 4/6/d]"
T[E1]="1. Support NAT VPS"
T[C1]="1. 支持 NAT 服务器"
T[E2]="The script must be run as root, you can enter sudo -i and then download and run again. Feedback: [https://github.com/fscarmen/warp/issues]"
T[C2]="必须以root方式运行脚本,可以输入 sudo -i 后重新下载运行,问题反馈:[https://github.com/fscarmen/warp/issues]"
T[E3]="The TUN module is not loaded. You should turn it on in the control panel. Ask the supplier for more help. Feedback: [https://github.com/fscarmen/warp/issues]"
@ -422,8 +422,8 @@ check_operating_system(){
# 安装 curl
check_dependencies(){
type -P curl >/dev/null 2>&1 || (yellow " ${T[${L}7]} " && ${PACKAGE_INSTALL[int]} curl) || (yellow " ${T[${L}8]} " && ${PACKAGE_UPDATE[int]} && ${PACKAGE_INSTALL[int]} curl)
! type -P curl >/dev/null 2>&1 && red " ${T[${L}9]} " && exit 1
type -p curl >/dev/null 2>&1 || (yellow " ${T[${L}7]} " && ${PACKAGE_INSTALL[int]} curl 2>/dev/null) || (yellow " ${T[${L}8]} " && ${PACKAGE_UPDATE[int]} && ${PACKAGE_INSTALL[int]} curl 2>/dev/null)
! type -p curl >/dev/null 2>&1 && red " ${T[${L}9]} " && exit 1
[[ $SYSTEM = Alpine ]] && ! type -P curl >/dev/null 2>&1 && ${PACKAGE_UPDATE[int]} && ${PACKAGE_INSTALL[int]} curl wget grep
}
@ -431,7 +431,6 @@ check_dependencies(){
ip4_info(){
unset IP4 LAN4 COUNTRY4 ASNORG4 TRACE4 PLUS4 WARPSTATUS4
IP4=$(curl -ks4m8 https://ip.gs/json $INTERFACE)
LAN4=$(ip route get 162.159.193.10 2>/dev/null | grep -oP 'src \K\S+')
WAN4=$(expr "$IP4" : '.*ip\":\"\([^"]*\).*')
COUNTRY4=$(expr "$IP4" : '.*country\":\"\([^"]*\).*')
ASNORG4=$(expr "$IP4" : '.*asn_org\":\"\([^"]*\).*')
@ -445,7 +444,6 @@ ip4_info(){
ip6_info(){
unset IP6 LAN6 COUNTRY6 ASNORG6 TRACE6 PLUS6 WARPSTATUS6
IP6=$(curl -ks6m8 https://ip.gs/json)
LAN6=$(ip route get 2606:4700:d0::a29f:c001 2>/dev/null | grep -oP 'src \K\S+')
WAN6=$(expr "$IP6" : '.*ip\":\"\([^"]*\).*')
COUNTRY6=$(expr "$IP6" : '.*country\":\"\([^"]*\).*')
ASNORG6=$(expr "$IP6" : '.*asn_org\":\"\([^"]*\).*')
@ -859,23 +857,29 @@ check_stack(){
if [[ -e /etc/wireguard/wgcf.conf ]]; then
grep -q "^#.*0\.\0\/0" /etc/wireguard/wgcf.conf && T4=0 || T4=1
grep -q "^#.*\:\:\/0" /etc/wireguard/wgcf.conf && T6=0 || T6=1
else
else
case "$TRACE4" in off ) T4='0';; 'on'|'plus' ) T4='1';; esac
case "$TRACE6" in off ) T6='0';; 'on'|'plus' ) T6='1';; esac
fi
CASE=("@0" "0@" "0@0" "@1" "0@1" "1@" "1@0" "1@1")
for ((m=0;m<${#CASE[@]};m++)); do [[ $T4@$T6 = ${CASE[m]} ]] && break; done
NATIVE=("IPv6 only" "IPv4 only" "${T[${L}69]}")
CONF1=("014" "104" "114")
CONF2=("016" "106" "116")
CONF3=("01D" "10D" "11D")
WARP_BEFORE=("" "" "" "WARP IPv6 only" "WARP IPv6" "WARP IPv4 only" "WARP IPv4" "${T[${L}70]}")
WARP_AFTER1=("" "" "" "WARP IPv4" "WARP IPv4" "WARP IPv6" "WARP IPv6" "WARP IPv4")
WARP_AFTER2=("" "" "" "${T[${L}70]}" "${T[${L}70]}" "${T[${L}70]}" "${T[${L}70]}" "WARP IPv6")
TO1=("" "" "" "014" "014" "106" "106" "114")
TO2=("" "" "" "01D" "01D" "10D" "10D" "116")
SHORTCUT1=("" "" "" "(warp-go 4)" "(warp-go 4)" "(warp-go 6)" "(warp-go 6)" "(warp-go 4)")
SHORTCUT2=("" "" "" "(warp-go d)" "(warp-go d)" "(warp-go d)" "(warp-go d)" "(warp-go 6)")
SHORTCUT1=("" "" "" "(warp 4)" "(warp 4)" "(warp 6)" "(warp 6)" "(warp 4)")
SHORTCUT2=("" "" "" "(warp d)" "(warp d)" "(warp d)" "(warp d)" "(warp 6)")
# 判断用于检测 NAT VSP,以选择正确配置文件
if [ "$m" -le 3 ]; then
NAT=("0@1" "0@1" "1@1")
for ((n=0;n<${#NAT[@]};n++)); do [ "$IPV4@$IPV6" = "${NAT[n]}" ] && break; done
CONF1=("014" "104" "114")
CONF2=("016" "106" "116")
CONF3=("01D" "10D" "11D")
fi
}
# 单双栈在线互换。先看菜单是否有选择,再看传参数值,再没有显示2个可选项
@ -932,33 +936,30 @@ EOF
fi
fi
# 判断是否大陆 VPS。先尝试连接 CloudFlare WARP 服务的 Endpoint IP,如遇到 WARP 断网则先关闭、杀进程后重试一次,仍然不通则 WARP 项目不可用。
ping6 -c2 -w8 2606:4700:d0::a29f:c001 >/dev/null 2>&1 && IPV6=1 && CDN=-6 || IPV6=0
ping -c2 -W8 162.159.193.10 >/dev/null 2>&1 && IPV4=1 && CDN=-4 || IPV4=0
if [[ $IPV4$IPV6 = 00 && -n $(wg 2>/dev/null) ]]; then
wg-quick down wgcf >/dev/null 2>&1
kill -9 $(pgrep -f wireguard 2>/dev/null)
ping6 -c2 -w10 2606:4700:d0::a29f:c001 >/dev/null 2>&1 && IPV6=1 && CDN=-6
ping -c2 -W10 162.159.193.10 >/dev/null 2>&1 && IPV4=1 && CDN=-4
fi
# 判断处理器架构
case $(uname -m) in
aarch64 ) ARCHITECTURE=arm64; AMD64_ONLY="${T[${L}156]}";;
x86_64 ) ARCHITECTURE=amd64;;
s390x ) ARCHITECTURE=s390x; AMD64_ONLY="${T[${L}156]}";;
* ) red " $(eval echo "${T[${L}134]}") " && exit 1;;
esac
# 判断机器原生状态类型
LAN4=$(ip route get 192.168.193.10 2>/dev/null | grep -oP 'src \K\S+')
LAN6=$(ip route get 2606:4700:d0::a29f:c001 2>/dev/null | grep -oP 'src \K\S+')
[ -n "$LAN4" ] && IPV4=1 || IPV4=0
[ -n "$LAN6" ] && IPV6=1 || IPV6=0
[ -n "$LAN4" ] && ping -c2 -W3 162.159.193.10 >/dev/null 2>&1 && CDN=-4 || CDN=-6
# 判断当前 IPv4 与 IPv6 ,IP归属 及 WARP 方案, Linux Client 是否开启
[[ $IPV4 = 1 ]] && ip4_info
[[ $IPV6 = 1 ]] && ip6_info
[ "$IPV4" = 1 ] && ip4_info
[ "$IPV6" = 1 ] && ip6_info
[[ $L = C && -n "$COUNTRY4" ]] && COUNTRY4=$(translate "$COUNTRY4")
[[ $L = C && -n "$COUNTRY6" ]] && COUNTRY6=$(translate "$COUNTRY6")
# 判断当前 WARP 状态,决定变量 PLAN,变量 PLAN 含义:1=单栈 2=双栈 3=WARP已开启
[[ $TRACE4$TRACE6 =~ on|plus ]] && PLAN=3 || PLAN=$((IPV4+IPV6))
# 判断处理器架构
case $(uname -m) in
aarch64 ) ARCHITECTURE=arm64; AMD64_ONLY="${T[${L}156]}";;
x86_64 ) ARCHITECTURE=amd64;;
s390x ) ARCHITECTURE=s390x; AMD64_ONLY="${T[${L}156]}";;
* ) red " $(eval echo "${T[${L}134]}") " && exit 1;;
esac
# 判断当前 Linux Client 状态,决定变量 CLIENT,变量 CLIENT 含义:0=未安装 1=已安装未激活 2=状态激活 3=Clinet proxy 已开启 5=Clinet warp 已开启
CLIENT=0
if type -P warp-cli >/dev/null 2>&1; then

Loading…
Cancel
Save