]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - html/cgi-bin/wlanap.cgi
hostapd: make client isolation configurable via WebUI
[ipfire-2.x.git] / html / cgi-bin / wlanap.cgi
index 844c395e2f7738dddd26cd3c36ad5bcfe8577c93..cae191101b6f6d88c52f2920555da3567a91c7dc 100644 (file)
@@ -73,6 +73,9 @@ $wlanapsettings{'SYSLOGLEVEL'} = '0';
 $wlanapsettings{'DEBUG'} = '4';
 $wlanapsettings{'DRIVER'} = 'NL80211';
 $wlanapsettings{'HTCAPS'} = '';
+$wlanapsettings{'VHTCAPS'} = '';
+$wlanapsettings{'NOSCAN'} = 'off';
+$wlanapsettings{'CLIENTISOLATION'} = 'off';
 
 &General::readhash("/var/ipfire/wlanap/settings", \%wlanapsettings);
 &Header::getcgihash(\%wlanapsettings);
@@ -154,7 +157,7 @@ if ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'save'}" ){
        $memory=0;
 }
 
-&Header::openpage('', 1, '', '');
+&Header::openpage($Lang::tr{'wlanap configuration'}, 1, '', '');
 &Header::openbigbox('100%', 'left', '', $errormessage);
 
 if ( $errormessage ){
@@ -246,6 +249,14 @@ $checked{'HIDESSID'}{'off'} = '';
 $checked{'HIDESSID'}{'on'} = '';
 $checked{'HIDESSID'}{$wlanapsettings{'HIDESSID'}} = "checked='checked'";
 
+$checked{'NOSCAN'}{'off'} = '';
+$checked{'NOSCAN'}{'on'} = '';
+$checked{'NOSCAN'}{$wlanapsettings{'NOSCAN'}} = "checked='checked'";
+
+$checked{'CLIENTISOLATION'}{'off'} = '';
+$checked{'CLIENTISOLATION'}{'on'} = '';
+$checked{'CLIENTISOLATION'}{$wlanapsettings{'CLIENTISOLATION'}} = "checked='checked'";
+
 $selected{'ENC'}{$wlanapsettings{'ENC'}} = "selected='selected'";
 $selected{'CHANNEL'}{$wlanapsettings{'CHANNEL'}} = "selected='selected'";
 $selected{'COUNTRY'}{$wlanapsettings{'COUNTRY'}} = "selected='selected'";
@@ -323,7 +334,7 @@ if ( $wlan_card_status ne '' ){
        print "<tr><td class='base'>$Lang::tr{'wlanap wlan card'} ($wlanapsettings{'DRIVER'})</td>";
        print $wlan_card_status eq 'up' ? $status_started : $status_stopped;
        print"<td colspan='4'></td></tr>";
-       print "<tr><td class='base' bgcolor='$color{'color22'}'>$Lang::tr{'wlanap access point'}</td>";
+       print "<tr><td class='base' bgcolor='$color{'color22'}'>$Lang::tr{'wlanap'}</td>";
        print $wlan_ap_status eq 'up' ? $status_started : $status_stopped;
        if ( ($memory != 0) && (@pid[0] ne "///") ){
                print "<td bgcolor='$color{'color22'}' align='center'>@pid[0]</td>";
@@ -371,6 +382,7 @@ print <<END
 <tr><td width='25%' class='base'>SSID:&nbsp;</td><td class='base' colspan='3'><input type='text' name='SSID' size='30' value='$wlanapsettings{'SSID'}' /></td></tr>
 <!--SSID Broadcast: on => HIDESSID: off -->
 <tr><td width='25%' class='base'>SSID Broadcast:&nbsp;</td><td class='base' colspan='3'>on <input type='radio' name='HIDESSID' value='off' $checked{'HIDESSID'}{'off'} /> | <input type='radio' name='HIDESSID' value='on' $checked{'HIDESSID'}{'on'} /> off</td></tr>
+<tr><td width='25%' class='base'>Client Isolation:&nbsp;</td><td class='base' colspan='3'>on <input type='radio' name='CLIENTISOLATION' value='off' $checked{'CLIENTISOLATION'}{'off'} /> | <input type='radio' name='CLIENTISOLATION' value='on' $checked{'CLIENTISOLATION'}{'on'} /> off</td></tr>
 
 
 <tr><td width='25%' class='base'>$Lang::tr{'wlanap country'}:&nbsp;</td><td class='base' colspan='3'>
@@ -389,6 +401,7 @@ print<<END
                <option value='g' $selected{'HW_MODE'}{'g'}>802.11g</option>
                <option value='an' $selected{'HW_MODE'}{'an'}>802.11an</option>
                <option value='gn' $selected{'HW_MODE'}{'gn'}>802.11gn</option>
+               <option value='ac' $selected{'HW_MODE'}{'ac'}>802.11ac</option>
        </select>
 </td></tr>
 END
@@ -413,6 +426,7 @@ END
 ;
 }
 print<<END
+<tr><td width='25%' class='base'>$Lang::tr{'wlanap neighbor scan'}:&nbsp;</td><td class='base' >on <input type='radio' name='NOSCAN' value='off' $checked{'NOSCAN'}{'off'} /> | <input type='radio' name='NOSCAN' value='on' $checked{'NOSCAN'}{'on'} /> off</td><td class='base' colspan='2'>$Lang::tr{'wlanap neighbor scan warning'}</td></tr>
 <tr><td colspan='4'><br></td></tr>
 <tr><td width='25%' class='base'>$Lang::tr{'wlanap encryption'}:&nbsp;</td><td class='base' colspan='3'>
        <select name='ENC'>
@@ -428,6 +442,7 @@ END
 ;
 print <<END
 <tr><td width='25%' class='base'>HT Caps:&nbsp;</td><td class='base' colspan='3'><input type='text' name='HTCAPS' size='30' value='$wlanapsettings{'HTCAPS'}' /></td></tr>
+<tr><td width='25%' class='base'>VHT Caps:&nbsp;</td><td class='base' colspan='3'><input type='text' name='VHTCAPS' size='30' value='$wlanapsettings{'VHTCAPS'}' /></td></tr>
 <tr><td width='25%' class='base'>Tx Power:&nbsp;</td><td class='base' colspan='3'><input type='text' name='TXPOWER' size='10' value='$wlanapsettings{'TXPOWER'}' /></td></tr>
 <tr><td width='25%' class='base'>Loglevel (hostapd):&nbsp;</td><td class='base' width='25%'>
        <select name='SYSLOGLEVEL'>
@@ -575,6 +590,17 @@ ieee80211n=1
 wmm_enabled=1
 ht_capab=$wlanapsettings{'HTCAPS'}
 END
+;
+
+ }elsif ( $wlanapsettings{'HW_MODE'} eq 'ac' ){
+       print CONFIGFILE <<END
+hw_mode=a
+ieee80211ac=1
+ieee80211n=1
+wmm_enabled=1
+ht_capab=$wlanapsettings{'HTCAPS'}
+vht_capab=$wlanapsettings{'VHTCAPS'}
+END
 ;
 
  }else{
@@ -612,6 +638,28 @@ END
 
  }
 
+ # https://forum.ipfire.org/viewtopic.php?f=22&t=12274&p=79070#p79070
+ if ( $wlanapsettings{'CLIENTISOLATION'} eq 'on' ){
+       print CONFIGFILE <<END
+ap_isolate=1
+END
+;
+ }
+
+ if ( $wlanapsettings{'NOSCAN'} eq 'on' ){
+       print CONFIGFILE <<END
+noscan=1
+END
+;
+
+ }else{
+       print CONFIGFILE <<END
+noscan=0
+END
+;
+
+ }
+
  if ( $wlanapsettings{'ENC'} eq 'wpa1'){
        print CONFIGFILE <<END
 ######################### wpa hostapd configuration ############################