|
|
Интеграция с внешними сервисами IP-геолокации
Задача IP-геолокации - определение местоположения устройства по его IP-адресу.
Результаты геолокации отображаются в административном и пользовательском интерфейсах, там, где отображаются IP-адреса.
Пример отображения:
Обратите внимание: отображение эмодзи-символов с флагами стран зависит от используемой ОС и браузера. В частности, на Windows не работает в браузере Chrome, но работает в Firefox.
|
|
|
Существует много сервисов, предоставляющих услугу провайдера IP-геолокации посредством ответов на запросы по сети. Большинство из них платные, а бесплатные могут накладывать различные ограничения на частоту и общее число запросов.
У разных сервисов разные базы данных и разная точность определения. Базы обновляются на основе инфрормации об IP-адресах, которую предоставляют интернет-провайдеры. Поэтому точность определения геолокации также зависит от того, насколько точно внесены данные в реестр IP-адресов. Чаще всего невозможно определить местоположение точнее, чем до уровня города. Также интернет-провайдеры могут предоставлять находящиеся у них на обслуживании IP-адреса из других городов клиентам, которые находятся в другом регионе, что может приводить к ошибочному определению города. Иногда точность оказывается не выше уровня страны, так как реестры IP-адресов допускают не указывать город в графе местоположения.
Интеграция осуществляется приложением geolocationservice.sppr из главного домена.
По умолчанию приложение запрограммировано на сервис IPWHOIS.IO с его "бесплатным планом" на менее 10,000 запросов в месяц для некоммерческого использования. Но его можно перепрограммировать на другие сервисы.
Передача запроса провайдеру может занимать несколько секунд. Поэтому в интерфейсах CommuniGate Pro информация о геолокации IP-адреса изначально может не показываться, но в дальнейшем будет показываться при обновлении страницы.
В ядре CommuniGate Pro есть "кэш" ответов на запросы об IP-адресах. То есть, если запрос для каких-то IP-адреса и языка отображения был отправлен провайдеру, то в дальнейшем запрос для данной комбинации отправляться не будет. Более того, если данные геолокации "соседних" адресов в кэше окажутся одинаковые, то и для всего диапазона промежуточных IP-адресов между ними данные будут считаться одинаковыми, и запросы на них отправляться не будут.
Заполнение кэша начальными данными осуществляется приложением geolocationinit.sppr из главного домена. Заполняются диапазоны локальных и служебных IP-адресов, для которых нет геолокации. Вы можете кастомизировать приложение и расписать диапазоны LAN-адресов, таким образом определив геолокацию внутри Вашей организации.
Интеграция CommuniGate Pro с сервисами IP-геолокации доступна в:
- приложениях CG/PL, выполняющихся на сервере (PBX Задачи, WebUser аплеты и т.п.).
- сессиях протокола XIMSS, использующихся клиентскими программами.
- программах и сценариях, использующих интерфейс CLI.
Доступна CLI-команда для управления кэшем геолокации:
IPGEOLOCATION ip-address [ параметры ]
- ip-address : строка или IP-адрес
- В этом параметре задаётся IP адрес для проверки.
- параметры : словарь
- Этот словарь должен содержать строковый элемент op, задающий применяемую операцию. Другие элементы словаря зависят от типа операции. По умолчанию параметры { op=get; lang=en; }
Доступны следующие операции:
- get
- Эта операция возвращает данные из кэша, либо отправляет запрос провайдеру, если информации для данного IP-адреса и языка в кэше нет.
- Параметры:
- lang : строка
- код языка, по умолчанию en.
- Результаты:
- словарь
- ключи словаря:
- status : строка
- wait или error. Значение wait означает, что информации в кэше небыло, запрос был отправлен провайдеру, и что данные следует запросить заново через несколько секунд.
- Ключи со значениями, независимыми от языка:
- c_m : код континента
- c_c : код страны
- c_e : эмодзи-символ флага страны
- c_f : URL-cсылка на изображение флага страны
- c_r : код региона
- Зависимые от языка ключи со значениями:
- l_1 : название континента
- l_2 : название страны
- l_3 : регион/область/штат/провинция
- l_4 : район/графство/город
- l_5 : город/улица
- l_6 : улица
Наличие любого из значений не гарантировано и зависит от провайдера.
- set
- Эта операция пишет данные в кэш.
- Параметры:
- lang : строка
- код языка, по умолчанию en.
- с_m, с_c, с_e, с_f, с_r, l_1, l_2, l_3, l_4, l_5, l_6 : строки
- данные геолокации.
- re : строка или IP-Адрес
- конец диапазона относительно параметра ip-address.
- full : строка
- при наличии параметра запись будет считается полной, и для данного адреса/диапазона не будет осуществляться запросов к провайдеру для отсутствующих языков.
Для использования этой команды необходимо обладать правами по Администрированию Сервера "Может менять установки Сервера".
- clear
- Эта операция обнуляет содержимое кэша, и вызывает приложение geolocationinit.sppr для инициализации.
- Параметры:
- отсутствуют
- значение параметра ip-address игнорируется
Для использования этой команды необходимо обладать правами по Администрированию Сервера "Может менять установки Сервера".
- print
- Эта операция распечатывает содержимое кэша.
- Параметры:
- отсутствуют
- значение параметра ip-address игнорируется
- Результаты:
- словарь: содержимое кэша
|