#!/bin/bash

set -euo pipefail

exec >> /opt/bim/persistent/log/update-geoip-db.log
exec 2>&1

function log_prefix()
{
    echo "[$(date --iso-8601=seconds)]"
}

if [[ ! -f /opt/bim/etc/maxminddb.credentials ]]
then
    echo "$(log_prefix) No credentials. Aborting."
    exit 0
fi

. /opt/bim/etc/maxminddb.credentials

output="$(mktemp --directory)"

clean_up()
{
    rm --force --recursive "$output"
}

trap clean_up EXIT

download_url='https://download.maxmind.com/geoip/databases/GeoLite2-Country/download'
auth="$MAXMINDDB_ACCOUNT_ID:$MAXMINDDB_LICENCE_KEY"

cd "$output"

echo "$(log_prefix) Downloading database archive."
curl_command=(curl --silent --show-error --location --user "$auth")

"${curl_command[@]}" --output sha256sum.txt \
                     "$download_url?suffix=tar.gz.sha256"

filename="$(head -n 1 sha256sum.txt | awk '{print $2}')"
"${curl_command[@]}" --output "$filename" "$download_url?suffix=tar.gz"

sha256sum --check sha256sum.txt

tar xf "$filename"
rm --force "$filename"

find . -name "*.mmdb" -exec mv --backup '{}' /opt/bim/persistent/GeoLite2-Country.mmdb ';'
