Skip to content
/ ip2geo Public
forked from m-messiah/ip2geo

Импортер ipgeo-данных в файлы, понятные для nginx geoip module, с поддержкой кодов регионов РФ.

License

Notifications You must be signed in to change notification settings

iackov/ip2geo

 
 

Repository files navigation

Ip2Geo importer

Travis GitHub release Github Releases

Импортер ipgeo-данных в файлы, понятные для nginx geo module, с поддержкой кодов регионов РФ.

Поддерживает Ipgeobase.ru, TOR-списки, MaxMind GeoLite (для городов).

Установка

  1. Скачать соответствующий архитектуре бинарник с github куда-нибудь в $PATH
  2. Сделать его исполняемым
  3. Пользоваться

(также, при наличии Go окружения можно собрать самостоятельно через go get + go build)

Запуск

По умолчанию, ip2geo генерирует все возможные map-файлы, но все настраиваемо с помощью ключей:

-output string
    Директория для записи map-файлов (по умолчанию: "output")
-q  Be quiet - skip [OK]
-qq Be very quiet - show only errors
-ipgeobase
    Генерация IPgeobase баз (название города, код региона, часовой пояс)
-tor
    Генерация списков TOR нод.
-maxmind
    Генерация баз MaxMind (название города, часовой пояс)
Дальше параметры для MaxMind:
-lang string
    Язык MaxMind баз (по умолчанию ru)
-ipver int
    MaxMind версия IP (4 or 6) (default 4)
-include string
    MaxMind фильтр: использовать только перечисленные страны  
    Принимает список ISO-кодов стран, разделенных пробелами ("RU FR EN")
-exclude string
    MaxMind фильтр: исключает из вывода перечисленные страны. (см формат выше)

Формат map-файлов

map-файлы предназначены для использования в nginx в виде:

geo $region {
    ranges;
    include geo/region.txt;
}

geo $city {
    ranges;
    default $city_mm;
    include geo/city.txt;
}

geo $city_mm {
    ranges;
    include geo/mm_city.txt;
}

geo $is_tor {
    ranges;
    default 0;
    include geo/tor.txt;
}

geo $tz {
    ranges;
    default $tz_mm;
    include geo/tz.txt;
}

geo $tz_mm {
    ranges;
    default "UTC+3";
    include geo/mm_tz.txt;
}

geo $latitude {
    ranges;
    include geo/latitude.txt;
}

geo $longitude {
    ranges;
    include geo/longitude.txt;
}

Таким образом, IP адреса в файлах записаны в виде диапазона (range) и отсортированы по возрастанию IP. Карты сделаны каскадно, чтобы решить проблему пересечений диапазонов. IPGeobase используется в первую очередь, и если адрес там не найден, то MaxMind.

Для того, чтобы название города всегда отдавалось корректно - оно кодируется в base64 от utf8.

About

Импортер ipgeo-данных в файлы, понятные для nginx geoip module, с поддержкой кодов регионов РФ.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 96.7%
  • Perl 3.3%