Zrealizowano pierwszą wersję projektu geoip, który implementuje usługę uzyskiwania informacji o lokalizacji adresów IP poprzez REST API. Projekt ma na celu uproszczenie integracji funkcji GeoIP w różnych aplikacjach, zwalniając programistów z konieczności zarządzania aktualizacjami baz danych oraz pracy z formatem MMDB. Kod napisano w języku Rust i jest udostępniany na licencji MIT. Obsługuje działanie w systemach Linux i macOS, a także w innych systemach podobnych do UNIX.
Główne możliwości usługi:
- Wysoka wydajność i niskie zużycie pamięci, dzięki wykorzystaniu języka kompilowanego do kodu maszynowego bez zbieracza śmieci.
- Dostarczenie informacji o adresie IP (kraj, miasto, kod pocztowy, współrzędne, operator telekomunikacyjny itp.) za pośrednictwem REST API na podstawie danych MaxMind GeoLite2 (darmowe) oraz MaxMind GeoIP2 (płatne).
- Określenie bieżącego adresy IP użytkownika (dostępne przez oddzielny punkt końcowy; parametr ip w głównym punkcie końcowym jest opcjonalny).
- Konfigurowalne automatyczne aktualizacje baz danych (zarówno z oficjalnych zasobów MaxMind przy użyciu Account ID i License Key, jak i z użytkowników URL z obsługą autoryzacji; możliwość określenia interwału sprawdzania aktualizacji).
- Interfejs webowy do ręcznego wysyłania zapytań, w tym opcjonalne wsparcie dla wyświetlania na mapie OpenStreetMap.

- Dla wszystkich wyników, które zawierają pole timezone, automatycznie generowane jest dodatkowe pole posix_timezone (np. Europe/Paris zamienia się na CET-1CEST,M3.5.0,M10.5.0/3). Zapewnia to automatyczną konfigurację strefy czasowej w urządzeniach wbudowanych (np. ESP32 i innych celach newlib bez wbudowanego tzdata). Ta możliwość jest unikalna i nie występuje w podobnych rozwiązaniach.
- Automatyczne aktualizacje bazy danych stref czasowych (interwał, źródło i autoryzacja są konfigurowalne; domyślnie używana jest oficjalna strona IANA). Po wyłączeniu aktualizacji stosowana jest baza systemowa.
- Możliwość pobierania aktualnych archiwów baz danych przez HTTP bezpośrednio z usługi (co pozwala na używanie jednego egzemplarza jako proxy Źródła dla innych i zmniejsza zużycie kwoty MaxMind).
- Wsparcie dla ochrony punktów końcowych za pomocą opcjonalnego klucza API.
- Obecność specyfikacji OpenAPI oraz wbudowanego Swagger UI ułatwiającego integrację z własnymi projektami.
- Dostarczenie gotowego obrazu Docker do szybkiego wdrożenia: 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" \ # opcjonalnie -v geoip_data:/data \ -p 8080:8080 \ ghcr.io/quoi-dev/geoip:latest
Źródło: opennet.ru

