123 lines
2.5 KiB
Bash
123 lines
2.5 KiB
Bash
#!/bin/sh
|
|
|
|
. /lib/functions.sh
|
|
|
|
ROOTER=/usr/lib/rooter
|
|
ROOTER_LINK="/tmp/links"
|
|
|
|
log() {
|
|
logger -t "Custom Ping Test " "$@"
|
|
}
|
|
|
|
tping() {
|
|
hp=$(httping $2 -c 3 -s $1)
|
|
pingg=$(echo $hp" " | grep -o "round-trip .\+ ms ")
|
|
if [ -z "$pingg" ]; then
|
|
tmp=0
|
|
else
|
|
tmp=200
|
|
fi
|
|
}
|
|
|
|
doping() {
|
|
TYPE=$(uci get ping.ping.type)
|
|
if [ $TYPE = "1" ]; then
|
|
log "Curl"
|
|
RETURN_CODE_1=$(curl -s -m 10 -s -o /dev/null -w "%{http_code}" $ipv41)
|
|
RETURN_CODE_2=$(curl -s --ipv6 -m 10 -s -o /dev/null -w "%{http_code}" $ipv6)
|
|
RETURN_CODE_3=$(curl -s -m 10 -s -o /dev/null -w "%{http_code}" $ipv42)
|
|
else
|
|
log "Ping"
|
|
tping "$ipv41"; RETURN_CODE_1=$tmp
|
|
tping "$ipv6" "-6"; RETURN_CODE_2=$tmp
|
|
tping "$ipv42"; RETURN_CODE_3=$tmp
|
|
fi
|
|
}
|
|
|
|
ptest() {
|
|
tries=0
|
|
status=0
|
|
while [ $tries -lt $1 ]
|
|
do
|
|
CONN=$(uci -q get modem.modem$CURRMODEM.connected)
|
|
if [ $CONN = "1" ]; then
|
|
uci set ping.ping.conn="4"
|
|
uci commit ping
|
|
doping
|
|
if [[ "$RETURN_CODE_1" != "200" && "$RETURN_CODE_2" != "200" && "$RETURN_CODE_3" != "200" ]]; then
|
|
uci set ping.ping.conn="1"
|
|
uci commit ping
|
|
status=1
|
|
return
|
|
fi
|
|
log "Second Ping Test Good"
|
|
uci set ping.ping.conn="2"
|
|
uci commit ping
|
|
status=0
|
|
return
|
|
else
|
|
sleep 20
|
|
tries=$((tries+1))
|
|
fi
|
|
done
|
|
status=1
|
|
}
|
|
|
|
ipv41=$(uci -q get ping.ping.ipv41)
|
|
if [ -z "$ipv41" ]; then
|
|
ipv41="http://www.google.com/"
|
|
fi
|
|
ipv42=$(uci -q get ping.ping.ipv42)
|
|
if [ -z "$ipv42" ]; then
|
|
ipv42="https://github.com"
|
|
fi
|
|
ipv6=$(uci -q get ping.ping.ipv6)
|
|
if [ -z "$ipv6" ]; then
|
|
ipv6="http://ipv6.google.com"
|
|
fi
|
|
uci set ping.ping.conn="4"
|
|
uci commit ping
|
|
|
|
CURRMODEM=1
|
|
CPORT=$(uci -q get modem.modem$CURRMODEM.commport)
|
|
DELAY=$(uci get ping.ping.delay)
|
|
|
|
doping
|
|
|
|
if [[ "$RETURN_CODE_1" != "200" && "$RETURN_CODE_2" != "200" && "$RETURN_CODE_3" != "200" ]]; then
|
|
log "Bad Ping Test"
|
|
doping
|
|
if [[ "$RETURN_CODE_1" != "200" && "$RETURN_CODE_2" != "200" && "$RETURN_CODE_3" != "200" ]]; then
|
|
log "Second Bad Ping Test"
|
|
uci set ping.ping.conn="3"
|
|
uci commit ping
|
|
log "Restart Network"
|
|
/usr/lib/rooter/luci/restart.sh $CURRMODEM 10
|
|
sleep $DELAY
|
|
ptest 3
|
|
if [ $status -eq 0 ]; then
|
|
log "Good Ping after Network Restart"
|
|
uci set ping.ping.conn="2"
|
|
uci commit ping
|
|
exit 0
|
|
else
|
|
log "Hard Restart"
|
|
/usr/lib/rooter/luci/restart.sh $CURRMODEM 11
|
|
ptest 9
|
|
if [ $status -eq 0 ]; then
|
|
log "Good Ping after Hard Restart"
|
|
uci set ping.ping.conn="2"
|
|
uci commit ping
|
|
exit 0
|
|
else
|
|
reboot -f
|
|
fi
|
|
fi
|
|
fi
|
|
else
|
|
log "Good Ping"
|
|
uci set ping.ping.conn="2"
|
|
uci commit ping
|
|
fi
|
|
exit 0
|