X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=html%2Fcgi-bin%2Fwlanap.cgi;h=2e12a6512e71669bbf2e386ef271b3ba23c718ff;hb=f370c68ce3e5b4abf3efaa0a3a3d48269c28ed61;hp=3a57e160f1c88047b43b9aad094eac2cb6485d39;hpb=8aa49c1548d9661a86f3e9cced694f0ccbdf6d11;p=people%2Fpmueller%2Fipfire-2.x.git diff --git a/html/cgi-bin/wlanap.cgi b/html/cgi-bin/wlanap.cgi index 3a57e160f1..2e12a6512e 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) 2008 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 # @@ -35,8 +35,8 @@ require '/var/ipfire/header.pl'; my $debug = 0; my $status = ''; my $errormessage = ''; -my $status_started = "$Lang::tr{'running'}"; -my $status_stopped = "$Lang::tr{'stopped'}"; +my $status_started = "$Lang::tr{'running'}"; +my $status_stopped = "$Lang::tr{'stopped'}"; # get rid of used only once warnings my @onlyonce = ( $Header::colourgreen, $Header::colourred ); @@ -56,6 +56,7 @@ my $txpower = ''; &General::readhash("/var/ipfire/ethernet/settings", \%netsettings); $wlanapsettings{'APMODE'} = 'on'; +$wlanapsettings{'ACTION'} = ''; $wlanapsettings{'MACMODE'} = '0'; $wlanapsettings{'INTERFACE'} = ''; $wlanapsettings{'SSID'} = 'IPFire'; @@ -63,46 +64,68 @@ $wlanapsettings{'HIDESSID'} = 'off'; $wlanapsettings{'ENC'} = 'wpa2'; # none / wpa1 /wpa2 $wlanapsettings{'TXPOWER'} = 'auto'; $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{'MACMODE'} = '0'; -$cgiparams{'SSID'} = 'IPFire'; -$cgiparams{'HIDESSID'} = 'off'; -$cgiparams{'ENC'} = 'wpa2'; # none / wep / wpa / wep+wpa -$cgiparams{'TXPOWER'} = 'auto'; -$cgiparams{'CHANNEL'} = '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{'MACMODE'} = $cgiparams{'MACMODE'}; - $wlanapsettings{'MACS'} = $cgiparams{'MACS'}; - $wlanapsettings{'HIDESSID'} = $cgiparams{'HIDESSID'}; - $wlanapsettings{'ENC'} = $cgiparams{'ENC'}; - $wlanapsettings{'CHANNEL'} = $cgiparams{'CHANNEL'}; - $wlanapsettings{'TXPOWER'} = $cgiparams{'TXPOWER'}; - - $wlanapsettings{'PWD'} = $cgiparams{'PWD'}; - $wlanapsettings{'SYSLOGLEVEL'} = $cgiparams{'SYSLOGLEVEL'}; - $wlanapsettings{'DEBUG'} = $cgiparams{'DEBUG'}; - - # 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.
"; +my $string=(); +my $status=(); +my $errormessage = ''; +my $memory = 0; +my @memory=(); +my @pid=(); +my @hostapd=(); +sub pid +{ +# for pid and memory + open(FILE, '/usr/local/bin/addonctrl hostapd status | '); + @hostapd = ; + close(FILE); + $string = join("", @hostapd); + $string =~ s/[a-z_]//gi; + $string =~ s/\[[0-1]\;[0-9]+//gi; + $string =~ s/[\(\)\.]//gi; + $string =~ s/ //gi; + $string =~ s///gi; + @pid = split(/\s/,$string); + if (open(FILE, "/proc/$pid[0]/statm")){ + my $temp = ; + @memory = split(/ /,$temp); + close(FILE); + } + $memory+=$memory[0]; +} +pid(); + + + +if ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'wlanap del interface'}" ){ + delete $wlanapsettings{'INTERFACE'}; + &General::writehash("/var/ipfire/wlanap/settings", \%wlanapsettings); +} + +if ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'save'}" ){ + # verify WPA Passphrase, must be 8 .. 63 characters - only wiht enabled enc + if (($wlanapsettings{'ENC'} eq "wpa1") || ($wlanapsettings{'ENC'} eq "wpa2")){ + if ( (length($wlanapsettings{'PWD'}) < 8) || (length($wlanapsettings{'PWD'}) > 63)){ + $errormessage .= "$Lang::tr{'wlanap invalid wpa'}
"; + } } if ( $errormessage eq '' ){ @@ -110,19 +133,23 @@ if ( $cgiparams{'ACTION'} eq "$Lang::tr{'save'}" ){ &WriteConfig_hostapd(); system("/usr/local/bin/wlanapctrl restart >/dev/null 2>&1"); + pid(); } -}elsif ( $cgiparams{'ACTION'} eq "$Lang::tr{'interface'}" ){ - $wlanapsettings{'INTERFACE'} = $cgiparams{'INTERFACE'}; +}elsif ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'wlanap interface'}" ){ &General::writehash("/var/ipfire/wlanap/settings", \%wlanapsettings); -}elsif ( $cgiparams{'ACTION'} eq 'Start' ){ +}elsif ( ($wlanapsettings{'ACTION'} eq "$Lang::tr{'start'}") && ($memory == 0) ){ system("/usr/local/bin/wlanapctrl start >/dev/null 2>&1"); -}elsif ( $cgiparams{'ACTION'} eq 'Stop' ){ + pid(); +}elsif ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'stop'}" ){ system("/usr/local/bin/wlanapctrl stop >/dev/null 2>&1"); + $memory=0; +}elsif ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'restart'}" ){ + system("/usr/local/bin/wlanapctrl restart >/dev/null 2>&1"); + pid(); } -&Header::openpage('WLAN', 1, '', ''); +&Header::openpage('Wireless LAN', 1, '', ''); &Header::openbigbox('100%', 'left', '', $errormessage); -print "
"; if ( $errormessage ){ &Header::openbox('100%', 'center', $Lang::tr{'error messages'}); @@ -139,8 +166,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"; @@ -161,23 +188,23 @@ $selected{'INTERFACE'}{'blue0'} = ''; $selected{'ENC'}{$wlanapsettings{'INTERFACE'}} = "selected='selected'"; if ( ($wlanapsettings{'INTERFACE'} eq '') ){ - $message = "No WLan Interface selected."; + $message = $Lang::tr{'wlanap select interface'}; &Header::openbox('100%', 'center', "WLAN AP"); print < -
- - +

+
+ END ; &Header::closebox(); @@ -188,7 +215,7 @@ END my $cmd_out = `/usr/sbin/iwconfig $wlanapsettings{'INTERFACE'} 2>/dev/null`; if ( $cmd_out eq '' ){ - $message = "Interface is not a WLAN card."; + $message = "$Lang::tr{'wlanap no interface'}"; $wlan_card_status = ''; }else{ $cmd_out = `/sbin/ifconfig | /bin/grep $wlanapsettings{'INTERFACE'}`; @@ -204,12 +231,14 @@ END } } -my $checked_hidessid = ''; -$checked_hidessid = "checked='checked'" if ( $wlanapsettings{'HIDESSID'} eq 'on' ); +$checked{'HIDESSID'}{'off'} = ''; +$checked{'HIDESSID'}{'on'} = ''; +$checked{'HIDESSID'}{$wlanapsettings{'HIDESSID'}} = "checked='checked'"; $selected{'ENC'}{$wlanapsettings{'ENC'}} = "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 $wlanapsettings{'INTERFACE'} channel`; @@ -244,24 +273,62 @@ $selected{'DEBUG'}{$wlanapsettings{'DEBUG'}} = "selected='selected'"; &Header::openbox('100%', 'center', "WLAN AP"); print < -WLAN Services END ; + if ( $wlan_card_status ne '' ){ - print "WLAN card ($wlanapsettings{'DRIVER'})"; + print "$Lang::tr{'wlanap wlan services'}"; + print "$Lang::tr{'wlanap wlan card'} ($wlanapsettings{'DRIVER'})"; print $wlan_card_status eq 'up' ? $status_started : $status_stopped; - print "Access Point"; + print "$Lang::tr{'wlanap access point'}"; print $wlan_ap_status eq 'up' ? $status_started : $status_stopped; - if ( $wlan_card_status eq 'up' ){ - print ""; - print ""; - }else{ - print ""; - } + }else{ - print "$message"; + print "$message"; } + print ""; + +if ( ($memory != 0) && (@pid[0] ne "///") && ($wlan_card_status ne '') ){ + print ""; + print ""; + print ""; + print ""; + print ""; + print ""; + print ""; + print ""; + print ""; + print ""; + print ""; + print "
PID$Lang::tr{'memory'}
hostapd    @pid[0]$memory KB
"; +} + +if ( $wlan_card_status ne '' ){ +print "
"; +print ""; +print ""; +print ""; +print ""; +print ""; +print ""; +print ""; +print ""; +print ""; print "
 
"; +}else{ +print "
"; +print ""; +print ""; +print ""; +print ""; +print ""; +print ""; +print ""; +print ""; +print ""; +print ""; +print "

 
"; +} if ( $wlan_card_status eq '' ){ &Header::closebox(); @@ -271,18 +338,29 @@ if ( $wlan_card_status eq '' ){ } print < +
- - - + + + -
WLAN Settings +
$Lang::tr{'wlanap wlan settings'}
SSID: 
Disable SSID broadcast: 
Encryption:  + +
SSID Broadcast: on | off
HW Mode:  + +
$Lang::tr{'wlanap encryption'}: 
Channel:  +
$Lang::tr{'wlanap channel'}:  Passphrase: 
Loglevel (hostapd):  Debuglevel (hostapd): 
@@ -344,10 +422,11 @@ END } print < - - +
- -
+
+
+ +
END @@ -356,13 +435,22 @@ END if ( $wlanapsettings{'DRIVER'} eq 'MADWIFI' ){ $status = `wlanconfig $wlanapsettings{'INTERFACE'} list`; } +if ( $wlanapsettings{'DRIVER'} eq 'NL80211' ){ + $status = `iw dev $wlanapsettings{'INTERFACE'} station dump`; +} print < - +
WLAN Status
$Lang::tr{'wlanap wlan status'}
@channellist_cmd
@txpower_cmd
$status
+
+ + + + +
WLan Clients
 $Lang::tr{'wlanap link wireless'}
 $Lang::tr{'wlanap link dhcp'}
END ; &Header::closebox(); @@ -379,12 +467,31 @@ sub WriteConfig_hostapd{ # interface=$wlanapsettings{'INTERFACE'} driver=$wlanapsettings{'DRIVER_HOSTAPD'} +channel=$wlanapsettings{'CHANNEL'} +END +; + if ( $wlanapsettings{'HW_MODE'} eq 'n' ){ + print CONFIGFILE </var/ipfire/wlanap/macfile"); - print MACFILE <