пятница, 31 января 2025 г.

Астериск возвращает "404" на запрос OPTIONS

При получении OPTIONS Астериск ищет номер "s" в контексте default.

Поэтому простого диалпана вида

[default]

exten => s,1,Hangup

достаточно, чтобы Астериск возвращал "200", вместо "404".



понедельник, 27 января 2025 г.

Заголовки SIP Path

 Просто чтобы не забыть.

Заголовок Path - это такой аналог Record-Route для сообщений REGISTER и ответов на них, т.е. для сообщений вне диалога. Назначение аналогичное - запись цепочки адресов прокси, через которые проходят сообщения. Синтаксис аналогичен Record-Route.

Подробно в RFC 3327.                              

среда, 22 января 2025 г.

Реализация привязки аккаунта к IP-адресу с помощью модуля permissions в OpenSIPS

Проверка привязки делается по двум группам в таблице address модуля permissions. Сначала в одной группе ищется совпадение username из реквизитов аутентификации по сети 0.0.0.0/0 (т.е. по всем адресам), затем в другой группе ищется совпадение IP/username. Если совпадает, то запрос обрабатывается обычным образом.

На примере запроса REGISTER. Аккаунту 4521 разрешено подключаться только с IP 10.49.2.78.

четверг, 28 ноября 2024 г.

Strict и loose маршрутизация SIP, модуль rr в Opensips

Строгая (strict) и свободная (loose) маршрутизация SIP отличаются наличием или отсутствием модификации заголовка Request-URI (R-URI). Строгая маршрутизация устарела, сейчас обычно используется свободная.

При строгой маршрутизации SIP прокси обязан использовать для маршрутизации адреса из заголовка Route повторных запросов (ACK, BYE, Re-INVITE). При этом адрес в R-URI заменяется на "верхний" адрес из Route и сообщение передаётся на этот новый R-URI. Таким образом R-URI всегда содержит адрес следующего хоста (например, следующего прокси или уже самого получателя). Строгая маршрутизация подразумевает, что сообщение пройдет только по хостам, перечисленным в заголовке Route.



вторник, 26 ноября 2024 г.

Заголовки Via, Record-Route и Route

Заголовки Via содержат записи обо всех устройствах (прокси, АТС и т.п.), которые прошел начальный запрос на своём пути к получателю.  Ответы на запрос получатель должен отправлять на адрес из последнего заголовка Via. На обратном пути к отправителю каждое устройство удаляет заголовок Via со своим адресом, таким образом к отправителю приходит ответ с одним исходным Via, и UAC не получает информацию, каким путем прошли сообщения транзакции.

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

Для непосредственных ответов (таких как "200 OK") на начальный запрос в рамках одной транзакции используются адреса из заголовков Via в обратном порядке. А вот для маршрутизации последующих запросов диалога (ACK, BYE, Re-INVITE) берутся адреса из Record-Route. Для этого UAC формирует заголовок Route, используя адреса из заголовков Record-Route, полученных с финальным ответом на начальный запрос. Для формирования заголовка Route адреса берутся в обратном порядке, что позволяет проходить прокси в нужной очерёдности. Прокси, получивший сообщение с заголовком Route, пересылает это сообщение на адрес из Route.

Таким образом, использование заголовков Record-Route позволяет сохранить путь запросов через сеть в рамках всего диалога. Что может быть важно для корректной маршрутизации и биллинга.

Про диалоги и транзакции читаем тут.

Подробное описание на английском тут.

понедельник, 25 ноября 2024 г.

Добавить привилегии пользователю на все таблицы базы

 #!/bin/bash

for table in `echo "SELECT schemaname || '.' || relname FROM pg_stat_user_tables;" | psql -A -U postgres -t BASENAME`;

do

    echo "GRANT ALL PRIVILEGES ON TABLE $table to \"USERNAME\";"

    echo "GRANT ALL PRIVILEGES ON TABLE $table to \"USERNAME";" | psql -A -U postgres -t BASENAME

done


пятница, 8 ноября 2024 г.

Ошибки E1

 LOS = Loss of Signal. You aren't getting signal.

LOF = Loss of Framing. Your packets aren't getting through framed correctly.

AIS = receiving Alarm Indicator Signal. The far end isn't getting things through framed correctly, and is indicating that back to you.

RAI = Remote Alarm Indicator. The far end is getting an error and is signalling that back to you.