È stato rilasciato il primo progetto geoip, che fornisce un servizio per ottenere informazioni sulla posizione degli indirizzi IP tramite REST API. Il progetto è progettato per semplificare l'integrazione della funzionalità GeoIP in varie applicazioni, liberando gli sviluppatori dall'obbligo di gestire autonomamente gli aggiornamenti dei database e di lavorare con il formato MMDB. Il codice è scritto in Rust e distribuito con licenza MIT. È supportato il funzionamento su Linux e macOS, così come su altri sistemi UNIX-like.
Funzionalità principali del servizio:
- Alta prestazione e basso consumo di memoria, grazie all'utilizzo di un linguaggio compilato in codice macchina senza garbage collector.
- Fornitura di informazioni relative all'indirizzo IP (paese, città, codice postale, coordinate, operatore di telefonia e altro) tramite REST API, basata sui dati MaxMind GeoLite2 (gratuiti) e MaxMind GeoIP2 (a pagamento).
- Identificazione dell'attuale Indirizzi IP utente (disponibile attraverso un endpoint separato; il parametro ip dell'endpoint principale è facoltativo).
- Aggiornamenti automatici dei database personalizzabili (sia da risorse ufficiali MaxMind utilizzando l'Account ID e la Licence Key, sia da un URL personalizzato con supporto per l'autenticazione; è possibile specificare l'intervallo di verifica degli aggiornamenti).
- Interfaccia web per inviare manualmente le richieste, inclusa la supporto opzionale per la visualizzazione su mappa OpenStreetMap.

- Per tutti i risultati contenenti il campo timezone, viene automaticamente generato un campo aggiuntivo posix_timezone (ad esempio, Europe/Paris si trasforma in CET-1CEST,M3.5.0,M10.5.0/3). Questo consente la configurazione automatica del fuso orario su dispositivi embedded (ad esempio, ESP32 e altri target newlib senza tzdata integrato). Questa funzionalità è unica e non è presente in soluzioni simili.
- Aggiornamento automatico del database dei fusi orari (intervallo, sorgente e autorizzazione sono configurabili; per impostazione predefinita, si utilizza il sito ufficiale IANA). In assenza di aggiornamenti, viene utilizzato il database di sistema.
- Possibilità di scaricare archivi aggiornati dei database via HTTP direttamente dal servizio (ciò consente di utilizzare un'istanza come sorgente proxy per altre, riducendo il consumo della quota MaxMind).
- Supporto per la protezione degli endpoint tramite un API key opzionale.
- La disponibilità della specifica OpenAPI e dell'interfaccia Swagger UI integrata per facilitare l'integrazione con i propri progetti.
- Fornitura di un'immagine Docker pronta per un rapido deployment: 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" \ # facoltativo -v geoip_data:/data \ -p 8080:8080 \ ghcr.io/quoi-dev/geoip:latest
Fonte: opennet.ru

