You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.5 KiB
Bash
92 lines
2.5 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2017 Qualcomm Technologies, Inc.
|
|
#
|
|
# All Rights Reserved.
|
|
# Confidential and Proprietary - Qualcomm Technologies, Inc.
|
|
#
|
|
|
|
IFNAME=$1
|
|
CMD=$2
|
|
|
|
if [ $CMD = "WPS-NEW-AP-SETTINGS" ]; then
|
|
. /sbin/wifi detect
|
|
fi
|
|
|
|
parent=$(cat /sys/class/net/${IFNAME}/parent)
|
|
|
|
is_section_ifname() {
|
|
local config=$1
|
|
local ifname
|
|
config_get ifname "$config" ifname
|
|
[ "${ifname}" = "$2" ] && eval "$3=$config"
|
|
}
|
|
|
|
case "$CMD" in
|
|
WPS-NEW-AP-SETTINGS)
|
|
ssid=$(hostapd_cli -i$IFNAME -p/var/run/hostapd-$parent get_config | grep ^ssid= | cut -f2- -d =)
|
|
wpa=$(hostapd_cli -i$IFNAME -p/var/run/hostapd-$parent get_config | grep ^wpa= | cut -f2- -d=)
|
|
psk=$(hostapd_cli -i$IFNAME -p/var/run/hostapd-$parent get_config | grep ^passphrase= | cut -f2- -d=)
|
|
wps_state=$(hostapd_cli -i$IFNAME -p/var/run/hostapd-$parent get_config | grep ^wps_state= | cut -f2- -d=)
|
|
sect=
|
|
config_foreach is_section_ifname wifi-iface $IFNAME sect
|
|
|
|
[ -n "$psk" ] || psk=$(hostapd_cli -i$IFNAME -p/var/run/hostapd-$parent get_config | grep ^psk= | cut -f2- -d=)
|
|
|
|
case "$wps_state" in
|
|
configured*)
|
|
uci set wireless.${sect}.wps_state=2
|
|
;;
|
|
"not configured"*)
|
|
uci set wireless.${sect}.wps_state=1
|
|
;;
|
|
*)
|
|
uci set wireless.${sect}.wps_state=0
|
|
esac
|
|
|
|
case "$wpa" in
|
|
3)
|
|
uci set wireless.${sect}.encryption='mixed-psk'
|
|
uci set wireless.${sect}.key=$psk
|
|
;;
|
|
2)
|
|
uci set wireless.${sect}.encryption='psk2'
|
|
uci set wireless.${sect}.key=$psk
|
|
;;
|
|
1)
|
|
uci set wireless.${sect}.encryption='psk'
|
|
uci set wireless.${sect}.key=$psk
|
|
;;
|
|
*)
|
|
uci set wireless.${sect}.encryption='none'
|
|
uci set wireless.${sect}.key=''
|
|
;;
|
|
esac
|
|
|
|
uci set wireless.${sect}.ssid="$ssid"
|
|
uci commit
|
|
if [ -r /var/run/wifi-wps-enhc-extn.pid ]; then
|
|
echo $IFNAME > /var/run/wifi-wps-enhc-extn.done
|
|
kill -SIGUSR1 "$(cat "/var/run/wifi-wps-enhc-extn.pid")"
|
|
fi
|
|
kill "$(cat "/var/run/hostapd-cli-$IFNAME.pid")"
|
|
#post hotplug event to whom take care of
|
|
env -i ACTION="wps-configured" INTERFACE=$IFNAME /sbin/hotplug-call iface
|
|
;;
|
|
WPS-TIMEOUT)
|
|
kill "$(cat "/var/run/hostapd-cli-$IFNAME.pid")"
|
|
env -i ACTION="wps-timeout" INTERFACE=$IFNAME /sbin/hotplug-call iface
|
|
;;
|
|
WPS-SUCCESS)
|
|
if [ -r /var/run/wifi-wps-enhc-extn.pid ]; then
|
|
echo $IFNAME > /var/run/wifi-wps-enhc-extn.done
|
|
kill -SIGUSR1 "$(cat "/var/run/wifi-wps-enhc-extn.pid")"
|
|
fi
|
|
kill "$(cat "/var/run/hostapd-cli-$IFNAME.pid")"
|
|
env -i ACTION="wps-success" INTERFACE=$IFNAME /sbin/hotplug-call iface
|
|
;;
|
|
DISCONNECTED)
|
|
kill "$(cat "/var/run/hostapd_cli-$IFNAME.pid")"
|
|
;;
|
|
esac
|