wifischedule: Merged ignore_stations patch from user bedaes https://github.com/newkit...
authorNils Koenig <redacted>
Sat, 28 Nov 2020 20:25:36 +0000 (21:25 +0100)
committerNils Koenig <redacted>
Mon, 30 Nov 2020 09:05:27 +0000 (10:05 +0100)
Signed-off-by: Nils Koenig <redacted>
net/wifischedule/Makefile
net/wifischedule/README.md
net/wifischedule/net/etc/config/wifi_schedule
net/wifischedule/net/usr/bin/wifi_schedule.sh

index 45dd505380528b14a101a5f3adb6de966a6ffc7e..8c26f7051ccadbf6a0d2d6236d0bb62c40cbb2e1 100644 (file)
@@ -16,7 +16,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=wifischedule
 PKG_VERSION:=1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 PKG_LICENSE:=PRPL
 
 PKG_MAINTAINER:=Nils Koenig <openwrt@newk.it> 
index 591abb104939e0ff337908c1002702a11e7a5448..6d53da5f5a583ac0da3f245ee0b7643d54e916f7 100644 (file)
@@ -34,9 +34,9 @@ The button "Determine Modules Automatically" tries to make a best guess determin
 When un-/loading the modules, there is a certain number of retries (`module_load`) performed.
 
 The option "Force disabling wifi even if stations associated" does what it says - when activated it simply shuts down WiFi.
-When unchecked, its checked every `recheck_interval` minutes if there are still stations associated. Once the stations disconnect, WiFi is disabled.
+When unchecked, its checked every `recheck_interval` minutes if there are still stations associated. Once the stations disconnect, WiFi is disabled. To ignore associated stations add their MAC to `ignore_stations`.
 
-Please note, that the parameters `module_load` and `recheck_interval` are only accessible through uci.
+Please note, that the parameters `module_load`, `recheck_interval` and `ignore_stations` are only accessible through uci.
 
 ## UCI Configuration `wifi_schedule`
 UCI configuration file: `/etc/config/wifi_schedule`:
@@ -47,6 +47,7 @@ config global
         option enabled '0'
         option recheck_interval '10'
         option modules_retries '10'
+#       option ignore_stations 'AA:AA:AA:AA:AA:AA BB:BB:BB:BB:BB:BB'
 
 config entry 'Businesshours'
         option enabled '0'
index 946a1fff4eb8be7d705149e7fbc281e9ec1d63c7..96943fb178d22020a02f69d9322b637d3a2bf815 100644 (file)
@@ -3,6 +3,7 @@ config global
         option enabled '0'
         option recheck_interval '10'
         option modules_retries '10'
+#       option ignore_stations 'AA:AA:AA:AA:AA:AA BB:BB:BB:BB:BB:BB'
 
 config entry 'Businesshours'
         option enabled '0'
index 363f95dd62cd245387346243ffa2495b3bf43062..be483d0bc680fc68b8c50ca3236d862c5d2128b5 100755 (executable)
@@ -248,16 +248,21 @@ soft_disable_wifi()
         return 1
     fi
 
+    local ignore_stations=$(_get_uci_value_raw ${GLOBAL}.ignore_stations)
+    [ -n "${ignore_stations}" ] && _log "Ignoring station(s) ${ignore_stations}"
+
     # check if no stations are associated
     local _if
     for _if in $(_get_wireless_interfaces)
     do
-        output=$(${iwinfo} ${_if} assoclist)
-        if [[ "$output" != "No station connected" ]]
-        then
+        local stations=$(${iwinfo} ${_if} assoclist | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}')
+        if [ -n "${ignore_stations}" ]; then
+            stations=$(echo "${stations}" | grep -vwi -E "${ignore_stations// /|}")
+        fi
+
+        if [ -n "${stations}" ]; then
             _disable_wifi=0
-            local stations=$(echo ${output}| grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' | tr '\n' ' ')
-            _log "Station(s) ${stations}associated on ${_if}"
+            _log "Station(s) $(echo ${stations}) associated on ${_if}"
         fi
     done
 
git clone https://git.99rst.org/PROJECT