Files
dhi-docker-akvorado/docker/ipinfo-geoipupdate.sh
2025-10-12 15:56:31 +00:00

42 lines
1.3 KiB
Bash

#!/bin/sh
trap exit TERM
while true; do
ok=1
for DATABASE in ${IPINFO_DATABASES}; do
if [ -f ${DATABASE}.mmdb ]; then
# Is it up-to-date?
LOCAL=$(sha256sum ${DATABASE}.mmdb | awk '{print $1}')
REMOTE=$(curl --silent https://ipinfo.io/data/free/${DATABASE}.mmdb/checksums?token=${IPINFO_TOKEN} \
| sed -n 's/.*"sha256": *"\([a-f0-9]*\)".*/\1/p')
if [ "$LOCAL" = "$REMOTE" ]; then
echo "${DATABASE}.mmdb is up-to-date"
continue
fi
fi
RESPONSE=$(curl \
--silent \
--write-out '%{http_code}' \
--remote-time \
--location \
--output "${DATABASE}.mmdb.new" \
"https://ipinfo.io/data/free/${DATABASE}.mmdb?token=${IPINFO_TOKEN}")
case "$RESPONSE" in
200)
echo "${DATABASE}.mmdb database downloaded in /data volume."
mv "${DATABASE}.mmdb.new" "${DATABASE}.mmdb"
;;
*)
echo "Failed to download ${DATABASE}.mmdb database (HTTP error $RESPONSE)."
rm "${DATABASE}.mmdb.new" 2> /dev/null
ok=0
;;
esac
done
[ $ok -eq 1 ] && touch /tmp/healthy
sleep "$UPDATE_FREQUENCY" &
wait $!
done