Add WiFi safeguard and apt upgrade to SpoolBuddy install script

Install script now runs apt-get upgrade -y after installing system
  packages. A WiFi safeguard (APT hook + helper script) is installed
  first, backing up NetworkManager connections before dpkg and restoring
  them if wiped — prevents headless Pis from losing WiFi during upgrades.
This commit is contained in:
maziggy
2026-03-25 10:22:22 +01:00
parent cb31a6cd33
commit f96b9ded56
+26 -2
View File
@@ -452,11 +452,35 @@ install_wifi_safeguard() {
return
fi
# Write a helper script (avoids quote escaping issues in APT config)
local helper="/usr/local/sbin/preserve-wifi"
cat > "$helper" << 'HELPEREOF'
#!/bin/sh
# Called by APT hooks to preserve NetworkManager WiFi connections.
NM_DIR="/etc/NetworkManager/system-connections"
BAK_DIR="/etc/NetworkManager/system-connections.bak"
case "$1" in
backup)
if [ -d "$NM_DIR" ] && [ -n "$(ls -A "$NM_DIR" 2>/dev/null)" ]; then
cp -a "$NM_DIR/" "$BAK_DIR/"
fi
;;
restore)
if [ -d "$BAK_DIR" ] && [ -z "$(ls -A "$NM_DIR" 2>/dev/null)" ]; then
cp -a "$BAK_DIR"/* "$NM_DIR"/
nmcli general reload 2>/dev/null
fi
rm -rf "$BAK_DIR" 2>/dev/null
;;
esac
HELPEREOF
chmod +x "$helper"
cat > "$hook_file" << 'APTEOF'
// Preserve NetworkManager WiFi connections across apt upgrades.
// Installed by SpoolBuddy — prevents headless Pis from losing WiFi.
DPkg::Pre-Invoke { "if [ -d /etc/NetworkManager/system-connections ] && [ -n \"$(ls -A /etc/NetworkManager/system-connections/ 2>/dev/null)\" ]; then cp -a /etc/NetworkManager/system-connections/ /etc/NetworkManager/system-connections.bak/; fi"; };
DPkg::Post-Invoke { "if [ -d /etc/NetworkManager/system-connections.bak ] && [ -z \"$(ls -A /etc/NetworkManager/system-connections/ 2>/dev/null)\" ]; then cp -a /etc/NetworkManager/system-connections.bak/* /etc/NetworkManager/system-connections/ && nmcli general reload 2>/dev/null; fi"; };
DPkg::Pre-Invoke { "/usr/local/sbin/preserve-wifi backup"; };
DPkg::Post-Invoke { "/usr/local/sbin/preserve-wifi restore"; };
APTEOF
success "WiFi safeguard installed (${hook_file})"