This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "IPFire 2.x development tree".
The branch, next has been updated
via d8ef6a9537537ed43d7766ced22d3500b965ed1a (commit)
via ea566f8485462dee02e9385aa5b5e4d7935d131d (commit)
via 6d92ee11de904562936921d593332e695e82d9f4 (commit)
via 8b20ca2de4d1b07f2bb2237b97a591cc40deebc4 (commit)
via 93a017cbcffafaa63b64e3ff51e8d6c37dce3d5b (commit)
via c07eea1d38de0334e79f531710e33f656dbd5f8c (commit)
from e70aa2e0b89e87316a3ea92509c0662c077fb539 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit d8ef6a9537537ed43d7766ced22d3500b965ed1a
Author: Peter Müller <peter.mueller(a)link38.eu>
Date: Mon May 7 17:23:52 2018 +0200
display country data for remote IPs on ovpnmain.cgi
This makes debugging easier, especially when it comes to
GeoIP related firewall rules and database related issues
such as #11482.
Signed-off-by: Peter Müller <peter.mueller(a)link38.eu>
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit ea566f8485462dee02e9385aa5b5e4d7935d131d
Author: Peter Müller <peter.mueller(a)link38.eu>
Date: Mon May 7 17:01:58 2018 +0200
fix aesthetic issues in remote.cgi and ship them
Fix some minor cosmetic issues on remote.cgi as well as a typo in
the language files ("sesstions" -> "sessions"). The changes are
listed in "filelists" for Core Update 121.
Signed-off-by: Peter Müller <peter.mueller(a)link38.eu>
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 6d92ee11de904562936921d593332e695e82d9f4
Author: Alexander Marx <alexander.marx(a)ipfire.org>
Date: Wed May 2 13:27:07 2018 +0200
BUG11559: fwhosts
When creating firewallrules or using firewall groups,
it should be possible to select a single IpSec subnet if there is more than one.
This patch adds the changes to the firewall groups.
Signed-off-by: Alexander Marx <alexander.marx(a)ipfire.org>
Tested-by: Peter Müller <peter.mueller(a)link38.eu>
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 8b20ca2de4d1b07f2bb2237b97a591cc40deebc4
Author: Alexander Marx <alexander.marx(a)ipfire.org>
Date: Wed May 2 13:27:06 2018 +0200
BUG11559: firewall-lib
When creating firewallrules or using firewall groups,
it should be possible to select a single IpSec subnet if there is more than one.
This patch has neccessary changes for the firewall-lib. While the network name of the IpSec changes
on save (subnet is added to name) we need to split the name or normalise the field before using it.
Signed-off-by: Alexander Marx <alexander.marx(a)ipfire.org>
Tested-by: Peter Müller <peter.mueller(a)link38.eu>
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit 93a017cbcffafaa63b64e3ff51e8d6c37dce3d5b
Author: Alexander Marx <alexander.marx(a)ipfire.org>
Date: Wed May 2 13:27:05 2018 +0200
BUG11559: firewall.cgi
When creating firewallrules or using firewall groups,
it should be possible to select a single IpSec subnet if there is more than one.
This patch has the changes for firewall.cgi
Signed-off-by: Alexander Marx <alexander.marx(a)ipfire.org>
Tested-by: Peter Müller <peter.mueller(a)link38.eu>
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
commit c07eea1d38de0334e79f531710e33f656dbd5f8c
Author: Alexander Marx <alexander.marx(a)ipfire.org>
Date: Wed May 2 13:27:04 2018 +0200
BUG11559: Languagefiles
When creating firewallrules or using firewall groups,
it should be possible to select a single IpSec subnet if there is more than one.
This patch adds a new languagefileword "fwdfw all subnets" which is used in firewall.cgi and fwhosts.cgi
Signed-off-by: Alexander Marx <alexander.marx(a)ipfire.org>
Tested-by: Peter Müller <peter.mueller(a)link38.eu>
Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>
-----------------------------------------------------------------------
Summary of changes:
config/firewall/firewall-lib.pl | 17 ++++--
config/rootfiles/core/121/filelists/files | 3 ++
html/cgi-bin/firewall.cgi | 36 +++++++++++--
html/cgi-bin/fwhosts.cgi | 87 +++++++++++++++++++------------
html/cgi-bin/ovpnmain.cgi | 10 +++-
html/cgi-bin/remote.cgi | 24 +++++----
langs/de/cgi-bin/de.pl | 3 +-
langs/en/cgi-bin/en.pl | 3 +-
8 files changed, 132 insertions(+), 51 deletions(-)
Difference in files:
diff --git a/config/firewall/firewall-lib.pl b/config/firewall/firewall-lib.pl
index eabd9a42f..9b7f55c9d 100644
--- a/config/firewall/firewall-lib.pl
+++ b/config/firewall/firewall-lib.pl
@@ -150,6 +150,9 @@ sub get_ipsec_net_ip
my $val=shift;
my $field=shift;
foreach my $key (sort {$a <=> $b} keys %ipsecconf){
+ #adapt $val to reflect real name without subnet (if rule with only one ipsec subnet is created)
+ my @tmpval = split (/\|/, $val);
+ $val = $tmpval[0];
if($ipsecconf{$key}[1] eq $val){
return $ipsecconf{$key}[$field];
}
@@ -390,10 +393,16 @@ sub get_address
# IPsec networks.
} elsif ($key ~~ ["ipsec_net_src", "ipsec_net_tgt", "IpSec Network"]) {
- my $network_address = &get_ipsec_net_ip($value, 11);
- my @nets = split(/\|/, $network_address);
- foreach my $net (@nets) {
- push(@ret, [$net, ""]);
+ #Check if we have multiple subnets and only want one of them
+ if ( $value =~ /\|/ ){
+ my @parts = split(/\|/, $value);
+ push(@ret, [$parts[1], ""]);
+ }else{
+ my $network_address = &get_ipsec_net_ip($value, 11);
+ my @nets = split(/\|/, $network_address);
+ foreach my $net (@nets) {
+ push(@ret, [$net, ""]);
+ }
}
# The firewall's own IP addresses.
diff --git a/config/rootfiles/core/121/filelists/files b/config/rootfiles/core/121/filelists/files
index 4ce37f9ed..fc07ad7e9 100644
--- a/config/rootfiles/core/121/filelists/files
+++ b/config/rootfiles/core/121/filelists/files
@@ -1,3 +1,6 @@
etc/system-release
etc/issue
etc/ssl/certs/ca-bundle.crt
+srv/web/ipfire/cgi-bin/ovpnmain.cgi
+srv/web/ipfire/cgi-bin/remote.cgi
+var/ipfire/langs
diff --git a/html/cgi-bin/firewall.cgi b/html/cgi-bin/firewall.cgi
index face0f460..499f279d1 100644
--- a/html/cgi-bin/firewall.cgi
+++ b/html/cgi-bin/firewall.cgi
@@ -1161,11 +1161,31 @@ END
#IPsec netze
foreach my $key (sort { ncmp($ipsecconf{$a}[1],$ipsecconf{$b}[1]) } keys %ipsecconf) {
if ($ipsecconf{$key}[3] eq 'net' || ($optionsfw{'SHOWDROPDOWN'} eq 'on' && $ipsecconf{$key}[3] ne 'host')){
- print"<tr><td valign='top'><input type='radio' name='$grp' value='ipsec_net_$srctgt' $checked{$grp}{'ipsec_net_'.$srctgt}></td><td >$Lang::tr{'fwhost ipsec net'}</td><td align='right'><select name='ipsec_net_$srctgt' style='width:200px;'>" if ($show eq '');
+ print"<tr><td valign='top'><input type='radio' name='$grp' id='ipsec_net_$srctgt' value='ipsec_net_$srctgt' $checked{$grp}{'ipsec_net_'.$srctgt}></td><td >$Lang::tr{'fwhost ipsec net'}</td><td align='right'><select name='ipsec_net_$srctgt' style='width:200px;'>" if ($show eq '');
$show='1';
+
+ #Check if we have more than one REMOTE subnet in config
+ my @arr1 = split /\|/, $ipsecconf{$key}[11];
+ my $cnt1 += @arr1;
+
print "<option ";
- print "selected='selected'" if ($fwdfwsettings{$fwdfwsettings{$grp}} eq $ipsecconf{$key}[1]);
- print ">$ipsecconf{$key}[1]</option>";
+ print "value=$ipsecconf{$key}[1]";
+ print " selected " if ($fwdfwsettings{$fwdfwsettings{$grp}} eq "$ipsecconf{$key}[1]");
+ print ">$ipsecconf{$key}[1] ";
+ print "($Lang::tr{'fwdfw all subnets'})" if $cnt1 > 1; #If this Conenction has more than one subnet, print one option for all subnets
+ print "</option>";
+
+ if ($cnt1 > 1){
+ foreach my $val (@arr1){
+ #normalize subnet to cidr notation
+ my ($val1,$val2) = split /\//, $val;
+ my $val3 = &General::iporsubtocidr($val2);
+ print "<option ";
+ print "value='$ipsecconf{$key}[1]|$val1/$val3'";
+ print "selected " if ($fwdfwsettings{$fwdfwsettings{$grp}} eq "$ipsecconf{$key}[1]|$val1/$val3");
+ print ">$ipsecconf{$key}[1] ($val1/$val3)</option>";
+ }
+ }
}
}
if($optionsfw{'SHOWDROPDOWN'} eq 'on' && $show eq ''){
@@ -2575,6 +2595,11 @@ END
#SOURCE
my $ipfireiface;
&getcolor($$hash{$key}[3],$$hash{$key}[4],\%customhost);
+ # Check SRC Host and replace "|" with space
+ if ($$hash{$key}[4] =~ /\|/){
+ $$hash{$key}[4] =~ s/\|/ (/g;
+ $$hash{$key}[4] = $$hash{$key}[4].")";
+ }
print"<td align='center' width='30%' $tdcolor>";
if ($$hash{$key}[3] eq 'ipfire_src'){
$ipfireiface=$Lang::tr{'fwdfw iface'};
@@ -2640,6 +2665,11 @@ END
print<<END;
<td align='center' $tdcolor>
END
+ # Check TGT Host and replace "|" with space
+ if ($$hash{$key}[6] =~ /\|/){
+ $$hash{$key}[6] =~ s/\|/ (/g;
+ $$hash{$key}[6] = $$hash{$key}[6].")";
+ }
#Is this a DNAT rule?
my $natstring;
if ($$hash{$key}[31] eq 'dnat' && $$hash{$key}[28] eq 'ON'){
diff --git a/html/cgi-bin/fwhosts.cgi b/html/cgi-bin/fwhosts.cgi
index 10217425d..576701ac6 100644
--- a/html/cgi-bin/fwhosts.cgi
+++ b/html/cgi-bin/fwhosts.cgi
@@ -54,6 +54,7 @@ my %fwinp=();
my %fwout=();
my %ovpnsettings=();
my %netsettings=();
+my %optionsfw=();
my $errormessage;
my $hint;
@@ -70,6 +71,7 @@ my $configgeoipgrp = "${General::swroot}/fwhosts/customgeoipgrp";
my $fwconfigfwd = "${General::swroot}/firewall/config";
my $fwconfiginp = "${General::swroot}/firewall/input";
my $fwconfigout = "${General::swroot}/firewall/outgoing";
+my $fwoptions = "${General::swroot}/optionsfw/settings";
my $configovpn = "${General::swroot}/ovpn/settings";
my $configipsecrw = "${General::swroot}/vpn/settings";
@@ -87,8 +89,9 @@ unless (-e $configgeoipgrp) { system("touch $configgeoipgrp"); }
&General::readhasharray("$configipsec", \%ipsecconf);
&General::readhash("$configipsecrw", \%ipsecsettings);
&General::readhash("/var/ipfire/ethernet/settings", \%netsettings);
-&Header::getcgihash(\%fwhostsettings);
+&General::readhash($fwoptions, \%optionsfw);
+&Header::getcgihash(\%fwhostsettings);
&Header::showhttpheaders();
&Header::openpage($Lang::tr{'fwhost menu'}, 1, '');
&Header::openbigbox('100%', 'center');
@@ -1548,27 +1551,30 @@ END
print"</select></td></tr>";
}
#IPsec networks
- my @IPSEC_N2N=();
+
foreach my $key (sort { ncmp($ipsecconf{$a}[0],$ipsecconf{$b}[0]) } keys %ipsecconf) {
- if ($ipsecconf{$key}[3] eq 'net'){
- $show='1';
- push (@IPSEC_N2N,$ipsecconf{$key}[1]);
- }
- }
- if ($show eq '1'){
- $show='';
- print<<END;
- <td style='width:15em;'>
- <label>
- <input type='radio' name='grp2' id='IPSEC_NET' value='ipsec_net' $checked{'grp2'}{'ipsec_net'}>
- $Lang::tr{'fwhost ipsec net'}
- </label>
- </td>
- <td style='text-align:right;'>
- <select name='IPSEC_NET' style='width:16em;'>"
-END
- foreach(@IPSEC_N2N){
- print"<option value='$_'>$_</option>";
+ if ($ipsecconf{$key}[3] eq 'net' || ($optionsfw{'SHOWDROPDOWN'} eq 'on' && $ipsecconf{$key}[3] ne 'host')){
+ print "<td style='width:15em;'><label><input type='radio' name='grp2' id='IPSEC_NET' value='ipsec_net' $checked{'grp2'}{'ipsec_net'}>$Lang::tr{'fwhost ipsec net'}</label></td><td style='text-align:right;'><select name='IPSEC_NET' style='width:16em;'>" if $show eq '';
+ $show=1;
+ #Check if we have more than one REMOTE subnet in config
+ my @arr1 = split /\|/, $ipsecconf{$key}[11];
+ my $cnt1 += @arr1;
+
+ print"<option value=$ipsecconf{$key}[1]>";
+ print"$ipsecconf{$key}[1]";
+ print" ($Lang::tr{'fwdfw all subnets'})" if $cnt1 > 1; #If this Conenction has more than one subnet, print one option for all subnets
+ print"</option>";
+
+ if ($cnt1 > 1){
+ foreach my $val (@arr1){
+ #normalize subnet to cidr notation
+ my ($val1,$val2) = split /\//, $val;
+ my $val3 = &General::iporsubtocidr($val2);
+ print "<option ";
+ print "value='$ipsecconf{$key}[1]|$val1/$val3'";
+ print ">$ipsecconf{$key}[1] ($val1/$val3)</option>";
+ }
+ }
}
}
print"</select></td></tr>";
@@ -2116,14 +2122,15 @@ sub viewtablegrp
print "<td width='39%' align='left' $col>";
if($customgrp{$key}[3] eq 'Standard Network'){
print &get_name($customgrp{$key}[2])."</td>";
+ }elsif($customgrp{$key}[3] eq "IpSec Network" && $customgrp{$key}[2] =~ /\|/){
+ my ($a,$b) = split /\|/, $customgrp{$key}[2];
+ print "$a</td>";
}else{
print "$customgrp{$key}[2]</td>";
}
if ($ip eq '' && $customgrp{$key}[2] ne $Lang::tr{'fwhost err emptytable'}){
print "<td align='center' $col>$Lang::tr{'fwhost deleted'}</td><td align='center' $col>$Lang::tr{'fwhost '.$customgrp{$key}[3]}</td><td width='1%' $col><form method='post'>";
}else{
- my ($colip,$colsub) = split("/",$ip);
- $ip="$colip/".&General::iporsubtocidr($colsub) if ($colsub);
print"<td align='center' $col>".&getcolor($ip)."</td><td align='center' $col>$Lang::tr{'fwhost '.$customgrp{$key}[3]}</td><td width='1%' $col><form method='post'>";
}
if ($delflag > 0 && $ip ne ''){
@@ -2896,7 +2903,23 @@ sub getipforgroup
if ($type eq 'IpSec Network'){
foreach my $key (keys %ipsecconf) {
if ($ipsecconf{$key}[1] eq $name){
- return $ipsecconf{$key}[11];
+ if ($ipsecconf{$key}[11] =~ /\|/) {
+ my $string;
+ my @parts = split /\|/ , $ipsecconf{$key}[11];
+ foreach my $key1 (@parts){
+ my ($val1,$val2) = split (/\//, $key1);
+ my $val3 = &Network::convert_netmask2prefix($val2) || $val2;
+ $string .= "$val1/$val3<br>";
+ }
+ return $string;
+ }else{
+ return $ipsecconf{$key}[11];
+ }
+ }else{
+ if ($name =~ /\|/) {
+ my ($a,$b) = split /\|/, $name;
+ return $b;
+ }
}
}
&deletefromgrp($name,$configgrp);
@@ -2917,7 +2940,7 @@ sub getipforgroup
foreach my $key (keys %ccdhost) {
if($ccdhost{$key}[1] eq $name){
my ($a,$b) = split ("/",$ccdhost{$key}[11]);
- $b=&General::iporsubtodec($b);
+ $b=&Network::convert_netmask2prefix($b) || ($b);
return "$a/$b";
}
}
@@ -2929,7 +2952,7 @@ sub getipforgroup
foreach my $key (keys %ccdhost) {
if($ccdhost{$key}[1] eq $name){
my ($a,$b) = split (/\//,$ccdhost{$key}[33]);
- $b=&General::iporsubtodec($b);
+ $b=&Network::convert_netmask2prefix($b) || ($b) ;
return "$a/$b";
}
}
@@ -2941,7 +2964,7 @@ sub getipforgroup
foreach my $key (keys %ccdnet) {
if ($ccdnet{$key}[0] eq $name){
my ($a,$b) = split (/\//,$ccdnet{$key}[1]);
- $b=&General::iporsubtodec($b);
+ $b=&Network::convert_netmask2prefix($b) || ($b);
return "$a/$b";
}
}
@@ -2961,7 +2984,7 @@ sub getipforgroup
if ($type eq 'Custom Network'){
foreach my $key (keys %customnetwork) {
if($customnetwork{$key}[0] eq $name){
- return $customnetwork{$key}[1]."/".$customnetwork{$key}[2];
+ return $customnetwork{$key}[1]."/".&Network::convert_netmask2prefix($customnetwork{$key}[2]) || $customnetwork{$key}[2];
}
}
}
@@ -2976,20 +2999,20 @@ sub getipforgroup
if ($name eq 'GREEN'){
my %hash=();
&General::readhash("${General::swroot}/ethernet/settings",\%hash);
- return $hash{'GREEN_NETADDRESS'}."/".$hash{'GREEN_NETMASK'};
+ return $hash{'GREEN_NETADDRESS'}."/".&Network::convert_netmask2prefix($hash{'GREEN_NETMASK'}) || $hash{'GREEN_NETMASK'};
}
if ($name eq 'BLUE'){
my %hash=();
&General::readhash("${General::swroot}/ethernet/settings",\%hash);
- return $hash{'BLUE_NETADDRESS'}."/".$hash{'BLUE_NETMASK'};
+ return $hash{'BLUE_NETADDRESS'}."/".&Network::convert_netmask2prefix($hash{'BLUE_NETMASK'}) || $hash{'BLUE_NETMASK'};
}
if ($name eq 'ORANGE'){
my %hash=();
&General::readhash("${General::swroot}/ethernet/settings",\%hash);
- return $hash{'ORANGE_NETADDRESS'}."/".$hash{'ORANGE_NETMASK'};
+ return $hash{'ORANGE_NETADDRESS'}."/".&Network::convert_netmask2prefix($hash{'ORANGE_NETMASK'}) || $hash{'ORANGE_NETMASK'};
}
if ($name eq 'ALL'){
- return "0.0.0.0/0.0.0.0";
+ return "0.0.0.0/0";
}
if ($name =~ /IPsec/i){
my %hash=();
diff --git a/html/cgi-bin/ovpnmain.cgi b/html/cgi-bin/ovpnmain.cgi
index 94e723ba2..eac962e6c 100644
--- a/html/cgi-bin/ovpnmain.cgi
+++ b/html/cgi-bin/ovpnmain.cgi
@@ -35,6 +35,7 @@ require '/var/ipfire/general-functions.pl';
require "${General::swroot}/lang.pl";
require "${General::swroot}/header.pl";
require "${General::swroot}/countries.pl";
+require "${General::swroot}/geoip-functions.pl";
# enable only the following on debugging purpose
#use warnings;
@@ -2991,6 +2992,7 @@ END
<tr>
<th><b>$Lang::tr{'common name'}</b></th>
<th><b>$Lang::tr{'real address'}</b></th>
+ <th><b>$Lang::tr{'country'}</b></th>
<th><b>$Lang::tr{'virtual address'}</b></th>
<th><b>$Lang::tr{'loged in at'}</b></th>
<th><b>$Lang::tr{'bytes sent'}</b></th>
@@ -3030,6 +3032,11 @@ END
$users[$uid]{'BytesSent'} = &sizeformat($match[4]);
$users[$uid]{'Since'} = $match[5];
$users[$uid]{'Proto'} = $proto;
+
+ # get country code for "RealAddress"...
+ my $ccode = &GeoIP::lookup((split ':', $users[$uid]{'RealAddress'})[0]);
+ my $flag_icon = &GeoIP::get_flag_icon($ccode);
+ $users[$uid]{'Country'} = "<a href='country.cgi#$ccode'><img src='$flag_icon' border='0' align='absmiddle' alt='$ccode' title='$ccode' /></a>";
$uid++;
}
}
@@ -3056,7 +3063,8 @@ END
}
print "<td align='left' $col>$users[$idx-1]{'CommonName'}</td>";
print "<td align='left' $col>$users[$idx-1]{'RealAddress'}</td>";
- print "<td align='left' $col>$users[$idx-1]{'VirtualAddress'}</td>";
+ print "<td align='center' $col>$users[$idx-1]{'Country'}</td>";
+ print "<td align='center' $col>$users[$idx-1]{'VirtualAddress'}</td>";
print "<td align='left' $col>$users[$idx-1]{'Since'}</td>";
print "<td align='left' $col>$users[$idx-1]{'BytesSent'}</td>";
print "<td align='left' $col>$users[$idx-1]{'BytesReceived'}</td>";
diff --git a/html/cgi-bin/remote.cgi b/html/cgi-bin/remote.cgi
index 5acce4e99..1b3dfed70 100644
--- a/html/cgi-bin/remote.cgi
+++ b/html/cgi-bin/remote.cgi
@@ -174,14 +174,20 @@ END
print "</form>\n";
-&Header::openbox('100%', 'left', $Lang::tr{'ssh host keys'});
+&Header::openbox('100%', 'center', $Lang::tr{'ssh host keys'});
-print "<table>\n";
+print "<table class='tbl'>\n";
print <<END
-<tr><td class='boldbase'><b>$Lang::tr{'ssh key'}</b></td>
- <td class='boldbase'><b>$Lang::tr{'ssh fingerprint'}</b></td>
- <td class='boldbase'><b>$Lang::tr{'ssh key size'}</b></td></tr>
+<thead>
+ <tr>
+ <th align="center"><strong>$Lang::tr{'ssh key'}</strong></th>
+ <th align="center"><strong>$Lang::tr{'type'}</strong></th>
+ <th align="center"><strong>$Lang::tr{'ssh fingerprint'}</strong></th>
+ <th align="center"><strong>$Lang::tr{'ssh key size'}</strong></th>
+ </tr>
+</thead>
+<tbody>
END
;
@@ -191,11 +197,11 @@ END
&viewkey("/etc/ssh/ssh_host_ecdsa_key.pub","ECDSA");
&viewkey("/etc/ssh/ssh_host_ed25519_key.pub","ED25519");
-print "</table>\n";
+print "</tbody>\n</table>\n";
&Header::closebox();
-&Header::openbox('100%', 'center', $Lang::tr{'ssh active sesstions'});
+&Header::openbox('100%', 'center', $Lang::tr{'ssh active sessions'});
print <<END;
<table class="tbl" width='66%'>
@@ -242,7 +248,7 @@ sub viewkey
my @temp = split(/ /,`/usr/bin/ssh-keygen -l -f $key`);
my $keysize = &Header::cleanhtml($temp[0],"y");
my $fingerprint = &Header::cleanhtml($temp[1],"y");
- print "<tr><td>$key ($name)</td><td><code>$fingerprint</code></td><td align='center'>$keysize</td></tr>\n";
+ print "<tr><td><code>$key</code></td><td align='center'>$name</td><td><code>$fingerprint</code></td><td align='center'>$keysize</td></tr>\n";
}
}
@@ -287,7 +293,7 @@ sub printactivelogins()
<tr bgcolor='$table_colour'>
<td>$username</td>
<td>$logintime</td>
- <td>$remoteip</td>
+ <td align='center'><a href='ipinfo.cgi?ip=$remoteip'>$remoteip</a></td>
<td align='center'><a href='country.cgi#$ccode'><img src='$flag_icon' border='0' alt='$ccode' title='$ccode' /></a></td>
<td>$rdns</td>
</tr>
diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl
index 68dce535f..edff684ea 100644
--- a/langs/de/cgi-bin/de.pl
+++ b/langs/de/cgi-bin/de.pl
@@ -1065,6 +1065,7 @@
'fwdfw additional' => 'Weitere Einstellungen',
'fwdfw addrule' => 'Regel hinzufügen/ändern:',
'fwdfw all icmp' => 'Alle ICMP-Typen',
+'fwdfw all subnets' => 'Alle Subnetze',
'fwdfw change' => 'Aktualisieren',
'fwdfw copy' => 'Kopieren',
'fwdfw delete' => 'Löschen',
@@ -2148,7 +2149,7 @@
'ssh' => 'SSH',
'ssh access' => 'SSH-Zugriff',
'ssh access tip' => 'IPFire SSH läuft auf dem nicht-standard Port 222!',
-'ssh active sesstions' => 'Aktive Benutzeranmeldungen',
+'ssh active sessions' => 'Aktive Benutzeranmeldungen',
'ssh fingerprint' => 'Fingerabdruck',
'ssh host keys' => 'SSH Host Schlüssel',
'ssh is disabled' => 'Secure Shell ist deaktiviert. Halte an.',
diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl
index 595e00a55..0c77ce4b2 100644
--- a/langs/en/cgi-bin/en.pl
+++ b/langs/en/cgi-bin/en.pl
@@ -1092,6 +1092,7 @@
'fwdfw additional' => 'Additional settings',
'fwdfw addrule' => 'Add/Edit rule:',
'fwdfw all icmp' => 'All ICMP types',
+'fwdfw all subnets' => 'All subnets',
'fwdfw change' => 'Update',
'fwdfw copy' => 'Copy',
'fwdfw delete' => 'Delete',
@@ -2186,7 +2187,7 @@
'ssh' => 'SSH',
'ssh access' => 'SSH Access',
'ssh access tip' => 'IPFire SSH is not using default port 222!',
-'ssh active sesstions' => 'Active logins',
+'ssh active sessions' => 'Active logins',
'ssh fingerprint' => 'Fingerprint',
'ssh host keys' => 'SSH Host Keys',
'ssh is disabled' => 'SSH is disabled. Stopping.',
hooks/post-receive
--
IPFire 2.x development tree