В KUMA можно использовать геоданные, полученные из MaxMind и IP2Location, однако перед использованием файлы требуется конвертировать в поддерживаемый KUMA формат. Конвертацию можно произвести с помощью приведенного ниже скрипта. Убедитесь, что файлы не содержат дублирующихся записей: например, если в файле мало колонок, в разные записи могут попадать данные одной и той же сети с теми же геоданными - такой файл конвертировать не удастся. Чтобы успешно выполнить конвертацию, убедитесь, что дублирующиеся строки отсутствуют и все строки уникальны по какому-либо полю.
Для запуска скрипта требуется Python 2.7 или выше.
Команда запуска скрипта:
python converter.py --type <тип обрабатываемых геоданных: "maxmind" или "ip2location"> --out <директория, в которую будет помещен CSV-файл с геоданными в формате KUMA> --input <путь к ZIP-архиву с геоданными из MaxMind или IP2location>
При запуске скрипта с флагом --help
отображается справка по доступным параметрам запуска скрипта: python converter.py --help
Команда для конвертации файла с российской базой диапазонов IP-адресов из ZIP-архива MaxMind:
python converter.py --type maxmind --lang ru --input MaxMind.zip --out geoip_maxmind_ru.csv
Без указания параметра --lang
скрипт по умолчанию получает информацию из файла GeoLite2-City-Locations-en.csv из ZIP-архива.
Отсутствие параметра --lang
для MaxMind равнозначно команде:
python converter.py --type maxmind --input MaxMind.zip --out geoip_maxmind.csv
Команда для конвертации файла из ZIP-архива IP2Location:
python converter.py --type ip2location --input IP2LOCATION-LITE-DB11.CSV.ZIP --out geoip_ip2location.csv
Команда для конвертации файла из нескольких ZIP-архивов IP2Location:
python converter.py --type ip2location --input IP2LOCATION-LITE-DB11.CSV.ZIP IP2LOCATION-LITE-DB11.IPV6.CSV.ZIP --out geoip_ip2location_ipv4_ipv6.csv
Параметр --lang
для IP2Location не используется.
Обязательные наборы полей
Исходные файлы MaxMind GeoLite2-City-Blocks-IPv4.csv и GeoLite2-City-Blocks-IPv6.csv должны содержать следующий набор полей:
network,geoname_id,registered_country_geoname_id,represented_country_geoname_id,
is_anonymous_proxy,is_satellite_provider,postal_code,latitude,longitude,accuracy_radius
Пример набора исходных данных:
network,geoname_id,registered_country_geoname_id,represented_country_geoname_id,
is_anonymous_proxy,is_satellite_provider,postal_code,latitude,longitude,accuracy_radius
1.0.0.0/24,2077456,2077456,,0,0,,-33.4940,143.2104,1000
1.0.1.0/24,1814991,1814991,,0,0,,34.7732,113.7220,1000
Остальные файлы CSV с кодом локали должны содержать следующий набор полей:
geoname_id,locale_code,continent_code,continent_name,country_iso_code,country_name,
subdivision_1_iso_code,subdivision_1_name,subdivision_2_iso_code,subdivision_2_name,
city_name,metro_code,time_zone,is_in_european_union
Пример набора исходных данных:
geoname_id,locale_code,continent_code,continent_name,country_iso_code,country_name,
subdivision_1_iso_code,subdivision_1_name,subdivision_2_iso_code,subdivision_2_name,
city_name,metro_code,time_zone,is_in_european_union
1392,de,AS,Asien,IR,Iran,02,Mazandaran,,,,,Asia/Tehran,0
7240,de,AS,Asien,IR,Iran,28,Nord-Chorasan,,,,,Asia/Tehran,0
Исходные файлы IP2Location должны содержать данные о диапазонах сетей, Country, Region, City, Latitude, Longitude
Пример набора исходных данных:
"0","16777215","-","-","-","-","0.000000","0.000000","-","-"
"16777216","16777471","US","United States of America","California","Los Angeles","34.052230","-118.243680","90001","-07:00"
"16777472","16778239","CN","China","Fujian","Fuzhou","26.061390","119.306110","350004","+08:00"
Если исходные файлы будут содержать другой набор полей, отличный от указанного в этом разделе, или каких-то полей будет не хватать, после конвертации отсутствующие поля в итоговом файле CSV будут пустыми.
В начало