Se lanzó la primera versión del proyecto geoip, que implementa un servicio para obtener información sobre la ubicación de direcciones IP a través de REST API. El proyecto está orientado a simplificar la integración de la funcionalidad GeoIP en diversas aplicaciones, liberando al desarrollador de la necesidad de gestionar actualizaciones de bases de datos y trabajar con el formato MMDB por sí mismo. El código está escrito en Rust y se distribuye bajo la licencia MIT. Se admite el funcionamiento en Linux y macOS, así como en otros sistemas similares a UNIX.
Características principales del servicio:
- Alto rendimiento y bajo consumo de memoria, gracias al uso de un lenguaje compilado a código máquina sin recolector de basura.
- Proporciona información sobre la dirección IP (país, ciudad, código postal, coordenadas, operador de telecomunicaciones, etc.) a través de REST API basada en datos de MaxMind GeoLite2 (gratis) y MaxMind GeoIP2 (de pago).
- Detección del IP usuario actual (disponible a través de un endpoint separado; el parámetro ip del endpoint principal es opcional).
- Actualizaciones automáticas configurables de bases de datos (tanto desde los recursos oficiales de MaxMind utilizando Account ID y Licence Key, como desde una URL personalizada con soporte de autorización; se puede especificar el intervalo de verificación de actualizaciones).
- Interfaz web para envíos manuales de solicitudes, incluyendo soporte opcional para visualización en el mapa de OpenStreetMap.

- Para todos los resultados que contienen el campo timezone, se genera automáticamente un campo adicional posix_timezone (por ejemplo, Europe/Paris se transforma en CET-1CEST,M3.5.0,M10.5.0/3). Esto proporciona una configuración automática de la zona horaria en dispositivos embebidos (por ejemplo, ESP32 y otros objetivos newlib sin tzdata integrado). Esta función es única y no está disponible en soluciones similares.
- Actualización automática de la base de datos de zonas horarias (el intervalo, la fuente y la autorización son configurables; por defecto se utiliza el sitio oficial de IANA). Cuando las actualizaciones están desactivadas, se utiliza la base de datos del sistema.
- Capacidad de cargar archivos de bases de datos actualizados por HTTP directamente desde el servicio (lo que permite usar una instancia como proxy para otras y reducir el consumo de la cuota de MaxMind).
- Soporte para la protección de endpoints mediante un API key opcional.
- Disponibilidad de la especificación OpenAPI y Swagger UI incorporado para facilitar la integración con sus proyectos.
- Proporcionando una imagen de Docker lista para un despliegue rápido: 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" \ # opcional -v geoip_data:/data \ -p 8080:8080 \ ghcr.io/quoi-dev/geoip:latest
Fuente: opennet.ru

