Skip to content
Импортер ipgeo-данных в файлы, понятные для nginx geoip module, с поддержкой кодов регионов РФ.
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
t Test ipv6 in another way Mar 8, 2019
.gitignore Add ip2proxy (www.ip2location.com) support Feb 26, 2018
.travis.yml Replace `"` by `\"` for nginx config (fix #19) Apr 20, 2019
LICENSE Add CHANGELOG.md and update README.md for ip2proxy Mar 1, 2018
README.md Update README Mar 8, 2019
app.go Remove unused vars and fix by golint Apr 13, 2019
common_geobase.go Remove unused vars and fix by golint Apr 13, 2019
common_types.go Remove unused vars and fix by golint Apr 13, 2019
ip2proxy.go Use common generator for ipgeobase and maxmind May 9, 2018
ipgeobase.go Remove unused vars and fix by golint Apr 13, 2019
ipgeobase_rus_regions.go
maxmind.go Use old strings.Replace(..,-1) for compability Apr 20, 2019
tor.go Remove unused vars and fix by golint Apr 13, 2019
utils.go Remove unused vars and fix by golint Apr 13, 2019

README.md

Ip2Geo importer

TravisGitHub releaseGithub ReleasesMaintainability

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

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

Установка

  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 нод.
-ip2proxy
    Генерация ip2proxy сетей
-ip2proxy-token string
    Токен для скачивания ip2proxy баз https://lite.ip2location.com/file-download
-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 фильтр: исключает из вывода перечисленные страны. (см формат выше)
-nobase64
    Не перекодирует MaxMind города в base64, записывая их в map-файл как есть. Не используйте, если не уверены в кодировке MaxMind.
-nocountry
    Не создавать map-файлы с названиями стран и iso-кодами стран из MaxMind

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

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

# Region
    geo $region {
        ranges;
        include geo/region.txt;
    }
# City
    geo $city_geo {
        ranges;
        include geo/city.txt;
    }

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

    map $city_geo $city {
        "" $city_mm;
        default $city_geo;
    }
# Country
    geo $country {
        ranges;
        include geo/mm_country.txt;
    }
# Country Code
    geo $country_code {
        ranges;
        include geo/mm_country_code.txt;
    }
# TZ
    geo $tz_geo {
        ranges;
        include geo/tz.txt;
    }

    geo $tz_mm {
        ranges;
        include geo/mm_tz.txt;
    }

    map $tz_geo $tz {
        "" $tz_mm;
        default $tz_geo;
    }
# Tor
    geo $is_tor {
        ranges;
        default 0;
        include geo/tor.txt;
    }
# Proxy
    geo $is_proxy {
        ranges;
        default 0;
        include geo/ip2proxy_net.txt;
    }

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

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

You can’t perform that action at this time.