diff options
Diffstat (limited to 'opt/geoip')
| -rw-r--r-- | opt/geoip/.footprint | 21 | ||||
| -rw-r--r-- | opt/geoip/.signature | 7 | ||||
| -rw-r--r-- | opt/geoip/MAKEPKG | 37 | ||||
| -rw-r--r-- | opt/geoip/geoip_update.sh | 86 |
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 |
