AC_SUBST([regular_CFLAGS])
AC_SUBST([kbuilddir])
AC_SUBST([xtlibdir])
-AC_CONFIG_FILES([Makefile Makefile.iptrules Makefile.mans
+AC_CONFIG_FILES([Makefile Makefile.iptrules Makefile.mans geoip/Makefile
extensions/Makefile extensions/ACCOUNT/Makefile
extensions/ipset/Makefile extensions/pknock/Makefile])
AC_OUTPUT
The country is inputed by its ISO-3166 code.
.PP
The extra files you will need is the binary database files. They are generated
-from a country-subnet database with the geoip_csv_iv0.pl tool, available at
-http://jengelh.medozas.de/files/geoip/ . The files MUST be moved to
-/usr/share/xt_geoip/
+from a country-subnet database with the geoip_csv_iv0.pl tool that should be
+available in /usr/lib(exec)/xtables-addons/ . The resulting files MUST be moved
+to /usr/share/xt_geoip/
as the shared library is statically looking for this pathname (e.g.
/usr/share/xt_geoip/LE/de.iv0).
--- /dev/null
+#!/usr/bin/perl
+#
+# Converter for MaxMind CSV database to binary, for xt_geoip
+# Copyright © Jan Engelhardt <jengelh@medozas.de>, 2008
+#
+# Use -b argument to create big-endian tables.
+#
+use Getopt::Long;
+use IO::Handle;
+use Text::CSV_XS; # or trade for Text::CSV
+use strict;
+
+my %country;
+my %names;
+my $csv = Text::CSV_XS->new({binary => 0, eol => $/}); # or Text::CSV
+my $mode = "VV";
+
+&Getopt::Long::Configure(qw(bundling));
+&GetOptions("b" => sub { $mode = "NN"; });
+
+while (my $row = $csv->getline(*ARGV)) {
+ if (!defined($country{$row->[4]})) {
+ $country{$row->[4]} = [];
+ $names{$row->[4]} = $row->[5];
+ }
+ my $c = $country{$row->[4]};
+ push(@$c, [$row->[2], $row->[3]]);
+ if ($. % 4096 == 0) {
+ print STDERR "\r\e[2K$. entries";
+ }
+}
+
+print STDERR "\r\e[2K$. entries total\n";
+
+foreach my $iso_code (sort keys %country) {
+ printf "%5u ranges for %s %s\n",
+ scalar(@{$country{$iso_code}}),
+ $iso_code, $names{$iso_code};
+
+ open(my $fh, ">".uc($iso_code).".iv0");
+ foreach my $range (@{$country{$iso_code}}) {
+ print $fh pack($mode, $range->[0], $range->[1]);
+ }
+ close $fh;
+}
--- /dev/null
+#!/bin/sh
+
+rm -f GeoIPv6.csv{,.gz} GeoIPCountryCSV.zip GeoIPCountryWhois.csv;
+wget \
+ http://geolite.maxmind.com/download/geoip/database/GeoIPv6.csv.gz \
+ http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip;
+gzip -d GeoIPv6.csv.gz;
+unzip GeoIPCountryCSV.zip;