]> git.ipfire.org Git - people/ms/ipfire-2.x.git/commitdiff
wlanap.cgi: Fix copying configuration
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 20 Sep 2024 12:12:07 +0000 (14:12 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 8 Oct 2024 08:46:30 +0000 (08:46 +0000)
This allows to uncheck checkboxes again.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
html/cgi-bin/wlanap.cgi

index 447ad80156c792a9930bea40e0212477e4faf703..2691496ab8dcb55ffa3bc64aa163eea25ec5c987 100644 (file)
@@ -34,6 +34,9 @@ my %selected=();
 my %checked=();
 my %wlanapsettings=();
 
+# Read the configuration file
+&General::readhash("/var/ipfire/wlanap/settings", \%wlanapsettings);
+
 # Set defaults
 &General::set_defaults(\%wlanapsettings, {
        "APMODE" => "on",
@@ -52,11 +55,13 @@ my %wlanapsettings=();
        "IEEE80211W" => "off",
 });
 
-&General::readhash("/var/ipfire/wlanap/settings", \%wlanapsettings);
-&Header::getcgihash(\%wlanapsettings);
+my %cgiparams = ();
+
+# Fetch arguments from browser
+&Header::getcgihash(\%cgiparams);
 
 # Find the selected interface
-my $INTF = &Network::get_intf_by_address($wlanapsettings{'INTERFACE'});
+my $INTF = &Network::get_intf_by_address($cgiparams{'INTERFACE'});
 
 delete $wlanapsettings{'__CGI__'};
 delete $wlanapsettings{'x'};
@@ -64,20 +69,36 @@ delete $wlanapsettings{'y'};
 
 &Header::showhttpheaders();
 
-if ($wlanapsettings{'ACTION'} eq "$Lang::tr{'save'}") {
+if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}") {
        # verify WPA Passphrase - only with enabled enc
-       if ($wlanapsettings{'ENC'} ne "none") {
+       if ($cgiparams{'ENC'} ne "none") {
                # must be 8 .. 63 characters
-               if ((length($wlanapsettings{'PWD'}) < 8) || (length($wlanapsettings{'PWD'}) > 63)) {
+               if ((length($cgiparams{'PWD'}) < 8) || (length($cgiparams{'PWD'}) > 63)) {
                        $errormessage .= "$Lang::tr{'wlanap invalid wpa'}<br />";
                }
 
                # only ASCII alowed
-               if (!($wlanapsettings{'PWD'} !~ /[^\x00-\x7f]/)) {
+               if (!($cgiparams{'PWD'} !~ /[^\x00-\x7f]/)) {
                        $errormessage .= "$Lang::tr{'wlanap invalid wpa'}<br />";
                }
        }
 
+       # XXX This needs validation
+       $wlanapsettings{'INTERFACE'} = $cgiparams{'INTERFACE'};
+       $wlanapsettings{'SSID'} = $cgiparams{'SSID'};
+       $wlanapsettings{'HIDESSID'} = ($cgiparams{'HIDESSID'} eq 'on') ? 'on' : 'off';
+       $wlanapsettings{'CLIENTISOLATION'} = ($cgiparams{'CLIENTISOLATION'} eq 'on') ? 'on' : 'off';
+       $wlanapsettings{'COUNTRY'} = $cgiparams{'COUNTRY'};
+       $wlanapsettings{'HW_MODE'} = $cgiparams{'HW_MODE'};
+       $wlanapsettings{'CHANNEL'} = $cgiparams{'CHANNEL'};
+       $wlanapsettings{'NOSCAN'} = ($cgiparams{'NOSCAN'} eq 'on') ? 'on' : 'off';
+       $wlanapsettings{'ENC'} = $cgiparams{'ENC'};
+       $wlanapsettings{'PWD'} = $cgiparams{'PWD'};
+       $wlanapsettings{'IEEE80211W'} = ($cgiparams{'IEEE80211W'} eq 'on') ? 'on' : 'off';
+       $wlanapsettings{'HTCAPS'} = $cgiparams{'HTCAPS'};
+       $wlanapsettings{'VHTCAPS'} = $cgiparams{'VHTCAPS'};
+       $wlanapsettings{'TX_POWER'} = $cgiparams{'TX_POWER'};
+
        if ($errormessage eq '') {
                &General::writehash("/var/ipfire/wlanap/settings", \%wlanapsettings);
                &WriteConfig_hostapd();