更新无线网络配置逻辑,修复 menu.lock 问题

This commit is contained in:
Ing 2025-02-19 12:56:02 +08:00
parent b03b7c2012
commit 72e9d7d657
3 changed files with 15 additions and 19 deletions

View File

@ -228,6 +228,13 @@ if echo "purley broadwellnkv2" | grep -wq "${PLATFORM}"; then
CMDLINE["SASmodel"]="1"
fi
SSID="$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep 'ssid=' | cut -d'=' -f2 | sed 's/^"//; s/"$//')"
PSK="$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep 'psk=' | cut -d'=' -f2 | sed 's/^"//; s/"$//')"
if [ -n "${SSID}" ] && [ -n "${PSK}" ]; then
CMDLINE["wpa.ssid"]="${SSID}"
CMDLINE["wpa.psk"]="${PSK}"
fi
while IFS=': ' read -r KEY VALUE; do
[ -n "${KEY}" ] && CMDLINE["network.${KEY}"]="${VALUE}"
done <<<$(readConfigMap "network" "${USER_CONFIG_FILE}")
@ -264,7 +271,7 @@ function _bootwait() {
rm -f WB WC
return 1
fi
if false && [ -f "${WORK_PATH}/menu.lock" ]; then
if false && [ -f "${TMP_PATH}/menu.lock" ]; then
printf "\r%$((${#MSG} * 2))s\n" " "
printf "\r\033[1;33m%s\033[0m\n" "$(TEXT "Menu opened and booting is interrupted.")"
rm -f WB WC
@ -342,7 +349,7 @@ else
MAC=$(cat /sys/class/net/${N}/address 2>/dev/null)
printf "%s(%s): " "${N}" "${MAC}@${DRIVER}"
while true; do
if [ ! "${N::3}" = "eth" ]; then
if false && [ ! "${N::3}" = "eth" ]; then
printf "\r%s(%s): %s\n" "${N}" "${MAC}@${DRIVER}" "$(TEXT "IGNORE (Does not support non-wired network card.)")"
break
fi

View File

@ -420,9 +420,7 @@ function connectwlanif() {
rm -f "/var/run/wpa_supplicant.pid.${1}"
fi
else
local CONF=""
[ -z "${CONF}" ] && [ -f "${PART1_PATH}/wpa_supplicant.conf.${1}" ] && CONF="${PART1_PATH}/wpa_supplicant.conf.${1}"
[ -z "${CONF}" ] && [ -f "${PART1_PATH}/wpa_supplicant.conf" ] && CONF="${PART1_PATH}/wpa_supplicant.conf"
local CONF="$([ -f "${PART1_PATH}/wpa_supplicant.conf" ] && echo "${PART1_PATH}/wpa_supplicant.conf" || echo "")"
[ -z "${CONF}" ] && return 2
if [ -f "/var/run/wpa_supplicant.pid.${1}" ]; then

View File

@ -14,13 +14,13 @@
alias DIALOG='dialog --backtitle "$(backtitle)" --colors --aspect 50'
# lock
exec 304>"${WORK_PATH}/menu.lock"
exec 304>"${TMP_PATH}/menu.lock"
flock -n 304 || {
MSG="$(TEXT "The menu.sh instance is already running in another terminal. To avoid conflicts, please operate in one instance only.")"
dialog --colors --aspect 50 --title "$(TEXT "Error")" --msgbox "${MSG}" 0 0
exit 1
}
trap 'flock -u 304; rm -f "${WORK_PATH}/menu.lock"' EXIT INT TERM HUP
trap 'flock -u 304; rm -f "${TMP_PATH}/menu.lock"' EXIT INT TERM HUP
# Check partition 3 space, if < 2GiB is necessary clean cache folder
SPACELEFT=$(df -m ${PART3_PATH} 2>/dev/null | awk 'NR==2 {print $4}')
@ -2611,10 +2611,8 @@ function setWirelessAccount() {
for I in $(iw wlan0 scan 2>/dev/null | grep SSID: | awk '{print $2}'); do MSG+="${I}\n"; done
LINENUM=$(($(echo -e "${MSG}" | wc -l) + 8))
while true; do
SSID=$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep -i SSID | cut -d'=' -f2)
PSK=$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep -i PSK | cut -d'=' -f2)
SSID="${SSID//\"/}"
PSK="${PSK//\"/}"
SSID="$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep 'ssid=' | cut -d'=' -f2 | sed 's/^"//; s/"$//')"
PSK="$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep 'psk=' | cut -d'=' -f2 | sed 's/^"//; s/"$//')"
DIALOG --title "$(TEXT "Settings")" \
--form "${MSG}" ${LINENUM:-16} 70 2 "SSID" 1 1 "${SSID}" 1 7 58 0 " PSK" 2 1 "${PSK}" 2 7 58 0 \
2>"${TMP_PATH}/resp"
@ -2632,14 +2630,7 @@ function setWirelessAccount() {
connectwlanif "${N}" 0 && sleep 1
done
else
rm -f ${PART1_PATH}/wpa_supplicant.conf
echo "ctrl_interface=/var/run/wpa_supplicant" >>${PART1_PATH}/wpa_supplicant.conf
echo "update_config=1" >>${PART1_PATH}/wpa_supplicant.conf
echo "network={" >>${PART1_PATH}/wpa_supplicant.conf
echo " ssid=\"${SSID}\"" >>${PART1_PATH}/wpa_supplicant.conf
echo " psk=\"${PSK}\"" >>${PART1_PATH}/wpa_supplicant.conf
echo "}" >>${PART1_PATH}/wpa_supplicant.conf
echo -e "ctrl_interface=/var/run/wpa_supplicant\nupdate_config=1\nnetwork={\n ssid=\"${SSID}\"\n priority=1\n psk=\"${PSK}\"\n}" >${PART1_PATH}/wpa_supplicant.conf
for N in ${ETHX}; do
connectwlanif "${N}" 1 && sleep 1
MACR="$(cat /sys/class/net/${N}/address 2>/dev/null | sed 's/://g')"