From 3b17a96c9b6fccce636a7d0dae3d275233d68116 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 2 Oct 2020 17:24:02 +0200 Subject: [PATCH] Add a speedtest using speedtest.net servers and use multiples sources for omr-test-speed --- openmptcprouter/files/bin/omr-speedtest | 35 ++++++++++++++++++++++++ openmptcprouter/files/bin/omr-test-speed | 29 ++++++++++++++++---- 2 files changed, 59 insertions(+), 5 deletions(-) create mode 100755 openmptcprouter/files/bin/omr-speedtest diff --git a/openmptcprouter/files/bin/omr-speedtest b/openmptcprouter/files/bin/omr-speedtest new file mode 100755 index 000000000..c71266842 --- /dev/null +++ b/openmptcprouter/files/bin/omr-speedtest @@ -0,0 +1,35 @@ +#!/bin/sh +INTERFACE="$1" +echo "Download server list..." +wget -q -O /tmp/speedtest.lst http://c.speedtest.net/speedtest-servers-static.php +bestuploadurl="" +besthost="" +bestpinghost="" +bestping="999" +echo "Select best server..." +while read line; do + if [ "$(echo $line | grep url)" != "" ]; then + pinghost=$(echo $line | awk -F'"' '{print $18}' | cut -d: -f1) + host=$(echo $line | awk -F'"' '{print $18}') + uploadurl=$(echo $line | awk -F'"' '{print $2}') + ping=$(ping -c1 -w1 $pinghost | cut -d "/" -s -f5 | cut -d "." -f1) + echo -n "." + if [ -n "$ping" ] && [ "$ping" -lt "$bestping" ]; then + bestping=$ping + bestuploadurl=$uploadurl + besthost=$host + bestpinghost=$pinghost + fi + fi +done < /tmp/speedtest.lst +echo +echo "Done: url: $bestuploadurl - host: $besthost - ping: $bestping" +echo "Download test:" +if [ -z "$INTERFACE" ]; then + curl -4 $besthost/speedtest/random7000x7000.jpg >/dev/null || echo +else + hostip=$(dig +short $bestpinghost | tr -d "\n") + ipset add ss_rules_dst_bypass_all $hostip + curl -4 --interface $INTERFACE $besthost/speedtest/random7000x7000.jpg >/dev/null || echo + ipset del ss_rules_dst_bypass_all $hostip +fi \ No newline at end of file diff --git a/openmptcprouter/files/bin/omr-test-speed b/openmptcprouter/files/bin/omr-test-speed index c500e3d2e..bc3efae22 100755 --- a/openmptcprouter/files/bin/omr-test-speed +++ b/openmptcprouter/files/bin/omr-test-speed @@ -1,15 +1,34 @@ #!/bin/sh # vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 : - INTERFACE="$1" -HOST="proof.ovh.net" +echo "Select best test server..." +HOSTLST="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://speedtest.tele2.net/1000GB.zip http://www.ovh.net/files/10Gb.dat https://speed.hetzner.de/10GB.bin 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" +bestping="999" +for pinghost in $HOSTLST; do + domain=$(echo $pinghost | awk -F/ '{print $3}') + if [ -z "$INTERFACE" ]; then + ping=$(ping -c1 -w2 $domain | cut -d "/" -s -f5 | cut -d "." -f1) + else + ping=$(ping -c1 -w2 -I $INTERFACE -B $domain | cut -d "/" -s -f5 | cut -d "." -f1) + fi + echo "host: $domain - ping: $ping" + if [ -n "$ping" ] && [ "$ping" -lt "$bestping" ]; then + bestping=$ping + HOST=$pinghost + fi +done + +[ -z "$HOST" ] && HOST="http://proof.ovh.net/files/10Gio.dat" + +echo "Best server is $HOST, running test:" trap : HUP INT TERM if [ -z "$INTERFACE" ]; then - curl -4 http://$HOST/files/10Gio.dat >/dev/null || echo + curl -4 $HOST >/dev/null || echo else - hostip=$(dig +short A $HOST | tr -d "\n") + domain=$(echo $HOST | awk -F/ '{print $3}') + hostip=$(dig +short A $domain | tr -d "\n") ipset add ss_rules_dst_bypass_all $hostip - curl -4 --interface $INTERFACE http://$HOST/files/10Gio.dat >/dev/null || echo + curl -4 $HOST >/dev/null || echo ipset del ss_rules_dst_bypass_all $hostip fi