Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

m-messiah/ip2geo

Open more actions menu

Repository files navigation

Ip2Geo importer

Testgolangci-lintCodeQLGitHub releaseGithub ReleasesMaintainability

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

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

Установка

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

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

Запуск

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

-c      string
    Путь до конфигурационного файла (см. config.yaml.example)
-output string
    Директория для записи map-файлов (по умолчанию: "output")
-q  Be quiet - skip [OK]
-qq Be very quiet - show only errors
-version Вывести текущую версию программы и выйти.
-ipgeobase
    Генерация IPgeobase баз (название города, код региона, часовой пояс)
-tor
    Генерация списков TOR нод.
-ip2proxy
    Генерация ip2proxy PX4LITE сетей
-ip2proxy-token string
    Токен для скачивания ip2proxy PX4LITE баз https://lite.ip2location.com/file-download
-ip2proxy-lite-filename string
    Путь до уже скачанного zip файла PX4LITE
-ip2proxy-pro
    Генерация ip2proxy PX4 сетей
-ip2proxy-pro-token string
    Токен для скачивания ip2proxy PX4
-ip2proxy-pro-filename string
    Путь до уже скачанного zip файла PX4
-ip2proxy-print-type
    Вместо 1 указывать тип прокси из ip2proxy (PUB/DCH/e.t.c.)
-maxmind
    Генерация баз MaxMind (название города, часовой пояс)
Дальше параметры для MaxMind:
-maxmind-license-key string
    Лицензионный ключ для MaxMind
-maxmind-filename string
    Путь до уже скачанного файла MaxMind GeoLite2-City-CSV.csv
-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).

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.