geoip 0.1.0

good-penguin.png

Тихо и незаметно вышла первая версия проекта geoip — self-hosted сервиса GeoIP REST API, написанного на Rust.

Функциональность:

  • Получение информации об IP-адресе (страна, город, почтовый индекс, координаты, оператор и т. п.) по REST API с использованием данных MaxMind GeoLite2 (бесплатно) и MaxMind GeoIP (платно)
  • Определение текущего IP-адреса (отдельный эндпойнт + параметр ip основного эндпойнта опционален)
  • Настраиваемые автоматические обновления баз данных (либо с официальных URL MaxMind с указанием Account ID и Licence Key, либо со своего кастомного URL без и с авторизацией, также можно задавать периодичность проверок обновлений)
  • Ко всем результатам содержащим поле timezone добавляется дополнительное поле posix_timezone (например, Europe/Paris превращается в «CET-1CEST, M3.5.0, M10.5.0/3»). Это позволяет реализовывать автоматическую настройку часового пояса на встраиваемых системах (например, ESP32 и другие newlib таргеты без tzdata). Уникальная функция недоступная в других проектах
  • База данных часовых поясов также автоматически обновляется (можно настраивать интервал, URL, авторизацию, по умолчанию используется официальный сайт IANA), при отключенных обновлениях используется системная
  • Архивы с актуальным базами данных могут быть загружены с самого сервиса по HTTP (S) (таким образом, один сервис может проксировать данные для других, чтобы уменьшать использование квоты MaxMind)
  • Можно защитить эндпоинты с данными опциональным API ключом
  • Имеется веб-интерфейс для ручных запросов с опциональной поддержкой OpenStreetMap
  • Имеется OpenAPI спецификация и Swagger UI в самом сервисе для удобной интеграции со своими проектами
  • Имеется готовый Docker образ для быстрого развёртывания
    docker run \
      -e MAXMIND_ACCOUNT_ID=XXXX \
      -e MAXMIND_LICENCE_KEY=YYYY \
      -e OSM_TILES_URL="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" \ # Необязательно
      -v geoip_data:/data \
      -p 8080:8080 \
      ghcr.io/quoi-dev/geoip:latest
    

Демо

Лицензия: MIT.

Проект нацелен на упрощение интеграции GeoIP в другие приложения, позволяя абстрагировать обновления баз данных и работу с форматом MMDB. Поддерживается работа на ОС Linux и Mac OS X, должен без проблем работать на других UNIX-совместимых системах, на Windows не поддерживается работа с таймзонами (но можно использовать WSL).

>>> GitHub

©  Linux.org.ru