#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";
&Header::closebox();
}
-&Header::openbox('100%', 'left', "$Lang::tr{'settings'}:");
+&Header::openbox('100%', 'left', "$Lang::tr{'settings'}");
print <<END
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
&Header::openbox('100%', 'left', $Lang::tr{'log'});
print "<p><b>$Lang::tr{'firewall hits'} $date: $lines</b></p>";
-$start = $lines - ${Header::viewsize} if ($start >= $lines - ${Header::viewsize});
+my $lastPageIndex = $lines - ${Header::viewsize};
+$start = $lastPageIndex if ($start >= $lastPageIndex);
$start = 0 if ($start < 0);
my $prev;
}
my $next;
- if ($start == $lines - ${Header::viewsize}) {
+ if ($start == $lastPageIndex) {
$next = -1;
} else {
$next = $start + ${Header::viewsize};
if ($lines != 0) { &oldernewer(); }
print <<END
-<table width='100%'>
+<table width='100%' class='tbl'>
<tr>
- <td align='center' class='boldbase'><b>$Lang::tr{'time'}</b></td>
- <td align='center' class='boldbase'><b>$Lang::tr{'chain'}</b></td>
- <td align='center' class='boldbase'><b>$Lang::tr{'iface'}</b></td>
- <td align='center' class='boldbase'><b>$Lang::tr{'proto'}</b></td>
- <td align='center' class='boldbase'><b>$Lang::tr{'source'}<br/>$Lang::tr{'destination'}</b></td>
- <td align='center' class='boldbase'><b>$Lang::tr{'src port'}<br />$Lang::tr{'dst port'}</b></td>
- <td align='center' class='boldbase'><b>Flag</b></td>
- <td align='center' class='boldbase'><b>$Lang::tr{'mac address'}</b></td>
+ <th align='center' class='boldbase'><b>$Lang::tr{'time'}</b></th>
+ <th align='center' class='boldbase'><b>$Lang::tr{'chain'}</b></th>
+ <th align='center' class='boldbase'><b>$Lang::tr{'iface'}</b></th>
+ <th align='center' class='boldbase'><b>$Lang::tr{'proto'}</b></th>
+ <th align='center' class='boldbase'><b>$Lang::tr{'source'}<br/>$Lang::tr{'destination'}</b></th>
+ <th align='center' class='boldbase'><b>$Lang::tr{'src port'}<br />$Lang::tr{'dst port'}</b></th>
+ <th align='center' class='boldbase'><b>$Lang::tr{'country'}</b></th>
+ <th align='center' class='boldbase'><b>$Lang::tr{'mac address'}</b></th>
</tr>
END
;
my $comment = $3;
my $packet = $4;
- $packet =~ /IN=(\w+)/; my $iface=$1; if ( $1 eq "27" || $1 eq "20"){ $iface="";}
- $packet =~ /SRC=([\d\.]+)/; my $srcaddr=$1;
- $packet =~ /DST=([\d\.]+)/; my $dstaddr=$1;
- $packet =~ /MAC=([\w+\:]+)/; my $macaddr=$1;
- $packet =~ /PROTO=(\w+)/; my $proto=$1;
- $packet =~ /SPT=(\d+)/; my $srcport=$1;
- $packet =~ /DPT=(\d+)/; my $dstport=$1;
+ my ($iface, $srcaddr, $dstaddr, $macaddr, $proto, $srcport, $dstport);
+ $iface=$1 if $packet =~ /IN=(\w+)/;
+ $srcaddr=$1 if $packet =~ /SRC=([\d\.]+)/;
+ $dstaddr=$1 if $packet =~ /DST=([\d\.]+)/;
+ $macaddr=$1 if $packet =~ /MAC=([\w+\:]+)/;
+ $proto=$1 if $packet =~ /PROTO=(\w+)/;
+ $srcport=$1 if $packet =~ /SPT=(\d+)/;
+ $dstport=$1 if $packet =~ /DPT=(\d+)/;
my $gi = Geo::IP::PurePerl->new();
my $ccode = $gi->country_code_by_name($srcaddr);
$dstport = "$dstport($servi)";}
my @mactemp = split(/:/,$macaddr);
$macaddr = "$mactemp[6]:$mactemp[7]:$mactemp[8]:$mactemp[9]:$mactemp[10]:$mactemp[11]";
+ my $col="";
if ($lines % 2) {
- print "<tr bgcolor='$color{'color20'}'>\n"; }
+ print "<tr>";
+ $col="bgcolor='$color{'color20'}'"; }
else {
- print "<tr bgcolor='$color{'color22'}'>\n"; }
+ print "<tr>";
+ $col="bgcolor='$color{'color22'}'"; }
print <<END
- <td align='center'>$time</td>
- <td align='center'>$comment</td>
- <td align='center'>$iface</td>
- <td align='center'>$proto</td>
- <td align='center'><a href='/cgi-bin/ipinfo.cgi?ip=$srcaddr'>$srcaddr</a><br /><a href='/cgi-bin/ipinfo.cgi?ip=$dstaddr'>$dstaddr</a></td>
- <td align='center'>$srcport<br/>$dstport</td>
+ <td align='center' $col>$time</td>
+ <td align='center' $col>$comment</td>
+ <td align='center' $col>$iface</td>
+ <td align='center' $col>$proto</td>
+ <td align='center' $col><a href='/cgi-bin/ipinfo.cgi?ip=$srcaddr'>$srcaddr</a><br /><a href='/cgi-bin/ipinfo.cgi?ip=$dstaddr'>$dstaddr</a></td>
+ <td align='center' $col>$srcport<br/>$dstport</td>
END
;
- if ( $fcode ne "" ){
- print "<td align='center'><a href='../country.cgi#$fcode'><img src='/images/flags/$fcode.png' border='0' align='absmiddle' alt='$ccode'></a></td>";}
- else {
- print "<td align='center'></td>";}
+ # Get flag icon for of the country.
+ my $flag_icon = &GeoIP::get_flag_icon($fcode);
+
+ if ( $flag_icon) {
+ print "<td align='center' $col><a href='../country.cgi#$fcode'><img src='$flag_icon' border='0' align='absmiddle' alt='$ccode'></a></td>";
+ } else {
+ print "<td align='center' $col></td>";
+ }
+
print <<END
- <td align='center'>$macaddr</td>
+ <td align='center' $col>$macaddr</td>
</tr>
END
;
print "<td align='center' width='50%'>";
if ($prev != -1) {
+ print "<a href='/cgi-bin/logs.cgi/firewalllog.dat?0,$cgiparams{'MONTH'},$cgiparams{'DAY'}'>$Lang::tr{'first'}</a> ";
print "<a href='/cgi-bin/logs.cgi/firewalllog.dat?$prev,$cgiparams{'MONTH'},$cgiparams{'DAY'}'>$Lang::tr{'older'}</a>"; }
else {
- print "$Lang::tr{'older'}"; }
+ print "$Lang::tr{'first'} $Lang::tr{'older'}"; }
print "</td>\n";
print "<td align='center' width='50%'>";
if ($next >= 0) {
- print "<a href='/cgi-bin/logs.cgi/firewalllog.dat?$next,$cgiparams{'MONTH'},$cgiparams{'DAY'}'>$Lang::tr{'newer'}</a>"; }
+ print "<a href='/cgi-bin/logs.cgi/firewalllog.dat?$next,$cgiparams{'MONTH'},$cgiparams{'DAY'}'>$Lang::tr{'newer'}</a> ";
+ print "<a href='/cgi-bin/logs.cgi/firewalllog.dat?$lastPageIndex,$cgiparams{'MONTH'},$cgiparams{'DAY'}'>$Lang::tr{'last'}</a>"; }
else {
- print "$Lang::tr{'newer'}"; }
+ print "$Lang::tr{'newer'} $Lang::tr{'last'} "; }
print "</td>\n";
print <<END