#!/bin/sh . /usr/share/libubox/jshn.sh . /lib/functions.sh send_to_son() { local staname1 local staname2 local ret local pattern local count [ -r /var/run/son.conf ] || return 0 staname1=$(grep sta /var/run/son.conf | head -n 1 | cut -f3 -d" " ) staname2=$(grep sta /var/run/son.conf | tail -n 1 | cut -f3 -d" " ) echo "$staname1 $staname2" count=0 pattern="Not-Associated" for sta in $staname1 $staname2;do result=$(iwconfig $sta | head -2 | tail -1 | grep -o "Not-Associated") if [ $result == $pattern ];then count=$((count+1)) fi done if [ $count -lt 2 ];then echo "Sending to son" echo "wps_pbc $SEEN" > /var/run/sonwps.pipe & touch /var/run/son_active ret=1 else ret=0 echo "Son not processing push - sta not connected" fi return $ret } check_options() { ( count=0 breakup=0 json_init get_section() { [ "$(config_get $1 ifname)" = "$2" ] && echo $1 } config_load wireless for dir in /var/run/hostapd-*; do [ -d "$dir" ] || continue for vap_dir in $dir/ath* $dir/wlan*; do [ -r "$vap_dir" ] || continue localbreakup=0 name=$(config_foreach get_section wifi-iface "$(basename "$vap_dir")") json_add_object "$name" hidden="$(config_get "$name" hidden)" enabled="$(config_get "$name" wps_config)" encrypted="$(config_get "$name" encryption)" if [ -z "$enabled" ]; then json_add_string "enabled" "failed" localbreakup=1 else json_add_string "enabled" "ok" fi if [ "$hidden" -eq 1 ]; then json_add_string "hidden" "failed" localbreakup=1 else json_add_string "hidden" "ok" fi if [ "$encrypted" = "none" ]; then json_add_string "encrypted" "failed" localbreakup=1 else json_add_string "encrypted" "ok" fi count=$(expr $count + 1) if [ $localbreakup -eq 1 ]; then json_add_string "status" "failed" breakup=$(expr $breakup + 1) else json_add_string "status" "ok" fi json_close_object done done if [ $breakup -eq $count ]; then json_add_string "status" "failed" breakup=1 else json_add_string "status" "ok" breakup=0 fi json_dump return $breakup ) } start_wps_pbc() { local retval breakup dir vap_dir retval="$(check_options)" breakup=$? json_load "$retval" if [ $breakup -eq 0 ]; then # cleanup old file rm -f /var/run/son_active #check for son.conf - if not there exit # ret is 1 if push is consumed by son , if ret == 0 continue to next scripts send_to_son ret=$? [ $ret -eq 1 ] && exit 0 # Son did not process the push call wps-extender if confgured [ -r /var/run/wifi-wps-enhc-extn.conf ] && exit 0 # son and wps_extender are not processing the push json_add_object "WPS_state" for dir in /var/run/hostapd-*; do [ -d "$dir" ] || continue for vap_dir in $dir/ath* $dir/wlan*; do [ -r "$vap_dir" ] || continue nopbn=`iwpriv "${vap_dir#"$dir/"}" get_nopbn | cut -d':' -f2` if [ $nopbn != 1 ]; then retval=$(hostapd_cli -i "${vap_dir#"$dir/"}" -p "$dir" wps_pbc) json_add_string "${vap_dir#"$dir/"}" "$retval" fi done done json_close_object fi /usr/sbin/updateled.sh > /dev/null 2>/dev/null /dev/null 2>/dev/null