X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=html%2Fcgi-bin%2Fwlanap.cgi;h=eba5fe774e14e04b40461dd03d46b35bf566bbba;hb=e2839b1a2cd0bb60a91931cb2e427370a7e5e206;hp=844c395e2f7738dddd26cd3c36ad5bcfe8577c93;hpb=5bf8008bddecb3838f1691a54f819ff4a8d08ffa;p=people%2Fpmueller%2Fipfire-2.x.git
diff --git a/html/cgi-bin/wlanap.cgi b/html/cgi-bin/wlanap.cgi
index 844c395e2f..eba5fe774e 100644
--- a/html/cgi-bin/wlanap.cgi
+++ b/html/cgi-bin/wlanap.cgi
@@ -54,7 +54,7 @@ my $country = '';
my $txpower = '';
&General::readhash("${General::swroot}/main/settings", \%mainsettings);
-&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
&General::readhash("/var/ipfire/ethernet/settings", \%netsettings);
$wlanapsettings{'APMODE'} = 'on';
@@ -73,10 +73,17 @@ $wlanapsettings{'SYSLOGLEVEL'} = '0';
$wlanapsettings{'DEBUG'} = '4';
$wlanapsettings{'DRIVER'} = 'NL80211';
$wlanapsettings{'HTCAPS'} = '';
+$wlanapsettings{'VHTCAPS'} = '';
+$wlanapsettings{'NOSCAN'} = 'off';
+$wlanapsettings{'CLIENTISOLATION'} = 'off';
+$wlanapsettings{'IEEE80211W'} = 'off';
&General::readhash("/var/ipfire/wlanap/settings", \%wlanapsettings);
&Header::getcgihash(\%wlanapsettings);
+# Find the selected interface
+my $INTF = &Network::get_intf_by_address($wlanapsettings{'INTERFACE'});
+
my @macs = $wlanapsettings{'MACS'};
delete $wlanapsettings{'__CGI__'};
@@ -126,7 +133,7 @@ if ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'wlanap del interface'}" ){
if ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'save'}" ){
# verify WPA Passphrase - only with enabled enc
- if (($wlanapsettings{'ENC'} eq "wpa1") || ($wlanapsettings{'ENC'} eq "wpa2") || ($wlanapsettings{'ENC'} eq "wpa1+2")){
+ if ($wlanapsettings{'ENC'} ne "none") {
# must be 8 .. 63 characters
if ( (length($wlanapsettings{'PWD'}) < 8) || (length($wlanapsettings{'PWD'}) > 63)){
$errormessage .= "$Lang::tr{'wlanap invalid wpa'}
";
@@ -141,20 +148,20 @@ if ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'save'}" ){
&General::writehash("/var/ipfire/wlanap/settings", \%wlanapsettings);
&WriteConfig_hostapd();
- system("/usr/local/bin/wlanapctrl restart >/dev/null 2>&1");
+ &General::system("/usr/local/bin/wlanapctrl", "restart");
pid();
}
}elsif ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'wlanap interface'}" ){
&General::writehash("/var/ipfire/wlanap/settings", \%wlanapsettings);
}elsif ( ($wlanapsettings{'ACTION'} eq "$Lang::tr{'start'}") && ($memory == 0) ){
- system("/usr/local/bin/wlanapctrl start >/dev/null 2>&1");
+ &General::system("/usr/local/bin/wlanapctrl", "start");
pid();
}elsif ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'stop'}" ){
- system("/usr/local/bin/wlanapctrl stop >/dev/null 2>&1");
+ &General::system("/usr/local/bin/wlanapctrl", "stop");
$memory=0;
}
-&Header::openpage('', 1, '', '');
+&Header::openpage($Lang::tr{'wlanap configuration'}, 1, '', '');
&Header::openbigbox('100%', 'left', '', $errormessage);
if ( $errormessage ){
@@ -189,8 +196,11 @@ my $wlan_card_status = 'dummy';
my $wlan_ap_status = '';
my $message = "";
-$selected{'INTERFACE'}{'green0'} = '';
-$selected{'INTERFACE'}{'blue0'} = '';
+my %INTERFACES = &Network::list_wireless_interfaces();
+
+foreach my $intf (keys %INTERFACES) {
+ $selected{'INTERFACE'}{$intf} = '';
+}
$selected{'ENC'}{$wlanapsettings{'INTERFACE'}} = "selected='selected'";
if ( ($wlanapsettings{'INTERFACE'} eq '') ){
@@ -202,11 +212,12 @@ $message
@@ -218,18 +229,18 @@ END
&Header::closepage();
exit;
}else{
- my $cmd_out = `/usr/sbin/iwconfig $wlanapsettings{'INTERFACE'} 2>/dev/null`;
+ my $cmd_out = `/usr/sbin/iwconfig $INTF 2>/dev/null`;
if ( $cmd_out eq '' ){
$message = "$Lang::tr{'wlanap no interface'}";
$wlan_card_status = '';
}else{
- $cmd_out = `/sbin/ifconfig | /bin/grep $wlanapsettings{'INTERFACE'}`;
+ $cmd_out = `/sbin/ifconfig $INTF`;
if ( $cmd_out eq '' ){
$wlan_card_status = 'down';
}else{
$wlan_card_status = 'up';
- $cmd_out = `/usr/sbin/iwconfig $wlanapsettings{'INTERFACE'} | /bin/grep "Mode:Master"`;
+ $cmd_out = `/usr/sbin/iwconfig $INTF | /bin/grep "Mode:Master"`;
if ( $cmd_out ne '' ){
$wlan_ap_status = 'up';
}
@@ -246,6 +257,19 @@ $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{'IEEE80211W'}{'off'} = '';
+$selected{'IEEE80211W'}{'optional'} = '';
+$selected{'IEEE80211W'}{'on'} = '';
+$selected{'IEEE80211W'}{$wlanapsettings{'IEEE80211W'}} = "selected";
+
$selected{'ENC'}{$wlanapsettings{'ENC'}} = "selected='selected'";
$selected{'CHANNEL'}{$wlanapsettings{'CHANNEL'}} = "selected='selected'";
$selected{'COUNTRY'}{$wlanapsettings{'COUNTRY'}} = "selected='selected'";
@@ -253,16 +277,16 @@ $selected{'TXPOWER'}{$wlanapsettings{'TXPOWER'}} = "selected='selected'";
$selected{'HW_MODE'}{$wlanapsettings{'HW_MODE'}} = "selected='selected'";
$selected{'MACMODE'}{$wlanapsettings{'MACMODE'}} = "selected='selected'";
-my $monwlaninterface = $wlanapsettings{'INTERFACE'};
-if ( -d '/sys/class/net/mon.'.$wlanapsettings{'INTERFACE'} ) {
- $monwlaninterface = 'mon.'.$wlanapsettings{'INTERFACE'};
+my $monwlaninterface = $INTF;
+if ( -d '/sys/class/net/mon.' . $INTF) {
+ $monwlaninterface = 'mon.' . $INTF;
}
my @channellist_cmd;
-my @channellist;
+my @channellist = (0);
if ( $wlanapsettings{'DRIVER'} eq 'NL80211' ){
-my $wiphy = `iw dev $wlanapsettings{'INTERFACE'} info | grep wiphy | cut -d" " -f2`;
+my $wiphy = `iw dev $INTF info | grep wiphy | cut -d" " -f2`;
chomp $wiphy;
@channellist_cmd = `iw phy phy$wiphy info | grep " MHz \\\[" | grep -v "(disabled)" | grep -v "no IBSS" | grep -v "no IR" | grep -v "passive scanning" 2>/dev/null`;
@@ -274,7 +298,7 @@ $_ =~ /(.*) \[(\d+)(.*)\]/;
$channel = $2;chomp $channel;
if ( $channel =~ /\d+/ ){push(@temp,$channel + 0);}
}
-@channellist = @temp;
+push(@channellist, @temp);
} else {
@channellist_cmd = `iwlist $monwlaninterface channel|tail -n +2 2>/dev/null`;
# get available channels
@@ -285,7 +309,7 @@ $_ =~ /(.*)Channel (\d+)(.*):/;
$channel = $2;chomp $channel;
if ( $channel =~ /\d+/ ){push(@temp,$channel + 0);}
}
-@channellist = @temp;
+push(@channellist, @temp);
}
my @countrylist_cmd = `regdbdump /usr/lib/crda/regulatory.bin 2>/dev/null`;
@@ -301,7 +325,7 @@ my @countrylist = @temp;
my @txpower_cmd = `iwlist $monwlaninterface txpower 2>/dev/null`;
if ( $wlanapsettings{'DRIVER'} eq 'NL80211' ){
- # There is a bug with NL80211 only all devices can displayed
+ # There is a bug with NL80211 only all devices can displaye
@txpower_cmd = `iwlist txpower 2>/dev/null | sed -e "s|unknown transmit-power information.||g"`;
}
# get available power
@@ -323,7 +347,7 @@ if ( $wlan_card_status ne '' ){
print "$Lang::tr{'wlanap wlan card'} ($wlanapsettings{'DRIVER'}) | ";
print $wlan_card_status eq 'up' ? $status_started : $status_stopped;
print" |
";
- print "$Lang::tr{'wlanap access point'} | ";
+ print "
$Lang::tr{'wlanap'} | ";
print $wlan_ap_status eq 'up' ? $status_started : $status_stopped;
if ( ($memory != 0) && (@pid[0] ne "///") ){
print "@pid[0] | ";
@@ -368,11 +392,10 @@ print <
$Lang::tr{'wlanap wlan settings'} |
|
-SSID: | |
+$Lang::tr{'wlanap ssid'}: | |
-SSID Broadcast: | on | off |
-
-
+$Lang::tr{'wlanap broadcast ssid'}: | $Lang::tr{'on'} | $Lang::tr{'off'} |
+$Lang::tr{'wlanap client isolation'}: | $Lang::tr{'on'} | $Lang::tr{'off'} |
$Lang::tr{'wlanap country'}: |
|
END
@@ -401,7 +425,13 @@ if ( scalar @channellist > 0 ){
END
;
foreach $channel (@channellist){
- print "";
+ print "";
}
print "
"
} else {
@@ -413,21 +443,35 @@ END
;
}
print<$Lang::tr{'wlanap neighbor scan'}: | $Lang::tr{'on'} | $Lang::tr{'off'} | $Lang::tr{'wlanap neighbor scan warning'} |
|
$Lang::tr{'wlanap encryption'}: |
|
Passphrase: | |
+
+ $Lang::tr{'wlanap management frame protection'}: |
+
+
+ |
+
|
END
;
print <HT Caps: | |
+VHT Caps: | |
Tx Power: | |
Loglevel (hostapd): |
|