summaryrefslogtreecommitdiff
path: root/opt/geoip
diff options
context:
space:
mode:
Diffstat (limited to 'opt/geoip')
-rw-r--r--opt/geoip/.footprint21
-rw-r--r--opt/geoip/.signature7
-rw-r--r--opt/geoip/MAKEPKG37
-rw-r--r--opt/geoip/geoip_update.sh86
4 files changed, 151 insertions, 0 deletions
diff --git a/opt/geoip/.footprint b/opt/geoip/.footprint
new file mode 100644
index 0000000..bd926dc
--- /dev/null
+++ b/opt/geoip/.footprint
@@ -0,0 +1,21 @@
+drwxr-xr-x root/root usr/
+drwxr-xr-x root/root usr/bin/
+-rwxr-xr-x root/root usr/bin/geoip_update
+-rwxr-xr-x root/root usr/bin/geoiplookup
+-rwxr-xr-x root/root usr/bin/geoiplookup6
+drwxr-xr-x root/root usr/include/
+-rw-r--r-- root/root usr/include/GeoIP.h
+-rw-r--r-- root/root usr/include/GeoIPCity.h
+drwxr-xr-x root/root usr/lib/
+-rw-r--r-- root/root usr/lib/libGeoIP.a
+-rwxr-xr-x root/root usr/lib/libGeoIP.so.1.6.12
+lrwxrwxrwx root/root usr/lib/libGeoIP.so -> libGeoIP.so.1.6.12
+lrwxrwxrwx root/root usr/lib/libGeoIP.so.1 -> libGeoIP.so.1.6.12
+drwxr-xr-x root/root usr/lib/pkgconfig/
+-rw-r--r-- root/root usr/lib/pkgconfig/geoip.pc
+drwxr-xr-x root/root usr/share/
+drwxr-xr-x root/root usr/share/GeoIP/
+drwxr-xr-x root/root usr/share/man/
+drwxr-xr-x root/root usr/share/man/man1/
+-rw-r--r-- root/root usr/share/man/man1/geoiplookup.1.gz
+-rw-r--r-- root/root usr/share/man/man1/geoiplookup6.1.gz
diff --git a/opt/geoip/.signature b/opt/geoip/.signature
new file mode 100644
index 0000000..a449378
--- /dev/null
+++ b/opt/geoip/.signature
@@ -0,0 +1,7 @@
+RWTZ9IduCSQ/mK62peiPccu3foq2ZnJ3PzdCUKxlqmkdVg20K5vEbE61/2svqllqdRj+xDz1x6XUI2z899eDAbEWEw7atNmOVws=
+
+SHA256 (MAKEPKG) = e94374be736fb0ab6b42727c78a176f627d57c1ba5237d08edb7850a283ca3e7
+SHA256 (.footprint) = 09e9fa6e00a47793ded587534518a20b9e793ff561853903aef1fd11fecc28d0
+SHA256 (GeoIP-1.6.12.tar.gz) = 1dfb748003c5e4b7fd56ba8c4cd786633d5d6f409547584f6910398389636f80
+SHA256 (geoip_update.sh) = a814a6fc80144bb3850a02949e7e7311dd7d59d30b8da22f289d86b0ac4f18d6
+SHA256 (geoip#1.6.12-1.pkg.tar.gz) = 39cbd03bfab6e111baf00d4da1a767730c8070b3c7a84cd2034b4595df5df3c9
diff --git a/opt/geoip/MAKEPKG b/opt/geoip/MAKEPKG
new file mode 100644
index 0000000..924fc18
--- /dev/null
+++ b/opt/geoip/MAKEPKG
@@ -0,0 +1,37 @@
+#!/bin/mkpkg
+# description: Non-DNS IP-to-country resolver C library and utilities
+# url: https://github.com/maxmind/geoip-api-c
+
+name=geoip
+version=1.6.12
+release=1
+makedeps=(libtool autoconf automake)
+source=(https://github.com/maxmind/geoip-api-c/releases/download/v$version/GeoIP-$version.tar.gz
+ geoip_update.sh)
+
+sha256sums=(
+ "1dfb748003c5e4b7fd56ba8c4cd786633d5d6f409547584f6910398389636f80"
+ "a814a6fc80144bb3850a02949e7e7311dd7d59d30b8da22f289d86b0ac4f18d6"
+)
+
+build() {
+ cd $SRC/GeoIP-$version
+
+ ./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --sysconfdir=/etc
+
+ make
+ make DESTDIR=$PKG install
+
+ install -d $PKG/usr/share/GeoIP
+ install -m 755 $SRC/geoip_update.sh $PKG/usr/bin/geoip_update
+}
+
+signify() {
+ untrusted comment: public key
+ RWTZ9IduCSQ/mL8337TEUinPwT92xFEUpD92hkS7IxcOnzTt9QdpohT3
+}
+
+#vim: filetype=sh
diff --git a/opt/geoip/geoip_update.sh b/opt/geoip/geoip_update.sh
new file mode 100644
index 0000000..a7db14f
--- /dev/null
+++ b/opt/geoip/geoip_update.sh
@@ -0,0 +1,86 @@
+#!/bin/bash
+# Download legacy GeoIP databases from https://mailfud.org/geoip-legacy/
+# Deploy to /etc/cron.weekly/geoip_update (no .sh extension)
+
+DBDIR=/usr/share/GeoIP
+FILES="GeoIP GeoIPv6 GeoIPCity GeoIPCityv6 GeoIPASNum GeoIPASNumv6"
+
+# If http proxy needed, uncomment:
+#export https_proxy="http://foo.bar:3128"
+
+# Uncomment to enable iptables xt_geoip updating (requires xtables-addons):
+#XTABLES="GeoIP-legacy.csv"
+#XT_GEOIP_BUILD=/usr/lib/xtables-addons/xt_geoip_build
+
+test -w "$DBDIR" && cd "$DBDIR" 2>/dev/null || { echo "Invalid directory: $DBDIR"; exit 1; }
+
+# Stagger start when run from cron
+[ ! -t 0 ] && sleep $((RANDOM / 54))
+
+[ -n "$XTABLES" ] && FILES="$FILES $XTABLES"
+
+for f in $FILES; do
+ f=${f%.gz}
+ [[ ! "$f" =~ \.csv ]] && f=${f%.dat}.dat
+
+ curl -sSf --max-time 30 -o "$f.gz" "https://mailfud.org/geoip-legacy/$f.gz"
+ ret=$?
+ if [ $ret -ne 0 ]; then
+ printf 'curl failed for %s: exit %s\n' "$f.gz" "$ret" >&2
+ continue
+ fi
+
+ if gzip -dc "$f.gz" > "$f.tmp"; then
+ # Handle first-run where $f may not exist yet
+ if [ ! -f "$f" ] || ! diff -q "$f" "$f.tmp" >/dev/null 2>&1; then
+ [ "$f" = "$XTABLES" ] && XUPD=1
+ printf 'updating %s\n' "$f"
+ chmod 644 "$f.tmp"
+ mv -f "$f.tmp" "$f"
+ else
+ printf '%s is up to date\n' "$f"
+ fi
+ else
+ printf 'gunzip failed for %s\n' "$f" >&2
+ fi
+ rm -f "$f.tmp" "$f.gz"
+done
+
+[ -z "$XTABLES" ] && exit 0
+
+if [ -z "$XT_GEOIP_BUILD" ]; then
+ if [ -f /usr/lib/xtables-addons/xt_geoip_build ]; then
+ XT_GEOIP_BUILD=/usr/lib/xtables-addons/xt_geoip_build
+ elif [ -f /usr/libexec/xtables-addons/xt_geoip_build ]; then
+ XT_GEOIP_BUILD=/usr/libexec/xtables-addons/xt_geoip_build
+ else
+ echo "xt_geoip_build not found; xtables-addons not installed?" >&2
+ exit 1
+ fi
+fi
+
+[ ! -f "GeoIP-legacy.csv" ] && {
+ echo "GeoIP-legacy.csv not found, cannot update xt_geoip" >&2
+ exit 1
+}
+
+if [ -n "$XUPD" ] || [ -z "$(find /usr/share/xt_geoip -name 'US.*' -mtime -14 2>/dev/null)" ]; then
+ mkdir -m 755 -p /usr/share/xt_geoip
+ if grep -q dbip-country-lite "$XT_GEOIP_BUILD"; then
+ tr -d '"' < "$DBDIR/GeoIP-legacy.csv" | cut -d, -f1,2,5 > "$DBDIR/dbip-country-lite.csv.tmp" &&
+ mv -f "$DBDIR/dbip-country-lite.csv.tmp" "$DBDIR/dbip-country-lite.csv"
+ XCMD="perl $XT_GEOIP_BUILD -D /usr/share/xt_geoip -S $DBDIR"
+ else
+ XCMD="perl $XT_GEOIP_BUILD -D /usr/share/xt_geoip $DBDIR/GeoIP-legacy.csv"
+ fi
+ ret=$($XCMD 2>/dev/null | tail -1)
+ if [[ "$ret" =~ (Zimbabwe|ZW) ]]; then
+ echo "xt_geoip updated"
+ else
+ echo "xt_geoip update failed" >&2
+ printf 'try manually: %s\n' "$XCMD" >&2
+ echo "perl module Text::CSV_XS required" >&2
+ fi
+else
+ echo "xt_geoip is up to date"
+fi