X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=html%2Fcgi-bin%2Fwlanap.cgi;h=58c6376feac996a2bdb018370bdc0e63ce9cf48e;hb=49c7cb232870cce6986f93bb6fc3b6dbf643ec07;hp=99c77e32d9632d7ccd0404c23f302f6742dd0494;hpb=360378014d0ba62c1ced4b204080f05c2a3de575;p=people%2Fteissler%2Fipfire-2.x.git diff --git a/html/cgi-bin/wlanap.cgi b/html/cgi-bin/wlanap.cgi index 99c77e32d..58c6376fe 100644 --- a/html/cgi-bin/wlanap.cgi +++ b/html/cgi-bin/wlanap.cgi @@ -2,7 +2,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2005-2012 IPFire Team # +# Copyright (C) 2005-2013 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -49,6 +49,7 @@ my %mainsettings = (); my %netsettings=(); my %wlanapsettings=(); my $channel = ''; +my $country = ''; my $txpower = ''; &General::readhash("${General::swroot}/main/settings", \%mainsettings); @@ -64,6 +65,7 @@ $wlanapsettings{'HIDESSID'} = 'off'; $wlanapsettings{'ENC'} = 'wpa2'; # none / wpa1 /wpa2 $wlanapsettings{'TXPOWER'} = 'auto'; $wlanapsettings{'CHANNEL'} = '05'; +$wlanapsettings{'COUNTRY'} = '00'; $wlanapsettings{'HW_MODE'} = 'g'; $wlanapsettings{'PWD'} = 'IPFire-2.x'; $wlanapsettings{'SYSLOGLEVEL'} = '0'; @@ -122,11 +124,16 @@ if ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'wlanap del interface'}" ){ } if ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'save'}" ){ - # verify WPA Passphrase, must be 8 .. 63 characters - only wiht enabled enc + # verify WPA Passphrase - only with enabled enc if (($wlanapsettings{'ENC'} eq "wpa1") || ($wlanapsettings{'ENC'} eq "wpa2") || ($wlanapsettings{'ENC'} eq "wpa1+2")){ + # must be 8 .. 63 characters if ( (length($wlanapsettings{'PWD'}) < 8) || (length($wlanapsettings{'PWD'}) > 63)){ $errormessage .= "$Lang::tr{'wlanap invalid wpa'}
"; } + # only ASCII alowed + if ( !($wlanapsettings{'PWD'} !~ /[^\x00-\x7f]/) ){ + $errormessage .= "$Lang::tr{'wlanap invalid wpa'}
"; + } } if ( $errormessage eq '' ){ @@ -243,11 +250,17 @@ $checked{'HIDESSID'}{$wlanapsettings{'HIDESSID'}} = "checked='checked'"; $selected{'ENC'}{$wlanapsettings{'ENC'}} = "selected='selected'"; $selected{'CHANNEL'}{$wlanapsettings{'CHANNEL'}} = "selected='selected'"; +$selected{'COUNTRY'}{$wlanapsettings{'COUNTRY'}} = "selected='selected'"; $selected{'TXPOWER'}{$wlanapsettings{'TXPOWER'}} = "selected='selected'"; $selected{'HW_MODE'}{$wlanapsettings{'HW_MODE'}} = "selected='selected'"; $selected{'MACMODE'}{$wlanapsettings{'MACMODE'}} = "selected='selected'"; -my @channellist_cmd = `iwlist $wlanapsettings{'INTERFACE'} channel 2>/dev/null`; +my $monwlaninterface = $wlanapsettings{'INTERFACE'}; +if ( -d '/sys/class/net/mon.'.$wlanapsettings{'INTERFACE'} ) { + $monwlaninterface = 'mon.'.$wlanapsettings{'INTERFACE'}; +} + +my @channellist_cmd = `iwlist $monwlaninterface channel 2>/dev/null`; # get available channels my @temp; @@ -258,8 +271,23 @@ if ( $channel =~ /\d+/ ){push(@temp,$channel);} } my @channellist = @temp; -my @txpower_cmd = `iwlist $wlanapsettings{'INTERFACE'} txpower 2>/dev/null`; -# get available channels +my @countrylist_cmd = `regdbdump /usr/lib/crda/regulatory.bin 2>/dev/null`; +# get available country codes + +my @temp; +foreach (@countrylist_cmd){ +$_ =~ /country (.*):/; +$country = $1;chomp $country; +if ( $country =~ /[0,A-Z][0,A-Z]/ ) {push(@temp,$country);} +} +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 + @txpower_cmd = `iwlist txpower 2>/dev/null | sed -e "s|unknown transmit-power information.||g"`; +} +# get available power my @temp; foreach (@txpower_cmd){ @@ -368,12 +396,35 @@ print <WPA1+2 +END +; + +if ( scalar @channellist > 0 ){ + print <$Lang::tr{'wlanap channel'}:  " +} else { + print <$Lang::tr{'wlanap channel'}:  + + +END +; +} + +print <$Lang::tr{'wlanap country'}:  +