Files
ip-geo-api/scripts/updater.py
Mateusz Gruszczyński b26b979a6a 1st commit
2025-10-06 08:27:10 +02:00

61 lines
2.3 KiB
Python

import time
import os
import logging
from scripts.download_helpers import download_maxmind, download_file, github_latest_mmdb
from app.config import settings
logging.basicConfig(level=logging.INFO)
log = logging.getLogger("db_updater")
def update_once():
provider = settings.geo_provider.lower()
try:
if provider == "maxmind":
# 1) GitHub Releases (latest)
repo = os.getenv("MAXMIND_GITHUB_REPO") or "P3TERX/GeoLite.mmdb"
token = os.getenv("GITHUB_TOKEN")
gh_url = None
try:
gh_url = github_latest_mmdb(repo, token)
except Exception as e:
log.warning("GitHub latest check failed: %s", e)
if gh_url:
download_file(gh_url, settings.maxmind_db_path)
log.info("MaxMind DB pobrana z GitHub Releases: %s", gh_url)
return
# 2) Bezpośredni URL do .mmdb
direct_url = os.getenv("MAXMIND_DIRECT_DB_URL")
if direct_url:
download_file(direct_url, settings.maxmind_db_path)
log.info("MaxMind DB pobrana z direct URL: %s", direct_url)
return
# 3) Oficjalne pobieranie MaxMind (wymaga licencji)
key = os.getenv("MAXMIND_LICENSE_KEY")
if not key:
log.error("Brak źródła bazy: ustaw MAXMIND_GITHUB_REPO lub MAXMIND_DIRECT_DB_URL lub MAXMIND_LICENSE_KEY")
return
download_maxmind(key, settings.maxmind_db_name, settings.maxmind_db_path, settings.maxmind_download_url_template)
log.info("MaxMind DB zaktualizowana (MaxMind download)")
elif provider == "ip2location":
url = os.getenv("IP2LOCATION_DOWNLOAD_URL")
if not url:
log.error("Brak IP2LOCATION_DOWNLOAD_URL w env")
return
download_file(url, settings.ip2location_db_path)
log.info("IP2Location DB zaktualizowana")
else:
log.error("Nieznany provider: %s", provider)
except Exception as e:
log.exception("Błąd przy aktualizacji bazy: %s", e)
if __name__ == "__main__":
interval = settings.update_interval_seconds
while True:
update_once()
time.sleep(interval)