|
|
@@ -38,13 +38,20 @@ wps_catch_credentials() {
|
|
|
done
|
|
|
}
|
|
|
|
|
|
-if [ "$ACTION" = "pressed" -a "$BUTTON" = "wps" ]; 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
|
|
|
+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
|
|
|
+ fi
|
|
|
wps_done=0
|
|
|
ubusobjs="$( ubus -S list wpa_supplicant.* )"
|
|
|
for ubusobj in $ubusobjs; do
|