среда, 20 января 2016 г.

Проблемы при обновлении значения поля 'port' в Asterisk Realtime при использовании Mysql 5.7

При использовании MySQL 5.7 в качестве сервера баз данных для Asterisk Realtime столкнулся с проблемой когда, при хранении настроек SIP в Realtime, удаляется регистрация пользователя.

Asterisk в момент удаления регистрации пытается обновить данные в строке пользователя, чья регистрация удаляется, обнулить соответствующие поля, и при обновлении поля 'port' пытается выставить ему пустое значение, передавая в запросе port = '', очевидно такое действие с более старыми версиями MySQL прокатывало, а вот MySQL 5.7 Это не очень нравится.
В консоли Asterisk появляются вот такие ошибки:
[Jan 20 11:32:07] NOTICE[4432]: chan_sip.c:23396 handle_response_peerpoke: Peer 'test1' is now Reachable. (6ms / 2000ms) -- Unregistered SIP 'test1'
[Jan 20 11:32:13] WARNING[4432]: res_config_mysql.c:635 update_mysql: MySQL RealTime: Failed to update database: Incorrect integer value: '' for column 'port' at row 1
[Jan 20 11:32:13] WARNING[4432]: res_config_mysql.c:635 update_mysql: MySQL RealTime: Failed to update database: Incorrect integer value: '' for column 'port' at row 1 

Причём данная проблема уже известна c версии 11.16 и в 11.17 исправлена . Я наткнулся на эту проблему в версии Asterisk 11.6-cert11 пришлось править исходник chan_sip

суббота, 21 июня 2014 г.

DEF коды мобильных операторов

Все разработчики систем телефонии рано или поздно сталкиваются с необходимостью базы телефонных кодов, она нужна для обработки статистики (чтобы понимать в какие регионы и на каких операторов идут звонки или откуда приходят), для написания маршрутов по префикса. И вот тут возникает проблема. Если коды МГ/МН (межгород/муждународная) связи общедоступны и в интернете её легко найти, то с мобильными операторами возникают сложности, более того согласно изменений внесённых в закон о связи теперь ещё и номера можно переносить от одного оператора к другому, в общем с мобильными просто ужас. Что же делать? К сожалению  с переносом номеров уже ничего не сделаешь, но базу кодов мобильных операторов получить всё же можно, она иногда изменяется и чтобы следить за её изменениями можно воспользоваться услугами компании МТТ которая регулярно поддерживает базу в актуальном состоянии и даёт возможность получать обновления. Из предоставляемых данных можно получить регион, наименование компании мобильного оператора, его ID. Данные, я считаю,  очень нужные.
Более того компания МТТ пытается разработать API для доступа к выше описанным данным (не бесплатно естественно), на данный момент сервис предоставляет данные по запросу и через жопу как в нашей стране заведено, не давно, для проекта которым я сейчас занимаюсь, мне потребовалось получать данные от вышеупомянутого МТТ и парсить их, вариантов получения масса, более того они и сами могут их тебе закинуть на сервак, только выбери протокол и жди обновлений :) Но я привык относиться скептически к таким прелестям и решил по старинке забирать по FTP с их сервера документ в XML формате, далее не хитрым парсингом апдейтить свою базу, но не тут то было! Оказывается великие и могучие разработчики этой компании не сильно знакомы со стандартами XML и искренне верят что кусок XML выдранный из какого то SOAP ответа, это и есть XML, и ребята не парятся об объявлении кодировок, начале документа, да что уж там говорить... В общем мои попытки образумить их ничем не увенчались, и я решил обойтись стандартным CSV уж в нём то сложно накосячить. На данный момент всё так и работает. 

вторник, 11 марта 2014 г.

Перехват SIP сообщений

Для понимания, что происходит на сервере, при настройке, бывает необходимо перехватывать поступающие сообщения. Для этого очень хорошо помогает tcpdump:

tcpdump -nqt -s 0 -A -i eth0 port 5060 -w /1.pcap

выполнив данную команду вы получаете дамп SIP и можете открыть его с помощью wireshark

понедельник, 3 февраля 2014 г.

Мониторинг Asterisk с помощь Zabbix-Agent

В силу того, что моя деятельность сводится к разработке и администрированию систем телефонии, я постоянно сталкиваюсь с необходимостью мониторинга данных сервисов, ну а уж если речь заходит о мониторинге то, по моему мнению, Zabbix - наше всё, потому что гибок, отлично документирован, да и используют его многие, а значит решение различных задач и возможных проблем найти будет довольно просто. вот и я решил стать одним из многих и написал свой шаблон с набором скриптов для мониторинга основных параметров Asterisk. В качестве языка для скриптов решил использовать Python потому что, по моему, он очень прост в изучении и не требует много усилий на реализацию простых задач (да и сложных тоже). Данный шаблон со всеми скриптами лежит в репозитории, какие либо доработки обязательно буду коммитить и описывать здесь.

пятница, 17 января 2014 г.

bash скрипт пингующий список ip адресов

Совсем недавно встала задача проверять доступность определённого списка узлов сети в конкретный момент времени и отсылать результаты на почту, данная задача была вызвана тем что в компании где я являюсь админом на данный момент более сотни разбросанных по всей нашей Родине магазинов, которые представляют из себя собственную подсеть с маршрутизатором входящим в MPLS сетку или поднимающим отдельный VPN для подключения к центральному маршрутизатору. Так как приходится работать в различных условиях и с различными провайдерами, нет ни какой уверенности что определённые процедуры отгрузки данных, которые запускаются в конкретный промежуток времени отработают и не отвалятся из-за отсутствия канала. Именно по этому было решено пинговать их скриптом и список не ответивших хостов высылать на почту ответственных за данный сервис сотрудников

Яндекс.Метрика