0
<< предыдущая заметкаследующая заметка >>
20 апреля 2014
geoip

Восстановил полезную фичу, бывшую когда-то в моем старом движке (еще тех времен, когда он не был публичным движком-проектом, а работал как скрипты /dnevnik) - это геоопределение комментаторов. Теперь в комментариях появились обозначения типа Санкт-Петербург или Los Angeles

Определение происходит при приеме нового комментария, и использую я для этого две фичи: открытый сервис http://ipgeobase.ru/geo?ip=123.456.789.123 и (если он не смог определить страну и город) - то вызов консольной утилиты whois (проверьте, чтоб на вашем сервере она стояла, иначе apt-get install whois) с дальнейшей попыткой определить город. Это сложно, потому что редкий админ настолько дисциплинирован, чтобы указать тэг City: Moscow, обычно пишут тэг Address как бог на душу положит.

Все полученные результаты по диапазону IP, чтоб лишний раз не грузить вопросами внешние ресурсы, записываются в базы geoip и geoipd (в /install позвольте движку их создать).

В комментах отображается флажок страны и (если удалось) город. Для старых комментов есть возможность вручную на ссылку whois и заставить систему принудительно провести проверку IP, отныне записав в базу комментариев уточненные данные по этому IP. Пусть этим развлекаются посетители.

Нюанс: если вы обновляете движок с корневой системы (например, home.lleo.me), а у вас движок не корневой (например, установлен в папку /blog), то вам придется руками (я использую в меню админа "фотоальбом") поправить адрес картинки флажков в /css/sys.css - например в моем случае я ищу конструкцию background: url("/design/flags.png") и исправляю на background: url("/blog/design/flags.png")

PS: Если у вас есть какие-то другие идеи, как точно узнать город для любого IP мира, поделитесь. Разумеется, метод имеется в виду простой, открытый и бесплатный типа вышеупомянутого ipgeobase.ru Потому что концепция движка не предполагает импортировать скачанные в торрентах внешние базы, инсталлировать новый бинарный софт на свой сервер и прочие системные операции руками, которые многим владельцам движка недоступны на их хостинге.

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
Linux Safari Chrome
 Пермь
0
0
Сергей
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Я небось из швеции?
Linux Safari Chrome
 Пермь
0
0
Сергей
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Нет флажка. Будем считать отладкой. Можешь удалять
Linux Firefox
 Самара
0
0
mail/ivn86
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Привет из Самары!
Windows Safari Chrome
 Германия
0
0
тест
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
трест
Windows Firefox
 Австралия
0
0
Читатель
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
трест-2
Linux Ubuntu Safari Chrome
 New York
1
0
Ыыын
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Палево. Каждый сможет узнать то, чего узнать не должен был.
Windows Firefox
 Кения
0
0
Читатель
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Да нет никакого палева :)
Я вот только что из Австралии в Кению перелетом.
Windows Firefox
 Москва
0
0
имя
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
проверка, проверка, разраз
Windows Firefox
 Thornhill
0
0
имя
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
и ещё раз
Linux Safari Chrome
 Израиль
2
0
braintunic
> apt-get install whois

Ох, сейчас это прочтёт Фыва и разразится полустраничным комментом о врождённой ущербности Линукса на базе Дебиан и о фантастических преимуществах Линукса на базе RPM ;)
Linux Opera
 Москва
1
0
Mike Novikoff
Можно я за него? :) Сформулирую помягче: в самом деле некорректно говорить о дистро-специфичных вещах как о чём-то повсеместном и дефолтном. А вдруг на сервере вообще не линукс, а какой-нибудь BSD? Тем более в данном конкретном случае — утилита с названием whois бывает в нескольких совершенно разных реализациях даже в рамках линукса. Не говоря уже, что знакомство с любым софтом лучше начинать с документации, а не с установки на сервер.
Windows Opera
 Москва
0
0
Konstantin Vlasov
Можно использовать не внешний сервис, а системный пакет geoip, в котором база уже идёт в комплекте (заодно можно будет отказаться от кэширования). Для PHP, судя по мануалу, есть соответствующее расширение:
http://www.php.net/manual/ru/function.geoip-record-by-name.p[...]
И даже если оно не установлено, и установить нельзя, можно просто дёрнуть утилиту geoiplookup, которая по локальной базе выдаст всю инфу.
Linux Firefox
 Москва
0
0
Леонит Каганофф
Тоска. Я же объяснял: представьте, что мой хостинг-провайдер разрешил только скрипты PHP и дал доступ к MySQL объемом до 200мб для моего тарифного плана.
Windows Opera
 Москва
0
0
Konstantin Vlasov
Видимо, пропустил это объяснение.

Только я не уловил, почему запустить whois можно, а geoiplookup — нельзя? Или whois — это только для счастливых владельцев щедрых хостеров с незарезанными правами, к каковым вы не относитесь? И, кстати, стоит всё-таки проверить наличие PHP-расширения: зачастую хостер предоставляет систему с набором расширений, не входящих в умолчальный пакет (как раз на тот случай, когда пользователю хостинга что-то понадобится, а поставить самому — никак).
Linux Firefox
 Москва
0
0
Леонит Каганофф
whois - простой и необязательный сервис, его может у владельца движка не быть, движок продолжит работу.
Windows Firefox
 Нидерланды
0
0
Vitaly
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Для базы GeoIP есть официальный php-класс, для работы которого необходимо и достаточно только самого PHP версии 5.2 и выше.
Linux Firefox
 Москва
0
0
Леонит Каганофф
Что-то мне сомнительно, что PHP 5.2 на любом хостинге включает в себя гигантские геобазы всех IP мира.

Кроме того, мой движок работает с PHP от 4. Зачем мне получить сбой движка при попытке оставить коммент о обратиться к геобазе?
Linux Firefox
 Нидерланды
0
0
Vitaly
> Что-то мне сомнительно, что PHP 5.2 на любом хостинге включает в себя гигантские геобазы всех IP мира.

База GeoIP может быть как установлена на сервере в виде пакета geoip, так и загружена вручную в любой каталог на сервере (в т.ч. внутри $document_root), доступный для чтения PHP.

После импорта класса через #include нужно указать размещение файла geoip.dat и затем можно вызывать соответствующие методы в нужных местах.

Преимущество: IP адрес не передаётся на удалённые серверы, а также ускоряется работа основного движка за счёт того, что проверка осуществляется локально.

> Кроме того, мой движок работает с PHP от 4. Зачем мне получить сбой движка при попытке оставить коммент о обратиться к геобазе?

1. Возможно, класс работает и на PHP 4, я не проверял.
2. Серверов с PHP 4 не осталось ибо эта версия давно устарела и имеет сотни критических уязвимостей.
Linux Firefox
 Москва
0
0
Леонит Каганофф
Как мило. И сколько весит база GeoIP в гигабайтах? Сколько будет стоить ее размещение абоненту хостинга?
Linux Firefox
 Нидерланды
0
0
Vitaly
> Как мило. И сколько весит база GeoIP в гигабайтах? Сколько будет стоить ее размещение абоненту хостинга?

[user@local geo]$ ls -l
итого 17012
-rw-rw-r-- 1 user user 668134 May 2 19:10 GeoIP.dat
-rw-rw-r-- 1 user user 16745367 May 2 19:10 GeoLiteCity.dat

~652 КБ база по странам, и ~16 МБ - по городам.
Linux Firefox
 Москва
0
0
Леонит Каганофф
Что-то верится с трудом...
Linux Firefox
 Нидерланды
0
0
Vitaly
> Что-то верится с трудом...

Официальный сайт с прямыми ссылками на архивы для загрузки: http://dev.maxmind.com/geoip/legacy/geolite/

У них имеется также новая версия - 2.0, однако я её в своих проектах не использовал ни разу.
Windows IE
 Днепропетровск
0
0
Z
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Игдея?
Opera
 Исландия
0
0
Z
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Иктоя
Linux Safari
 Днепропетровск
0
0
Z
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Изачемя
Linux Safari
 Киев
0
0
Z
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Такида
Linux Ubuntu Firefox
 Белоруссия
0
0
meequz
опередил
мой город не распознаётся похоже
Linux Ubuntu Firefox
 Белоруссия
0
0
meequz
и зачем
Windows Firefox
 Санкт-Петербург
0
0
zeboper
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
попробуем попрыгать я наверное из питера ?
Windows Firefox
 Providence
0
0
zeboper
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
а теперь - из штатоф ?
Windows IE
 Великобритания
0
0
zeboper
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
а теперь откуда ? И браузер внезапно(ТМ) сменилсо ...
Windows Firefox
 Санкт-Петербург
0
2
zeboper
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
а здорово я умею телепортироваться ?
Firefox
 Новосибирск
0
0
test
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
test
Firefox
 Новосибирск
0
0
test
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
test2 test3
Firefox
 Montreal
0
0
test
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
test4
Windows Firefox
 Нижний Новгород
0
0
tartaglia
Проба
Windows Firefox
 Кстово
0
0
tartaglia
Проба
Linux Safari
 Израиль
0
0
Mason
Где я?
Linux Safari Chrome
 Washington
0
0
Mason
А теперь - через моего провайдера. Заметьте - я честно работаю. Ни каких прокси с моей стороны. Только происки провайдера.
Linux Safari Chrome
 Израиль
0
0
Mason
Ну, а здесь что покажет?
Windows Safari Chrome
 Mountain View
0
0
забылотец
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Но зачем это все? :)
Windows Safari Chrome
 Самара
0
0
Сергей
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Где я?
Windows Firefox
 Санкт-Петербург
0
0
Кошак
:)
Ты гляди ж, работает :)
Linux Firefox
 Германия
0
0
andpath
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Я из Германии?
Linux Firefox
 Германия
0
0
andpath
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Леонид, планируется разный контент в зависимости от страны?
Linux Firefox
 Москва
0
0
Леонит Каганофф
При чем тут контент, это комментаторы: IP определяется в момент оставления комментария.
Linux Firefox
 Германия
0
0
andpath
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Что страна определяется для комментатора это понятно. Вопрос просто про планы дальнейшего развития, чтоб меньше связываться с разными отечественными Комитетами Контроля Всего и Вся.
Linux Firefox
 Москва
0
0
Леонит Каганофф
Никак не связано.

Поскольку я не занимаюсь противоправной деятельностью, то не вижу никакой необходимости заниматься подпольем. Любая блокировка моего сайта Комитетами Контроля (как и две предыдущие блокировки) снова будет анекдотической и по смехотворному поводу, снова дам ей огласку.
Windows Safari Chrome
 Краснодар
0
0
барисыч
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
должен показать город-курорт Москва
Linux Safari
 Краснодар
0
0
барисыч
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А вот фиг,ватоматом вашпе не определился, только через who is
Windows Safari Chrome
 Белоруссия
0
0
я не робот.
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
test
Linux Firefox
 Киев
0
0
Дмитрий
Привет из Киева.
Windows Safari Chrome
 Mississauga
0
0
Сам ты впервые на сайте
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Тест
Windows Safari Chrome
 Mississauga
0
0
Сам ты впервые на сайте
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Близко но не совсем оно.
Linux Ubuntu Firefox
 Мариуполь
0
0
Владимир Кузьминых
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Тест же
Сработало
Windows Firefox
 Франция
0
0
Test
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Test
Windows Firefox
 Санкт-Петербург
0
0
Кошак
Offtop:
ещё один баг прокрался? Тэги не запоминаются при создании заметки... В старых заметках - наличествуют.
Linux Firefox
 Москва
0
0
Леонит Каганофф
это да, беда, я там чуть поменял. будем править
Linux Firefox
 Москва
0
0
Леонит Каганофф
Не, я бы уточнил!

Да, я поправил тэги. Раньше тэги в многопользовательских движках были общие. Теперь - у каждого собственные. Как и положено бы с самого начала.

Для этого добавилась в таблицу тэгов переменная ipn - инсталлятор движка ее попросит создать.

Да, в многопользовательской версии движка есть проблема с интерактивным появлением тэгов - их можно только руками вписать в графу, а не выбрать из окошечка. Это связано с тем, что организация межоконного интерфейса в защищенном режиме - это отдельная ебала, которую я теоретически понимаю, как сделать, но это не пять минут и не десять, а пара вечеров, и мне пока лень. Как-нибудь сделаю.

В общем, в нынешнем состоянии движка я не вижу, чтобы тэги не работали. Особенно в однопользовательском режиме.

PS: Поправил сейчас заодно всякие мелкие ошибки и глюки, которые выбрасывали ошибку во время создания новой заметки или не давали подгрузить и раскрыть ленту комментов, если в url была прямая адресация к комменту (типа 2014/04/02.html#123).
Windows Firefox
 Санкт-Петербург
0
0
Кошак
Ага, после того, как инсталлятор создал поле в таблице - заработало.
Правда по прежнему только один тег на заметку прописывается.
Linux Safari Chrome
 Франция
0
0
toster
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Hello world
Linux Ubuntu Firefox
 ATlanta
0
0
Жека
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Ну-ка, ну-ка...
Windows Opera
 Johnstown
0
0
Юрий
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Все проверяют...
Windows Opera
 Johnstown
0
0
Юрий
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Все проверяют...
Windows Opera
 Johnstown
0
0
Юрий
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Все проверяют...
Windows Firefox
 Ottawa
0
0
sly2m
Хочу поглядеть на кленовый листок.
Windows Firefox
 Ottawa
0
0
sly2m
Ну, хрен с ним. Оттава так Оттава.
Windows Firefox
 Молдова
0
0
Viktor
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Одна страна, один город.
Windows Firefox
 Калуга
0
0
aikr
Ну как тут не попробовать.
Windows Safari Chrome
 Днепропетровск
0
0
Толик
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Кто сказал "Мяу"?
Windows
 Каменск-Уральский
0
0
D.iK.iJ
Э...
Windows Firefox
 Москва
0
0
p
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
ping
Windows Firefox
 Казахстан
0
0
кто, я?
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Тест
Linux Safari Chrome
 Mountain View
0
0
я
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Тест
Windows Safari Chrome
 Santa Clara
0
0
alexeybobkov
тест
Mac Safari
 Москва
0
0
виктор
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А ну-ка ?
Mac Safari
 Великобритания
0
0
zakharov75
London, uk
Windows Firefox
 Schaumburg
0
0
ziv
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
МЕЯ ВИДО?
Windows Safari Chrome
 Санкт-Петербург
0
0
тест
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
тест
Linux Ubuntu Firefox
 Москва
0
0
another user
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
test
Windows Firefox
 Подольск
0
0
а12
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
просто тест
Windows Firefox
 Германия
0
0
а12
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
просто еще тест
Windows Safari Chrome
 Львов
0
0
Ш.
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А здесь ленточка ещё есть…
Linux Firefox
 Москва
0
0
Леонит Каганофф
И здесь уберем из темплейта {_MAY9:_}
Windows Firefox
 Россия
0
0
трямпампам
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
.
Windows Firefox
 Москва
0
0
Виталий
test

Нахабино
Linux Safari Chrome
 Санкт-Петербург
0
0
Константин
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Есть еще сервис http://freegeoip.net/xml/217.66.157.119
Есть ограничение - 10 тысяч запросов с одного хоста в час. Можно поднять свою собственную копию сервиса, программа открыта https://github.com/fiorix/freegeoip
Linux Firefox
 Москва
0
0
Леонит Каганофф
О! Спасибо!
Linux Firefox
 Москва
0
0
Леонит Каганофф
А, нет, сорри, совершенно бесполезная вешь. В большинстве случаев не дает никакой ценой информации - город не определяет, вдобавок не показывает диапазон адресов (а значит, я не смогу закэшировать результат в своей локальной базе дабы в дальнейшем не бегать по чужим серверам).

http://freegeoip.net/xml/85.250.117.196

<Response><Ip>85.250.117.196</Ip><CountryCode>IL</CountryCode><CountryName>Israel</CountryName>
<RegionCode/>
<RegionName/>
<City/>
<ZipCode/>
<Latitude>31.5</Latitude>
<Longitude>34.75</Longitude>
<MetroCode/>
<AreaCode/>
</Response>

Смысл? Узнать код страны я и без этой бормотушки могу.
Linux Safari Chrome
 Кипр
0
0
ccc
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
test
Windows Safari Chrome
 Исландия
0
0
arkub
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Определяю местонахождение по IP адресу: Исландия. А я с Урала, из Екатеринбурга. В чем прикол?
Linux Safari Chrome
 Mountain View
0
0
{name}
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Test

всего комментариев: 92

<< предыдущая заметка следующая заметка >>