Ipgeobase + Nginx

05 Aug 2015

Когда возникает задача — по адресу посетителя получать его город и налоговый (автомобильный) код региона, кажется — да это же просто, в инете полно таких штук! А потом смотришь: одни платные, другие нельзя у себя развернуть, третьи можно, но это ресурсозатратно, четвертые о регионах РФ ничего не знают… И тут на помощь спешит больной мозг программиста с навязчивой идеей: «Нет у других — сделай сам»

Так возникла идея написать конвертер, который выцепляет данные из ipgeobase.ru и строит map-файл для nginx, для корректного определения кода региона и названия города по адресу клиента.

Конвертер был успешно отдан в паблик, о его разработке написана статья на Хабр и вроде бы можно забыть, но…

Но появляется еще одна связанная задача - почему бы не фильтровать по адресу клиента клиентов из всеми любимого, но так ненавистного спецслужбами ТОР? Ведь нормальные пользователи налоговую отчетность сдавать через ТОР не будут, а остальные нам и не нужны.

В итоге конвертер быстро обзавелся дополнительными источниками в виде torstatus.blutmagie.de и check.torproject.org, научился строить дополнительное отображение адреса в 0 или 1, в зависимости от принадлежности к списку ТОР адресов, а nginx получил возможность делать вот так:

if ($is_tor) { return 450;}