mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-26 02:42:58 +02:00
Hinzugefügt:
* GeoIP git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@140 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8
This commit is contained in:
98
html/cgi-bin/country.cgi
Executable file
98
html/cgi-bin/country.cgi
Executable file
@@ -0,0 +1,98 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
#
|
||||
# This code is distributed under the terms of the GPL
|
||||
#
|
||||
# Country Codes
|
||||
#
|
||||
# 01.01.2006 Stephen Crooks
|
||||
|
||||
use strict;
|
||||
|
||||
use Locale::Country;
|
||||
|
||||
my $flagdir = '/home/httpd/html/images/flags';
|
||||
my $lines = '1';
|
||||
my $lines2 = '';
|
||||
my @flaglist=();
|
||||
my @flaglistfiles=();
|
||||
my $flag = '';
|
||||
|
||||
require '/var/ipcop/general-functions.pl';
|
||||
require "${General::swroot}/lang.pl";
|
||||
require "${General::swroot}/header.pl";
|
||||
|
||||
&Header::showhttpheaders();
|
||||
|
||||
&Header::openpage('Country Codes', 1, '');
|
||||
&Header::openbigbox('100%', 'LEFT');
|
||||
|
||||
&Header::openbox('100%', 'LEFT', 'Flags & Country Codes:');
|
||||
print "<TABLE WIDTH='100%'>";
|
||||
print "<tr><td width='5%'><b>Flag</b></td>";
|
||||
print "<td width='5%'><b>Code</b></td>";
|
||||
print "<td width='40%'><b>Country</b></td>";
|
||||
print "<td><b> </b></td>";
|
||||
print "<td width='5%'><b>Flag</b></td>";
|
||||
print "<td width='5%'><b>Code</b></td>";
|
||||
print "<td width='40%'><b>Country</b></td></tr>";
|
||||
|
||||
@flaglist = <$flagdir/*>;
|
||||
|
||||
undef @flaglistfiles;
|
||||
|
||||
foreach (@flaglist)
|
||||
{
|
||||
if (!-d) { push(@flaglistfiles,substr($_,rindex($_,"/")+1)); }
|
||||
}
|
||||
|
||||
foreach $flag (@flaglistfiles)
|
||||
{
|
||||
$lines++;
|
||||
|
||||
my $flagcode = uc(substr($flag, 0, 2));
|
||||
my $fcode = lc($flagcode);
|
||||
my $country = Locale::Country::code2country($fcode);
|
||||
if($fcode eq 'eu') { $country = 'Europe'; }
|
||||
if($fcode eq 'tp') { $country = 'East Timor'; }
|
||||
if($fcode eq 'yu') { $country = 'Yugoslavia'; }
|
||||
if ($lines % 2) {
|
||||
print "<td><a name='$fcode'/><img src='/images/flags/$fcode.png' border='0' align='absmiddle' alt='$flagcode'</td>";
|
||||
print "<td>$flagcode</td>";
|
||||
print "<td>$country</td></tr>\n";
|
||||
}
|
||||
else {
|
||||
$lines2++;
|
||||
if($lines2 % 2) {
|
||||
print "<tr bgcolor='${Header::table1colour}'>";
|
||||
} else {
|
||||
print "<tr bgcolor='${Header::table2colour}'>";
|
||||
}
|
||||
print "<td><a name='$fcode'/><img src='/images/flags/$fcode.png' border='0' align='absmiddle' alt='$flagcode'</td>";
|
||||
print "<td>$flagcode</td>";
|
||||
print "<td>$country</td>";
|
||||
#print "<td><img src='/blob.gif' alt='*' /></td>";
|
||||
print "<td> </td>";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
print "</TABLE>";
|
||||
&Header::closebox();
|
||||
|
||||
&Header::closebigbox();
|
||||
|
||||
print <<END
|
||||
<div align='center'>
|
||||
<table width='80%'>
|
||||
<tr>
|
||||
<td align='center'><a href='$ENV{'HTTP_REFERER'}'>$Lang::tr{'back'}</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
END
|
||||
;
|
||||
|
||||
&Header::closepage();
|
||||
|
||||
|
||||
@@ -13,6 +13,9 @@
|
||||
#
|
||||
use strict;
|
||||
|
||||
use Geo::IP::PurePerl;
|
||||
use Getopt::Std;
|
||||
|
||||
# enable only the following on debugging purpose
|
||||
#use warnings;
|
||||
#use CGI::Carp 'fatalsToBrowser';
|
||||
@@ -307,6 +310,7 @@ print <<END
|
||||
<td width='5%' align='center' class='boldbase'><b>$Lang::tr{'iface'}</b></td>
|
||||
<td width='5%' align='center' class='boldbase'><b>$Lang::tr{'proto'}</b></td>
|
||||
<td width='16%' align='center' class='boldbase'><b>$Lang::tr{'source'}</b></td>
|
||||
<td align='center' class='boldbase'><b>Flag</b></td>
|
||||
<td width='10%' align='center' class='boldbase'><b>$Lang::tr{'src port'}</b></td>
|
||||
<td width='5%' align='center' class='boldbase'><b>$Lang::tr{'mac address'}</b></td>
|
||||
<td width='16%' align='center' class='boldbase'><b>$Lang::tr{'destination'}</b></td>
|
||||
@@ -326,7 +330,6 @@ foreach $_ (@log)
|
||||
my $comment = $3;
|
||||
my $packet = $4;
|
||||
|
||||
|
||||
$packet =~ /IN=(\w+)/; my $iface=$1;
|
||||
$packet =~ /SRC=([\d\.]+)/; my $srcaddr=$1;
|
||||
$packet =~ /DST=([\d\.]+)/; my $dstaddr=$1;
|
||||
@@ -334,6 +337,11 @@ foreach $_ (@log)
|
||||
$packet =~ /PROTO=(\w+)/; my $proto=$1;
|
||||
$packet =~ /SPT=(\d+)/; my $srcport=$1;
|
||||
$packet =~ /DPT=(\d+)/; my $dstport=$1;
|
||||
|
||||
my $gi = Geo::IP::PurePerl->new();
|
||||
my $ccode = $gi->country_code_by_name($srcaddr);
|
||||
my $fcode = lc($ccode);
|
||||
|
||||
my $servi = uc(getservbyport($srcport, lc($proto)));
|
||||
if ($servi ne '' && $srcport < 1024) {
|
||||
$srcport = "$srcport($servi)"; }
|
||||
@@ -352,11 +360,8 @@ foreach $_ (@log)
|
||||
<td align='center'>$comment</td>
|
||||
<td align='center'>$iface</td>
|
||||
<td align='center'>$proto</td>
|
||||
<td align='center'>
|
||||
<table width='100%' cellpadding='0' cellspacing='0'><tr>
|
||||
<td align='center'><a href='/cgi-bin/ipinfo.cgi?ip=$srcaddr'>$srcaddr</a></td>
|
||||
</tr></table>
|
||||
</td>
|
||||
<td align='center'><a href='../country.cgi#$fcode'><img src='/images/flags/$fcode.png' border='0' align='absmiddle' alt='$ccode'></a></td>
|
||||
<td align='center'>$srcport</td>
|
||||
<td align='center'>$macaddr</td>
|
||||
<td align='center'>
|
||||
|
||||
Reference in New Issue
Block a user