mirror of
git://git.code.sf.net/p/xtables-addons/xtables-addons
synced 2025-09-20 19:44:56 +02:00
Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
37f19c6b96 | ||
![]() |
73b96e25e4 | ||
![]() |
ca84ee8e15 | ||
![]() |
c9ba3507fc | ||
![]() |
b87366bb83 | ||
![]() |
8bbb0cb3eb | ||
![]() |
b4629f46c6 | ||
![]() |
f7f18f0c4f | ||
![]() |
9193adc835 | ||
![]() |
74fcd4a2ae | ||
![]() |
4b43df69f5 |
@@ -1,4 +1,4 @@
|
||||
AC_INIT([xtables-addons], [3.9])
|
||||
AC_INIT([xtables-addons], [3.10])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
@@ -57,7 +57,7 @@ if test -n "$kbuilddir"; then
|
||||
echo "WARNING: Version detection did not succeed. Continue at own luck.";
|
||||
else
|
||||
echo "$kmajor.$kminor.$kmicro.$kstable in $kbuilddir";
|
||||
if test "$kmajor" -gt 5 -o "$kmajor" -eq 5 -a "$kminor" -gt 6; then
|
||||
if test "$kmajor" -gt 5 -o "$kmajor" -eq 5 -a "$kminor" -gt 8; then
|
||||
echo "WARNING: That kernel version is not officially supported yet. Continue at own luck.";
|
||||
elif test "$kmajor" -eq 5 -a "$kminor" -ge 0; then
|
||||
:
|
||||
|
@@ -1,3 +1,8 @@
|
||||
v3.10 (2020-07-28)
|
||||
==================
|
||||
- Support for up to Linux 5.8
|
||||
|
||||
|
||||
v3.9 (2020-02-25)
|
||||
=================
|
||||
- Support for Linux 5.6 procfs changes
|
||||
|
@@ -46,7 +46,7 @@ Contains the binding table for the given \fIsubnet/mask\fP. Each line contains
|
||||
\fBprenat address\fR, \fBpostnat address\fR, \fBttl\fR (seconds until the entry
|
||||
times out), \fBlasthit\fR (last hit to the entry in seconds relative to system
|
||||
boot time). Please note that the \fBttl\fR and \fBlasthit\fR entries contain an
|
||||
'\fBS\fR' in case of a static binding.
|
||||
\(oq\fBS\fR\(cq in case of a static binding.
|
||||
.TP
|
||||
\fB/proc/net/xt_DNETMAP/\fR\fIsubnet\fR\fB_\fR\fImask\fR\fB_stat\fR
|
||||
Contains statistics for a given \fIsubnet/mask\fP. The line contains four
|
||||
|
@@ -1,5 +1,7 @@
|
||||
# -*- Makefile -*-
|
||||
|
||||
bin_SCRIPTS = xt_geoip_fetch
|
||||
|
||||
pkglibexec_SCRIPTS = xt_geoip_build xt_geoip_dl
|
||||
|
||||
man1_MANS = xt_geoip_build.1 xt_geoip_dl.1
|
||||
man1_MANS = xt_geoip_build.1 xt_geoip_dl.1 xt_geoip_fetch.1
|
||||
|
25
geoip/xt_geoip_build
Normal file → Executable file
25
geoip/xt_geoip_build
Normal file → Executable file
@@ -17,19 +17,18 @@ my $csv = Text::CSV_XS->new({
|
||||
binary => 1,
|
||||
eol => $/,
|
||||
}); # or Text::CSV
|
||||
my $source_dir = ".";
|
||||
my $quiet = 0;
|
||||
my $input_file = "dbip-country-lite.csv";
|
||||
my $target_dir = ".";
|
||||
|
||||
&Getopt::Long::Configure(qw(bundling));
|
||||
&GetOptions(
|
||||
"D=s" => \$target_dir,
|
||||
"S=s" => \$source_dir,
|
||||
"i=s" => \$input_file,
|
||||
"q" => \$quiet,
|
||||
"s" => sub { $target_dir = "/usr/share/xt_geoip"; },
|
||||
);
|
||||
|
||||
if (!-d $source_dir) {
|
||||
print STDERR "Source directory \"$source_dir\" does not exist.\n";
|
||||
exit 1;
|
||||
}
|
||||
if (!-d $target_dir) {
|
||||
print STDERR "Target directory \"$target_dir\" does not exist.\n";
|
||||
exit 1;
|
||||
@@ -41,9 +40,11 @@ sub collect
|
||||
{
|
||||
my ($file, $fh, $row);
|
||||
my (%country);
|
||||
|
||||
$file = "$source_dir/dbip-country-lite.csv";
|
||||
open($fh, '<', $file) || die "Can't open DBIP database\n";
|
||||
if ($input_file eq "-") {
|
||||
open($fh, "<&STDIN");
|
||||
} else {
|
||||
open($fh, "<", $input_file) || die "Cannot open $input_file: $!\n";
|
||||
}
|
||||
|
||||
while ($row = $csv->getline($fh)) {
|
||||
my ($cc, $range);
|
||||
@@ -63,12 +64,12 @@ sub collect
|
||||
$country{$cc}->{pool_v6}->add_range($range);
|
||||
}
|
||||
|
||||
if ($. % 4096 == 0) {
|
||||
if (!$quiet && $. % 4096 == 0) {
|
||||
print STDERR "\r\e[2K$. entries";
|
||||
}
|
||||
}
|
||||
|
||||
print STDERR "\r\e[2K$. entries total\n";
|
||||
print STDERR "\r\e[2K$. entries total\n" unless ($quiet);
|
||||
|
||||
close($fh);
|
||||
|
||||
@@ -106,7 +107,7 @@ sub writeCountry
|
||||
printf "%5u IPv%s ranges for %s\n",
|
||||
scalar(@ranges),
|
||||
($family == AF_INET ? '4' : '6'),
|
||||
$iso_code;
|
||||
$iso_code unless ($quiet);
|
||||
|
||||
my $file = "$target_dir/".uc($iso_code).".iv".($family == AF_INET ? '4' : '6');
|
||||
if (!open($fh, '>', $file)) {
|
||||
|
@@ -5,7 +5,7 @@ xt_geoip_build \(em convert GeoIP.csv to packed format for xt_geoip
|
||||
.SH Syntax
|
||||
.PP
|
||||
\fI/usr/libexec/xt_geoip/\fP\fBxt_geoip_build\fP [\fB\-D\fP
|
||||
\fItarget_dir\fP] [\fB\-S\fP \fIsource_dir\fP]
|
||||
\fItarget_dir\fP] [\fB\-i\fP \fIinput_file\fP]
|
||||
.SH Description
|
||||
.PP
|
||||
xt_geoip_build is used to build packed raw representations of the range
|
||||
@@ -24,16 +24,18 @@ script requires it to be called with a path.
|
||||
\fB\-D\fP \fItarget_dir\fP
|
||||
Specifies the target directory into which the files are to be put. Defaults to ".".
|
||||
.TP
|
||||
\fB\-S\fP \fIsource_dir\fP
|
||||
Specifies the source directory from which to read the three files by the name
|
||||
of \fBGeoLite2\-Country\-Blocks\-IPv4.csv\fP,
|
||||
\fBGeoLite2\-Country\-Blocks\-IPv6.csv\fP and
|
||||
\fBGeoLite2\-Country\-Locations\-en.csv\fP. Defaults to ".".
|
||||
\fB\-i\fP \fIinput_file\fP
|
||||
Specifies the source location of the DBIP CSV file. Defaults to
|
||||
"dbip-country-lite.csv". Use "-" to read from stdin.
|
||||
.TP
|
||||
\fB\-s\fP
|
||||
"System mode". Equivalent to \fB\-D /usr/share/xt_geoip\fP.
|
||||
.SH Application
|
||||
.PP
|
||||
Shell commands to build the databases and put them to where they are expected:
|
||||
Shell commands to build the databases and put them to where they are expected
|
||||
(usually run as root):
|
||||
.PP
|
||||
xt_geoip_build \-D /usr/share/xt_geoip
|
||||
xt_geoip_build \-s
|
||||
.SH See also
|
||||
.PP
|
||||
xt_geoip_dl(1)
|
||||
|
@@ -1,7 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
rm -rf GeoLite2-Country-CSV_*
|
||||
|
||||
wget -q http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.zip
|
||||
unzip -q GeoLite2-Country-CSV.zip
|
||||
rm -f GeoLite2-Country-CSV.zip
|
||||
timestamp=$(date "+%Y-%m")
|
||||
wget -q "https://download.db-ip.com/free/dbip-country-lite-$timestamp.csv.gz" -O- | \
|
||||
gzip -cd >dbip-country-lite.csv
|
||||
|
@@ -53,8 +53,9 @@ foreach my $cc (@ARGV) {
|
||||
binmode($fh);
|
||||
|
||||
while (($bytes = read($fh, $buffer, AF_INET_SIZE * 2)) == AF_INET_SIZE * 2) {
|
||||
my $start = inet_ntop(AF_INET, substr($buffer, 0, AF_INET_SIZE));
|
||||
my $end = inet_ntop(AF_INET, substr($buffer, AF_INET_SIZE));
|
||||
my ($start, $end) = unpack('a4a4', $buffer);
|
||||
$start = inet_ntop(AF_INET, $start);
|
||||
$end = inet_ntop(AF_INET, $end);
|
||||
print $start, '-', $end, "\n";
|
||||
}
|
||||
close($fh);
|
||||
@@ -75,8 +76,9 @@ foreach my $cc (@ARGV) {
|
||||
binmode($fh);
|
||||
|
||||
while (($bytes = read($fh, $buffer, AF_INET6_SIZE * 2)) == AF_INET6_SIZE * 2) {
|
||||
my $start = inet_ntop(AF_INET6, substr($buffer, 0, AF_INET6_SIZE));
|
||||
my $end = inet_ntop(AF_INET6, substr($buffer, AF_INET6_SIZE));
|
||||
my ($start, $end) = unpack('a16a16', $buffer);
|
||||
$start = inet_ntop(AF_INET6, $start);
|
||||
$end = inet_ntop(AF_INET6, $end);
|
||||
print $start, '-', $end, "\n";
|
||||
}
|
||||
close($fh);
|
||||
|
35
geoip/xt_geoip_fetch.1
Normal file
35
geoip/xt_geoip_fetch.1
Normal file
@@ -0,0 +1,35 @@
|
||||
.TH xt_geoip_fetch 1 "2020-04-30" "xtables-addons" "xtables-addons"
|
||||
.SH Name
|
||||
.PP
|
||||
xt_geoip_fetch \(em dump a country database to stdout
|
||||
.SH Syntax
|
||||
.PP
|
||||
\fBxt_geoip_fetch\fP [\fB\-D\fP
|
||||
\fIdatabase_dir\fP] [\fB-4\fP] [\fB-6\fP] \fIcc\fP [ \fIcc\fP ... ]
|
||||
.SH Description
|
||||
.PP
|
||||
xt_geoip_fetch unpacks a country's IPv4 or IPv6 databases and dumps
|
||||
them to standard output as a sorted, non-overlaping list of ranges (which
|
||||
is how they're represented in the database) suitable for browsing or
|
||||
further processing.
|
||||
.PP Options
|
||||
.TP
|
||||
\fB\-D\fP \fIdatabase_dir\fP
|
||||
Specifies the directory into which the files have been put. Defaults to ".".
|
||||
.TP
|
||||
\fB-4\fP
|
||||
Specifies IPv4 data only.
|
||||
.TP
|
||||
\fB-6\fP
|
||||
Specifies IPv6 data only.
|
||||
.TP
|
||||
\fIcc\fP [ \fIcc\fP ... ]
|
||||
The ISO-3166 country code names of the desired countries' databases.
|
||||
.SH Application
|
||||
.PP
|
||||
Shell command to dump the list of Swiss IPv6 address ranges:
|
||||
.PP
|
||||
xt_geoip_fetch \-D /usr/share/xt_geoip \-6 ch
|
||||
.SH See also
|
||||
.PP
|
||||
xt_geoip_build(1)
|
Reference in New Issue
Block a user