Compare commits
5 Commits
8ea704f7e3
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 30953399b6 | |||
| 088c256f58 | |||
| bbbc873bdb | |||
| 8f2d6a7cbd | |||
| a4ba9f8fcd |
@@ -207,6 +207,7 @@ _detect_wan_roles() {
|
|||||||
_aiwanbal_available() {
|
_aiwanbal_available() {
|
||||||
[ -d "$AIWANBAL_DIR" ] || return 1
|
[ -d "$AIWANBAL_DIR" ] || return 1
|
||||||
_mtime=$(stat -c %Y "${AIWANBAL_DIR}/wan1_score_avg" 2>/dev/null || stat -f %m "${AIWANBAL_DIR}/wan1_score_avg" 2>/dev/null)
|
_mtime=$(stat -c %Y "${AIWANBAL_DIR}/wan1_score_avg" 2>/dev/null || stat -f %m "${AIWANBAL_DIR}/wan1_score_avg" 2>/dev/null)
|
||||||
|
_mtime=$(printf '%s' "$_mtime" | tr -cd '0-9')
|
||||||
[ -n "$_mtime" ] || return 1
|
[ -n "$_mtime" ] || return 1
|
||||||
_now=$(date +%s)
|
_now=$(date +%s)
|
||||||
_age=$(( _now - _mtime ))
|
_age=$(( _now - _mtime ))
|
||||||
@@ -238,6 +239,20 @@ _ping_iface() {
|
|||||||
# Extract loss
|
# Extract loss
|
||||||
_loss=$(echo "$_out" | sed -n 's/.* \([0-9]*\)% packet loss.*/\1/p')
|
_loss=$(echo "$_out" | sed -n 's/.* \([0-9]*\)% packet loss.*/\1/p')
|
||||||
[ -z "$_loss" ] && _loss="null"
|
[ -z "$_loss" ] && _loss="null"
|
||||||
|
# If ICMP to internet gives 100% loss, ping the local gateway —
|
||||||
|
# Eyeride NAT drops internet ICMP but the gateway (192.168.10.1) is reachable locally.
|
||||||
|
if [ "$_loss" = "100" ]; then
|
||||||
|
_gw=$(ip route show 2>/dev/null | grep "dev $_iface" | grep -v "^default" | awk '/via/{print $3; exit} /kernel/{print ""}' | head -1)
|
||||||
|
[ -z "$_gw" ] && _gw=$(ip route show default 2>/dev/null | grep "dev $_iface" | awk '{print $3}' | head -1)
|
||||||
|
if [ -n "$_gw" ]; then
|
||||||
|
_gw_out=$(ping -c 3 -W 2 "$_gw" 2>/dev/null)
|
||||||
|
_gw_loss=$(echo "$_gw_out" | sed -n 's/.* \([0-9]*\)% packet loss.*/\1/p')
|
||||||
|
if [ -n "$_gw_loss" ] && [ "$_gw_loss" != "100" ]; then
|
||||||
|
_loss="$_gw_loss"
|
||||||
|
_avg="null" # gateway RTT is LAN latency, not meaningful as WAN metric
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
printf '%s %s %s\n' "${_avg}" "${_jitter}" "${_loss}" | tr -d '\n\r'
|
printf '%s %s %s\n' "${_avg}" "${_jitter}" "${_loss}" | tr -d '\n\r'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -292,8 +307,8 @@ _collect_wan() {
|
|||||||
_dl=$(echo "$_st" | awk '{print $1}')
|
_dl=$(echo "$_st" | awk '{print $1}')
|
||||||
_ul=$(echo "$_st" | awk '{print $2}')
|
_ul=$(echo "$_st" | awk '{print $2}')
|
||||||
fi
|
fi
|
||||||
[ -z "$_dl" ] || [ "$_dl" = "0" ] && _dl="0.0"
|
[ -n "$_dl" ] || _dl="0.0"
|
||||||
[ -z "$_ul" ] || [ "$_ul" = "0" ] && _ul="0.0"
|
[ -n "$_ul" ] || _ul="0.0"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf '{"score":%s,"latency_ms":%s,"dl_mbps":%s,"ul_mbps":%s,"jitter_ms":%s,"loss_pct":%s}' \
|
printf '{"score":%s,"latency_ms":%s,"dl_mbps":%s,"ul_mbps":%s,"jitter_ms":%s,"loss_pct":%s}' \
|
||||||
@@ -319,7 +334,7 @@ _detect_carrier() {
|
|||||||
for _n in 1 2; do
|
for _n in 1 2; do
|
||||||
_mod=$(_read_file "${AIWANBAL_DIR}/wan${_n}_modem_type" 2>/dev/null)
|
_mod=$(_read_file "${AIWANBAL_DIR}/wan${_n}_modem_type" 2>/dev/null)
|
||||||
_active=$(_read_file "${AIWANBAL_DIR}/wan${_n}_state" 2>/dev/null)
|
_active=$(_read_file "${AIWANBAL_DIR}/wan${_n}_state" 2>/dev/null)
|
||||||
if [ "$_mod" != "eyeride" ] && [ "$_mod" != "none" ] && [ -n "$_mod" ] && [ "$_active" = "up" ]; then
|
if [ "$_mod" != "eyeride" ] && [ "$_mod" != "none" ] && [ "$_mod" != "generic" ] && [ -n "$_mod" ] && [ "$_active" = "up" ]; then
|
||||||
echo "$_mod"; return
|
echo "$_mod"; return
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -415,8 +430,10 @@ _cached_speedtest() {
|
|||||||
_f="${STATE_DIR}/speedtest-result-${_iface}"
|
_f="${STATE_DIR}/speedtest-result-${_iface}"
|
||||||
[ -f "$_f" ] || return 1
|
[ -f "$_f" ] || return 1
|
||||||
_mtime=$(stat -c %Y "$_f" 2>/dev/null || stat -f %m "$_f" 2>/dev/null)
|
_mtime=$(stat -c %Y "$_f" 2>/dev/null || stat -f %m "$_f" 2>/dev/null)
|
||||||
|
_mtime=$(printf '%s' "$_mtime" | tr -cd '0-9')
|
||||||
[ -n "$_mtime" ] || return 1
|
[ -n "$_mtime" ] || return 1
|
||||||
_age=$(( $(date +%s) - _mtime ))
|
_st_now=$(date +%s)
|
||||||
|
_age=$(( _st_now - _mtime ))
|
||||||
[ "$_age" -lt 2100 ] || return 1
|
[ "$_age" -lt 2100 ] || return 1
|
||||||
cat "$_f"
|
cat "$_f"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user