diff --git a/includes/hostapd.php b/includes/hostapd.php index 654388ce..9aeb59e2 100755 --- a/includes/hostapd.php +++ b/includes/hostapd.php @@ -181,20 +181,28 @@ function SaveHostAPDConfig($wpa_array, $enc_types, $modes, $interfaces, $status) } } // set AP interface default, override for ap-sta & bridged options - $ap_iface = $_POST['interface']; - if ($wifiAPEnable) { $ap_iface = 'uap0'; } - if ($bridgedEnable) { $ap_iface = 'br0'; } + $ap_iface = $_POST['interface']; // the hostap AP interface + $cli_iface = $_POST['interface']; // the wifi client interface + $session_iface = $_POST['interface']; // the interface that the UI needs to monitor for data usage etc. + if ($wifiAPEnable) { // for AP-STA we monitor the uap0 interface, which is always the ap interface. + $ap_iface = 'uap0'; + $session_iface = 'uap0'; + } + if ($bridgedEnable) { // for bridged mode we monitor the bridge, but keep the selected interface as AP. + $session_iface = 'br0'; + $cli_iface = 'br0'; + } // persist user options to /etc/raspap $cfg = []; - $cfg['WifiInterface'] = $_POST['interface']; + $cfg['WifiInterface'] = $ap_iface; $cfg['LogEnable'] = $logEnable; // Save previous Client mode status when Bridged $cfg['WifiAPEnable'] = ($bridgedEnable == 1 ? $arrHostapdConf['WifiAPEnable'] : $wifiAPEnable); $cfg['BridgedEnable'] = $bridgedEnable; - $cfg['WifiManaged'] = $_POST['interface']; + $cfg['WifiManaged'] = $cli_iface; write_php_ini($cfg, RASPI_CONFIG.'/hostapd.ini'); - $_SESSION['ap_interface'] = $ap_iface; + $_SESSION['ap_interface'] = $session_iface; // Verify input if (empty($_POST['ssid']) || strlen($_POST['ssid']) > 32) { @@ -248,7 +256,7 @@ function SaveHostAPDConfig($wpa_array, $enc_types, $modes, $interfaces, $status) $_POST['max_num_sta'] = $_POST['max_num_sta'] < 1 ? null : $_POST['max_num_sta']; if ($good_input) { - $return = updateHostapdConfig($ignore_broadcast_ssid,$wifiAPEnble,$bridgedEnable); + $return = updateHostapdConfig($ignore_broadcast_ssid,$wifiAPEnable,$bridgedEnable); // Fetch dhcp-range, lease time from system config $syscfg = parse_ini_file(RASPI_DNSMASQ_PREFIX.$ap_iface.'.conf', false, INI_SCANNER_RAW);