From 4da0930f4d75e4e56e08cb54ed2c34e07e835db8 Mon Sep 17 00:00:00 2001
From: xykt <152045469+xykt@users.noreply.github.com>
Date: Sun, 20 Apr 2025 00:59:08 +0800
Subject: [PATCH] Update net.sh
Fixed connectivity issues with CN IPs
---
net.sh | 45 ++++++++++++++++++++++++++++++++-------------
1 file changed, 32 insertions(+), 13 deletions(-)
diff --git a/net.sh b/net.sh
index cbe3592..279ce42 100644
--- a/net.sh
+++ b/net.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-script_version="v2025-04-19"
+script_version="v2025-04-20"
ADLines=0
check_bash(){
current_bash_version=$(bash --version|head -n 1|awk '{for(i=1;i<=NF;i++) if ($i ~ /^[0-9]+\.[0-9]+(\.[0-9]+)?/) print $i}')
@@ -8,7 +8,7 @@ minor_version=$(echo "$current_bash_version"|cut -d'.' -f2)
if [ "$major_version" -lt 4 ]||{ [ "$major_version" -eq 4 ]&&[ "$minor_version" -lt 3 ];};then
echo "ERROR: Bash version is $current_bash_version lower than 4.3!"
echo "Tips: Run the following script to automatically upgrade Bash."
-echo "bash <(curl -sL https://raw.githubusercontent.com/xykt/IPQuality/main/ref/upgrade_bash.sh)"
+echo "bash <(curl -sL https://raw.githubusercontent.com/xykt/NetQuality/main/ref/upgrade_bash.sh)"
exit 0
fi
}
@@ -120,6 +120,7 @@ declare useNIC=""
declare usePROXY=""
declare CurlARG=""
declare UA_Browser
+declare rawgithub
declare ISO3166
declare display_max_len=80
declare mode_ping=0
@@ -499,7 +500,7 @@ case "$sysarch" in
*)echo "Unsupported architecture"
exit 1
esac
-sudo curl -o /usr/bin/speedtest "https://cdn.jsdelivr.net/gh/xykt/NetQuality@main/ref/speedtest/speedtest-$sys_type"
+sudo curl -sL -o /usr/bin/speedtest "${rawgithub}main/ref/speedtest/speedtest-$sys_type"
sudo chmod +x /usr/bin/speedtest
fi
}
@@ -526,6 +527,19 @@ adapt_locale(){
local ifunicode=$(printf '\u2800')
[[ ${#ifunicode} -gt 3 ]]&&export LC_CTYPE=en_US.UTF-8 2>/dev/null
}
+check_connectivity(){
+local url="https://www.google.com/generate_204"
+local timeout=2
+local http_code
+http_code=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout "$timeout" "$url" 2>/dev/null)
+if [[ $http_code == "204" ]];then
+rawgithub="https://github.com/xykt/NetQuality/raw/"
+return 0
+else
+rawgithub="https://testingcf.jsdelivr.net/gh/xykt/NetQuality@"
+return 1
+fi
+}
is_valid_ipv4(){
local ip=$1
if [[ $ip =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]];then
@@ -845,6 +859,10 @@ ctarget=()
ctier1=()
cupstream=()
local RESPONSE=$(curl $CurlARG -$1 --user-agent "$UA_Browser" --max-time 10 -Ls "https://bgp.tools/prefix/$IP")
+if [[ $RESPONSE == *"Overlapping Prefixes Detected"* ]];then
+bgp[prefix]=$(echo "$RESPONSE"|grep -oP '
\([^<]*\)<\/p>.*/\1/p')
if [[ ${bgp[prefix]} == */* ]];then
bgp[ip0]="${bgp[prefix]%%/*}"
@@ -930,10 +948,10 @@ trap "kill_progress_bar" RETURN
local cidr="${IP%.*}.0/24"
if [[ ${bgp[prefixnum]} != "24" ]];then
bgp[neighbortotal]="256"
-bgp[neighboractive]=$(curl -s -m 10 --user-agent "$UA_Browser" "https://bgp.tools/pfximg/$cidr"|convert png:- txt:-|grep -c "#0003FF")
+bgp[neighboractive]=$(curl -s -m 10 --user-agent "$UA_Browser" "https://bgp.tools/pfximg/$cidr"|convert png:- txt:- 2>/dev/null|grep -c "#0003FF")
fi
bgp[iptotal]="$((2**(32-${bgp[prefixnum]})))"
-bgp[ipactive]=$(curl -s -m 10 --user-agent "$UA_Browser" "https://bgp.tools/pfximg/${bgp[prefix]}"|convert png:- txt:-|grep -c "#0003FF")
+bgp[ipactive]=$(curl -s -m 10 --user-agent "$UA_Browser" "https://bgp.tools/pfximg/${bgp[prefix]}"|convert png:- txt:- 2>/dev/null|grep -c "#0003FF")
}
generate_uuidv4(){
local uuid=""
@@ -2060,7 +2078,7 @@ iperf_test(){
ibar_step=48
local ipv=$1
local port=0
-local json_data=$(curl -s https://raw.githubusercontent.com/xykt/NetQuality/refs/heads/main/ref/iperf.json)
+local json_data=$(curl -sL "${rawgithub}main/ref/iperf.json")
while IFS=" " read -r code server portl portu city cityzh;do
if [[ $YY == "cn" ]];then
icity["$code"]="$cityzh"
@@ -2202,7 +2220,7 @@ echo "$color$(printf '%6s' "$result")$Font_Suffix"
}
speedtest_test(){
ibar_step=36
-local json_data=$(curl -s https://raw.githubusercontent.com/xykt/NetQuality/refs/heads/main/ref/speedtest_cn.json)
+local json_data=$(curl -sL "${rawgithub}main/ref/speedtest_cn.json")
declare -A codemax
codemax[1]=0
codemax[2]=0
@@ -2552,14 +2570,14 @@ echo -ne "\r$shelp\n"
exit 0
}
show_ad(){
-asponsor=$(curl -sL --max-time 5 "https://cdn.jsdelivr.net/gh/xykt/IPQuality@main/ref/sponsor.ans")
-aad1=$(curl -sL --max-time 5 "https://cdn.jsdelivr.net/gh/xykt/IPQuality@main/ref/ad1.ans")
+asponsor=$(curl -sL --max-time 5 "${rawgithub}main/ref/sponsor.ans")
+aad1=$(curl -sL --max-time 5 "${rawgithub}main/ref/ad1.ans")
echo -e "$asponsor"
echo -e "$aad1"
}
read_ref(){
-ISO3166=$(curl -sL -m 10 "https://cdn.jsdelivr.net/gh/xykt/NetQuality@main/ref/iso3166.json")
-RESPONSE=$(curl -s https://cdn.jsdelivr.net/gh/xykt/NetQuality@main/ref/province.json)
+ISO3166=$(curl -sL -m 10 "${rawgithub}main/ref/iso3166.json")
+RESPONSE=$(curl -sL -m 10 "${rawgithub}main/ref/province.json")
while IFS=" " read -r province code short name;do
pcode[$province]=$code
pshort[$province]=$short
@@ -2586,7 +2604,7 @@ done
fi
while read -r as name;do
AS_MAPPING["$as"]="$name"
-done < <(curl -s "https://raw.githubusercontent.com/xykt/NetQuality/refs/heads/main/ref/AS_Mapping.txt")
+done < <(curl -sL "${rawgithub}main/ref/AS_Mapping.txt")
}
save_json(){
local head_updates=""
@@ -2752,12 +2770,13 @@ local net_report=$(show_head
[[ $mode_skip != *"6"* && $2 -eq 4 ]]&&show_speedtest
[[ $mode_skip != *"7"* ]]&&show_iperf
show_tail)
-[[ mode_json -eq 0 ]]&&echo -ne "\r$net_report\n"
[[ mode_json -eq 1 ]]&&save_json $2
+[[ mode_json -eq 0 ]]&&echo -ne "\r$net_report\n"
[[ mode_json -eq 1 ]]&&echo -ne "\r$netdata\n"
}
generate_random_user_agent
adapt_locale
+check_connectivity
get_ipv4
get_ipv6
is_valid_ipv4 $IPV4
|