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):  - + END ; my @status; if ( $wlanapsettings{'DRIVER'} eq 'NL80211' ){ - @status = `iw dev $wlanapsettings{'INTERFACE'} info && iw dev $wlanapsettings{'INTERFACE'} station dump && echo ""`; + @status = `iw dev $INTF info && iw dev $INTF station dump && echo ""`; } print < @@ -528,17 +571,7 @@ for (my $i=0;$i<$#txpower_cmd;$i=$i+2){ print "@txpower_cmd[$i]"; $count++; } -print "
"; -print < - - - - - -
$Lang::tr{'wlan clients'}
 $Lang::tr{'wlanap link wireless'}
 $Lang::tr{'wlanap link dhcp'}

-END -; +print ""; &Header::closebox(); print ""; &Header::closebigbox(); @@ -552,7 +585,6 @@ sub WriteConfig_hostapd{ driver=$wlanapsettings{'DRIVER_HOSTAPD'} ######################### basic hostapd configuration ########################## # -interface=$wlanapsettings{'INTERFACE'} country_code=$wlanapsettings{'COUNTRY'} ieee80211d=1 ieee80211h=1 @@ -575,6 +607,18 @@ ieee80211n=1 wmm_enabled=1 ht_capab=$wlanapsettings{'HTCAPS'} END +; + + }elsif ( $wlanapsettings{'HW_MODE'} eq 'ac' ){ + print CONFIGFILE <