From 772dbc8d9673ae99385c5108972fe73ab713eae5 Mon Sep 17 00:00:00 2001 From: fscarmen <62703343+fscarmen@users.noreply.github.com> Date: Sat, 9 Apr 2022 17:44:57 +0800 Subject: [PATCH] Update menu.sh --- menu.sh | 124 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 61 insertions(+), 63 deletions(-) diff --git a/menu.sh b/menu.sh index 48cd47b..645eefe 100644 --- a/menu.sh +++ b/menu.sh @@ -587,8 +587,30 @@ change_ip(){ } change_client(){ - if [[ -e /etc/wireguard/luban ]]; then - interface_restart(){ + if [[ $(warp-cli --accept-tos settings) =~ WarpProxy ]]; then + socks5_restart(){ + red " $(eval echo "${T[${L}126]}") " && warp-cli --accept-tos delete >/dev/null 2>&1 && warp-cli --accept-tos register >/dev/null 2>&1 && sleep $j && + [[ -e /etc/wireguard/license ]] && warp-cli --accept-tos set-license $(cat /etc/wireguard/license) >/dev/null 2>&1 && sleep 2 + } + + PROXYPORT="$(ss -nltp | grep 'warp' | grep -oP '127.0*\S+' | cut -d: -f2)" + [[ -z "$EXPECT" ]] && input_region + i=0; [[ -e /etc/wireguard/license ]] && j=13 || j=15 + while true + do (( i++ )) || true + ip_now=$(date +%s); RUNTIME=$((ip_now - ip_start)); DAY=$(( RUNTIME / 86400 )); HOUR=$(( (RUNTIME % 86400 ) / 3600 )); MIN=$(( (RUNTIME % 86400 % 3600) / 60 )); SEC=$(( RUNTIME % 86400 % 3600 % 60 )) + proxy_info + WAN=$PROXYIP && ASNORG=$PROXYASNORG && NF=4 && COUNTRY=$PROXYCOUNTRY + RESULT=$(curl --user-agent "${UA_Browser}" -sx socks5h://localhost:$PROXYPORT -fsL --write-out %{http_code} --output /dev/null --max-time 10 "https://www.netflix.com/title/$RESULT_TITLE" 2>&1) + if [[ $RESULT = 200 ]]; then + REGION=$(tr '[:lower:]' '[:upper:]' <<< $(curl --user-agent "${UA_Browser}" -sx socks5h://localhost:$PROXYPORT -fs --max-time 10 --write-out %{redirect_url} --output /dev/null "https://www.netflix.com/title/$REGION_TITLE" | sed 's/.*com\/\([^-/]\{1,\}\).*/\1/g')) + REGION=${REGION:-'US'} + echo "$REGION" | grep -qi "$EXPECT" && green " $(eval echo "${T[${L}125]}") " && i=0 && sleep 1h || socks5_restart + else socks5_restart + fi + done + + else interface_restart(){ red " $(eval echo "${T[${L}126]}") " && warp-cli --accept-tos delete >/dev/null 2>&1 && warp-cli --accept-tos register >/dev/null 2>&1 && sleep $j && [[ -e /etc/wireguard/license ]] && warp-cli --accept-tos set-license $(cat /etc/wireguard/license) >/dev/null 2>&1 && sleep 2 warp-cli --accept-tos disconnect >/dev/null 2>&1 @@ -622,28 +644,6 @@ change_ip(){ fi done - else - socks5_restart(){ - red " $(eval echo "${T[${L}126]}") " && warp-cli --accept-tos delete >/dev/null 2>&1 && warp-cli --accept-tos register >/dev/null 2>&1 && sleep $j && - [[ -e /etc/wireguard/license ]] && warp-cli --accept-tos set-license $(cat /etc/wireguard/license) >/dev/null 2>&1 && sleep 2 - } - - PROXYPORT="$(ss -nltp | grep 'warp' | grep -oP '127.0*\S+' | cut -d: -f2)" - [[ -z "$EXPECT" ]] && input_region - i=0; [[ -e /etc/wireguard/license ]] && j=13 || j=15 - while true - do (( i++ )) || true - ip_now=$(date +%s); RUNTIME=$((ip_now - ip_start)); DAY=$(( RUNTIME / 86400 )); HOUR=$(( (RUNTIME % 86400 ) / 3600 )); MIN=$(( (RUNTIME % 86400 % 3600) / 60 )); SEC=$(( RUNTIME % 86400 % 3600 % 60 )) - proxy_info - WAN=$PROXYIP && ASNORG=$PROXYASNORG && NF=4 && COUNTRY=$PROXYCOUNTRY - RESULT=$(curl --user-agent "${UA_Browser}" -sx socks5h://localhost:$PROXYPORT -fsL --write-out %{http_code} --output /dev/null --max-time 10 "https://www.netflix.com/title/$RESULT_TITLE" 2>&1) - if [[ $RESULT = 200 ]]; then - REGION=$(tr '[:lower:]' '[:upper:]' <<< $(curl --user-agent "${UA_Browser}" -sx socks5h://localhost:$PROXYPORT -fs --max-time 10 --write-out %{redirect_url} --output /dev/null "https://www.netflix.com/title/$REGION_TITLE" | sed 's/.*com\/\([^-/]\{1,\}\).*/\1/g')) - REGION=${REGION:-'US'} - echo "$REGION" | grep -qi "$EXPECT" && green " $(eval echo "${T[${L}125]}") " && i=0 && sleep 1h || socks5_restart - else socks5_restart - fi - done fi } @@ -828,46 +828,45 @@ onoff(){ # Proxy 开关,先检查是否已安装,再根据当前状态转向相反状态 proxy_onoff(){ ! type -P warp-cli >/dev/null 2>&1 && red " ${T[${L}156]} " && exit 1 - if [[ -e /etc/wireguard/luban ]]; then - if [[ $(ip a) =~ 'CloudflareWARP' ]]; then - warp-cli --accept-tos disconnect >/dev/null 2>&1 - warp-cli --accept-tos disable-always-on >/dev/null 2>&1 - ip -4 rule delete from 172.16.0.2 lookup 51820 - ip -4 rule delete table main suppress_prefixlength 0 - green " ${T[${L}91]} " && exit 0 + if [[ $(warp-cli --accept-tos settings) =~ WarpProxy ]]; then + PROXY=$(warp-cli --accept-tos status 2>/dev/null) + case "$PROXY" in + *Connecting* ) red " ${T[${L}96]} " && exit 1;; + *missing* ) warp-cli --accept-tos register >/dev/null 2>&1 && [[ -e /etc/wireguard/license ]] && warp-cli --accept-tos set-license $(cat /etc/wireguard/license)>/dev/null 2>&1;; + *Connected* ) warp-cli --accept-tos disconnect >/dev/null 2>&1 && warp-cli --accept-tos disable-always-on >/dev/null 2>&1 && [[ ! $(ss -nltp) =~ 'warp-svc' ]] && green " ${T[${L}91]} " && exit 0;; + *Disconnected* ) warp-cli --accept-tos connect >/dev/null 2>&1 && warp-cli --accept-tos enable-always-on >/dev/null 2>&1 && STATUS=1 && sleep 1 && proxy_info + if [[ $STATUS = 1 ]]; then + [[ $(ss -nltp) =~ 'warp-svc' ]] && green " ${T[${L}90]}\n $(eval echo "${T[${L}27]}") " && exit 0 + [[ $(warp-cli --accept-tos status 2>/dev/null) =~ Connecting ]] && red " ${T[${L}96]} " && exit 1 + fi;; + * ) red " ${T[${L}93]} " && exit 1;; + esac + + else if [[ $(ip a) =~ 'CloudflareWARP' ]]; then + warp-cli --accept-tos disconnect >/dev/null 2>&1 + warp-cli --accept-tos disable-always-on >/dev/null 2>&1 + ip -4 rule delete from 172.16.0.2 lookup 51820 + ip -4 rule delete table main suppress_prefixlength 0 + green " ${T[${L}91]} " && exit 0 else - warp-cli --accept-tos connect >/dev/null 2>&1 - warp-cli --accept-tos enable-always-on >/dev/null 2>&1 - sleep 5 - ip -4 rule add from 172.16.0.2 lookup 51820 - ip -4 route add default dev CloudflareWARP table 51820 - ip -4 rule add table main suppress_prefixlength 0 - INTERFACE='--interface CloudflareWARP' - ip4_info; [[ $L = C && -n "$COUNTRY4" ]] && COUNTRY4=$(translate "$COUNTRY4") - ACCOUNT=$(warp-cli --accept-tos account 2>/dev/null) - if [[ $ACCOUNT =~ 'Limited' ]]; then + warp-cli --accept-tos connect >/dev/null 2>&1 + warp-cli --accept-tos enable-always-on >/dev/null 2>&1 + sleep 5 + ip -4 rule add from 172.16.0.2 lookup 51820 + ip -4 route add default dev CloudflareWARP table 51820 + ip -4 rule add table main suppress_prefixlength 0 + INTERFACE='--interface CloudflareWARP' + ip4_info; [[ $L = C && -n "$COUNTRY4" ]] && COUNTRY4=$(translate "$COUNTRY4") + ACCOUNT=$(warp-cli --accept-tos account 2>/dev/null) + if [[ $ACCOUNT =~ 'Limited' ]]; then QUOTA=$(expr "$ACCOUNT" : '.*Quota:\s\([0-9]\{1,\}\)\s.*') [[ $QUOTA -gt 10000000000000 ]] && QUOTA="$((QUOTA/1000000000000)) TiB" || QUOTA="$((QUOTA/1000000000)) GiB" AC='+' + fi + [[ $(ip a) =~ 'CloudflareWARP' ]] && green " ${T[${L}90]} $(eval echo "${T[${L}169]}") " + [[ $ACCOUNT =~ 'Limited' ]] && green " ${T[${L}63]}:$QUOTA " + exit 0 fi - [[ $(ip a) =~ 'CloudflareWARP' ]] && green " ${T[${L}90]} $(eval echo "${T[${L}169]}") " - [[ $ACCOUNT =~ 'Limited' ]] && green " ${T[${L}63]}:$QUOTA " - exit 0 - fi - - else - PROXY=$(warp-cli --accept-tos status 2>/dev/null) - case "$PROXY" in - *Connecting* ) red " ${T[${L}96]} " && exit 1;; - *missing* ) warp-cli --accept-tos register >/dev/null 2>&1 && [[ -e /etc/wireguard/license ]] && warp-cli --accept-tos set-license $(cat /etc/wireguard/license)>/dev/null 2>&1;; - *Connected* ) warp-cli --accept-tos disconnect >/dev/null 2>&1 && warp-cli --accept-tos disable-always-on >/dev/null 2>&1 && [[ ! $(ss -nltp) =~ 'warp-svc' ]] && green " ${T[${L}91]} " && exit 0;; - *Disconnected* ) warp-cli --accept-tos connect >/dev/null 2>&1 && warp-cli --accept-tos enable-always-on >/dev/null 2>&1 && STATUS=1 && sleep 1 && proxy_info - if [[ $STATUS = 1 ]]; then - [[ $(ss -nltp) =~ 'warp-svc' ]] && green " ${T[${L}90]}\n $(eval echo "${T[${L}27]}") " && exit 0 - [[ $(warp-cli --accept-tos status 2>/dev/null) =~ Connecting ]] && red " ${T[${L}96]} " && exit 1 - fi;; - * ) red " ${T[${L}93]} " && exit 1;; - esac fi } @@ -980,10 +979,10 @@ EOF if type -P warp-cli >/dev/null 2>&1; then CLIENT=1 && CLIENT_INSTALLED="${T[${L}92]}" [[ $(systemctl is-active warp-svc 2>/dev/null) = active || $(systemctl is-enabled warp-svc 2>/dev/null) = enabled ]] && CLIENT=2 - if [[ -e /etc/wireguard/luban ]]; then - [[ $CLIENT = 2 ]] && [[ $(ip a) =~ 'CloudflareWARP' ]] && CLIENT=5 && INTERFACE='--interface CloudflareWARP' && ip4_info - else + if [[ $(warp-cli --accept-tos settings) =~ WarpProxy ]]; then [[ $CLIENT = 2 ]] && [[ $(ss -nltp) =~ 'warp-svc' ]] && CLIENT=3 && proxy_info + else + [[ $CLIENT = 2 ]] && [[ $(ip a) =~ 'CloudflareWARP' ]] && CLIENT=5 && INTERFACE='--interface CloudflareWARP' && ip4_info fi fi @@ -1536,7 +1535,6 @@ proxy(){ warp-cli --accept-tos set-mode warp >/dev/null 2>&1 warp-cli --accept-tos connect >/dev/null 2>&1 warp-cli --accept-tos enable-always-on >/dev/null 2>&1 - echo '' > /etc/wireguard/luban sleep 5 ip -4 rule add from 172.16.0.2 lookup 51820 ip -4 route add default dev CloudflareWARP table 51820