3 wps_catch_credentials() {
4 local iface ifaces ifc ifname ssid encryption key radio radios
7 . /usr/share/libubox/jshn.sh
8 ubus -S -t 30 listen wps_credentials | while read creds; do
11 json_select wps_credentials || continue
12 json_get_vars ifname ssid key encryption
13 local ifcname="$ifname"
15 json_load "$(ubus -S call network.wireless status)"
17 for radio in $radios; do
19 json_select interfaces
21 for ifc in $ifaces; do
24 [ "$ifname" = "$ifcname" ] && {
25 ubus -S call uci set "{\"config\":\"wireless\", \"type\":\"wifi-iface\", \
26 \"match\": { \"device\": \"$radio\", \"encryption\": \"wps\" }, \
27 \"values\": { \"encryption\": \"$encryption\", \
28 \"ssid\": \"$ssid\", \
29 \"key\": \"$key\" } }"
30 ubus -S call uci commit '{"config": "wireless"}'
31 ubus -S call uci apply
41 if [ "$ACTION" = "pressed" -a "$BUTTON" = "wps" ]; then
43 ubusobjs="$( ubus -S list hostapd.* )"
44 for ubusobj in $ubusobjs; do
45 ubus -S call $ubusobj wps_start && wps_done=1
47 [ $wps_done = 0 ] || return 0
49 ubusobjs="$( ubus -S list wpa_supplicant.* )"
50 for ubusobj in $ubusobjs; do
51 ubus -S call $ubusobj wps_start && wps_done=1
53 [ $wps_done = 0 ] || wps_catch_credentials &