mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Use same script for omr-test-speed and omr-test-speedv6. Check if the path answer else try another server
This commit is contained in:
parent
1f793f4612
commit
8b39370e9b
2 changed files with 170 additions and 121 deletions
|
@ -1,6 +1,11 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# (c) Yannick Chabanois (ycarus@zugaina.org) for OpenMPTCProuter
|
|
||||||
#
|
#
|
||||||
|
# Copyright (C) 2018-2024 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> for OpenMPTCProuter
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
# This script test global or interface speed
|
||||||
#
|
#
|
||||||
|
|
||||||
FORCEVPS=false
|
FORCEVPS=false
|
||||||
|
@ -15,26 +20,174 @@ for i in $@; do :; done
|
||||||
INTERFACE="$i"
|
INTERFACE="$i"
|
||||||
[ "$INTERFACE" = "forcevps" ] || [ "$INTERFACE" = "fasttest" ] && INTERFACE=""
|
[ "$INTERFACE" = "forcevps" ] || [ "$INTERFACE" = "fasttest" ] && INTERFACE=""
|
||||||
|
|
||||||
|
IPV6=false
|
||||||
|
if [ "$(basename $0)" = "omr-test-speedv6" ]; then
|
||||||
|
IPV6=true
|
||||||
|
fi
|
||||||
|
|
||||||
[ -n "$INTERFACE" ] && [ ! -d "/sys/class/net/$INTERFACE" ] && {
|
[ -n "$INTERFACE" ] && [ ! -d "/sys/class/net/$INTERFACE" ] && {
|
||||||
echo "You must use a real interface. You wan find them using 'ip a' for example (not $INTERFACE)"
|
echo "You must use a real interface. You wan find them using 'ip a' for example (not $INTERFACE)"
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$FASTTEST" = true ] || echo "Select best test server..."
|
|
||||||
HOSTLST="http://scaleway.testdebit.info/10G.iso http://bordeaux.testdebit.info/10G.iso http://aix-marseille.testdebit.info/10G.iso http://lyon.testdebit.info/10G.iso http://lille.testdebit.info/10G.iso http://paris.testdebit.info/10G.iso http://appliwave.testdebit.info/10G/10G.iso http://speedtest.frankfurt.linode.com/garbage.php?ckSize=10000 http://speedtest.tokyo2.linode.com/garbage.php?ckSize=10000 http://speedtest.singapore.linode.com/garbage.php?ckSize=10000 http://speedtest.newark.linode.com/garbage.php?ckSize=10000 http://speedtest.atlanta.linode.com/garbage.php?ckSize=10000 http://speedtest.dallas.linode.com/garbage.php?ckSize=10000 http://speedtest.fremont.linode.com/garbage.php?ckSize=10000 http://ipv4.bouygues.testdebit.info/10G.iso http://par.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin http://ams.download.datapacket.com/10000mb.bin http://fra.download.datapacket.com/10000mb.bin http://lon.download.datapacket.com/10000mb.bin http://mad.download.datapacket.com/10000mb.bin http://prg.download.datapacket.com/10000mb.bin http://sto.download.datapacket.com/10000mb.bin http://vie.download.datapacket.com/10000mb.bin http://war.download.datapacket.com/10000mb.bin http://atl.download.datapacket.com/10000mb.bin http://chi.download.datapacket.com/10000mb.bin http://lax.download.datapacket.com/10000mb.bin http://mia.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin http://speedtest.milkywan.fr/files/10G.iso"
|
HOSTLST="http://scaleway.testdebit.info/10G.iso http://bordeaux.testdebit.info/10G.iso http://aix-marseille.testdebit.info/10G.iso http://lyon.testdebit.info/10G.iso http://lille.testdebit.info/10G.iso http://paris.testdebit.info/10G.iso http://appliwave.testdebit.info/10G/10G.iso http://speedtest.frankfurt.linode.com/garbage.php?ckSize=10000 http://speedtest.tokyo2.linode.com/garbage.php?ckSize=10000 http://speedtest.singapore.linode.com/garbage.php?ckSize=10000 http://speedtest.newark.linode.com/garbage.php?ckSize=10000 http://speedtest.atlanta.linode.com/garbage.php?ckSize=10000 http://speedtest.dallas.linode.com/garbage.php?ckSize=10000 http://speedtest.fremont.linode.com/garbage.php?ckSize=10000 http://ipv4.bouygues.testdebit.info/10G.iso http://par.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin http://ams.download.datapacket.com/10000mb.bin http://fra.download.datapacket.com/10000mb.bin http://lon.download.datapacket.com/10000mb.bin http://mad.download.datapacket.com/10000mb.bin http://prg.download.datapacket.com/10000mb.bin http://sto.download.datapacket.com/10000mb.bin http://vie.download.datapacket.com/10000mb.bin http://war.download.datapacket.com/10000mb.bin http://atl.download.datapacket.com/10000mb.bin http://chi.download.datapacket.com/10000mb.bin http://lax.download.datapacket.com/10000mb.bin http://mia.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin http://speedtest.milkywan.fr/files/10G.iso"
|
||||||
bestping="9999"
|
HOSTLST6="http://scaleway.testdebit.info/10G.iso http://bordeaux.testdebit.info/10G.iso http://aix-marseille.testdebit.info/10G.iso http://lyon.testdebit.info/10G.iso http://lille.testdebit.info/10G.iso http://paris.testdebit.info/10G.iso http://appliwave.testdebit.info/10G/10G.iso http://speedtest.frankfurt.linode.com/garbage.php?ckSize=10000 http://speedtest.tokyo2.linode.com/garbage.php?ckSize=10000 http://speedtest.singapore.linode.com/garbage.php?ckSize=10000 http://speedtest.newark.linode.com/garbage.php?ckSize=10000 http://speedtest.atlanta.linode.com/garbage.php?ckSize=10000 http://speedtest.dallas.linode.com/garbage.php?ckSize=10000 http://speedtest.fremont.linode.com/garbage.php?ckSize=10000 http://ipv6.bouygues.testdebit.info/10G.iso http://par.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin http://ams.download.datapacket.com/10000mb.bin http://fra.download.datapacket.com/10000mb.bin http://lon.download.datapacket.com/10000mb.bin http://mad.download.datapacket.com/10000mb.bin http://prg.download.datapacket.com/10000mb.bin http://sto.download.datapacket.com/10000mb.bin http://vie.download.datapacket.com/10000mb.bin http://war.download.datapacket.com/10000mb.bin http://atl.download.datapacket.com/10000mb.bin http://chi.download.datapacket.com/10000mb.bin http://lax.download.datapacket.com/10000mb.bin http://mia.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin http://speedtest.milkywan.fr/files/10G.iso"
|
||||||
for pinghost in $HOSTLST; do
|
|
||||||
domain=$(echo $pinghost | awk -F/ '{print $3}')
|
select_server() {
|
||||||
if [ -z "$INTERFACE" ] || [ "$FORCEVPS" = true ]; then
|
[ "$FASTTEST" = true ] || echo "Select best test server..."
|
||||||
ping=$(ping -4 -c1 -w2 $domain | cut -d "/" -s -f5 | cut -d "." -f1 | tr -d '\n')
|
bestping="9999"
|
||||||
|
if [ "$IPV6" = true ]; then
|
||||||
|
for pinghost in $HOSTLST6; do
|
||||||
|
domain=$(echo $pinghost | awk -F/ '{print $3}')
|
||||||
|
if [ -z "$INTERFACE" ] || [ "$FORCEVPS" = true ]; then
|
||||||
|
ping=$(ping -6 -c1 -w2 $domain | cut -d "/" -s -f5 | cut -d "." -f1 | tr -d '\n')
|
||||||
|
else
|
||||||
|
ping=$(ping -6 -c1 -w2 -I $INTERFACE -B $domain | cut -d "/" -s -f5 | cut -d "." -f1 | tr -d '\n')
|
||||||
|
fi
|
||||||
|
[ "$FASTTEST" = true ] || echo "host: $domain - ping: $ping"
|
||||||
|
if [ -n "$ping" ] && [ "$ping" -lt "$bestping" ]; then
|
||||||
|
bestping=$ping
|
||||||
|
HOST=$pinghost
|
||||||
|
fi
|
||||||
|
done
|
||||||
else
|
else
|
||||||
ping=$(ping -4 -c1 -w2 -I $INTERFACE -B $domain | cut -d "/" -s -f5 | cut -d "." -f1 | tr -d '\n')
|
for pinghost in $HOSTLST; do
|
||||||
|
domain=$(echo $pinghost | awk -F/ '{print $3}')
|
||||||
|
if [ -z "$INTERFACE" ] || [ "$FORCEVPS" = true ]; then
|
||||||
|
ping=$(ping -4 -c1 -w2 $domain | cut -d "/" -s -f5 | cut -d "." -f1 | tr -d '\n')
|
||||||
|
else
|
||||||
|
ping=$(ping -4 -c1 -w2 -I $INTERFACE -B $domain | cut -d "/" -s -f5 | cut -d "." -f1 | tr -d '\n')
|
||||||
|
fi
|
||||||
|
[ "$FASTTEST" = true ] || echo "host: $domain - ping: $ping"
|
||||||
|
if [ -n "$ping" ] && [ "$ping" -lt "$bestping" ]; then
|
||||||
|
bestping=$ping
|
||||||
|
HOST=$pinghost
|
||||||
|
fi
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
[ "$FASTTEST" = true ] || echo "host: $domain - ping: $ping"
|
}
|
||||||
if [ -n "$ping" ] && [ "$ping" -lt "$bestping" ]; then
|
|
||||||
bestping=$ping
|
get_speed_global() {
|
||||||
HOST=$pinghost
|
HOST=$1
|
||||||
|
if [ "$IPV6" = true ]; then
|
||||||
|
curl -6 -o /dev/null $HOST || echo
|
||||||
|
else
|
||||||
|
curl -4 -o /dev/null $HOST || echo
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
get_speed_global_fast() {
|
||||||
|
HOST=$1
|
||||||
|
if [ "$IPV6" = true ]; then
|
||||||
|
avg_speed=$(curl -6 --max-time 10 -o /dev/null -qfsS -w '%{speed_download}' $HOST 2>/dev/null)
|
||||||
|
else
|
||||||
|
avg_speed=$(curl -4 --max-time 10 -o /dev/null -qfsS -w '%{speed_download}' $HOST 2>/dev/null)
|
||||||
|
fi
|
||||||
|
echo "$avg_speed"
|
||||||
|
}
|
||||||
|
|
||||||
|
bypass_host_enable() {
|
||||||
|
INTERFACE=$1
|
||||||
|
HOST=$2
|
||||||
|
[ -n "$(tc qdisc show dev $INTERFACE | grep ingress)" ] && /etc/init.d/sqm stop $INTERFACE
|
||||||
|
domain=$(echo $HOST | awk -F/ '{print $3}')
|
||||||
|
if [ "$IPV6" = true ]; then
|
||||||
|
hostip=$(dig +nocmd +noall +answer AAAA $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ')
|
||||||
|
if [ -n "$(ipset list 2>/dev/null | grep ss_rules6)" ]; then
|
||||||
|
for ip in $hostip; do
|
||||||
|
ipset add ss_rules6_dst_bypass_all $ip
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ -n "$(nft list set inet fw4 omr_dst_bypass_all_6 2>/dev/null)" ]; then
|
||||||
|
for ip in $hostip; do
|
||||||
|
nft add element inet fw4 omr_dst_bypass_all_6 { $ip } >/dev/null 2>&1
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
hostip=$(dig +nocmd +noall +answer A $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ')
|
||||||
|
if [ -n "$(ipset list 2>/dev/null | grep ss_rules)" ]; then
|
||||||
|
for ip in $hostip; do
|
||||||
|
ipset add ss_rules_dst_bypass_all $ip
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ -n "$(nft list set inet fw4 omr_dst_bypass_all_4 2>/dev/null)" ]; then
|
||||||
|
for ip in $hostip; do
|
||||||
|
nft add element inet fw4 omr_dst_bypass_all_4 { $ip } >/dev/null 2>&1
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bypass_host_disable() {
|
||||||
|
INTERFACE=$1
|
||||||
|
HOST=$2
|
||||||
|
domain=$(echo $HOST | awk -F/ '{print $3}')
|
||||||
|
if [ "$IPV6" = true ]; then
|
||||||
|
hostip=$(dig +nocmd +noall +answer AAAA $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ')
|
||||||
|
if [ -n "$(ipset list 2>/dev/null | grep ss_rules6)" ]; then
|
||||||
|
for ip in $hostip; do
|
||||||
|
ipset del ss_rules6_dst_bypass_all $ip
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ -n "$(nft list set inet fw4 omr_dst_bypass_all_6 2>/dev/null)" ]; then
|
||||||
|
for ip in $hostip; do
|
||||||
|
nft delete element inet fw4 omr_dst_bypass_all_6 { $ip } >/dev/null 2>&1
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
hostip=$(dig +nocmd +noall +answer A $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ')
|
||||||
|
if [ -n "$(ipset list 2>/dev/null | grep ss_rules)" ]; then
|
||||||
|
for ip in $hostip; do
|
||||||
|
ipset del ss_rules_dst_bypass_all $ip
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ -n "$(nft list set inet fw4 omr_dst_bypass_all_4 2>/dev/null)" ]; then
|
||||||
|
for ip in $hostip; do
|
||||||
|
nft delete element inet fw4 omr_dst_bypass_all_4 { $ip } >/dev/null 2>&1
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
/etc/init.d/sqm start $INTERFACE
|
||||||
|
}
|
||||||
|
|
||||||
|
get_speed_interface() {
|
||||||
|
INTERFACE=$1
|
||||||
|
HOST=$2
|
||||||
|
bypass_host_enable $INTERFACE $HOST
|
||||||
|
if [ "$IPV6" = true ]; then
|
||||||
|
curl -6 -o /dev/null --interface $INTERFACE $HOST || echo
|
||||||
|
else
|
||||||
|
curl -4 -o /dev/null --interface $INTERFACE $HOST || echo
|
||||||
|
fi
|
||||||
|
bypass_host_disable $INTERFACE $HOST
|
||||||
|
}
|
||||||
|
|
||||||
|
get_speed_interface_fast() {
|
||||||
|
INTERFACE=$1
|
||||||
|
HOST=$2
|
||||||
|
bypass_host_enable $INTERFACE $HOST
|
||||||
|
if [ "$IPV6" = true ]; then
|
||||||
|
avg_speed=$(curl -6 --max-time 10 -o /dev/null -qfsS -w '%{speed_download}' --interface $INTERFACE $HOST 2>/dev/null)
|
||||||
|
else
|
||||||
|
avg_speed=$(curl -4 --max-time 10 -o /dev/null -qfsS -w '%{speed_download}' --interface $INTERFACE $HOST 2>/dev/null)
|
||||||
|
fi
|
||||||
|
echo "$avg_speed"
|
||||||
|
bypass_host_disable $INTERFACE $HOST
|
||||||
|
}
|
||||||
|
|
||||||
|
response="000"
|
||||||
|
try=0
|
||||||
|
while [ "$response" = "000" ] && [ "$try" -le 3 ]; do
|
||||||
|
select_server
|
||||||
|
if [ "$IPV6" = true ]; then
|
||||||
|
response=$(curl -6 --write-out '%{http_code}' --silent --head --insecure -IL --connect-timeout 5 --output /dev/null $HOST)
|
||||||
|
HOSTLST6=$(echo $HOSTLST6 | tr ' ' '\n' | grep -v "$HOST" | xargs)
|
||||||
|
else
|
||||||
|
response=$(curl -4 --write-out '%{http_code}' --silent --head --insecure -IL --connect-timeout 5 --output /dev/null $HOST)
|
||||||
|
HOSTLST=$(echo $HOSTLST | tr ' ' '\n' | grep -v "$HOST" | xargs)
|
||||||
|
fi
|
||||||
|
try=$((try+1))
|
||||||
done
|
done
|
||||||
|
|
||||||
[ -z "$HOST" ] && HOST="http://speedtest.milkywan.fr/files/10G.iso"
|
[ -z "$HOST" ] && HOST="http://speedtest.milkywan.fr/files/10G.iso"
|
||||||
|
@ -43,40 +196,14 @@ done
|
||||||
trap : HUP INT TERM
|
trap : HUP INT TERM
|
||||||
if [ -z "$INTERFACE" ]; then
|
if [ -z "$INTERFACE" ]; then
|
||||||
if [ "$FASTTEST" = true ]; then
|
if [ "$FASTTEST" = true ]; then
|
||||||
avg_speed=$(curl -4 --max-time 10 -o /dev/null -qfsS -w '%{speed_download}' $HOST 2>/dev/null)
|
get_speed_global_fast $HOST
|
||||||
echo "$avg_speed"
|
|
||||||
else
|
else
|
||||||
curl -4 -o /dev/null $HOST || echo
|
get_speed_global $HOST
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
[ -n "$(tc qdisc show dev $INTERFACE | grep ingress)" ] && /etc/init.d/sqm stop $INTERFACE
|
|
||||||
domain=$(echo $HOST | awk -F/ '{print $3}')
|
|
||||||
hostip=$(dig +nocmd +noall +answer A $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ')
|
|
||||||
if [ -n "$(ipset list 2>/dev/null | grep ss_rules)" ]; then
|
|
||||||
for ip in $hostip; do
|
|
||||||
ipset add ss_rules_dst_bypass_all $ip
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if [ -n "$(nft list set inet fw4 omr_dst_bypass_all_4 2>/dev/null)" ]; then
|
|
||||||
for ip in $hostip; do
|
|
||||||
nft add element inet fw4 omr_dst_bypass_all_4 { $ip } >/dev/null 2>&1
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if [ "$FASTTEST" = true ]; then
|
if [ "$FASTTEST" = true ]; then
|
||||||
avg_speed=$(curl -4 --max-time 10 -o /dev/null -qfsS -w '%{speed_download}' --interface $INTERFACE $HOST 2>/dev/null)
|
get_speed_interface_fast $INTERFACE $HOST
|
||||||
echo "$avg_speed"
|
|
||||||
else
|
else
|
||||||
curl -4 -o /dev/null --interface $INTERFACE $HOST || echo
|
get_speed_interface $INTERFACE $HOST
|
||||||
fi
|
fi
|
||||||
if [ -n "$(ipset list 2>/dev/null | grep ss_rules)" ]; then
|
|
||||||
for ip in $hostip; do
|
|
||||||
ipset del ss_rules_dst_bypass_all $ip
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if [ -n "$(nft list set inet fw4 omr_dst_bypass_all_4 2>/dev/null)" ]; then
|
|
||||||
for ip in $hostip; do
|
|
||||||
nft delete element inet fw4 omr_dst_bypass_all_4 { $ip } >/dev/null 2>&1
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
/etc/init.d/sqm start $INTERFACE
|
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,79 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# (c) Yannick Chabanois (ycarus@zugaina.org) for OpenMPTCProuter
|
|
||||||
#
|
|
||||||
#
|
|
||||||
|
|
||||||
FORCEVPS=false
|
|
||||||
FASTTEST=false
|
|
||||||
if [ "$1" = "forcevps" ]; then
|
|
||||||
FORCEVPS=true
|
|
||||||
fi
|
|
||||||
if [ "$1" = "fasttest" ]; then
|
|
||||||
FASTTEST=true
|
|
||||||
fi
|
|
||||||
for i in $@; do :; done
|
|
||||||
INTERFACE="$i"
|
|
||||||
[ "$INTERFACE" = "forcevps" ] || [ "$INTERFACE" = "fasttest" ] && INTERFACE=""
|
|
||||||
|
|
||||||
[ -n "$INTERFACE" ] && [ ! -d "/sys/class/net/$INTERFACE" ] && {
|
|
||||||
echo "You must use a real interface. You wan find them using 'ip a' for example"
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
[ "$FASTTEST" = true ] || echo "Select best test server..."
|
|
||||||
HOSTLST="http://scaleway.testdebit.info/10G.iso http://bordeaux.testdebit.info/10G.iso http://aix-marseille.testdebit.info/10G.iso http://lyon.testdebit.info/10G.iso http://lille.testdebit.info/10G.iso http://paris.testdebit.info/10G.iso http://appliwave.testdebit.info/10G/10G.iso http://speedtest.frankfurt.linode.com/garbage.php?ckSize=10000 http://speedtest.tokyo2.linode.com/garbage.php?ckSize=10000 http://speedtest.singapore.linode.com/garbage.php?ckSize=10000 http://speedtest.newark.linode.com/garbage.php?ckSize=10000 http://speedtest.atlanta.linode.com/garbage.php?ckSize=10000 http://speedtest.dallas.linode.com/garbage.php?ckSize=10000 http://speedtest.fremont.linode.com/garbage.php?ckSize=10000 http://ipv6.bouygues.testdebit.info/10G.iso http://par.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin http://ams.download.datapacket.com/10000mb.bin http://fra.download.datapacket.com/10000mb.bin http://lon.download.datapacket.com/10000mb.bin http://mad.download.datapacket.com/10000mb.bin http://prg.download.datapacket.com/10000mb.bin http://sto.download.datapacket.com/10000mb.bin http://vie.download.datapacket.com/10000mb.bin http://war.download.datapacket.com/10000mb.bin http://atl.download.datapacket.com/10000mb.bin http://chi.download.datapacket.com/10000mb.bin http://lax.download.datapacket.com/10000mb.bin http://mia.download.datapacket.com/10000mb.bin http://nyc.download.datapacket.com/10000mb.bin http://speedtest.milkywan.fr/files/10G.iso"
|
|
||||||
bestping="9999"
|
|
||||||
for pinghost in $HOSTLST; do
|
|
||||||
domain=$(echo $pinghost | awk -F/ '{print $3}')
|
|
||||||
if [ -z "$INTERFACE" ] || [ "$FORCEVPS" = true ]; then
|
|
||||||
ping=$(ping -6 -c1 -w2 $domain | cut -d "/" -s -f5 | cut -d "." -f1)
|
|
||||||
else
|
|
||||||
ping=$(ping -6 -c1 -w2 -I $INTERFACE -B $domain | cut -d "/" -s -f5 | cut -d "." -f1)
|
|
||||||
fi
|
|
||||||
[ "$FASTTEST" = true ] || echo "host: $domain - ping: $ping"
|
|
||||||
if [ -n "$ping" ] && [ "$ping" -lt "$bestping" ]; then
|
|
||||||
bestping=$ping
|
|
||||||
HOST=$pinghost
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
[ -z "$HOST" ] && HOST="http://speedtest.milkywan.fr/files/10G.iso"
|
|
||||||
|
|
||||||
[ "$FASTTEST" = true ] || echo "Best server is $HOST, running test:"
|
|
||||||
trap : HUP INT TERM
|
|
||||||
if [ -z "$INTERFACE" ]; then
|
|
||||||
curl -6 $HOST >/dev/null || echo
|
|
||||||
else
|
|
||||||
/etc/init.d/sqm stop $INTERFACE
|
|
||||||
domain=$(echo $HOST | awk -F/ '{print $3}')
|
|
||||||
hostip=$(dig +nocmd +noall +answer AAAA $domain | grep -v CNAME | awk '{print $5}' | tr '\n' ' ')
|
|
||||||
if [ -n "$(ipset list 2>/dev/null | grep ss_rules6)" ]; then
|
|
||||||
for ip in $hostip; do
|
|
||||||
ipset add ss_rules6_dst_bypass_all $ip
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if [ -n "$(nft list set inet fw4 omr_dst_bypass_all_6 2>/dev/null)" ]; then
|
|
||||||
for ip in $hostip; do
|
|
||||||
nft add element inet fw4 omr_dst_bypass_all_6 { $ip } >/dev/null 2>&1
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if [ "$FASTTEST" = true ]; then
|
|
||||||
avg_speed=$(curl -6 --max-time 10 -o /dev/null -qfsS -w '%{speed_download}' --interface $INTERFACE $HOST 2>/dev/null)
|
|
||||||
echo "$avg_speed"
|
|
||||||
else
|
|
||||||
curl -6 --interface $INTERFACE $HOST >/dev/null || echo
|
|
||||||
fi
|
|
||||||
if [ -n "$(ipset list 2>/dev/null | grep ss_rules6)" ]; then
|
|
||||||
for ip in $hostip; do
|
|
||||||
ipset del ss_rules6_dst_bypass_all $ip
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if [ -n "$(nft list set inet fw4 omr_dst_bypass_all_6 2>/dev/null)" ]; then
|
|
||||||
for ip in $hostip; do
|
|
||||||
nft delete element inet fw4 omr_dst_bypass_all_6 { $ip } >/dev/null 2>&1
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
/etc/init.d/sqm start $INTERFACE
|
|
||||||
fi
|
|
1
openmptcprouter/files/bin/omr-test-speedv6
Symbolic link
1
openmptcprouter/files/bin/omr-test-speedv6
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
omr-test-speed
|
Loading…
Add table
Add a link
Reference in a new issue