1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00
openmptcprouter-feeds/qaa/qca/net/qca-hostap/files/dpp-supplicant-update-uci.sh
2022-09-10 05:47:47 +08:00

323 lines
8.1 KiB
Bash

#!/bin/sh
#
# Copyright (c) 2019 Qualcomm Technologies, Inc.
#
# All Rights Reserved.
# Confidential and Proprietary - Qualcomm Technologies, Inc.
#
[ -e /lib/functions.sh ] && . /lib/functions.sh
IFNAME=$1
CMD=$2
CONFIG=$3
shift
shift
SSID=$@
PASS=$@
parent=$(cat /sys/class/net/${IFNAME}/parent)
pairwise=
map=
is_section_ifname() {
local config=$1
local ifname
config_get ifname "$config" ifname
[ "${ifname}" = "$2" ] && eval "$3=$config"
}
hex2string()
{
I=0
while [ $I -lt ${#1} ];
do
echo -en "\x"${1:$I:2}
let "I += 2"
done
}
get_map_config() {
local config="$1"
local ifname
config_get ifname "$config" ifname
[ "${ifname}" = "$2" ] && config_get map "$config" map 0
}
is_map_config() {
config_load wireless
config_foreach get_map_config wifi-iface $1
}
get_pairwise() {
if [ -f /sys/class/net/$parent/ciphercaps ]
then
cat /sys/class/net/$parent/ciphercaps | grep -i "gcmp"
if [ $? -eq 0 ]
then
pairwise="CCMP CCMP-256 GCMP GCMP-256"
else
pairwise="CCMP"
fi
fi
}
case "$CMD" in
DPP-CONF-RECEIVED)
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME remove_network all
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME add_network
get_pairwise
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network 0 pairwise $pairwise
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network 0 group "CCMP"
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network 0 proto "RSN"
;;
DPP-CONFOBJ-AKM)
encryption=
sae=
dpp=
sae_require_mfp=
ieee80211w=
key_mgmt=
is_map_config $IFNAME
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network 0 multi_ap_profile $map
if [ $map -gt 0 ]
then
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network 0 multi_ap_backhaul_sta 1
fi
case "$CONFIG" in
dpp+psk+sae)
key_mgmt="DPP SAE WPA-PSK"
encryption="psk2+ccmp"
sae=1
dpp=1
ieee80211w=1
sae_require_mfp=1
;;
dpp+sae)
key_mgmt="DPP SAE"
encryption="ccmp"
sae=1
ieee80211w=2
dpp=1
;;
dpp)
key_mgmt="DPP"
encryption="dpp"
ieee80211w=1
dpp=1
sae=0
;;
sae)
key_mgmt="SAE"
encryption="ccmp"
sae=1
ieee80211w=2
dpp=0
;;
psk+sae)
key_mgmt="SAE WPA-PSK"
encryption="psk2+ccmp"
sae=1
ieee80211w=1
sae_require_mfp=1
dpp=0
;;
psk)
key_mgmt="WPA-PSK"
encryption="psk2"
ieee80211w=1
dpp=0
sae=0
;;
esac
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network 0 ieee80211w $ieee80211w
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network 0 key_mgmt $key_mgmt
ker_ver=`uname -r |cut -d. -f1`
if [ $ker_ver == 5 ]; then
. /sbin/wifi config
else
. /sbin/wifi detect
fi
sect=
config_foreach is_section_ifname wifi-iface $IFNAME sect
uci set wireless.${sect}.encryption=$encryption
uci set wireless.${sect}.sae=$sae
uci set wireless.${sect}.sae_require_mfp=$sae_require_mfp
uci set wireless.${sect}.dpp=$dpp
uci set wireless.${sect}.ieee80211w=$ieee80211w
uci commit wireless
;;
DPP-CONFOBJ-SSID)
network_ids=
i=0
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME list_network | wc -l > /tmp/count_network_list.txt
read network_ids < /tmp/count_network_list.txt
while [ $i -lt $network_ids ]
do
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network $i ssid \""$SSID"\"
i=$(expr $i + 1)
done
ker_ver=`uname -r |cut -d. -f1`
if [ $ker_ver == 5 ]; then
. /sbin/wifi config
else
. /sbin/wifi detect
fi
sect=
config_foreach is_section_ifname wifi-iface $IFNAME sect
uci set wireless.${sect}.ssid="$SSID"
uci commit wireless
;;
DPP-CONNECTOR)
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set dpp_connector $CONFIG
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network 0 dpp_connector \"${CONFIG}\"
ker_ver=`uname -r |cut -d. -f1`
if [ $ker_ver == 5 ]; then
. /sbin/wifi config
else
. /sbin/wifi detect
fi
sect=
config_foreach is_section_ifname wifi-iface $IFNAME sect
uci set wireless.${sect}.dpp_connector=$CONFIG
uci commit wireless
;;
DPP-1905-CONNECTOR)
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set dpp_1905_connector $CONFIG
ker_ver=`uname -r |cut -d. -f1`
if [ $ker_ver == 5 ]; then
. /sbin/wifi config
else
. /sbin/wifi detect
fi
sect=
config_foreach is_section_ifname wifi-iface $IFNAME sect
uci set wireless.${sect}.dpp_1905_connector=$CONFIG
uci commit wireless
;;
DPP-CONFOBJ-PASS)
network_ids=
i=0
PASS_STR=$(hex2string $PASS)
get_pairwise
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME list_network | wc -l > /tmp/count_network_list.txt
read network_ids < /tmp/count_network_list.txt
while [ $i -lt $network_ids ]
do
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network $i psk \"${PASS_STR}\"
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network $i pairwise $pairwise
i=$(expr $i + 1)
done
ker_ver=`uname -r |cut -d. -f1`
if [ $ker_ver == 5 ]; then
. /sbin/wifi config
else
. /sbin/wifi detect
fi
sect=
config_foreach is_section_ifname wifi-iface $IFNAME sect
uci set wireless.${sect}.key="$PASS_STR"
uci commit wireless
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME dpp_bootstrap_remove \*
i=0
while [ $i -lt $network_ids ]
do
wpa_cli -i$IFNAME -p /var/run/wpa_supplicant-$IFNAME enable_network $i
wpa_cli -i$IFNAME -p /var/run/wpa_supplicant-$IFNAME save_config
i=$(expr $i + 1)
done
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME disable
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME enable
;;
DPP-CONFOBJ-PSK)
network_ids=
i=0
PASS_STR=$(hex2string "$CONFIG")
get_pairwise
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME list_network | wc -l > /tmp/count_network_list.txt
read network_ids < /tmp/count_network_list.txt
while [ $i -lt $network_ids ]
do
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network $i psk $PASS_STR
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network $i pairwise $pairwise
i=$(expr $i + 1)
done
ker_ver=`uname -r |cut -d. -f1`
if [ $ker_ver == 5 ]; then
. /sbin/wifi config
else
. /sbin/wifi detect
fi
sect=
config_foreach is_section_ifname wifi-iface $IFNAME sect
uci set wireless.${sect}.key=$PASS_STR
uci commit wireless
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME dpp_bootstrap_remove \*
i=0
while [ $i -lt $network_ids ]
do
wpa_cli -i$IFNAME -p /var/run/wpa_supplicant-$IFNAME enable_network $i
wpa_cli -i$IFNAME -p /var/run/wpa_supplicant-$IFNAME save_config
i=$(expr $i + 1)
done
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME disable
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME enable
;;
DPP-C-SIGN-KEY)
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set dpp_csign $CONFIG
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network 0 dpp_csign $CONFIG
ker_ver=`uname -r |cut -d. -f1`
if [ $ker_ver == 5 ]; then
. /sbin/wifi config
else
. /sbin/wifi detect
fi
sect=
config_foreach is_section_ifname wifi-iface $IFNAME sect
uci set wireless.${sect}.dpp_csign=$CONFIG
uci commit wireless
;;
DPP-NET-ACCESS-KEY)
network_ids=
i=0
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME list_network | wc -l > /tmp/count_network_list.txt
read network_ids < /tmp/count_network_list.txt
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set dpp_netaccesskey $CONFIG
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME set_network 0 dpp_netaccesskey $CONFIG
ker_ver=`uname -r |cut -d. -f1`
if [ $ker_ver == 5 ]; then
. /sbin/wifi config
else
. /sbin/wifi detect
fi
sect=
config_foreach is_section_ifname wifi-iface $IFNAME sect
uci set wireless.${sect}.dpp_netaccesskey=$CONFIG
uci commit wireless
while [ $i -lt $network_ids ]
do
wpa_cli -i$IFNAME -p /var/run/wpa_supplicant-$IFNAME enable_network $i
wpa_cli -i$IFNAME -p /var/run/wpa_supplicant-$IFNAME save_config
i=$(expr $i + 1)
done
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME disable
wpa_cli -i$IFNAME -p/var/run/wpa_supplicant-$IFNAME enable
;;
esac