From c3d9a16d5768bb4dbcdd731674c4bc48efab48e3 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Sat, 29 Dec 2012 16:20:16 +0100 Subject: [PATCH] hostapd: add country selection and fix txpower display. --- html/cgi-bin/wlanap.cgi | 39 +++++++++++++++++++++++++++++++--- langs/de/cgi-bin/de.pl | 1 + langs/en/cgi-bin/en.pl | 1 + src/initscripts/init.d/hostapd | 5 +++++ 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/html/cgi-bin/wlanap.cgi b/html/cgi-bin/wlanap.cgi index 99c77e32d9..83d65dbdb4 100644 --- a/html/cgi-bin/wlanap.cgi +++ b/html/cgi-bin/wlanap.cgi @@ -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'; @@ -243,11 +245,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 ( $wlanapsettings{'DRIVER'} eq 'NL80211' ){ + $monwlaninterface = 'mon.'.$wlanapsettings{'INTERFACE'}; +} + +my @channellist_cmd = `iwlist $monwlaninterface channel 2>/dev/null`; # get available channels my @temp; @@ -258,8 +266,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){ @@ -376,6 +399,16 @@ foreach $channel (@channellist){ print ""; } +print < +$Lang::tr{'wlanap country'}:  +