#!/bin/bash

set -o nounset

GEOIP_URL="http://pub.3gteam.hu/geoip"

DEST=/usr/share/GeoIP
TMPDIR=/tmp

FAILED=0

function get_db()
{
	dbf=$1

	[ -f ${TMPDIR}/${dbf} ] && rm -f ${TMPDIR}/${dbf}
	[ -f ${TMPDIR}/${dbf}.gz ] && rm -f ${TMPDIR}/${dbf}.gz

	/usr/bin/wget -q -t3 -T15 -O $TMPDIR/${dbf}.gz "${GEOIP_URL}/${dbf}.gz"
	err=$1
	if [ "$?" != "0" ]; then
		echo "ERROR: downloading $dbf"
		exit $?
	fi

	if [ -f ${TMPDIR}/${dbf}.gz ]; then
		gunzip ${TMPDIR}/${dbf}.gz
		mv -f ${TMPDIR}/${dbf} ${DEST}/${dbf}
	else
		echo "ERROR: file not found: ${dbf}.gz"
		exit $?
	fi

}

function copy_chr()
{
	STAT_SRC=$(stat -c "%d:%i" "${DEST}" 2>/dev/null)

	if [ -d /chroot ]; then
		for chrdir in /chroot/*; do
			CHRDEST=${chrdir}${DEST}
			usrshare=`dirname ${CHRDEST}`
			if [ -d ${usrshare} ]; then
				[ -d ${CHRDEST} ] || mkdir ${CHRDEST}
				STAT_DST=$(stat -c "%d:%i" "${CHRDEST}" 2>/dev/null)
				if [ "$STAT_SRC" != "$STAT_DST" ]; then
					for src in "$@"; do
						cp -f ${DEST}/${src} ${CHRDEST}/${src}
					done
				fi
			fi
		done
	fi
}

[ -d $DEST ] || mkdir $DEST

get_db GeoIP.dat
get_db GeoIPv6.dat
get_db GeoLite2-Country.mmdb
#get_db GeoLite2-City.mmdb
get_db GeoLite2-ASN.mmdb

# copy to chroots (skip if mounted)
copy_chr GeoIP.dat GeoIPv6.dat GeoLite2-Country.mmdb

exit 0
