воскресенье, 21 сентября 2025 г.

Unable to connect to remote asterisk

 

 После запуска **asterisk** через **systemctl** от пользователя **«asterisk»** обнаружилось, что при подключении к **CLI** выдаёт ошибку:

Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)

После разбирательства выяснилось, что у папки **/var/run/asterisk** владелец указан root и права 755.

drwxr-xr-x  2 root    asterisk      40 июл  6 16:38 asterisk

После исправления владельца и прав вручную **asterisk** стартовал в штатном режиме. Но **/var/run** (а точнее /run, на который ссылается /var/run) является **tmpfs**, и после перезагрузки папки **/var/run/asterisk** вообще не появлялось, а после запуска **asterisk'а** папка создавалась по новой с теми же владельцем и правами.

Для решения данной проблемы воспользовался [инструкцией](https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html) и создал файл **asterisk.conf** в папке **/usr/lib/tmpfiles.d/** с таким содержимым:

d 0755 asterisk asterisk -

Теперь после перезапуска системы папка сразу создавалась с необходимым владельцем и правами:

drwxr-xr-x  2 asterisk    asterisk      40 июл  6 16:58 asterisk

 

 

/var/run
drwxr-xr-x  2 asterisk asterisk   80 Jun 21 14:21 asterisk

права asterisk чтобы мог создать

srwxrwxr-x 1 asterisk asterisk 0 Jun 21 14:21 asterisk.ctl
-rw-r--r-- 1 asterisk asterisk 5 Jun 21 14:21 asterisk.pid


asterisk.conf
[files]
astctlpermissions=0775
astctlowner = asterisk
astctlgroup = asterisk
astctl = asterisk.ctl



chown asterisk:asterisk asterisk
chown -R asterisk.asterisk /etc/asterisk /var/{lib,log,spool}/asterisk /usr/lib64/asterisk

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

Linux После удаления место не освободилось

 
 Такое случается на Linux, только обычно этого не кто не замечает так как файлы обычно малого объема, да и перезагрузка машины решает эту проблему, но когда файл большой (несколько ГБ) и место не освободилось сразу, а еще и перезагрузить нельзя, тогда приходится засучить рукава и разбираться в мат части

df -h

Показало, что мало место, путем поиска du -d1 -h находим источник занятого места. В моем случае это -  kamailio.log

Решение:

# lsof | grep deleted | grep kamailio
rsyslogd    1155                 root    6w      REG              253,4 3040190464      10981 /var/log/kamailio/kamailio.log (deleted)
in:imjour   1155  1172           root    6w      REG              253,4 3040190464      10981 /var/log/kamailio/kamailio.log (deleted)
rs:main     1155  1187           root    6w      REG              253,4 3040190464      10981 /var/log/kamailio/kamailio.log (deleted)

Интересным в этом выводе будет цифра 1155. Ищем ссылку на типа /proc/*наш id*/fd/*ссылка на файл*

# ls -l /proc/1155/fd|grep kamailio
l-wx------ 1 root root 64 Feb  2 11:10 6 -> /var/log/kamailio/kamailio.log (deleted)

Собственно временный файл найден, обнуляем

cat /dev/null > /proc/1155/fd/6

таким образом можно восстановить удаленный файл linux из временного

пятница, 9 августа 2024 г.

Debian 12 sources.list редактирование и уход от cdrom

 

 


 Если после установки постоянно просит диск и ничего с этим не сделать, то идем в сорс-листы и комментим вот такую строчку

 cat /etc/apt/sources.list
#deb cdrom:[Debian GNU/Linux 12.5.0 _Bookworm_ - Official amd64 NETINST with firmware 20240210-11:27]/ bookworm contrib main non-free-firmware

deb http://deb.debian.org/debian/ bookworm main
#non-free-firmware
deb-src http://deb.debian.org/debian/ bookworm main
#non-free-firmware

deb http://security.debian.org/debian-security bookworm-security main
#non-free-firmware
deb-src http://security.debian.org/debian-security bookworm-security main
#non-free-firmware

# bookworm-updates, to get updates before a point release is made;
# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
deb http://deb.debian.org/debian/ bookworm-updates main
#non-free-firmware
deb-src http://deb.debian.org/debian/ bookworm-updates main
#non-free-firmware


 Пример из последнего Дебиан 12, но по сути так и в предыдущих версиях...по крайней мере где-то с 8ой

 

 

 

 

 

 

 

четверг, 25 июля 2024 г.

Asterisk 20.8 Unable to load module res_pjsip.so - pjsip_tls_transport_restart

 


 

 

Удивительная проблема в личный опыт

 

 Во-первых зачем оно все нам

Последняя версия научилась делать такое:

;================================TEL URIs=================================
;
; Asterisk has TEL URI support, but with limited scope. Support is only for
; TEL URIs present in traffic from a remote party. Asterisk does not generate
; any TEL URIs of its own.
;
; Currently, the allowed request types are INVITE, ACK, BYE, and CANCEL. Any
; other request type that contains a TEL URI will behave as it did before.
; TEL URIs are allowed in the request, From, and To headers.
;
; You can match a TEL URI From header by IP, header, or auth_username.

 

 Что это вы спросите?

Вот такое Астериск отродясь не мог понять:

INVITE tel:123456789 SIP/2.0


Тип транспорта принципиален и ранее был без выбора фактически(Н.323 уже можно не брать в расчет)

Отбой шел хоть и четырехсотой ошибкой, но интересной:

416 Unsupported URI scheme

Сообщение как бы и намекает что что-то не так в самой схеме URI


Узнал что с 20 версии как раз работает такое! Астериск, ты можешь уже почти все!!!!

С радостью пошел собирать + на последнем Дебиане 12, но в финале было вот такое еще, чего не ожидал


Проблема при сборке астера 20ой версии:

 [asterisk-bugs] [JIRA] (ASTERISK-30296) Undefined symbol on naive RockyLinux 8 system

> Optimizations remove the symbol pjsip_tls_transport_restart with a naive install of Asterisk 20.0.0 on RockyLinux 8.  Turning on DONT_OPTIMIZE resolves the problem.
> ERROR[166734]: loader.c:2513 load_modules: Error loading module 'res_pjsip.so': /usr/lib64/asterisk/modules/res_pjsip.so: undefined symbol: pjsip_tls_transport_restart
> # strings main/libasteriskpj.so.2 |grep transport_restart
> pjsip_tcp_transport_restart

Как оказалось проблема не нова, хотя сам не мог долго понять почему такой отказ идет.

Пробовал потом сам грузить руками уже из собранного, что ранее было помогало:


CLI> module load res_pjsip.so
Unable to load module res_pjsip.so
Command 'module load res_pjsip.so ' failed.
[2024-06-21 14:24:14] ERROR[1358]: loader.c:283 module_load_error: Error loading module 'res_pjsip.so': /usr/lib/asterisk/modules/res_pjsip.so: undefined symbol: pjsip_tls_transport_restart


В итоге, изучая матчасть и опыт предыдущих коллег из интернета, пришел к выправлению вот таким параметром при установке:


Вывод лога не форматированный, обращаем внимание

жалоба на сам драйвер, не работает не какой-либо один из суб модулей, а все, что говорит об неисправности самого pjsip-драйвера:

ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'chan_pjsip.so': /usr/lib/asterisk/modules/chan_pjsip.so: undefined symbol:>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'func_pjsip_endpoint.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_acl.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_authenticator_digest.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_caller_id.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_dialog_info_body_generator.so', missing dependencies: res_pjsip,>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_diversion.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_dtmf_info.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_endpoint_identifier_anonymous.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_endpoint_identifier_ip.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_endpoint_identifier_user.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_exten_state.so', missing dependencies: res_pjsip, res_pjsip_pubs>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_header_funcs.so', missing dependencies: res_pjsip, res_pjsip_ses>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_logger.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_messaging.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_mwi_body_generator.so', missing dependencies: res_pjsip, res_pjs>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_mwi.so', missing dependencies: res_pjsip, res_pjsip_pubsub
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_nat.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_notify.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_one_touch_record_info.so', missing dependencies: res_pjsip, res_>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_outbound_authenticator_digest.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_outbound_publish.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_outbound_registration.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_path.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_pidf_body_generator.so', missing dependencies: res_pjsip, res_pj>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_pidf_digium_body_supplement.so', missing dependencies: res_pjsip>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_pidf_eyebeam_body_supplement.so', missing dependencies: res_pjsi>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_publish_asterisk.so', missing dependencies: res_pjsip, res_pjsip>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_pubsub.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_refer.so', missing dependencies: res_pjsip, res_pjsip_session, r>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_registrar.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_rfc3326.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_sdp_rtp.so': /usr/lib/asterisk/modules/res_pjsip_sdp_rtp.so: und>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_send_to_voicemail.so', missing dependencies: res_pjsip, res_pjsi>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_session.so': /usr/lib/asterisk/modules/res_pjsip_session.so: und>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip.so': /usr/lib/asterisk/modules/res_pjsip.so: undefined symbol: p>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_t38.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_transport_websocket.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_xpidf_body_generator.so', missing dependencies: res_pjsip, res_p>
 Asterisk Ready.


Первый опыт изменения таких настроек

Обычно собирал не самые последние версии тк вопрос был не принципиален, а сейчас все приходится быть на острие не только прогресса, но и версионности ПО

Шикарный кейс

На памятку поисковый запрос удобнее по 

undefined symbol: pjsip_tls_transport_restart site:lists.digium.com




четверг, 5 октября 2023 г.

Linux/UNIX: unixtimestamp - что заперевод, где играет и какая его роль?

 

     Сейчас, когда пишу, время у меня 1659086347 или

 Fri Jul 29 2022 12:19:07 GMT+0300 (Москва, стандартное время)

 Забегая вперед, спойлер, мы живем в 165ую эпоху))



Перевод и проверку времени делаем, к примеру на: https://www.unixtimestamp.com/

как бы первоисточник.

Что это вообще такое?

Сама ВИКИ определяет это понятие как: 

"Unix-время (англ. Unix time, также POSIX-время) — система описания моментов во времени, принятая в Unix и других POSIX-совместимых операционных системах. 

Определяется как количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года (четверг); этот момент называют «эпохой Unix». "

 Такую целочисленную системутрадиционно и удобно использовать для сравнения и хранения дат

Выравнивание отсчета, логирования журналов и т п.

Одно из возможно для некоторых менее явное применение - оптимизация кода.

 

 if($conn){
//$i=0;
//$utimestamp = microtime(true);

foreach ($ArData as $ArVars) {
    //echo "$ArVars\n";

    //echo $i++."\n";
    //var_dump($ArData);
    $src=$ArVars['src'];
    $attempts=$ArVars['attempts'];
    //print('src='.$src.' attempts='.$attempts."\n");
    //$ArData[] = $vars;
    $sql_spam = "INSERT INTO spam (src, attempts) VALUES ($src, $attempts)";
    $result = mysqli_query($conn, $sql_spam);
    //$result = mysqli_query($conn, "INSERT INTO spam (src, attempts) VALUES ($src, $attempts)");
    //print("INSERT INTO spam (src, attempts) VALUES ($src, $attempts)\n");
    //echo "Данные успешно добавлены\n";
    //print($result."\n");
    //var_dump((string)$result);
            }
        }
else{
    echo "Ошибка: " . $conn->error;
    }


//$milliseconds = round((microtime(true)- $utimestamp ), 9);
//print($milliseconds."\n");

 Красным выделил самый простой счетчик по измерению времени выполнения кода.

Подобные конструкции мы используем постоянно, и главное удобно для операций с/над временем.

 

 

 

 

воскресенье, 16 апреля 2023 г.

Asterisk Function SIP_HEADERS & SIP_HEADER Разница 16 и 20

 

 


 Функция SIP_HEADER() была Asterisk 16

Используется для получения или установки значения заданного заголовка SIP сообщения.

А вот в 20ом появилась новая, но очень похожая, на столько похожая что по запросу в поисковике, яндекс подменяет на выше названную. Что интересно, Гугл такого не делает.

Давайте взглянем на синаксис

SIP_HEADER(name[,number])


 В принципе мог и не напоминать, все можно посмотреть по

CLI> core show function {ИМЯФУНКЦИИ}

 Смотрите на новинку:

 Function_SIP_HEADERS

Возвращает разделенный запятыми список имен заголовков (без значений) из
сообщения INVITE, отправившего текущий канал.

Идея логировать названия всех пользовательских заголовков которые пришли о вышестоящей АТС

SIP_HEADERS(prefix)
 

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

Функция специфическая, кто-то может сказать, что не нужная, но нет,  это крайне тонуий инструмент, нужный для специфических задач.

Каких?

Расскажу далее

четверг, 14 апреля 2022 г.

Поддерживает ли мой браузер нужный формат?

 

 


 Столкнулся с необходимостью проверки на предмет поддержки потокового видео в мой браузер и походу узнал вот про такой сайт

https://caniuse.com/?search=mp4 

По факту у меня во всех поддерживается, но было интересно посмотреть и другие форматы

Unable to connect to remote asterisk

   После запуска **asterisk** через **systemctl** от пользователя **«asterisk»** обнаружилось, что при подключении к **CLI** выдаёт ошибку: ...