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

#!/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