#!/bin/sh
set -eu
. /usr/libexec/edgeshield/geoip-common.sh
reload=0
[ "${1:-}" = "--reload" ] && reload=1

if ! geoip_validate_all; then
    geoip_log "GeoIP databases are missing, wrong type, or invalid; not enabling nginx config"
    geoip_state disabled_invalid_database
    rm -f "$EDGESHIELD_GEOIP_ACTIVE_CONF"
    exit 1
fi

[ -f "$EDGESHIELD_GEOIP_TEMPLATE" ] || { geoip_log "missing template: $EDGESHIELD_GEOIP_TEMPLATE"; exit 1; }
mkdir -p "$(dirname "$EDGESHIELD_GEOIP_ACTIVE_CONF")"
tmp="$EDGESHIELD_GEOIP_ACTIVE_CONF.tmp"
cp -f "$EDGESHIELD_GEOIP_TEMPLATE" "$tmp"
chmod 0644 "$tmp"
mv -f "$tmp" "$EDGESHIELD_GEOIP_ACTIVE_CONF"

if ! geoip_nginx_test; then
    geoip_log "nginx -t failed; rolling back GeoIP config"
    rm -f "$EDGESHIELD_GEOIP_ACTIVE_CONF"
    geoip_nginx_test || true
    geoip_state disabled_nginx_test_failed
    exit 1
fi

[ "$reload" = 1 ] && geoip_nginx_reload
geoip_state enabled
geoip_log "enabled nginx GeoIP2 config"
