Compare commits

..

11 Commits
v3.9 ... v3.10

Author SHA1 Message Date
Jan Engelhardt
37f19c6b96 Xtables-addons 3.10 2020-07-28 10:02:34 +02:00
Jeremy Sowden
73b96e25e4 doc: fix quoted string in libxt_DNETMAP manpage
In roff, lines beginning with a single quote are control lines.  In the
libxt_DNETMAP man-page there is a single-quoted string at the beginning
of a line, which troff tries and fails to interpret as a macro:

	troff: <standard input>:49: warning: macro 'S'' not defined

This means that the line is not output.

Replace the single quotes with the appropriate escape-sequences.

Fixes: v2.3~9 ("doc: spelling and grammar corrections to DNETMAP")
Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
2020-07-28 10:02:26 +02:00
Philip Prindeville
ca84ee8e15 geoip: add quiet flag to xt_geoip_build
Conceivably someone might want to run a refresh of the geoip database
from within a script, particularly an unattended script such as a cron
job. Do not generate output in that case.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2020-05-26 14:58:04 +02:00
Jan Engelhardt
c9ba3507fc geoip: add -s option to xt_geoip_build 2020-05-12 22:49:37 +02:00
Jan Engelhardt
b87366bb83 geoip: replace xt_geoip_build's -S option by new option -i
The Maxmind DB came with potentially multiple files, but DBIP is
currently just one. Drop the -S argument and instead introduce -i.
2020-05-12 22:47:00 +02:00
Jan Engelhardt
8bbb0cb3eb geoip: set +x again on xt_geoip_build 2020-05-12 22:38:32 +02:00
Jan Engelhardt
b4629f46c6 build: do install xt_geoip_fetch.1 2020-05-01 23:07:16 +02:00
Philip Prindeville
f7f18f0c4f geoip: install and document xt_geoip_fetch
Add a man page for xt_geoip_fetch.1 and include it as part of
the installed scripts.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2020-05-01 23:04:55 +02:00
Jan Engelhardt
9193adc835 geoip: pipe wget right into gzip
Skip over creating temporary files.
2020-04-21 12:01:52 +02:00
Philip Prindeville
74fcd4a2ae geoip: simplify unpacking start/end tuples from database
Use unpack() to separate start/end instead of substr().

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2020-04-21 12:00:54 +02:00
Philip Prindeville
4b43df69f5 geoip: update download script for DBIP database
Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2020-04-21 12:00:50 +02:00
9 changed files with 78 additions and 33 deletions

View File

@@ -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
:

View File

@@ -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

View File

@@ -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

View File

@@ -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
View 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)) {

View 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)

View File

@@ -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

View File

@@ -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
View 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)