From mboxrd@z Thu Jan  1 00:00:00 1970
From: Peter =?utf-8?q?M=C3=BCller?= <peter.mueller@ipfire.org>
To: development@lists.ipfire.org
Subject: [PATCH] hostapd: make client isolation configurable via WebUI
Date: Sat, 16 Mar 2019 14:20:00 +0000
Message-ID: <b11b05cf-bf14-6ab1-1c51-1329edf2bdc1@ipfire.org>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============6911529714481060968=="
List-Id: <development.lists.ipfire.org>

--===============6911529714481060968==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

hostapd supports client-isolation, but this feature could
not be configured via the WebUI so far. Since it might be
desired in public wireless networks, or even private ones,
it makes sense to provide a radio button to let the user
decide on.

Fixes #11974.

Signed-off-by: Peter M=C3=BCller <peter.mueller(a)ipfire.org>
---
 html/cgi-bin/wlanap.cgi | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/html/cgi-bin/wlanap.cgi b/html/cgi-bin/wlanap.cgi
index 72c9a1298..cae191101 100644
--- a/html/cgi-bin/wlanap.cgi
+++ b/html/cgi-bin/wlanap.cgi
@@ -75,6 +75,7 @@ $wlanapsettings{'DRIVER'} =3D 'NL80211';
 $wlanapsettings{'HTCAPS'} =3D '';
 $wlanapsettings{'VHTCAPS'} =3D '';
 $wlanapsettings{'NOSCAN'} =3D 'off';
+$wlanapsettings{'CLIENTISOLATION'} =3D 'off';
=20
 &General::readhash("/var/ipfire/wlanap/settings", \%wlanapsettings);
 &Header::getcgihash(\%wlanapsettings);
@@ -252,6 +253,10 @@ $checked{'NOSCAN'}{'off'} =3D '';
 $checked{'NOSCAN'}{'on'} =3D '';
 $checked{'NOSCAN'}{$wlanapsettings{'NOSCAN'}} =3D "checked=3D'checked'";
=20
+$checked{'CLIENTISOLATION'}{'off'} =3D '';
+$checked{'CLIENTISOLATION'}{'on'} =3D '';
+$checked{'CLIENTISOLATION'}{$wlanapsettings{'CLIENTISOLATION'}} =3D "checked=
=3D'checked'";
+
 $selected{'ENC'}{$wlanapsettings{'ENC'}} =3D "selected=3D'selected'";
 $selected{'CHANNEL'}{$wlanapsettings{'CHANNEL'}} =3D "selected=3D'selected'";
 $selected{'COUNTRY'}{$wlanapsettings{'COUNTRY'}} =3D "selected=3D'selected'";
@@ -377,6 +382,7 @@ print <<END
 <tr><td width=3D'25%' class=3D'base'>SSID:&nbsp;</td><td class=3D'base' cols=
pan=3D'3'><input type=3D'text' name=3D'SSID' size=3D'30' value=3D'$wlanapsett=
ings{'SSID'}' /></td></tr>
 <!--SSID Broadcast: on =3D> HIDESSID: off -->
 <tr><td width=3D'25%' class=3D'base'>SSID Broadcast:&nbsp;</td><td class=3D'=
base' colspan=3D'3'>on <input type=3D'radio' name=3D'HIDESSID' value=3D'off' =
$checked{'HIDESSID'}{'off'} /> | <input type=3D'radio' name=3D'HIDESSID' valu=
e=3D'on' $checked{'HIDESSID'}{'on'} /> off</td></tr>
+<tr><td width=3D'25%' class=3D'base'>Client Isolation:&nbsp;</td><td class=
=3D'base' colspan=3D'3'>on <input type=3D'radio' name=3D'CLIENTISOLATION' val=
ue=3D'off' $checked{'CLIENTISOLATION'}{'off'} /> | <input type=3D'radio' name=
=3D'CLIENTISOLATION' value=3D'on' $checked{'CLIENTISOLATION'}{'on'} /> off</t=
d></tr>
=20
=20
 <tr><td width=3D'25%' class=3D'base'>$Lang::tr{'wlanap country'}:&nbsp;</td>=
<td class=3D'base' colspan=3D'3'>
@@ -632,6 +638,14 @@ END
=20
  }
=20
+ # https://forum.ipfire.org/viewtopic.php?f=3D22&t=3D12274&p=3D79070#p79070
+ if ( $wlanapsettings{'CLIENTISOLATION'} eq 'on' ){
+	print CONFIGFILE <<END
+ap_isolate=3D1
+END
+;
+ }
+
  if ( $wlanapsettings{'NOSCAN'} eq 'on' ){
 	print CONFIGFILE <<END
 noscan=3D1
--=20
2.16.4

--===============6911529714481060968==--