From 8c2f203cc54af1e5791a482b079976fa956ed994 Mon Sep 17 00:00:00 2001 From: Maniacikarus Date: Sat, 16 Aug 2008 20:26:21 +0200 Subject: [PATCH] Final steps for wirelessap --- html/cgi-bin/wlanap.cgi | 136 ++++++++++-------------------------- src/misc-progs/wlanapctrl.c | 3 + 2 files changed, 41 insertions(+), 98 deletions(-) diff --git a/html/cgi-bin/wlanap.cgi b/html/cgi-bin/wlanap.cgi index 1e5da201e4..aca9e358ec 100755 --- a/html/cgi-bin/wlanap.cgi +++ b/html/cgi-bin/wlanap.cgi @@ -25,15 +25,15 @@ 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'; require '/var/ipfire/header.pl'; my $debug = 0; -my $i = 0; +my $status = ''; my $errormessage = ''; my $status_started = "$Lang::tr{'running'}"; my $status_stopped = "$Lang::tr{'stopped'}"; @@ -59,35 +59,25 @@ $wlanapsettings{'APMODE'} = 'on'; $wlanapsettings{'INTERFACE'} = $netsettings{'BLUE_DEV'}; $wlanapsettings{'SSID'} = 'IPFire'; $wlanapsettings{'HIDESSID'} = 'off'; -$wlanapsettings{'ENC'} = 'wpa'; # none / wpa +$wlanapsettings{'ENC'} = 'wpa'; # none / wpa1 /wpa2 $wlanapsettings{'TXPOWER'} = 'auto'; -# $wlanapsettings{'CC'} = '276'; # CountryCode, 276 = Germany $wlanapsettings{'CHAN'} = '05'; $wlanapsettings{'PWD'} = 'IPFire-2.x'; -$wlanapsettings{'PSK'} = '69eb868ed7b3cc36d767b729048c9c585234723d1eafbe66e5a16957b7c85e9c'; -$wlanapsettings{'WPA'} = '1'; - $wlanapsettings{'SYSLOGLEVEL'} = '0'; $wlanapsettings{'DEBUG'} = '4'; -$wlanapsettings{'DRIVER'} = 'MADWIFI'; # UNKNOWN / MADWIFI / RT2500 / PRISM54 / ... +$wlanapsettings{'DRIVER'} = 'MADWIFI'; -# WLANMODE= (a/b/g) &General::readhash("/var/ipfire/wlanap/settings", \%wlanapsettings); my %cgiparams=(); $cgiparams{'ACTION'} = ''; -$cgiparams{'RUNNING'} = 'off'; $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{'PSK'} = '69eb868ed7b3cc36d767b729048c9c585234723d1eafbe66e5a16957b7c85e9c'; -$cgiparams{'WPA'} = '1'; - $cgiparams{'SYSLOGLEVEL'} = '0'; $cgiparams{'DEBUG'} = '4'; &Header::getcgihash(\%cgiparams); @@ -96,7 +86,6 @@ $cgiparams{'DEBUG'} = '4'; &Header::showhttpheaders(); if ( $cgiparams{'ACTION'} eq "$Lang::tr{'save'}" ){ - $wlanapsettings{'APMODE'} = $cgiparams{'APMODE'}; $wlanapsettings{'SSID'} = $cgiparams{'SSID'}; $wlanapsettings{'HIDESSID'} = $cgiparams{'HIDESSID'}; $wlanapsettings{'ENC'} = $cgiparams{'ENC'}; @@ -104,8 +93,6 @@ if ( $cgiparams{'ACTION'} eq "$Lang::tr{'save'}" ){ $wlanapsettings{'TXPOWER'} = $cgiparams{'TXPOWER'}; $wlanapsettings{'PWD'} = $cgiparams{'PWD'}; - $wlanapsettings{'PSK'} = $cgiparams{'PSK'}; - $wlanapsettings{'WPA'} = $cgiparams{'WPA'}; $wlanapsettings{'SYSLOGLEVEL'}= $cgiparams{'SYSLOGLEVEL'}; $wlanapsettings{'DEBUG'} = $cgiparams{'DEBUG'}; @@ -118,7 +105,7 @@ if ( $cgiparams{'ACTION'} eq "$Lang::tr{'save'}" ){ &WriteConfig(); &WriteConfig_hostapd(); - system("/usr/local/bin/wlanapctrl start >/dev/null 2>&1") if ( $cgiparams{'RUNNING'} eq 'on' ); + system("/usr/local/bin/wlanapctrl restart >/dev/null 2>&1") } }elsif ( $cgiparams{'ACTION'} eq 'Start' ){ system("/usr/local/bin/wlanapctrl start >/dev/null 2>&1"); @@ -155,14 +142,11 @@ if ( $debug ){ # DEBUG DEBUG ############### -my $test; - # # Driver and status detection # my $wlan_card_status = 'dummy'; my $wlan_ap_status = ''; -my $wlan_hostapd_status = ''; my $blue_message = ""; if ( ($netsettings{'BLUE_DEV'} eq '') || ($netsettings{'BLUE_DRIVER'} eq '') ){ @@ -186,48 +170,39 @@ if ( ($netsettings{'BLUE_DEV'} eq '') || ($netsettings{'BLUE_DRIVER'} eq '') ){ } } -my $disabled_apmode = "disabled='disabled'"; -$disabled_apmode = '' if ( ($wlanapsettings{'DRIVER'} eq 'MADWIFI') || ($wlanapsettings{'DRIVER'} eq 'HOSTAP') || ($wlanapsettings{'DRIVER'} eq 'ACX100') ); - -my $checked_apmode = ''; my $checked_hidessid = ''; -$checked_apmode = "checked='checked'" if ( $wlanapsettings{'APMODE'} eq 'on' ); $checked_hidessid = "checked='checked'" if ( $wlanapsettings{'HIDESSID'} eq 'on' ); $selected{'ENC'}{'none'} = ''; -$selected{'ENC'}{'wpa'} = ''; +$selected{'ENC'}{'wpa1'} = ''; +$selected{'ENC'}{'wpa2'} = ''; $selected{'ENC'}{$wlanapsettings{'ENC'}} = "selected='selected'"; - $selected{'CHAN'}{$wlanapsettings{'CHAN'}} = "selected='selected'"; $selected{'TXPOWER'}{$wlanapsettings{'TXPOWER'}} = "selected='selected'"; -my @channellist = `iwlist $netsettings{'BLUE_DEV'} channel`; +my @channellist_cmd = `iwlist $netsettings{'BLUE_DEV'} channel`; # get available channels my @temp; -foreach (@channellist){ +foreach (@channellist_cmd){ $_ =~ /(.*)Channel (\d+)(.*):/; -my $channel = $2;chomp $channel; +$channel = $2;chomp $channel; if ( $channel =~ /\d+/ ){push(@temp,$channel);} } -@channellist = @temp; +my @channellist = @temp; -my @txpower = `iwlist $netsettings{'BLUE_DEV'} txpower`; +my @txpower_cmd = `iwlist $netsettings{'BLUE_DEV'} txpower`; # get available channels my @temp; -foreach (@txpower){ +foreach (@txpower_cmd){ $_ =~ /(\s)(\d+)(\s)dBm(\s)(.*)(\W)(\d+)(.*)/; -my $tx = $7;chomp $tx; -if ( $tx =~ /\d+/ ){push(@temp,$tx."mW");} +$txpower = $7;chomp $txpower; +if ( $txpower =~ /\d+/ ){push(@temp,$txpower."mW");} } -@txpower = @temp; +my @txpower = @temp; push(@txpower,"auto"); -$selected{'WPA'}{'1'} = ''; -$selected{'WPA'}{'2'} = ''; -$selected{'WPA'}{$wlanapsettings{'WPA'}} = "selected='selected'"; - $selected{'SYSLOGLEVEL'}{'0'} = ''; $selected{'SYSLOGLEVEL'}{'1'} = ''; $selected{'SYSLOGLEVEL'}{'2'} = ''; @@ -276,22 +251,15 @@ print < -print < - + -END -; -print < --> -"; - } - } - } - return $status; - } diff --git a/src/misc-progs/wlanapctrl.c b/src/misc-progs/wlanapctrl.c index 7b48136202..295604f8d1 100644 --- a/src/misc-progs/wlanapctrl.c +++ b/src/misc-progs/wlanapctrl.c @@ -19,6 +19,9 @@ int main(int argc, char *argv[]){ safe_system("/etc/init.d/hostapd start"); }else if (strcmp(argv[1], "stop") == 0){ safe_system("/etc/init.d/hostapd stop"); + }else if (strcmp(argv[1], "restart") == 0){ + safe_system("cp /var/ipfire/wlanap/hostapd.conf /etc/hostapd.conf"); + safe_system("/etc/init.d/hostapd restart"); }else if (strcmp(argv[1], "status") == 0){ safe_system("/etc/init.d/hostapd status"); }else{ -- 2.39.2
WLAN Settings -END -; -#
Access Point: 
SSID: 
Disable SSID broadcast: 
Disable SSID broadcast: 
Encryption: 
Select Country: 
Channel: 
Passphrase: 
WPA Version:  - -
Loglevel (hostapd):  - - + + +
WLAN Status
$status
WLAN Status
@channellist_cmd
@txpower_cmd
Connected Stations
$status
END ; @@ -405,11 +369,21 @@ END } - if ( $wlanapsettings{'ENC'} eq 'wpa'){ + if ( $wlanapsettings{'ENC'} eq 'wpa1'){ + print CONFIGFILE <; chomp $pid; - close FILE; - if (open(FILE, "/proc/${pid}/status")) - { - while () - { - if (/^Name:\W+(.*)/) - { - $testcmd = $1; - } - } - close FILE; - if ($testcmd =~ /$exename/) - { - $status = "
$Lang::tr{'running'}