From 63491b17d64ce94de994545a3ddd03cb97624234 Mon Sep 17 00:00:00 2001 From: billz Date: Sat, 2 Aug 2025 13:12:39 -0700 Subject: [PATCH] Run wpa_supplicant in background mode (-B) --- installers/raspap.sudoers | 1 + src/RaspAP/Networking/Hotspot/WiFiManager.php | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/installers/raspap.sudoers b/installers/raspap.sudoers index e3985826..bd073f33 100644 --- a/installers/raspap.sudoers +++ b/installers/raspap.sudoers @@ -5,6 +5,7 @@ www-data ALL=(ALL) NOPASSWD:/bin/cat /etc/wpa_supplicant/wpa_supplicant-[a-zA-Z0 www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/wifidata /etc/wpa_supplicant/wpa_supplicant.conf www-data ALL=(ALL) NOPASSWD:/bin/cp /tmp/wifidata /etc/wpa_supplicant/wpa_supplicant-wl*.conf www-data ALL=(ALL) NOPASSWD:/sbin/wpa_supplicant -B -Dnl80211 -c/etc/wpa_supplicant/wpa_supplicant.conf -i[a-zA-Z0-9]* +www-data ALL=(ALL) NOPASSWD:/sbin/wpa_supplicant -i [a-zA-Z0-9]* -c /etc/wpa_supplicant/wpa_supplicant.conf -B www-data ALL=(ALL) NOPASSWD:/bin/rm /var/run/wpa_supplicant/[a-zA-Z0-9]* www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i [a-zA-Z0-9]* scan_results www-data ALL=(ALL) NOPASSWD:/sbin/wpa_cli -i [a-zA-Z0-9]* scan diff --git a/src/RaspAP/Networking/Hotspot/WiFiManager.php b/src/RaspAP/Networking/Hotspot/WiFiManager.php index bf4e4e32..316ba074 100644 --- a/src/RaspAP/Networking/Hotspot/WiFiManager.php +++ b/src/RaspAP/Networking/Hotspot/WiFiManager.php @@ -183,7 +183,7 @@ class WiFiManager if (preg_match('/ESSID:\"([^"]+)\"/i', $line, $iwconfig_ssid)) { $ssid=hexSequence2lower($iwconfig_ssid[1]); $networks[$ssid]['connected'] = true; - $check=detectCaptivePortal($_SESSION['wifi_client_interface']); + //$check=detectCaptivePortal($_SESSION['wifi_client_interface']); $networks[$ssid]["portal-url"]=$check["URL"]; } } @@ -248,9 +248,9 @@ class WiFiManager */ public function reinitializeWPA($force) { - $iface = escapeshellarg($_SESSION['wifi_client_interface']); + $iface = $_SESSION['wifi_client_interface']; if ($force == true) { - $cmd = "sudo wpa_supplicant -B -Dnl80211 -c/etc/wpa_supplicant/wpa_supplicant.conf -i$iface"; + $cmd = "sudo /sbin/wpa_supplicant -i $unescapedIface -c /etc/wpa_supplicant/wpa_supplicant.conf -B 2>&1"; $result = shell_exec($cmd); } $cmd = "sudo wpa_cli -i $iface reconfigure"; @@ -333,7 +333,7 @@ class WiFiManager // retry $output = shell_exec("sudo wpa_cli -i $iface list_networks 2>&1"); - // tf it still fails, throw an exception + // if it still fails, throw an exception if ($output === null || strpos($output, 'Failed to connect') !== false) { throw new \Exception("Failed to start wpa_supplicant for interface: " . trim($startResult ?? 'unknown error')); }