From 4002ecb3a3b11e400ae9f73f3cd73b9116dae182 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 8 May 2025 17:57:07 +0200 Subject: [PATCH] hostapd: Generate the configuration in the initscript This will give us some more flexibility in the future. Signed-off-by: Michael Tremer --- html/cgi-bin/wlanap.cgi | 164 ------------------------------- src/initscripts/packages/hostapd | 152 ++++++++++++++++++++++++++++ 2 files changed, 152 insertions(+), 164 deletions(-) diff --git a/html/cgi-bin/wlanap.cgi b/html/cgi-bin/wlanap.cgi index 112399283..2a3135977 100644 --- a/html/cgi-bin/wlanap.cgi +++ b/html/cgi-bin/wlanap.cgi @@ -101,7 +101,6 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}") { if ($errormessage eq '') { &General::writehash("/var/ipfire/wlanap/settings", \%wlanapsettings); - &WriteConfig_hostapd(); &General::system("/usr/local/bin/wlanapctrl", "restart"); } @@ -404,169 +403,6 @@ END &Header::closebigbox(); &Header::closepage(); -sub WriteConfig_hostapd{ - open (CONFIGFILE, ">/var/ipfire/wlanap/hostapd.conf"); - print CONFIGFILE <&2 + return 1 + ;; + esac + + # Set HT capabilities + if [ -n "${HTCAPS}" ]; then + echo "ht_capab=${HTCAPS}" + fi + + # Set VHT capabilities + if [ -n "${VHTCAPS}" ]; then + echo "vht_capab=${VHTCAPS}" + fi + + # Enable authentication + echo "auth_algs=1" + + # Enable the control interface + echo "ctrl_interface=/var/run/hostapd" + echo "ctrl_interface_group=0" + + # Disconnect clients that are too far away + echo "disassoc_low_ack=1" + + # SSID + echo "ssid2=\"${SSID}\"" + echo "utf8_ssid=1" + + # Hide the SSID? + if [ "${HIDESSID}" = "on" ]; then + echo "ignore_broadcast_ssid=2" + fi + + # Isolate clients? + if [ "${CLIENTISOLATION}" = "on" ]; then + echo "ap_isolate=1" + fi + + # Disable neighbour scan? + if [ "${NOSCAN}" = "on" ]; then + echo "noscan=1" + else + echo "noscan=0" + fi + + # Management Frame Protection (802.11w) + case "${IEEE80211W}" in + on) + echo "ieee80211w=2" + ;; + optional) + echo "ieee80211w=1" + ;; + *) + echo "ieee80211w=0" + ;; + esac + + # Encryption + case "${ENC}" in + wpa3) + echo "wpa=2" + echo "wpa_passphrase=${PWD}" + echo "wpa_key_mgmt=SAE" + echo "rsn_pairwise=CCMP" + ;; + wpa2+3) + echo "wpa=2" + echo "wpa_passphrase=${PWD}" + echo "wpa_key_mgmt=WPA-PSK SAE" + echo "rsn_pairwise=CCMP" + ;; + wpa2) + echo "wpa=2" + echo "wpa_passphrase=${PWD}" + echo "wpa_key_mgmt=WPA-PSK" + echo "rsn_pairwise=CCMP" + ;; + wpa1+2) + echo "wpa=3" + echo "wpa_passphrase=${PWD}" + echo "wpa_key_mgmt=WPA-PSK" + echo "wpa_pairwise=TKIP" + echo "rsn_pairwise=CCMP" + ;; + wpa1) + echo "wpa=1" + echo "wpa_passphrase=${PWD}" + echo "wpa_key_mgmt=WPA-PSK" + echo "wpa_pairwise=TKIP" + ;; + esac + + return 0 +} + eval $(/usr/local/bin/readhash /var/ipfire/wlanap/settings) case "${1}" in @@ -47,6 +188,13 @@ case "${1}" in exit 1 fi + # Write the configuration + if ! write_config > /etc/hostapd.conf; then + boot_mesg "Failed to generate configuration" + echo_failure + exit 1 + fi + boot_mesg "Starting hostapd... " loadproc /usr/bin/hostapd -s -B /etc/hostapd.conf -i "${interface}" ;; @@ -67,6 +215,10 @@ case "${1}" in statusproc /usr/bin/hostapd ;; + show-config) + write_config + ;; + *) echo "Usage: ${0} {start|stop|restart|status}" exit 1 -- 2.47.3