O primeiro lançamento do projeto geoip ocorreu, implementando um serviço para obter informações sobre a localização de endereços IP através da API REST. O projeto é voltado para simplificar a integração das funcionalidades de GeoIP em diferentes aplicações, liberando o desenvolvedor da necessidade de gerenciar atualizações de bancos de dados e trabalhar com o formato MMDB. O código é escrito na linguagem Rust e é distribuído sob a licença MIT. Suporta operação no Linux e macOS, bem como em outros sistemas UNIX-like.
Principais recursos do serviço:
- Alta performance e baixo consumo de memória, graças ao uso de uma linguagem compilada em código de máquina sem coletor de lixo.
- Fornecimento de informações sobre o endereço IP (país, cidade, código postal, coordenadas, operadora de telecomunicações e outros) através da API REST com base nos dados MaxMind GeoLite2 (gratuito) e MaxMind GeoIP2 (pago).
- Determinação do usuário atual endereços IP (disponível através de um endpoint separado; o parâmetro ip do endpoint principal é opcional).
- Atualizações automáticas configuráveis dos bancos de dados (tanto de recursos oficiais da MaxMind usando Account ID e Licence Key, quanto de uma URL personalizada com suporte a autenticação; é possível especificar o intervalo de verificação de atualizações).
- Interface web para envio manual de solicitações, incluindo suporte opcional para exibição no mapa do OpenStreetMap.

- Para todos os resultados que contêm o campo timezone, é automaticamente gerado um campo adicional posix_timezone (por exemplo, Europe/Paris se transforma em CET-1CEST,M3.5.0,M10.5.0/3). Isso garante a configuração automática do fuso horário em dispositivos embarcados (por exemplo, ESP32 e outros destinos newlib sem tzdata incorporada). Esse recurso é único e ausente em soluções semelhantes.
- Atualização automática do banco de dados de fusos horários (intervalo, fonte e autenticação são configuráveis; por padrão, o site oficial da IANA é usado). Ao desativar as atualizações, o banco de dados do sistema é aplicado.
- Possibilidade de download de arquivos atuais dos bancos de dados via HTTP diretamente do serviço (o que permite usar uma instância como fonte proxy para outras e reduzir o consumo de cota da MaxMind).
- Suporte à proteção de endpoints com uma chave de API opcional.
- A disponibilidade de uma especificação OpenAPI e Swagger UI integrado para facilitar a integração com seus projetos.
- Fornecimento de uma imagem Docker pronta para implantação rápida: 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
Fonte: opennet.ru

