From b8efb4b8af1c96be550770151e4ef5fd242dfdc3 Mon Sep 17 00:00:00 2001 From: Rod Wright Date: Tue, 10 Mar 2026 10:00:47 -0400 Subject: [PATCH] Changes for bookworm NetworkManager --- ap-setup.sh | 77 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 53 insertions(+), 24 deletions(-) diff --git a/ap-setup.sh b/ap-setup.sh index ff226be..b1183c3 100755 --- a/ap-setup.sh +++ b/ap-setup.sh @@ -40,15 +40,16 @@ function get_ap_params() { fi done # Save parameters in config file - sed -i 's,'wapssid=.*','wapssid="\"$wapssid\""',' /etc/piwifiap.conf - sed -i 's,'wappass=.*','wappass="\"$wappass\""',' /etc/piwifiap.conf + sed -i 's|'wapssid=.*'|'wapssid="\'$wapssid\'"'|' /etc/piwifiap/piwifiap.conf + sed -i 's|'wappass=.*'|'wappass="\'$wappass\'"'|' /etc/piwifiap/piwifiap.conf + sed -i 's|'802-11-wireless-security.psk:.*'|'802-11-wireless-security.psk:$wappass'|' /etc/piwifiap/piwifiap.secret } function config_systemd-networkd() { echo "Configuring as wireless access point using systemd-networkd." get_ap_params - # Save network system in config file - sed -i 's,'network_system=.*','network_system="\"systemd-networkd\""',' /etc/piwifiap.conf + # Save network system type in config file + sed -i 's,'network_system=.*','network_system="\"systemd-networkd\""',' /etc/piwifiap/piwifiap.conf apt install hostapd systemctl unmask hostapd @@ -97,19 +98,34 @@ function config_NetworkManager() { get_ap_params # Clean up a possible failed previous attempt - nmcli con del piwifi-ap >/dev/null 2>&1 + nmcli con del piwifi-hotspot >/dev/null 2>&1 nmcli con del piwifi-ethernet >/dev/null 2>&1 - nmcli con del piwifi-apbridge >/dev/null 2>&1 + nmcli con del piwifi-bridge >/dev/null 2>&1 + - # Save network system in config file - sed -i 's,'network_system=.*','network_system="\"NetworkManager\""',' /etc/piwifiap.conf + # Save network system type in config file + sed -i 's|'network_system=.*'|'network_system="\"NetworkManager\""'|' /etc/piwifiap/piwifiap.conf + + # create bridge interface + nmcli con add type bridge con-name piwifi-bridge ifname bridge0 - nmcli device wifi hotspot ssid $wapssid password $wappass - nmcli connection add type bridge con-name 'Bridge' ifname bridge0 - nmcli connection add type ethernet slave-type bridge con-name 'Ethernet' ifname eth0 master bridge0 - nmcli connection modify 'Hotspot' master bridge0 - nmcli connection up Bridge - nmcli connection up Hotspot + # add ethernet to bridge + nmcli con add type ethernet slave-type bridge con-name piwifi-ethernet ifname eth0 master bridge0 + + # create access point + nmcli con add type wifi ifname wlan0 mode ap con-name piwifi-hotspot ssid $wapssid + nmcli con modify piwifi-hotspot wifi-sec.key-mgmt wpa-psk + nmcli con modify piwifi-hotspot 802-11-wireless.band bg + + # add wifi to bridge + nmcli con modify piwifi-hotspot master bridge0 slave-type bridge + + # activate bridge + nmcli con up piwifi-bridge + + # activite wifi + nmcli con up piwifi-hotspot passwd-file /etc/piwifiap/piwifiap.secret + } current_user=$(whoami) @@ -121,18 +137,20 @@ then fi echo "" echo "" -echo "If this terminal connects to a network using ethernet, it can be configured" -echo "as a wireless access point for other terminals. Would you like to configure" -echo -n "this terminal as an access point? [y/N]: " +echo "If this system connects to a network using ethernet, it can be configured" +echo "as a wireless access point for other systems. Would you like to configure" +echo -n "this system as an access point? [y/N]: " read wapconf if [[ "$wapconf" == "Y" || "$wapconf" == "y" ]] then # Determine if we are using NetworkManager or systemd-networkd echo "" echo "Copying files..." - chmod +x apsetup/usr/local/bin/* - cp -Rv apsetup/usr/local/bin/* /usr/local/bin - cp -Rv apsetup/etc/* /etc + chmod +x apsetup/usr/local/bin/wap-* + cp -R apsetup/usr/local/bin/* /usr/local/bin/ + cp -R apsetup/etc/* /etc/ + chown -R root:root /etc/piwifiap + chmod 600 /etc/piwifiap/* if systemctl status dhcpcd.service|grep -q "Active: active (running)" then config_systemd-networkd @@ -155,12 +173,23 @@ then echo "" echo "To disable the access point altogether in the future, run:" echo " sudo wap-disable" - echo "at a command prompt and reboot the terminal. To re-enable it, run:" + echo "at a command prompt and reboot. To re-enable it, run:" echo " sudo wap-enable" - echo "at a command prompt and reboot the terminal." + echo "at a command prompt and reboot." echo "" - echo -n "Press enter key to continue..." - read cont + echo "The system must be rebooted for the configuration to take effect." + echo "" + read -p "Would you like to reboot now? [Y/n]: " -r rebootok + case "$rebootok" in + "y" | "Y" | "") + reboot + ;; + *) + echo "You may continue to use the system, but the access point will not be" + echo "functional until you reboot." + exit 0 + ;; + esac else exit 2 fi