From: Maniacikarus Date: Sun, 2 Nov 2008 18:51:35 +0000 (+0100) Subject: Modified WLanAP CGI to handle WLan on green and use internal mac filter X-Git-Tag: v2.3-final~11 X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=commitdiff_plain;h=92f2665dc5382cb92dec3e5be8d722b9230160d2 Modified WLanAP CGI to handle WLan on green and use internal mac filter --- diff --git a/html/cgi-bin/wlanap.cgi b/html/cgi-bin/wlanap.cgi index 4c053db166..7a9c6fe06e 100644 --- a/html/cgi-bin/wlanap.cgi +++ b/html/cgi-bin/wlanap.cgi @@ -25,8 +25,8 @@ use strict; # enable only the following on debugging purpose -#use warnings; -#use CGI::Carp 'fatalsToBrowser'; +use warnings; +use CGI::Carp 'fatalsToBrowser'; require '/var/ipfire/general-functions.pl'; require '/var/ipfire/lang.pl'; @@ -56,7 +56,8 @@ my $txpower = ''; &General::readhash("/var/ipfire/ethernet/settings", \%netsettings); $wlanapsettings{'APMODE'} = 'on'; -$wlanapsettings{'INTERFACE'} = $netsettings{'BLUE_DEV'}; +$wlanapsettings{'MACMODE'} = '0'; +$wlanapsettings{'INTERFACE'} = ''; $wlanapsettings{'SSID'} = 'IPFire'; $wlanapsettings{'HIDESSID'} = 'off'; $wlanapsettings{'ENC'} = 'wpa2'; # none / wpa1 /wpa2 @@ -72,6 +73,7 @@ $wlanapsettings{'DRIVER'} = 'MADWIFI'; my %cgiparams=(); $cgiparams{'ACTION'} = ''; $cgiparams{'APMODE'} = 'on'; +$cgiparams{'MACMODE'} = '0'; $cgiparams{'SSID'} = 'IPFire'; $cgiparams{'HIDESSID'} = 'off'; $cgiparams{'ENC'} = 'wpa2'; # none / wep / wpa / wep+wpa @@ -87,9 +89,12 @@ $cgiparams{'DEBUG'} = '4'; if ( $cgiparams{'ACTION'} eq "$Lang::tr{'save'}" ){ $wlanapsettings{'SSID'} = $cgiparams{'SSID'}; + $wlanapsettings{'MACMODE'} = $cgiparams{'MACMODE'}; + $wlanapsettings{'ACCEPT_MACS'}= $cgiparams{'ACCEPT_MACS'}; + $wlanapsettings{'DENY_MACS'} = $cgiparams{'DENY_MACS'}; $wlanapsettings{'HIDESSID'} = $cgiparams{'HIDESSID'}; $wlanapsettings{'ENC'} = $cgiparams{'ENC'}; - $wlanapsettings{'CHANNEL'} = $cgiparams{'CHANNEL'}; + $wlanapsettings{'CHANNEL'} = $cgiparams{'CHANNEL'}; $wlanapsettings{'TXPOWER'} = $cgiparams{'TXPOWER'}; $wlanapsettings{'PWD'} = $cgiparams{'PWD'}; @@ -102,11 +107,14 @@ if ( $cgiparams{'ACTION'} eq "$Lang::tr{'save'}" ){ } if ( $errormessage eq '' ){ - &WriteConfig(); + &General::writehash("/var/ipfire/wlanap/settings", \%wlanapsettings); &WriteConfig_hostapd(); system("/usr/local/bin/wlanapctrl restart >/dev/null 2>&1"); } +}elsif ( $cgiparams{'ACTION'} eq "$Lang::tr{'interface'}" ){ + $wlanapsettings{'INTERFACE'} = $cgiparams{'INTERFACE'}; + &General::writehash("/var/ipfire/wlanap/settings", \%wlanapsettings); }elsif ( $cgiparams{'ACTION'} eq 'Start' ){ system("/usr/local/bin/wlanapctrl start >/dev/null 2>&1"); }elsif ( $cgiparams{'ACTION'} eq 'Stop' ){ @@ -147,22 +155,49 @@ if ( $debug ){ # my $wlan_card_status = 'dummy'; my $wlan_ap_status = ''; -my $blue_message = ""; +my $message = ""; + +$selected{'INTERFACE'}{'green0'} = ''; +$selected{'INTERFACE'}{'blue0'} = ''; +$selected{'ENC'}{$wlanapsettings{'INTERFACE'}} = "selected='selected'"; -if ( ($netsettings{'BLUE_DEV'} eq '') || ($netsettings{'BLUE_DRIVER'} eq '') ){ - $blue_message = "No BLUE Interface."; +if ( ($wlanapsettings{'INTERFACE'} eq '') ){ + $message = "No WLan Interface selected."; + &Header::openbox('100%', 'center', "WLAN AP"); +print < +
+ +
+END +; + &Header::closebox(); + &Header::closebigbox(); + &Header::closepage(); + exit; }else{ - my $cmd_out = `/usr/sbin/iwconfig $netsettings{'BLUE_DEV'} 2>/dev/null`; + my $cmd_out = `/usr/sbin/iwconfig $wlanapsettings{'INTERFACE'} 2>/dev/null`; if ( $cmd_out eq '' ){ - $blue_message = "BLUE Interface is not a WLAN card."; + $message = "Interface is not a WLAN card."; + $wlan_card_status = ''; }else{ - $cmd_out = `/sbin/ifconfig | /bin/grep $netsettings{'BLUE_DEV'}`; + $cmd_out = `/sbin/ifconfig | /bin/grep $wlanapsettings{'INTERFACE'}`; if ( $cmd_out eq '' ){ $wlan_card_status = 'down'; }else{ $wlan_card_status = 'up'; - $cmd_out = `/usr/sbin/iwconfig $netsettings{'BLUE_DEV'} | /bin/grep "Mode:Master"`; + $cmd_out = `/usr/sbin/iwconfig $wlanapsettings{'INTERFACE'} | /bin/grep "Mode:Master"`; if ( $cmd_out ne '' ){ $wlan_ap_status = 'up'; } @@ -173,14 +208,12 @@ if ( ($netsettings{'BLUE_DEV'} eq '') || ($netsettings{'BLUE_DRIVER'} eq '') ){ my $checked_hidessid = ''; $checked_hidessid = "checked='checked'" if ( $wlanapsettings{'HIDESSID'} eq 'on' ); -$selected{'ENC'}{'none'} = ''; -$selected{'ENC'}{'wpa1'} = ''; -$selected{'ENC'}{'wpa2'} = ''; $selected{'ENC'}{$wlanapsettings{'ENC'}} = "selected='selected'"; $selected{'CHANNEL'}{$wlanapsettings{'CHANNEL'}} = "selected='selected'"; $selected{'TXPOWER'}{$wlanapsettings{'TXPOWER'}} = "selected='selected'"; +$selected{'MACMODE'}{$wlanapsettings{'MACMODE'}} = "selected='selected'"; -my @channellist_cmd = `iwlist $netsettings{'BLUE_DEV'} channel`; +my @channellist_cmd = `iwlist $wlanapsettings{'INTERFACE'} channel`; # get available channels my @temp; @@ -191,7 +224,7 @@ if ( $channel =~ /\d+/ ){push(@temp,$channel);} } my @channellist = @temp; -my @txpower_cmd = `iwlist $netsettings{'BLUE_DEV'} txpower`; +my @txpower_cmd = `iwlist $wlanapsettings{'INTERFACE'} txpower`; # get available channels my @temp; @@ -203,18 +236,7 @@ if ( $txpower =~ /\d+/ ){push(@temp,$txpower."mW");} my @txpower = @temp; push(@txpower,"auto"); -$selected{'SYSLOGLEVEL'}{'0'} = ''; -$selected{'SYSLOGLEVEL'}{'1'} = ''; -$selected{'SYSLOGLEVEL'}{'2'} = ''; -$selected{'SYSLOGLEVEL'}{'3'} = ''; -$selected{'SYSLOGLEVEL'}{'4'} = ''; $selected{'SYSLOGLEVEL'}{$wlanapsettings{'SYSLOGLEVEL'}} = "selected='selected'"; - -$selected{'DEBUG'}{'0'} = ''; -$selected{'DEBUG'}{'1'} = ''; -$selected{'DEBUG'}{'2'} = ''; -$selected{'DEBUG'}{'3'} = ''; -$selected{'DEBUG'}{'4'} = ''; $selected{'DEBUG'}{$wlanapsettings{'DEBUG'}} = "selected='selected'"; # @@ -232,17 +254,18 @@ if ( $wlan_card_status ne '' ){ print "Access Point"; print $wlan_ap_status eq 'up' ? $status_started : $status_stopped; if ( $wlan_card_status eq 'up' ){ - print ""; + print ""; + print ""; }else{ print ""; } }else{ - print "$blue_message"; + print "$message"; } print ""; if ( $wlan_card_status eq '' ){ - print ""; + &Header::closebox(); &Header::closebigbox(); &Header::closepage(); exit 0; @@ -298,18 +321,54 @@ print < +END +; +if ( $wlanapsettings{'INTERFACE'} =~ /green0/ ){ + print < + + + + + + + + + + +
Mac Filter:  + +
Mac Accept List (one per line)Mac Deny List (one per line)
+END +; +} +print < + +
- -
END ; if ( $wlanapsettings{'DRIVER'} eq 'MADWIFI' ){ - $status = `wlanconfig $netsettings{'BLUE_DEV'} list`; + $status = `wlanconfig $wlanapsettings{'INTERFACE'} list`; } print < @@ -325,10 +384,6 @@ print ""; &Header::closebigbox(); &Header::closepage(); -sub WriteConfig{ - &General::writehash("/var/ipfire/wlanap/settings", \%wlanapsettings); -} - sub WriteConfig_hostapd{ $wlanapsettings{'DRIVER_HOSTAPD'} = lc($wlanapsettings{'DRIVER'}); @@ -336,7 +391,7 @@ sub WriteConfig_hostapd{ print CONFIGFILE </var/ipfire/wlanap/hostapd.accept"); + print MACFILE </var/ipfire/wlanap/hostapd.deny"); + print MACFILE <