37 lines
1.1 KiB
Bash
Executable File
37 lines
1.1 KiB
Bash
Executable File
#!/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"
|