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
&