# # Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) for OpenMPTCProuter # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # # This script launch a speedtest if the option is enabled on the interface [ "$OMR_TRACKER_STATUS" = "ERROR" ] || [ -z "$OMR_TRACKER_INTERFACE" ] && exit 0 interface_up=$(ifstatus "$OMR_TRACKER_INTERFACE" 2>/dev/null | jsonfilter -q -e '@["up"]') [ "$interface_up" != "true" ] && exit 0 if [ -n "$OMR_TRACKER_INTERFACE" ] && [ -n "$OMR_TRACKER_DEVICE" ] && [ "$(pgrep -f omr-test-speed-server)" = "" ] && [ "$(uci -q get openmptcprouter.${OMR_TRACKER_INTERFACE}.testspeed)" = "1" ] && [ -z "$(uci -q get openmptcprouter.${OMR_TRACKER_INTERFACE}.testspeed_lc)" ]; then launch_speedtest() { local server=$1 [ "$(uci -q get openmptcprouter.${server}.current)" != "1" ] && return download_speed=$(/bin/omr-test-speed-server ${server} ${OMR_TRACKER_DEVICE} fasttest) download_speed2=$(/bin/omr-test-speed-server ${server} ${OMR_TRACKER_DEVICE} fasttest) download_speed3=$(/bin/omr-test-speed-server ${server} ${OMR_TRACKER_DEVICE} fasttest) [ "$download_speed2" -gt "$download_speed" ] && download_speed=${download_speed2} [ "$download_speed3" -gt "$download_speed" ] && download_speed=${download_speed3} download_speed=$((download_speed*8/1000)) if [ -n "$download_speed" ] && [ "$download_speed" != "0" ]; then upload_speed=$(/bin/omr-test-speed-server ${server} ${OMR_TRACKER_DEVICE} fasttest upload) upload_speed2=$(/bin/omr-test-speed-server ${server} ${OMR_TRACKER_DEVICE} fasttest upload) upload_speed3=$(/bin/omr-test-speed-server ${server} ${OMR_TRACKER_DEVICE} fasttest upload) [ "$upload_speed2" -gt "$upload_speed" ] && upload_speed=${upload_speed2} [ "$upload_speed3" -gt "$upload_speed" ] && upload_speed=${upload_speed3} # Set Download speed settings if [ "$(uci -q get sqm.${OMR_TRACKER_INTERFACE}.autorate)" = "1" ]; then uci -q set sqm.${OMR_TRACKER_INTERFACE}.download=$((download_speed*65/100)) uci -q set sqm.${OMR_TRACKER_INTERFACE}.max_download=${download_speed} uci -q set sqm.${OMR_TRACKER_INTERFACE}.min_download=$((download_speed*10/100)) else uci -q set sqm.${OMR_TRACKER_INTERFACE}.download=$((download_speed*95/100)) fi _log "Calculated ${OMR_TRACKER_INTERFACE} download speed: ${download_speed}" uci -q set network.${OMR_TRACKER_INTERFACE}.downloadspeed=${download_speed} # Set Upload speed settings upload_speed=$((upload_speed*8/1000)) if [ -n "$upload_speed" ] && [ "$upload_speed" != "0" ]; then if [ "$(uci -q get sqm.${OMR_TRACKER_INTERFACE}.autorate)" = "1" ]; then uci -q set sqm.${OMR_TRACKER_INTERFACE}.upload=$((upload_speed*65/100)) uci -q set sqm.${OMR_TRACKER_INTERFACE}.max_upload=${upload_speed} uci -q set sqm.${OMR_TRACKER_INTERFACE}.min_upload=$((upload_speed*10/100)) else uci -q set sqm.${OMR_TRACKER_INTERFACE}.upload=$((upload_speed*95/100)) fi _log "Calculated ${OMR_TRACKER_INTERFACE} upload speed: ${upload_speed}" uci -q set network.${OMR_TRACKER_INTERFACE}.uploadspeed=${upload_speed} uci -q set openmptcprouter.$OMR_TRACKER_INTERFACE.testspeed_lc=$(date +"%s") uci commit network uci commit sqm uci commit openmptcprouter fi fi } config_load openmptcprouter config_foreach launch_speedtest server sleep 5 fi