SIP авторизации
Если есть задача получить IP адреса, с которых наблюдалась активность клиента за определенный промежуток времени, то можно использвать таблицу sip_auth_log.
Например, как получить такие данные для клиента с префиксом "0004*" c первого по девятое апреля включительно (в любом домене):
select distinct inet_ntoa(ip) from sip_auth_log where date_gmt>='2017-04-01 00:00:00' and date_gmt<'2017-04-10 00:00:00' and locate('0004*', ext_name)
Логика сбора данных следующая:
- Существует кэш IP, с которых авторизовывался добавочный, длительностью сутки (отсчет от последнего рестарта kamailio). Ключом кэша являтется "имя добавочного + IP"
- При каждом авторизованном запросе от добавочного (REGISTER, INVITE...) данные записываются в базу и кэш, если их нет в кеше и ничего не делается, если они там есть
Таким образом, не более раза в сутки возможны повторные ip адреса для добавочного. (кроме случаев, когда кэш очищается при перезагрузке kamailio)
Адреса медиа
В таблице cdr при вызовах, уходящих на добавочный или приходящих с него, сохраняется IP адрес медиа. Например, для клиента с идентификатором id=2944 (проще всего выяснить из пути url в административном интерфейсе или запросом вида select id from ringme.client where prefix='0004')
select distinct( inet_ntoa(device_ip) ) from cdr where init_time_gmt>='2016-01-01' and client_owner_id=2944 and ext_type='phone' and device_ip>0
Индексы
в запросе обязательно нужно указывать период и id клиента, иначе индексы не будут работать. Например, нельзя написать запрос так
select distinct( inet_ntoa(device_ip) ) from cdr where init_time_gmt>='2016-01-01' and locate('0004*', ext_name) and ext_type='phone' and device_ip>0
Локальные Адреса
Иногда (около 5%) для одного и того же добавочного в адресе медиа кроме внешних адресов оказываются локальные адреса (например, вида 192.168.xxx.xxx). Для их фильтрации можно делать запрос
select distinct( inet_ntoa(device_ip) ) from cdr where init_time_gmt>='2016-01-01' and client_owner_id=2944 and ext_type='phone' and device_ip>0 and not ( device_ip>>24 in (10, 127, 224) or device_ip>>24=192 and (device_ip&0xFF0000)>>16=168 or device_ip>>24=172 and (device_ip&0xFF0000)>>16=16 or device_ip>>24=169 and (device_ip&0xFF0000)>>16=204 )
особенности добавочных
Некоторые услуги могут работать, как добавочные. Например, регистрация внешнего номера или алиасы (FMC). В этом случае адресами медиа будут выступать адреса транков