###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2012-2013 IPFire Team <info@ipfire.org> #
+# Copyright (C) 2012 IPFire Team <info@ipfire.org> #
# #
# 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 #
# #
###############################################################################
-# DEVICE,ENABLED,MODE,WPA_MODE,SSID,PSK,PRIO
-# wlan0,on,WPA2,,Use This One Mum,ThisIsTheKey,2
+# DEVICE,ENABLED,MODE,WPA_MODE,SSID,PSK,PRIO,AUTH,ANONYMOUS,IDENTITY,PASSWORD
+# wlan0,on,WPA2,,Use This One Mum,ThisIsTheKey,2,TTLS,anonymous,username,password
use strict;
push(@config, $settings{'SSID'});
push(@config, $settings{'PSK'});
push(@config, $settings{'PRIO'});
+ push(@config, $settings{'AUTH'});
+ push(@config, $settings{'ANONYMOUS'});
+ push(@config, $settings{'IDENTITY'});
+ push(@config, $settings{'PASSWORD'});
# Add the new configuration and write all the stuff to the configuration file.
my $line = join(',', @config) . "\n";
$settings{'SSID'} = $config[5];
$settings{'PSK'} = $config[6];
$settings{'PRIO'} = $config[7];
+ $settings{'AUTH'} = $config[8];
+ $settings{'ANONYMOUS'} = $config[9];
+ $settings{'IDENTITY'} = $config[10];
+ $settings{'PASSWORD'} = $config[11];
}
}
}
if ($config[0] eq $settings{'ID'}) {
# Update all configuration settings.
# ID and INTERFACE cannot be changed.
- $config[2] = $settings{'ENABLED'};
- $config[3] = $settings{'ENCRYPTION'};
- $config[4] = $settings{'WPA_MODE'};
- $config[5] = $settings{'SSID'};
- $config[6] = $settings{'PSK'};
- $config[7] = $settings{'PRIO'};
+ $config[2] = $settings{'ENABLED'};
+ $config[3] = $settings{'ENCRYPTION'};
+ $config[4] = $settings{'WPA_MODE'};
+ $config[5] = $settings{'SSID'};
+ $config[6] = $settings{'PSK'};
+ $config[7] = $settings{'PRIO'};
+ $config[8] = $settings{'AUTH'};
+ $config[9] = $settings{'ANONYMOUS'};
+ $config[10] = $settings{'IDENTITY'};
+ $config[11] = $settings{'PASSWORD'};
$line = join(',', @config);
}
<br><hr><br>
- <table width="100%">
+ <table width="100%" class='tbl'>
<tr>
<th align='center'>$Lang::tr{'wlan client ssid'}</th>
<th align='center'>$Lang::tr{'wlan client encryption'}</th>
<th align='center'>$Lang::tr{'priority'}</th>
+ <th></th>
+ <th></th>
+ <th></th>
</tr>
END
#
my $key = 0;
+ my $col="";
foreach my $line (@configs) {
# Skip commented lines.
my $firstchar = substr($line, 0, 1);
# Colorize each line
if ($key % 2) {
- print "<tr bgcolor='$color{'color22'}'>";
+ print "<tr>";
+ $col="bgcolor='$color{'color20'}'";
} else {
- print "<tr bgcolor='$color{'color20'}'>";
+ print "<tr>";
+ $col="bgcolor='$color{'color22'}'";
}
my $encryption_mode = $Lang::tr{'unknown'};
$encryption_mode = $Lang::tr{'wlan client encryption wpa'};
} elsif ($config[3] eq "WPA2") {
$encryption_mode = $Lang::tr{'wlan client encryption wpa2'};
+ } elsif ($config[3] eq "EAP") {
+ $encryption_mode = $Lang::tr{'wlan client encryption eap'};
}
- if (($config[3] eq "WPA") || ($config[3] eq "WPA2")) {
+ if ($config[3] eq "EAP") {
+ if ($config[8] eq "PEAP") {
+ $encryption_mode .= " ($Lang::tr{'wlan client auth peap'})";
+ } elsif ($config[8] eq "TTLS") {
+ $encryption_mode .= " ($Lang::tr{'wlan client auth ttls'})";
+ } else {
+ $encryption_mode .= " ($Lang::tr{'wlan client auth auto'})";
+ }
+
+ $encryption_mode .= "<hr>";
+
+ if ($config[10]) {
+ $encryption_mode .= "<strong>$Lang::tr{'wlan client identity'}</strong>: ";
+ $encryption_mode .= $config[10];
+ }
+
+ # Anonymous identity
+ if ($config[9]) {
+ $encryption_mode .= "<br>";
+ $encryption_mode .= "<strong>$Lang::tr{'wlan client anonymous identity'}</strong>: ";
+ $encryption_mode .= $config[9];
+ }
+
+ } elsif (($config[3] eq "WPA") || ($config[3] eq "WPA2")) {
my $wpa_pairwise = "$Lang::tr{'wlan client ccmp'} $Lang::tr{'wlan client and'} $Lang::tr{'wlan client tkip'}";
my $wpa_group = "$Lang::tr{'wlan client ccmp'} $Lang::tr{'wlan client and'} $Lang::tr{'wlan client tkip'}";
}
print <<END;
- <td align='center'>$config[5]</td>
- <td align='center'>$encryption_mode</td>
- <td align='center'>$config[7]</td>
- <td align='center' width='5%'>
+ <td align='center' $col>$config[5]</td>
+ <td align='center' $col>$encryption_mode</td>
+ <td align='center' $col>$config[7]</td>
+ <td align='center' width='5%' $col>
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
<input type='hidden' name='ACTION' value='$Lang::tr{'toggle enable disable'}' />
<input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gif' alt='$gdesc' title='$gdesc' />
<input type='hidden' name='ID' value='$config[0]' />
</form>
</td>
- <td align='center' width='5%'>
+ <td align='center' width='5%' $col>
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
<input type='hidden' name='ACTION' value='$Lang::tr{'edit'}' />
<input type='image' name='$Lang::tr{'edit'}' src='/images/edit.gif' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' />
<input type='hidden' name='ID' value='$config[0]' />
</form>
</td>
- <td align='center' width='5%'>
+ <td align='center' width='5%' $col>
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
<input type='hidden' name='ACTION' value='$Lang::tr{'remove'}' />
<input type='image' name='$Lang::tr{'remove'}' src='/images/delete.gif' alt='$Lang::tr{'remove'}' title='$Lang::tr{'remove'}' />
$selected{'WPA_MODE'}{'TKIP-TKIP'} = '';
$selected{'WPA_MODE'}{$settings{'WPA_MODE'}} = "selected='selected'";
+ $selected{'AUTH'} = ();
+ $selected{'AUTH'}{''} = '';
+ $selected{'AUTH'}{'PEAP'} = '';
+ $selected{'AUTH'}{'TTLS'} = '';
+ $selected{'AUTH'}{$settings{'AUTH'}} = "selected='selected'";
+
$selected{'PRIO'} = ();
$selected{'PRIO'}{'0'} = '';
$selected{'PRIO'}{'1'} = '';
<table width='100%'>
<tr>
<td class='base' width='20%'>$Lang::tr{'wlan client ssid'}:</td>
- <td width='40%'><input type='text' name='SSID' value=$settings{'SSID'} size='25'/></td>
+ <td width='40%'><input type='text' name='SSID' value="$settings{'SSID'}" size='25'/></td>
<td class='base' width='10%'>$Lang::tr{'enabled'}</td>
<td width='30%'><input type='checkbox' name='ENABLED' $checked{'ENABLED'} /></td>
</tr>
<td width='40%'>
<select name='ENCRYPTION'>
<option value="NONE" $selected{'ENCRYPTION'}{'NONE'}>$Lang::tr{'wlan client encryption none'}</option>
+ <option value="EAP" $selected{'ENCRYPTION'}{'EAP'}>$Lang::tr{'wlan client encryption eap'}</option>
<option value="WPA2" $selected{'ENCRYPTION'}{'WPA2'}>$Lang::tr{'wlan client encryption wpa2'}</option>
<option value="WPA" $selected{'ENCRYPTION'}{'WPA'}>$Lang::tr{'wlan client encryption wpa'}</option>
<option value="WEP" $selected{'ENCRYPTION'}{'WEP'}>$Lang::tr{'wlan client encryption wep'}</option>
</tr>
<tr>
<td class='base' width='20%'>$Lang::tr{'wlan client psk'}: </td>
- <td width='40%'><input type='password' name='PSK' value=$settings{'PSK'} size='25'/></td>
+ <td width='40%'><input type='password' name='PSK' value="$settings{'PSK'}" size='25'/></td>
+ <td colspan="2" width='40%'></td>
+ </tr>
+ </table>
+
+ <br>
+ <hr>
+
+ <strong>
+ $Lang::tr{'wlan client authentication settings'}:
+ </strong>
+
+ <table width='100%'>
+ <tr>
+ <td class='base' width='20%'>
+ $Lang::tr{'wlan client eap authentication method'}:
+ </td>
+ <td width='40%'>
+ <select name='AUTH'>
+ <option value="" $selected{'AUTH'}{''}>$Lang::tr{'wlan client auth auto'}</option>
+ <option value="PEAP" $selected{'AUTH'}{'PEAP'}>$Lang::tr{'wlan client auth peap'}</option>
+ <option value="TTLS" $selected{'AUTH'}{'TTLS'}>$Lang::tr{'wlan client auth ttls'}</option>
+ </select>
+ </td>
+ <td colspan="2" width='40%'></td>
+ </tr>
+ <tr>
+ <td class='base' width='20%'>
+ $Lang::tr{'wlan client anonymous identity'}:
+ </td>
+ <td width='40%'>
+ <input type="text" name="ANONYMOUS" value="$settings{"ANONYMOUS"}" size="25" />
+ </td>
+ <td colspan="2" width='40%'></td>
+ </tr>
+ <tr>
+ <td class='base' width='20%'>
+ $Lang::tr{'wlan client identity'}:
+ </td>
+ <td width='40%'>
+ <input type="text" name="IDENTITY" value="$settings{"IDENTITY"}" size="25" />
+ </td>
+ <td colspan="2" width='40%'></td>
+ </tr>
+ <tr>
+ <td class='base' width='20%'>
+ $Lang::tr{'wlan client password'}:
+ </td>
+ <td width='40%'>
+ <input type="password" name="PASSWORD" value="$settings{"PASSWORD"}" size="25" />
+ </td>
<td colspan="2" width='40%'></td>
</tr>
</table>
<br>
<hr>
+
<strong>
$Lang::tr{'wlan client advanced settings'}:
</tr>
END
+ if ($status{'EAP state'}) {
+ my $selected_method = $status{'selectedMethod'};
+ $selected_method =~ s/\d+ \((.*)\)/$1/e;
+
+ print <<END;
+ <tr>
+ <td colspan='2'>
+ <strong>$Lang::tr{'wlan client encryption eap'}</strong>
+ </td>
+ </tr>
+ <tr>
+ <td width='20%'>
+ $Lang::tr{'wlan client eap state'}
+ </td>
+ <td width='80%'>
+ $status{'EAP state'}
+ </td>
+ </tr>
+ <tr>
+ <td width='20%'>
+ $Lang::tr{'wlan client method'}
+ </td>
+ <td width='80%'>
+ $selected_method
+ </td>
+ </tr>
+ <tr>
+ <td width='20%'>
+ $Lang::tr{'wlan client tls version'}
+ </td>
+ <td width='80%'>
+ $status{'eap_tls_version'}
+ </td>
+ </tr>
+ <tr>
+ <td width='20%'>
+ $Lang::tr{'wlan client tls cipher'}
+ </td>
+ <td width='80%'>
+ $status{'EAP TLS cipher'}
+ </td>
+ </tr>
+ <tr>
+ <td width='20%'>
+ $Lang::tr{'wlan client eap phase2 method'}
+ </td>
+ <td width='80%'>
+ $status{"${selected_method}v0 Phase2 method"}
+ </td>
+ </tr>
+END
+ }
+
if (($status{'pairwise_cipher'} ne "NONE") || ($status{'group_cipher'} ne "NONE")) {
print <<END;
<tr>