mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-02-13 02:51:50 +00:00
40 lines
1.8 KiB
Bash
Executable file
40 lines
1.8 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
[ -n "$1" ] || exit
|
|
|
|
. /lib/functions.sh
|
|
|
|
# retrieve args
|
|
OMR_QUOTA_INTERFACE="$1"
|
|
shift
|
|
|
|
# main loop
|
|
while true; do
|
|
OMR_QUOTA_REAL_INTERFACE="$(ifstatus $OMR_QUOTA_INTERFACE | jsonfilter -e '@.l3_device')"
|
|
[ -n "$(echo $OMR_QUOTA_INTERFACE | grep '@')" ] && OMR_QUOTA_REAL_INTERFACE=$(ifstatus "$1" | jsonfilter -q -e '@["device"]')
|
|
rx_bits=`vnstat -i $OMR_QUOTA_REAL_INTERFACE --json | jsonfilter -q -e '@.interfaces[0].traffic.month[-1].rx' | tr -d "\n"`
|
|
tx_bits=`vnstat -i $OMR_QUOTA_REAL_INTERFACE --json | jsonfilter -q -e '@.interfaces[0].traffic.month[-1].tx' | tr -d "\n"`
|
|
rx=$((rx_bits/1024))
|
|
tx=$((tx_bits/1024))
|
|
tt=$((rx + tx))
|
|
if [ -n "$OMR_QUOTA_RX" ] && [ "$OMR_QUOTA_RX" -gt 0 ] && [ -n "$rx" ] && [ "$OMR_QUOTA_RX" -le "$rx" ]; then
|
|
if [ "$(ifstatus $OMR_QUOTA_INTERFACE | jsonfilter -e '@.up')" = "true" ]; then
|
|
logger -t "OMR-QUOTA" "Set interface $OMR_QUOTA_INTERFACE down, RX quota reached"
|
|
ifdown $OMR_QUOTA_INTERFACE
|
|
fi
|
|
elif [ -n "$OMR_QUOTA_TX" ] && [ "$OMR_QUOTA_TX" -gt 0 ] && [ -n "$tx" ] && [ "$OMR_QUOTA_TX" -le "$tx" ]; then
|
|
if [ "$(ifstatus $OMR_QUOTA_INTERFACE | jsonfilter -e '@.up')" = "true" ]; then
|
|
logger -t "OMR-QUOTA" "Set interface $OMR_QUOTA_INTERFACE down, TX quota reached"
|
|
ifdown $OMR_QUOTA_INTERFACE
|
|
fi
|
|
elif [ -n "$OMR_QUOTA_TT" ] && [ "$OMR_QUOTA_TT" -gt 0 ] && [ -n "$tt" ] && [ "$OMR_QUOTA_TT" -le "$tt" ]; then
|
|
if [ "$(ifstatus $OMR_QUOTA_INTERFACE | jsonfilter -e '@.up')" = "true" ]; then
|
|
logger -t "OMR-QUOTA" "Set interface $OMR_QUOTA_INTERFACE down, RX+TX quota reached"
|
|
ifdown $OMR_QUOTA_INTERFACE
|
|
fi
|
|
elif [ "$(ifstatus $OMR_QUOTA_INTERFACE | jsonfilter -e '@.up')" = "false" ]; then
|
|
logger -t "OMR-QUOTA" "Set interface $OMR_QUOTA_INTERFACE up"
|
|
ifup $OMR_QUOTA_INTERFACE
|
|
fi
|
|
sleep "$OMR_QUOTA_INTERVAL"
|
|
done
|