show GeoIP information in WebUI connection list
Commit Message
Show country flag for source and destination IP addresses at the connection
list ("connections.cgi"). This might be useful for debugging geoip based
firewall rules and to identify possible harmful connections (i.e. to offshore
locations or other countries rarely used).
This is another "nice to have" patch (trying to gain experience by adding
some simple features I always missed) but could come in handy sometimes.
Signed-off-by: Peter Müller <peter.mueller@link38.eu>
---
@@ -23,12 +23,14 @@ use strict;
use Net::IPv4Addr qw( :all );
use Switch;
+use Geo::IP::PurePerl;
# enable only the following on debugging purpose
#use warnings;
#use CGI::Carp 'fatalsToBrowser';
require '/var/ipfire/general-functions.pl';
+require "${General::swroot}/geoip-functions.pl";
require "${General::swroot}/lang.pl";
require "${General::swroot}/header.pl";
@@ -379,6 +382,7 @@ print <<END;
<a href="?sort_field=3&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
<a href="?sort_field=3&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
</th>
+ <th> </th>
<th style='text-align:center' colspan='2'>
<a href="?sort_field=2&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
<a href="?sort_field=2&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
@@ -386,6 +390,7 @@ print <<END;
<a href="?sort_field=4&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
<a href="?sort_field=4&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
</th>
+ <th> </th>
<th style='text-align:center'>
<a href="?sort_field=8&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
<a href="?sort_field=8&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
@@ -409,10 +414,16 @@ print <<END;
<th style='text-align:center' colspan='2'>
$Lang::tr{'source ip and port'}
</th>
+ <th style='text-align:center'>
+ $Lang::tr{'country'}
+ </th>
<th style='text-align:center' colspan='2'>
$Lang::tr{'dest ip and port'}
</th>
<th style='text-align:center'>
+ $Lang::tr{'country'}
+ </th>
+ <th style='text-align:center'>
$Lang::tr{'download'} /
<br>$Lang::tr{'upload'}
</th>
@@ -551,6 +562,12 @@ foreach my $line (@conntrack) {
$sip_extra .= "</a>";
}
+ my $gi1 = Geo::IP::PurePerl->new();
+ my $ccode1 = $gi1->country_code_by_name($sip_ret);
+ my $fcode1 = lc($ccode1);
+ my $flag_icon1 = &GeoIP::get_flag_icon($fcode1);
+
+
my $dip_extra;
if ($dip_ret && $dip ne $dip_ret) {
$dip_extra = "<span style='color:#FFFFFF;'>></span> ";
@@ -559,6 +576,10 @@ foreach my $line (@conntrack) {
$dip_extra .= "</a>";
}
+ my $gi2 = Geo::IP::PurePerl->new();
+ my $ccode2 = $gi2->country_code_by_name($dip_ret);
+ my $fcode2 = lc($ccode2);
+ my $flag_icon2 = &GeoIP::get_flag_icon($fcode2);
my $sport_extra;
if ($sport ne $sport_ret) {
@@ -601,6 +622,9 @@ foreach my $line (@conntrack) {
</a>
$sport_extra
</td>
+ <td style='text-align:center; background-color:$sip_colour;'>
+ <a href='country.cgi#$fcode1'><img src='$flag_icon1' border='0' align='absmiddle' title='$ccode1'></a>
+ </td>
<td style='text-align:center; background-color:$dip_colour;'>
<a href='/cgi-bin/ipinfo.cgi?ip=$dip'>
<span style='color:#FFFFFF;'>$dip</span>
@@ -613,6 +637,9 @@ foreach my $line (@conntrack) {
</a>
$dport_extra
</td>
+ <td style='text-align:center; background-color:$dip_colour;'>
+ <a href='country.cgi#$fcode2'><img src='$flag_icon2' border='0' align='absmiddle' title='$ccode2'></a>
+ </td>
<td style='text-align:center'>
$bytes_in / $bytes_out
</td>
@@ -683,3 +710,4 @@ sub ipcolour($) {
}
1;
+