42 lines
1.3 KiB
Bash
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
|