X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=blobdiff_plain;f=html%2Fcgi-bin%2Fwlanap.cgi;h=ca11d043e2e88480a15d593b9d6c417ee4d6775b;hp=fb613de56401acfd47ce1d166970dabf73be73dc;hb=e099ab40083308028fa58d0da692e55fbdfcf07f;hpb=891b6138c4f98b37885d1a2074494855f8c1f3e0 diff --git a/html/cgi-bin/wlanap.cgi b/html/cgi-bin/wlanap.cgi index fb613de56..ca11d043e 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) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2009 Michael Tremer & Christian Schmidt # # # # 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 # @@ -56,66 +56,58 @@ my $txpower = ''; &General::readhash("/var/ipfire/ethernet/settings", \%netsettings); $wlanapsettings{'APMODE'} = 'on'; -$wlanapsettings{'INTERFACE'} = $netsettings{'BLUE_DEV'}; +$wlanapsettings{'ACTION'} = ''; +$wlanapsettings{'MACMODE'} = '0'; +$wlanapsettings{'INTERFACE'} = ''; $wlanapsettings{'SSID'} = 'IPFire'; $wlanapsettings{'HIDESSID'} = 'off'; -$wlanapsettings{'ENC'} = 'wpa'; # none / wpa1 /wpa2 +$wlanapsettings{'ENC'} = 'wpa2'; # none / wpa1 /wpa2 $wlanapsettings{'TXPOWER'} = 'auto'; -$wlanapsettings{'CHAN'} = '05'; +$wlanapsettings{'CHANNEL'} = '05'; +$wlanapsettings{'HW_MODE'} = 'g'; $wlanapsettings{'PWD'} = 'IPFire-2.x'; $wlanapsettings{'SYSLOGLEVEL'} = '0'; $wlanapsettings{'DEBUG'} = '4'; $wlanapsettings{'DRIVER'} = 'MADWIFI'; &General::readhash("/var/ipfire/wlanap/settings", \%wlanapsettings); +&Header::getcgihash(\%wlanapsettings); -my %cgiparams=(); -$cgiparams{'ACTION'} = ''; -$cgiparams{'APMODE'} = 'on'; -$cgiparams{'SSID'} = 'IPFire'; -$cgiparams{'HIDESSID'} = 'off'; -$cgiparams{'ENC'} = 'wpa'; # none / wep / wpa / wep+wpa -$cgiparams{'TXPOWER'} = 'auto'; -$cgiparams{'CHAN'} = '05'; -$cgiparams{'PWD'} = 'IPFire-2.x'; -$cgiparams{'SYSLOGLEVEL'} = '0'; -$cgiparams{'DEBUG'} = '4'; -&Header::getcgihash(\%cgiparams); +my @macs = $wlanapsettings{'MACS'}; +delete $wlanapsettings{'__CGI__'}; +delete $wlanapsettings{'x'}; +delete $wlanapsettings{'y'}; +delete $wlanapsettings{'MACS'}; +delete $wlanapsettings{'ACCEPT_MACS'}; +delete $wlanapsettings{'DENY_MACS'}; &Header::showhttpheaders(); -if ( $cgiparams{'ACTION'} eq "$Lang::tr{'save'}" ){ - $wlanapsettings{'SSID'} = $cgiparams{'SSID'}; - $wlanapsettings{'HIDESSID'} = $cgiparams{'HIDESSID'}; - $wlanapsettings{'ENC'} = $cgiparams{'ENC'}; - $wlanapsettings{'CHAN'} = $cgiparams{'CHAN'}; - $wlanapsettings{'TXPOWER'} = $cgiparams{'TXPOWER'}; - - $wlanapsettings{'PWD'} = $cgiparams{'PWD'}; - $wlanapsettings{'SYSLOGLEVEL'}= $cgiparams{'SYSLOGLEVEL'}; - $wlanapsettings{'DEBUG'} = $cgiparams{'DEBUG'}; - +if ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'save'}" ){ # verify WPA Passphrase, must be 8 .. 63 characters if ( (length($wlanapsettings{'PWD'}) < 8) || (length($wlanapsettings{'PWD'}) > 63) ){ $errormessage .= "Invalid length in WPA Passphrase. Must be between 8 and 63 characters.
"; } if ( $errormessage eq '' ){ - &WriteConfig(); + &General::writehash("/var/ipfire/wlanap/settings", \%wlanapsettings); &WriteConfig_hostapd(); - system("/usr/local/bin/wlanapctrl restart >/dev/null 2>&1") + system("/usr/local/bin/wlanapctrl restart >/dev/null 2>&1"); } -}elsif ( $cgiparams{'ACTION'} eq 'Start' ){ +}elsif ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'interface'}" ){ + &General::writehash("/var/ipfire/wlanap/settings", \%wlanapsettings); +}elsif ( $wlanapsettings{'ACTION'} eq 'Start' ){ system("/usr/local/bin/wlanapctrl start >/dev/null 2>&1"); -}elsif ( $cgiparams{'ACTION'} eq 'Stop' ){ +}elsif ( $wlanapsettings{'ACTION'} eq 'Stop' ){ system("/usr/local/bin/wlanapctrl stop >/dev/null 2>&1"); +}elsif ( $wlanapsettings{'ACTION'} eq 'Restart' ){ + system("/usr/local/bin/wlanapctrl restart >/dev/null 2>&1"); } &Header::openpage('WLAN', 1, '', ''); &Header::openbigbox('100%', 'left', '', $errormessage); -print "
"; if ( $errormessage ){ &Header::openbox('100%', 'center', $Lang::tr{'error messages'}); @@ -132,8 +124,8 @@ if ( $errormessage ){ if ( $debug ){ &Header::openbox('100%', 'center', 'DEBUG'); my $debugCount = 0; - foreach my $line (sort keys %cgiparams) { - print "$line = '$cgiparams{$line}'
\n"; + foreach my $line (sort keys %wlanapsettings) { + print "$line = '$wlanapsettings{$line}'
\n"; $debugCount++; } print " Count: $debugCount\n"; @@ -147,22 +139,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 +192,13 @@ 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{'CHAN'}{$wlanapsettings{'CHAN'}} = "selected='selected'"; +$selected{'CHANNEL'}{$wlanapsettings{'CHANNEL'}} = "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 $netsettings{'BLUE_DEV'} channel`; +my @channellist_cmd = `iwlist $wlanapsettings{'INTERFACE'} channel`; # get available channels my @temp; @@ -191,7 +209,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 +221,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'"; # @@ -231,28 +238,43 @@ if ( $wlan_card_status ne '' ){ print $wlan_card_status eq 'up' ? $status_started : $status_stopped; print "Access Point"; print $wlan_ap_status eq 'up' ? $status_started : $status_stopped; - if ( $wlan_card_status eq 'up' ){ - print ""; - }else{ - print ""; - } }else{ - print "$blue_message"; + print "$message"; } print ""; +print < + + + + +
+
+END +; + if ( $wlan_card_status eq '' ){ - print ""; + &Header::closebox(); &Header::closebigbox(); &Header::closepage(); exit 0; } print < +
+ +
WLAN Settings
SSID: 
Disable SSID broadcast: 
HW Mode:  + +
Encryption: 
Channel:  - END ; foreach $channel (@channellist){ - print ""; + print ""; } print <
+END +; +if ( $wlanapsettings{'INTERFACE'} =~ /green0/ ){ + print < + + +
Mac Filter:  + +Mac Adress List (one per line)
+END +; +} +print < + +
- -
END ; if ( $wlanapsettings{'DRIVER'} eq 'MADWIFI' ){ - $status = `wlanconfig $netsettings{'BLUE_DEV'} list`; + $status = `wlanconfig $wlanapsettings{'INTERFACE'} list`; +} +if ( $wlanapsettings{'DRIVER'} eq 'NL80211' ){ + $status = `iw dev $wlanapsettings{'INTERFACE'} station dump`; } print < @@ -325,10 +373,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,17 +380,18 @@ sub WriteConfig_hostapd{ print CONFIGFILE </var/ipfire/wlanap/macfile"); + foreach(@macs){ + $_ =~ s/\r//gi; + chomp($_); + if ( $_ ne "" ){print MACFILE $_;} + } + close MACFILE; }