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.
This commit is contained in:
Jan Engelhardt
2020-05-12 22:43:58 +02:00
parent 8bbb0cb3eb
commit b87366bb83
2 changed files with 11 additions and 15 deletions

View File

@@ -17,19 +17,15 @@ my $csv = Text::CSV_XS->new({
binary => 1, binary => 1,
eol => $/, eol => $/,
}); # or Text::CSV }); # or Text::CSV
my $source_dir = "."; my $input_file = "dbip-country-lite.csv";
my $target_dir = "."; my $target_dir = ".";
&Getopt::Long::Configure(qw(bundling)); &Getopt::Long::Configure(qw(bundling));
&GetOptions( &GetOptions(
"D=s" => \$target_dir, "D=s" => \$target_dir,
"S=s" => \$source_dir, "i=s" => \$input_file,
); );
if (!-d $source_dir) {
print STDERR "Source directory \"$source_dir\" does not exist.\n";
exit 1;
}
if (!-d $target_dir) { if (!-d $target_dir) {
print STDERR "Target directory \"$target_dir\" does not exist.\n"; print STDERR "Target directory \"$target_dir\" does not exist.\n";
exit 1; exit 1;
@@ -41,9 +37,11 @@ sub collect
{ {
my ($file, $fh, $row); my ($file, $fh, $row);
my (%country); my (%country);
if ($input_file eq "-") {
$file = "$source_dir/dbip-country-lite.csv"; open($fh, "<&STDIN");
open($fh, '<', $file) || die "Can't open DBIP database\n"; } else {
open($fh, "<", $input_file) || die "Cannot open $input_file: $!\n";
}
while ($row = $csv->getline($fh)) { while ($row = $csv->getline($fh)) {
my ($cc, $range); my ($cc, $range);

View File

@@ -5,7 +5,7 @@ xt_geoip_build \(em convert GeoIP.csv to packed format for xt_geoip
.SH Syntax .SH Syntax
.PP .PP
\fI/usr/libexec/xt_geoip/\fP\fBxt_geoip_build\fP [\fB\-D\fP \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 .SH Description
.PP .PP
xt_geoip_build is used to build packed raw representations of the range xt_geoip_build is used to build packed raw representations of the range
@@ -24,11 +24,9 @@ script requires it to be called with a path.
\fB\-D\fP \fItarget_dir\fP \fB\-D\fP \fItarget_dir\fP
Specifies the target directory into which the files are to be put. Defaults to ".". Specifies the target directory into which the files are to be put. Defaults to ".".
.TP .TP
\fB\-S\fP \fIsource_dir\fP \fB\-i\fP \fIinput_file\fP
Specifies the source directory from which to read the three files by the name Specifies the source location of the DBIP CSV file. Defaults to
of \fBGeoLite2\-Country\-Blocks\-IPv4.csv\fP, "dbip-country-lite.csv". Use "-" to read from stdin.
\fBGeoLite2\-Country\-Blocks\-IPv6.csv\fP and
\fBGeoLite2\-Country\-Locations\-en.csv\fP. Defaults to ".".
.SH Application .SH Application
.PP .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: