Skip to content

Commit 57b53be

Browse files
authored
Change to IPInfo as main source for GeoDB (#2690)
Signed-off-by: Daniel Hansson <[email protected]>
1 parent 2e93ab5 commit 57b53be

File tree

1 file changed

+43
-28
lines changed

1 file changed

+43
-28
lines changed

lib.sh

+43-28
Original file line numberDiff line numberDiff line change
@@ -402,40 +402,55 @@ curl "https://api.metadefender.com/v4/hash/$hash" -H "apikey: $apikey"
402402

403403
# Used in geoblock.sh
404404
download_geoip_mmdb() {
405+
# Rate limit to 1 hour, we have 24 requests per day
406+
if [ -f "$GEOBLOCK_DIR/IPInfo-Country.mmdb" ]
407+
then
408+
if [ "$(( $(date +"%s") - $(stat -c "%Y" "$GEOBLOCK_DIR/IPInfo-Country.mmdb") ))" -lt "3600" ]
409+
then
410+
print_text_in_color "$IGreen" "No need to update $GEOBLOCK_DIR/IPInfo-Country.mmdb since it's newer than 1 hour."
411+
return 1
412+
fi
413+
elif [ -f "$GEOBLOCK_DIR/GeoLite2-Country.mmdb" ]
414+
then
415+
print_text_in_color "$ICyan" "Replacing Maxmind with IPInfo GeoIP database..."
416+
fi
417+
418+
# Download or update current GeoIP DB
405419
maxmind_geoip
406-
export MwKfcYATm43NMT
407-
export i9HL69SLnp4ymy
408420
export x8v8GyVQg2UejdPh
409-
{
410-
echo "GEOIPUPDATE_ACCOUNT_ID=$MwKfcYATm43NMT"
411-
echo "GEOIPUPDATE_LICENSE_KEY=$i9HL69SLnp4ymy"
412-
echo "GEOIPUPDATE_EDITION_IDS=GeoLite2-Country"
413-
echo "GEOIPUPDATE_FREQUENCY=0"
414-
echo "GEOIPUPDATE_PRESERVE_FILE_TIMES=1"
415-
echo "GEOIPUPDATE_VERBOSE=1"
416-
} > /tmp/dockerenv
417-
unset MwKfcYATm43NMT
418-
unset i9HL69SLnp4ymy
419-
install_docker
420-
if docker run --name maxmind --env-file /tmp/dockerenv -v "$GEOBLOCK_DIR":"$GEOBLOCK_DIR" ghcr.io/maxmind/geoipupdate
421+
print_text_in_color "$ICyan" "Downloading latest GeoIP database from https://ipinfo.io..."
422+
if ! curl -sfL https://ipinfo.io/data/free/country.mmdb?token="$x8v8GyVQg2UejdPh" -o "$GEOBLOCK_DIR"/IPInfo-Country.mmdb
421423
then
422-
docker rm -f maxmind
423-
rm -f /tmp/dockerenv
424-
# Since only one mmdb file can exist at the same time due to Apache "if" confitions, remove IPInfos config
425-
rm -f "$GEOBLOCK_DIR"/IPInfo-Country.mmdb
426-
else
427-
docker rm -f maxmind
428-
rm -f /tmp/dockerenv
429-
print_text_in_color "$ICyan" "Rate limit for Maxmind GeoDatabase reached! We're now trying to get the Country Database from https://ipinfo.io instead."
430-
if ! curl -sfL https://ipinfo.io/data/free/country.mmdb?token="$x8v8GyVQg2UejdPh" -o "$GEOBLOCK_DIR"/IPInfo-Country.mmdb
424+
print_text_in_color "$IRed" "Failed downloading GeoIP database from IPInfo, trying plan B..."
425+
export MwKfcYATm43NMT
426+
export i9HL69SLnp4ymy
427+
{
428+
echo "GEOIPUPDATE_ACCOUNT_ID=$MwKfcYATm43NMT"
429+
echo "GEOIPUPDATE_LICENSE_KEY=$i9HL69SLnp4ymy"
430+
echo "GEOIPUPDATE_EDITION_IDS=GeoLite2-Country"
431+
echo "GEOIPUPDATE_FREQUENCY=0"
432+
echo "GEOIPUPDATE_PRESERVE_FILE_TIMES=1"
433+
echo "GEOIPUPDATE_VERBOSE=1"
434+
} > /tmp/dockerenv
435+
unset MwKfcYATm43NMT
436+
unset i9HL69SLnp4ymy
437+
install_docker
438+
if docker run --name maxmind --env-file /tmp/dockerenv -v "$GEOBLOCK_DIR":"$GEOBLOCK_DIR" ghcr.io/maxmind/geoipupdate
431439
then
432-
msg_box "Sorry, we couldn't get the needed IP geolocation database from any source, please try again in 24 hours."
433-
return 1
440+
docker rm -f maxmind
441+
rm -f /tmp/dockerenv
442+
# Since only one mmdb file can exist at the same time due to Apache "if" confitions, remove IPInfos config
443+
rm -f "$GEOBLOCK_DIR"/IPInfo-Country.mmdb
444+
print_text_in_color "$IGreen" "Maxmind GeoIP database downloaded!"
434445
else
435-
# Since only one mmdb file can exist at the same time due to Apache "if" confitions, remove MaxMinds config
436-
rm -f "$GEOBLOCK_DIR"/GeoLite2-Country.mmdb
437-
return 0
446+
docker rm -f maxmind
447+
rm -f /tmp/dockerenv
448+
print_text_in_color "$IRed" "Rate limit for Maxmind GeoIP database reached! Can't continue from here, please report this to $ISSUES"
438449
fi
450+
else
451+
# Since only one mmdb file can exist at the same time due to Apache "if" confitions, remove MaxMinds config
452+
rm -f "$GEOBLOCK_DIR"/GeoLite2-Country.mmdb
453+
return 0
439454
fi
440455
unset x8v8GyVQg2UejdPh
441456
}

0 commit comments

Comments
 (0)