mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2026-01-28 03:37:17 +01:00
wifi-scripts: add modular wps button handler scripts
Execute scripts in /etc/rc.wps until one of them returns a exit code of 0. Split up sta and ap handling of wps into separate scripts. Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
8eea855846
commit
3aee42001f
4 changed files with 31 additions and 29 deletions
6
package/network/config/wifi-scripts/files/etc/rc.button/wps
Executable file
6
package/network/config/wifi-scripts/files/etc/rc.button/wps
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/sh
|
||||
[ "$ACTION" = "pressed" ] && exit 5
|
||||
for script in /etc/rc.wps/*; do
|
||||
[ -x "$script" ] || continue
|
||||
"$script" && break
|
||||
done
|
||||
10
package/network/config/wifi-scripts/files/etc/rc.wps/40-wps_ap
Executable file
10
package/network/config/wifi-scripts/files/etc/rc.wps/40-wps_ap
Executable file
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/sh
|
||||
|
||||
[ "$SEEN" -ge 3 ] && exit 1
|
||||
wps_done=0
|
||||
ubusobjs="$( ubus -S list hostapd.* )"
|
||||
for ubusobj in $ubusobjs; do
|
||||
ubus -S call $ubusobj wps_start && wps_done=1
|
||||
done
|
||||
[ $wps_done = 1 ]
|
||||
|
||||
42
package/network/services/hostapd/files/wps-hotplug.sh → package/network/config/wifi-scripts/files/etc/rc.wps/50-wps_sta
Normal file → Executable file
42
package/network/services/hostapd/files/wps-hotplug.sh → package/network/config/wifi-scripts/files/etc/rc.wps/50-wps_sta
Normal file → Executable file
|
|
@ -1,4 +1,6 @@
|
|||
#!/bin/sh
|
||||
[ "$SEEN" -lt 3 ] && exit 1
|
||||
[ "$ACTION" = "released" ] || exit 1
|
||||
|
||||
wps_catch_credentials() {
|
||||
local iface ifaces ifc ifname ssid encryption key radio radios
|
||||
|
|
@ -38,32 +40,18 @@ wps_catch_credentials() {
|
|||
done
|
||||
}
|
||||
|
||||
if [ "$ACTION" = "released" ] && [ "$BUTTON" = "wps" ]; then
|
||||
# If the button was pressed for 3 seconds or more, trigger WPS on
|
||||
# wpa_supplicant only, no matter if hostapd is running or not. If
|
||||
# was pressed for less than 3 seconds, try triggering on
|
||||
# hostapd. If there is no hostapd instance to trigger it on or WPS
|
||||
# is not enabled on them, trigger it on wpa_supplicant.
|
||||
if [ "$SEEN" -lt 3 ] ; then
|
||||
wps_done=0
|
||||
ubusobjs="$( ubus -S list hostapd.* )"
|
||||
for ubusobj in $ubusobjs; do
|
||||
ubus -S call $ubusobj wps_start && wps_done=1
|
||||
done
|
||||
[ $wps_done = 0 ] || return 0
|
||||
wps_done=0
|
||||
ubusobjs="$( ubus -S list wpa_supplicant.* )"
|
||||
for ubusobj in $ubusobjs; do
|
||||
ifname="$(echo $ubusobj | cut -d'.' -f2 )"
|
||||
multi_ap=""
|
||||
if [ -e "/var/run/wpa_supplicant-${ifname}.conf.is_multiap" ]; then
|
||||
ubus -S call $ubusobj wps_start '{ "multi_ap": true }' && wps_done=1
|
||||
else
|
||||
ubus -S call $ubusobj wps_start && wps_done=1
|
||||
fi
|
||||
wps_done=0
|
||||
ubusobjs="$( ubus -S list wpa_supplicant.* )"
|
||||
for ubusobj in $ubusobjs; do
|
||||
ifname="$(echo $ubusobj | cut -d'.' -f2 )"
|
||||
multi_ap=""
|
||||
if [ -e "/var/run/wpa_supplicant-${ifname}.conf.is_multiap" ]; then
|
||||
ubus -S call $ubusobj wps_start '{ "multi_ap": true }' && wps_done=1
|
||||
else
|
||||
ubus -S call $ubusobj wps_start && wps_done=1
|
||||
fi
|
||||
done
|
||||
[ $wps_done = 0 ] || wps_catch_credentials &
|
||||
fi
|
||||
done
|
||||
[ $wps_done = 0 ] && exit 1
|
||||
|
||||
return 0
|
||||
wps_catch_credentials &
|
||||
exit 0
|
||||
|
|
@ -726,14 +726,12 @@ endef
|
|||
define Package/hostapd-common/install
|
||||
$(INSTALL_DIR) \
|
||||
$(1)/etc/capabilities \
|
||||
$(1)/etc/rc.button \
|
||||
$(1)/etc/hotplug.d/ieee80211 \
|
||||
$(1)/etc/init.d $(1)/lib/netifd \
|
||||
$(1)/usr/share/acl.d \
|
||||
$(1)/usr/share/hostap
|
||||
$(INSTALL_BIN) ./files/dhcp-get-server.sh $(1)/lib/netifd/dhcp-get-server.sh
|
||||
$(INSTALL_BIN) ./files/wpad.init $(1)/etc/init.d/wpad
|
||||
$(INSTALL_BIN) ./files/wps-hotplug.sh $(1)/etc/rc.button/wps
|
||||
$(INSTALL_DATA) ./files/wpad_acl.json $(1)/usr/share/acl.d
|
||||
$(INSTALL_DATA) ./files/wpad.json $(1)/etc/capabilities
|
||||
endef
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue