From a8f87aa5a95e9ea96ef37948271ec3de3c9d1212 Mon Sep 17 00:00:00 2001 From: Cameron Nemo Date: Thu, 12 Nov 2020 19:44:55 -0800 Subject: [PATCH] Enable and configure wpa_supplicant with dhcpcd The installer was originally written when the dhcpcd wpa_supplicant hook was enabled. In early 2019, the hook was disabled and it appears that the installer has been unable to configure WiFi since then. To address this, enable the wpa_supplicant service, configure it, and reload the service when dhcpcd is used for network connectivity. Closes #5 Also changes to a better file for checking if the network is working. --- build-x86-images.sh.in | 8 +++---- installer.sh.in | 50 ++++++++++++++++++++++++------------------ 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/build-x86-images.sh.in b/build-x86-images.sh.in index 2bb0572..74d9b91 100644 --- a/build-x86-images.sh.in +++ b/build-x86-images.sh.in @@ -32,11 +32,11 @@ build_variant() { case $variant in base) - SERVICES="$SERVICES dhcpcd acpid" + SERVICES="$SERVICES dhcpcd wpa_supplicant acpid" ;; enlightenment) PKGS="$PKGS $XORG_PKGS lxdm enlightenment terminology udisks2 firefox-esr" - SERVICES="$SERVICES acpid dhcpcd lxdm dbus polkitd" + SERVICES="$SERVICES acpid dhcpcd wpa_supplicant lxdm dbus polkitd" ;; xfce) PKGS="$PKGS $XORG_PKGS lxdm xfce4 gnome-themes-standard gnome-keyring network-manager-applet gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox-esr" @@ -60,11 +60,11 @@ build_variant() { ;; lxde) PKGS="$PKGS $XORG_PKGS lxde lxdm gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox-esr" - SERVICES="$SERVICES acpid dbus dhcpcd lxdm polkitd" + SERVICES="$SERVICES acpid dbus dhcpcd wpa_supplicant lxdm polkitd" ;; lxqt) PKGS="$PKGS $XORG_PKGS lxqt lxdm gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox-esr" - SERVICES="$SERVICES elogind dbus dhcpcd lxdm polkitd" + SERVICES="$SERVICES elogind dbus dhcpcd wpa_supplicant lxdm polkitd" ;; *) >&2 echo "Unknown variant $variant" diff --git a/installer.sh.in b/installer.sh.in index b916692..63bd363 100644 --- a/installer.sh.in +++ b/installer.sh.in @@ -822,8 +822,8 @@ set_bootloader() { } test_network() { - rm -f xtraeme.asc && \ - xbps-uhelper fetch https://repo-default.voidlinux.org/live/xtraeme.asc >$LOG 2>&1 + rm -f otime && \ + xbps-uhelper fetch https://repo-default.voidlinux.org/current/otime >$LOG 2>&1 if [ $? -eq 0 ]; then DIALOG --msgbox "Network is working properly!" ${MSGBOXSIZE} NETWORK_DONE=1 @@ -852,19 +852,27 @@ configure_wifi() { DIALOG --msgbox "Invalid AP password." ${MSGBOXSIZE} fi - rm -f ${_wpasupconf%.conf}-${dev}.conf - cp -f ${_wpasupconf} ${_wpasupconf%.conf}-${dev}.conf - if [ "$enc" = "wep" ]; then - echo "network={" >> ${_wpasupconf%.conf}-${dev}.conf - echo " ssid=\"$ssid\"" >> ${_wpasupconf%.conf}-${dev}.conf - echo " wep_key0=\"$pass\"" >> ${_wpasupconf%.conf}-${dev}.conf - echo " wep_tx_keyidx=0" >> ${_wpasupconf%.conf}-${dev}.conf - echo " auth_alg=SHARED" >> ${_wpasupconf%.conf}-${dev}.conf - echo "}" >> ${_wpasupconf%.conf}-${dev}.conf + # reset the configuration to the default, if necessary + # otherwise backup the configuration + if [ -f ${_wpasupconf}.orig ]; then + cp -f ${_wpasupconf}.orig ${_wpasupconf} else - wpa_passphrase "$ssid" "$pass" >> ${_wpasupconf%.conf}-${dev}.conf + cp -f ${_wpasupconf} ${_wpasupconf}.orig + fi + if [ "$enc" = "wep" ]; then + cat << EOF >> ${_wpasupconf} +network={ + ssid="$ssid" + wep_key0="$pass" + wep_tx_keyidx=0 + auth_alg=SHARED +} +EOF + else + wpa_passphrase "$ssid" "$pass" >> ${_wpasupconf} fi + sv restart wpa_supplicant configure_net_dhcp $dev return $? } @@ -882,7 +890,7 @@ configure_net() { } iface_setup() { - ip addr show dev $1|grep -q 'inet ' + ip addr show dev $1 | grep -q -e 'inet ' -e 'inet6 ' return $? } @@ -891,13 +899,14 @@ configure_net_dhcp() { iface_setup $dev if [ $? -eq 1 ]; then - dhcpcd -t 10 -w -4 -L $dev -e "wpa_supplicant_conf=/etc/wpa_supplicant/wpa_supplicant-${dev}.conf" 2>&1 | tee $LOG | \ + sv restart dhcpcd 2>&1 | tee $LOG | \ DIALOG --progressbox "Initializing $dev via DHCP..." ${WIDGET_SIZE} if [ $? -ne 0 ]; then DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} failed to run dhcpcd. See $LOG for details." ${MSGBOXSIZE} return 1 fi - iface_setup $dev + export -f iface_setup + timeout 10s bash -c "while true; do iface_setup $dev; sleep 0.25; done" if [ $? -eq 1 ]; then DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} DHCP request failed for $dev. Check $LOG for errors." ${MSGBOXSIZE} return 1 @@ -1305,15 +1314,14 @@ ${BOLD}Do you want to continue?${RESET}" 20 80 || return # network type empty??!!! : elif [ "$_type" = "dhcp" ]; then - if [ -f /etc/wpa_supplicant/wpa_supplicant-${_dev}.conf ]; then - cp /etc/wpa_supplicant/wpa_supplicant-${_dev}.conf $TARGETDIR/etc/wpa_supplicant - ln -sf /etc/sv/dhcpcd-${_dev} $TARGETDIR/etc/runit/runsvdir/default/dhcpcd-${_dev} - else - enable_dhcpd + if $(echo $_dev|egrep -q "^wl.*" 2>/dev/null); then + cp /etc/wpa_supplicant/wpa_supplicant.conf $TARGETDIR/etc/wpa_supplicant + ln -sf /etc/sv/wpa_supplicant $TARGETDIR/etc/runit/runsvdir/default/wpa_supplicant fi + enable_dhcpd elif [ -n "$_dev" -a "$_type" = "static" ]; then # static IP through dhcpcd. - mv $TARGETDIR/etc/dhcpcd.conf $TARGETDIR/etc/dhdpcd.conf.orig + mv $TARGETDIR/etc/dhcpcd.conf $TARGETDIR/etc/dhcpcd.conf.orig echo "# Static IP configuration set by the void-installer for $_dev." \ >$TARGETDIR/etc/dhcpcd.conf echo "interface $_dev" >>$TARGETDIR/etc/dhcpcd.conf