asterisk freepbx wss webrtc issue
Команда для проверки установления TLS соединения, показывает информацию о сертификате и ошибки.
openssl s_client -connect xxx.xxx.xxx.xxx:8089 -bugs
ошибка на астериске выдавала:
TLS non-recoverable I/O error occurred: error:00000005:lib(0):func(0):DH lib, System call EOF
Также в
Оказалось, просто истёк сертификат:
verify error:num=10:certificate has expired
но в через ssldump Этого не увидеть, там будет просто “S>C Alert” хотя абсолютно точно можно было посмотреть информацию о сертификате и понять это:
openssl x509 -in certificate.crt -text -noout
11.09.2018Как Астериск распределяет входящие звонки:
Incoming SIP Connections When Asterisk receives an incoming SIP call, the SIP Channel Module
- first tries to find a [user] section matching the caller name (From: username),
- then tries to find a [peer] section matching the caller’s IP address.
If no matching user or peer is found, the call is sent to the context defined in the [general] section of sip.conf.sip.conf.
| Posted in Asterisk, Готовые решения, Проблемы при настройке | No Comments »
скорость перерегистрации телефонов на asterisk issabel
через веб интерфес добавляешь в sip_general_custom.conf:
defaultexpiry=30
minexpiry=20
maxexpiry=40
таким образом если телефон настроен на 3600, то время будет уменьшено до 40 секунд.
25.04.2018AWK ASTERISK CSV
Получить все звонки длительностью болье 3900 секунд.
awk ‘{FS=”,”; if ($16 > 3900) print $0}’ Master.csv > long
28.03.2018Репликация таблиц в postgres 9.5 и выше
Для репликации таблиц в постгресе я использовал pglogical, который на первый взгляд может показаться не нужной надстройкой в вопросе репликации.
Однако, в процессе сравнения инструментов для репликации а, также при попытки реализовать её, я обнаружил, что pglogical очень простой способ реплицировать несколько таблиц в базе данных постгрес.
итак, описание установки исключительно полезное и находится здесь:
Моя задача состояла в том, что есть основная база данных постгрес к которой подключаются астериски, и используют ее для realtime, но не только, еще и скрипты на этих астерисках спрашивают при каждом звонке информацию о балансах, маршрутах, стоимости звонков.
А поскольку астерисков много а БД одна и еще находится далеко поэтому network latency > 120ms. поэтому я создал кеширующий несколько таблиц сервер. скорость репликации отличная, проблем не замечено.
| Posted in SQL запросы, Готовые решения | No Comments »
High load. Высокая нагрузка на сервер Астериск.
В рамках проекта с высокой нагрузкой нужно было решить проблему, описание которой звучит так: После 360 секунд вызовы переставали попадать в биллинг. Первонаперво была выяснена причина это отсутствие некоторых переменных, получаемых через AGI интерфейс php скриптом. При этом, если использовать AGI то такой проблемы не наблюдалось.
В нашем случае используется FASTAGI и связка ASterisk, xinetd, phpagi-fastagi.php, myscript.php.
Поиск решений занял несколько дней, потому, что нагрузка на сервер была высокой итак: 1. Обнаружили что mysript.php не получает значение переменной DIALSTATUS после выполнения команды DIAL. И поиск в интернете ничего не давал, пока я не набрел на собственно код phpagi библиотеки на sourceforge.net. (https://sourceforge.net/p/phpagi)
И в багтреке были прикреплены несколько вопросов именно по поводу переменной DIALSTATUS. Но комментиариев с решением под ними не было, а были они в “обсуждениях”, вот здесь: https://sourceforge.net/p/phpagi/discussion/366892/thread/5a4c09f0/
В двух словах, phpagi Общается с асетриском через потоки как будто пишет и читает из файла строки, и вот какое дело, иногда когда скрипт читает данные из потока он получает толи пустые строки толи что, и не может получить значение переменной, хотя по agi debug четко видно, переменная передается скрипту.
Было два решения которые предложила система, это а) повторить запрос переменной несколько раз, пример:
function get_var($agi_in, $value)
{
$temp = $agi_in->get_variable($value);
$temp = $agi_in->get_variable($value);
$temp = $agi_in->get_variable($value);
$temp = $temp;
$agi_in->verbose($value." :".$temp);
return $temp;
}
б) решить вопрос кардинально, но я это решение реализовать не смог, т.к. до конца не понял как работают стримы и куда вставить код.
function evaluate($command)
{
//clear the buffer
stream_set_blocking($this->in,0);
do {
$line = fgets($this->in);
} while ($line);
stream_set_blocking($this->in,1);
Всем пока.
| Posted in Asterisk, Проблемы в коде | No Comments »
SIPP Тестирование Asterisk
Решил провести тестирование Астериска на предмет максимального количества звонков.
Сразу скажу, у меня Астериск 1.4 и я просто посылаю на эхотест его, примеры эхотеста в астериска в sip.conf есть.
Чтобы провести тестирование нагрузки нам понадобится sipp
- yum install sipp
- копируем в локальный каталог сценарий с uac_pcap.xml из документации sipp
- копируем pcap файлы для астериск в каталог pcap текущей папки
- подбираем нужные параметры для sipp и должно работать
Здесь я опишу только 4 пункт:
в моем случае конфигурация рабочая выглядит так:
sipp -sf uac_pcap.xml -r 1 -mi 111.111.111.111 -i 111.111.111.111 -s 1005 222.222.222.222 -trace_msg -rtp_echo -d 5000
где
111.111.111.111 – внешний интерфейс вашей машины
222.222.222.222 – адрес астериска
1005 – номер для эхотеста
-d 5000 – пауза в 5 секунд (опционально)
и все погнали, в моей конфигурации сети, без особых проблем астериск успевает обслужить 50 вызовов в секунду и примерно 500 одновременных соединений, потом начинаются ретрансмиты сообщений.
SOX. WAV. ASTERISK. BATCH. Конвертнуть файлы для астериска.
Привет!
Дали wavки для заливки на астериск, если честно понятия не имею что там и как устроено в астере, но Астериск сам предлоагает сервис для конвертации WAV файлов во все нужные ему форматы. при помощи CLI “file convert”.
1. WAV нужно преобразовать в 8000 Khz и 1 канал, делается это командой: “sox input.wav -c 1 -b 8000 outout.wav”
лично я не смог потратить время с делать одной командой конвертацию файлов в каталоге поэтому поступил тупейшим образом: ls -a *.wav
скопировал результат в файлик, там произвел замену при помощи регулярных выражений например из строчки: 1.wav я получил
sox 1.wav -r 8000 -c 1 new/1.wav
и просто выполнил файлик… таким образом в каталоге new образовались уже готовые, для астериска файлы.
2.далее я создаю файлик с командами типа ” asterisk -x “file convert transfering.wav res/transfering.g729”
и все, в каталоге res получаются файлики с нужными кодеками. Астериск сам понимает в какой кодек надо перекинуть файл, если вы указывается расширение. В моем случае это g729.
Кодеки должны присутствовать и быть активными конечно.
Бай.
1.04.2015Opensips. NAT. Port. Asterisk.
Почти день потратил на то чтобы понять почему при исходящем звонке нет звука.
Система такая:
Client A ( local IP) —> Router(TP-Link) —-> Opensips (NAT_HELPER) —-> Asterisk (1.8) (A2Billing) —–> Carrier
По SIP trace все гладко, порты, IP адреса, все подменяется просто отлично но аудио нет. Не слышно абонента.
Оказывается при выходе с TP-link media отправлялось не с 8000 порта, а с 1024. Чертов роутер меняет его по свему усмотрению, при это в SIP сообщение он не залезает, потому, что я отключил все “умные” функции связанные с SIP сообщениями на роутере, для чего? Для того, чтобы быть уверенным в том, что SIP сообщение отправленное мной, не претерпевает изменений.
Так вот, а Астериск получая медиа-трафик с порта 1024 слал его на 8000, т.к. в сообщении указан именно он. TP-Link разводил руками, че это мне на 8000 порт приходит трафик, я шлю только с 1024. В общем, в астериске есть настройка nat в sip.conf значение comedia означает, что астериск будет слать трафик на фактический адрес, с которого приходит медиа. Это решает такие проблемы.
| Posted in Проблемы при настройке | No Comments »
| Posted in Asterisk, ssl\tls, Безопасность, Проблемы при настройке | No Comments »