#!/usr/bin/env bash set -euo pipefail : "${MAXMIND_LICENSE:?Set MAXMIND_LICENSE env var before running}" DATA_DIR="${HOME}/.local/share/skyfeed" TMP_DIR="$(mktemp -d)" OUT_TAR="$TMP_DIR/geolite.tar.gz" DEST_MMDB="$DATA_DIR/GeoLite2-City.mmdb" mkdir -p "$DATA_DIR" # MaxMind download URL pattern (uses license_key and suffix) URL="https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key=${MAXMIND_LICENSE}&suffix=tar.gz" echo "[update_geoip] Downloading GeoLite2-City..." curl -sSL -A "Skyfeed/1.0 (+https://leaktechnologies.dev)" -o "$OUT_TAR" "$URL" echo "[update_geoip] Extracting .mmdb..." # Tar contains folder like GeoLite2-City_YYYYMMDD/GeoLite2-City.mmdb tar -xzf "$OUT_TAR" -C "$TMP_DIR" MMDB_PATH=$(find "$TMP_DIR" -type f -name "GeoLite2-City.mmdb" | head -n1) if [ -z "$MMDB_PATH" ]; then echo "[update_geoip] ERROR: .mmdb not found in archive" >&2 exit 2 fi # atomic replace tmp_dest="${DEST_MMDB}.tmp" cp "$MMDB_PATH" "$tmp_dest" sync mv -f "$tmp_dest" "$DEST_MMDB" echo "[update_geoip] Installed $DEST_MMDB" rm -rf "$TMP_DIR"