Состоялся первый релиз проекта geoip, реализующего сервис для получения информации о местоположении IP-адресов через REST API. Проект ориентирован на упрощение интеграции GeoIP-функциональности в различные приложения, освобождая разработчика от необходимости самостоятельно управлять обновлениями баз данных и работать с форматом MMDB. Код написан на языке Rust и распространяется под лицензией MIT. Поддерживается работа в Linux и macOS, а также других UNIX-подобных системах.
Основные возможности сервиса:
- Высокая производительность и низкое потребление памяти, благодаря использованию компилируемого в машинный код языка без сборoщика мусора.
- Предоставление информации об IP-адресе (страна, город, почтовый индекс, координаты, оператор связи и др.) через REST API на основе данных MaxMind GeoLite2 (бесплатно) и MaxMind GeoIP2 (платно).
- Определение текущего IP-адреса пользователя (доступно через отдельный эндпойнт; параметр ip основного эндпойнта является необязательным).
- Настраиваемые автоматические обновления баз данных (как с официальных ресурсов MaxMind с использованием Account ID и Licence Key, так и с пользовательского URL с поддержкой авторизации; возможно указание интервала проверки обновлений).
- Веб-интерфейс для ручной отправки запросов, включая опциональную поддержку отображения на карте OpenStreetMap.

- Для всех результатов, содержащих поле timezone, автоматически формируется дополнительное поле posix_timezone (например, Europe/Paris преобразуется в CET-1CEST,M3.5.0,M10.5.0/3). Это обеспечивает автоматическую конфигурацию часового пояса на встраиваемых устройствах (например, ESP32 и иных таргетах newlib без встроенной tzdata). Данная возможность является уникальной и отсутствует в аналогичных решениях.
- Автоматическое обновление базы данных часовых поясов (интервал, источник и авторизация настраиваются; по умолчанию используется официальный сайт IANA). При отключении обновлений применяется системная база.
- Возможность загрузки актуальных архивов баз данных по HTTP непосредственно с сервиса (что позволяет использовать один экземпляр в качестве прокси-источника для других и снижать расход квоты MaxMind).
- Поддержка защиты эндпойнтов с помощью опционального API-ключа.
- Наличие 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
Release.
Ссылка here.
