From 3ce2498222543349733117d9c5b40467621c84a5 Mon Sep 17 00:00:00 2001 From: Tobias Powalowski Date: Wed, 7 Dec 2022 15:33:37 +0100 Subject: [PATCH] switching to wpa_supplicant backend --- usr/lib/archboot/installer/network.sh | 43 ++++++++++++++++----------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/usr/lib/archboot/installer/network.sh b/usr/lib/archboot/installer/network.sh index 4db7c5ab4..45dfaf63f 100644 --- a/usr/lib/archboot/installer/network.sh +++ b/usr/lib/archboot/installer/network.sh @@ -67,25 +67,21 @@ donetwork() { #shellcheck disable=SC2001,SC2086 WLAN_ESSID="$(echo ${WLAN_ESSID} | sed -e 's|#|\ |g')" WPA="" - WEP="" DIALOG --infobox "Checking on WPA/PSK encryption ..." 3 40 iw dev "${INTERFACE}" scan | grep -q 'RSN:' && WPA="1" iw dev "${INTERFACE}" scan | grep -q 'WPA:' && WPA="1" - DIALOG --infobox "Checking on WEP encryption ..." 3 40 - iw dev "${INTERFACE}" scan | grep -q 'Privacy:' && WEP="1" #shellcheck disable=SC2181 while [[ "${WLAN_SECURITY}" = "" ]]; do #shellcheck disable=2046 DIALOG --ok-label "Select" --menu "Select encryption type:" 9 40 7 \ - $([[ "${WPA}" == "1" ]] && echo "wpa" "WPA/PSK") \ - $([[ "${WEP}" == "1" ]] && echo "wep" "WEP") \ - "none" "NO encryption" 2>"${ANSWER}" + $([[ "${WPA}" == "1" ]] && echo "WPA-PSK" "Encrypted network") \ + "NONE" "Open network/NO encryption" 2>"${ANSWER}" case $? in 1) return 1 ;; 0) WLAN_SECURITY=$(cat "${ANSWER}") ;; esac done - if [[ "${WLAN_SECURITY}" == "wpa" || "${WLAN_SECURITY}" == "wep" ]]; then + if [[ "${WLAN_SECURITY}" == "wpa" ]]; then DIALOG --inputbox "Enter your KEY:" 5 40 "WirelessKey" 2>"${ANSWER}" || return 1 WLAN_KEY=$(cat "${ANSWER}") fi @@ -137,6 +133,10 @@ donetwork() { echo "" >> "${NETWORK_PROFILE}" echo "[Network]" >> "${NETWORK_PROFILE}" [[ "${IP}" == "dhcp" ]] && echo "DHCP=yes" >> "${NETWORK_PROFILE}" + if [[ "${CONNECTION}" = "wireless" ]]; then + #shellcheck disable=SC2129 + echo "IgnoreCarrierLoss=3s" >> >>"${NETWORK_PROFILE}" + fi if [[ "${IP}" = "static" ]]; then #shellcheck disable=SC2129 echo "Address=${IPADDR}" >>"${NETWORK_PROFILE}" @@ -144,18 +144,25 @@ donetwork() { echo "DNS=${DNS}" >>"${NETWORK_PROFILE}" fi if [[ "${CONNECTION}" = "wireless" ]]; then - #shellcheck disable=SC2129 - echo "Security=${WLAN_SECURITY}" >>"${NETWORK_PROFILE}" - echo "ESSID='${WLAN_ESSID}'" >>"${NETWORK_PROFILE}" - echo "Key='${WLAN_KEY}'" >>"${NETWORK_PROFILE}" - [[ "${WLAN_HIDDEN}" = "yes" ]] && echo "Hidden=yes" >>"${NETWORK_PROFILE}" + # setup wpa_supplicant + WPA_PROFILE=/etc/wpa_supplicant/wpa_supplicant-${INTERFACE}.conf + echo "#$NETWORK_PROFILE generated by archboot setup" > "${WPA_PROFILE}" + echo "network={" + [[ "${WLAN_HIDDEN}" == yes ]] && echo "scan_ssid=1" >> "${WPA_PROFILE}" + echo "key_mgmt=\"${WLAN_SECURITY}\"" >> "${WPA_PROFILE}" + echo "ssid=\"${WLAN_ESSID}\"" >> "${WPA_PROFILE}" + echo "PSK=\"${WLAN_KEY}\"" >> "${WPA_PROFILE}" + echo "}" >> "${WPA_PROFILE}" + echo "Setup wpa_supplicant config to ${WPA_PROFILE}." + echo "Starting wpa_supplicant@${INTERFACE}.service ..." > "${LOG}" + systemctl restart wpa_supplicant@${INTERFACE}.service fi + if [[ -e /etc/systemd/network/10-wired-auto-dhcp.network ]]; then + echo "Disabled Archboot's bootup wired auto dhcp browsing." > "${LOG}" + rm /etc/systemd/network/10-wired-auto-dhcp.network + fi + echo "Using setup's network profile "${NETWORK_PROFILE}" now..." > "${LOG}" systemctl restart systemd-networkd.service - # bring down interface first - #systemctl stop dhcpcd@"${INTERFACE}".service - #ip link set dev "${INTERFACE}" down - # run netctl - #netctl restart "$(basename "${NETWORK_PROFILE}")" >"${LOG}" # add sleep here dhcp can need some time to get link DIALOG --infobox "Waiting 30 seconds for network link to come up ..." 3 60 NETWORK_COUNT="0" @@ -165,7 +172,7 @@ donetwork() { [[ "${NETWORK_COUNT}" == "30" ]] && break done if ! grep -qw up /sys/class/net/"${INTERFACE}"/operstate; then - DIALOG --msgbox "Error occured while running netctl. (see 'journalctl -xn' for output)" 0 0 + DIALOG --msgbox "Your network is not correctly working, please configure again!" 0 0 return 1 else DIALOG --infobox "Link is up. Continuing in 3 seconds ..." 3 60