1.5 KiB
1.5 KiB
geoip2
Получение данных с сервиса maxmind.com. Изначально пакет пишется для сервиса https://git.kor-elf.net/kor-elf-shield/kor-elf-shield.
Установка
go get git.kor-elf.net/kor-elf-shield/geoip2
Примеры использования
package main
import (
"fmt"
"net/netip"
"git.kor-elf.net/kor-elf-shield/geoip2/service/maxmind/mmdb"
)
type Logger struct{}
func (l *Logger) Error(err error) {
fmt.Println(err)
}
func main() {
// Для получения username и password ознакомьтесь тут: https://support.maxmind.com/knowledge-base/articles/create-a-maxmind-account
username := "username"
password := "password"
download, err := mmdb.NewDownload(mmdb.DownloadURLCityLite, username, password, mmdb.DefaultDownloadConfig())
if err != nil {
panic(err)
}
city := mmdb.NewCity(download, &Logger{}, "tmp", mmdb.LanguageRussian)
defer func() {
_ = city.Close()
}()
/*
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
// Если хотите обновить данные
if err := city.Refresh(ctx); err != nil {
panic(err)
}
*/
// Вместо 127.0.0.1 укажите интересующиеся IP адрес
ip, err := netip.ParseAddr("127.0.0.1")
if err != nil {
panic(err)
}
info, err := city.Info(ip)
if err != nil {
panic(err)
}
fmt.Println(info.ToString())
}