Работа поля

Основной форум.
Для опытных

Модераторы: Admins, Модераторы

Ответить
megatron_dam
Сообщения: 64
Зарегистрирован: 19 фев 2015, 15:47

Работа поля

Сообщение megatron_dam » 28 июл 2016, 18:10

Коллеги, доброго времени суток.
Использую CentOS 7 и Asterisk 1.8.32.3 без GUI.
Вход работает, а вот исход отваливается
Последний раз редактировалось megatron_dam 01 авг 2017, 17:46, всего редактировалось 3 раза.

virus_net
Сообщения: 442
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 29 июл 2016, 06:14

Не зачем съезжать. Зайти и если надо, то попробовать поправить собственными ручками.
В chan_sip.c есть функция initreqprep, собственно в ней то и обрабатывается usereqphone и там же добавляют user=phone.
В функции есть коммент:

Код: Выделить всё

                const char *s = p->username;    /* being a string field, cannot be NULL */

                /* Test p->username against allowed characters in AST_DIGIT_ANY
                        If it matches the allowed characters list, then sipuser = ";user=phone"
                        If not, then sipuser = ""
                */
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

megatron_dam
Сообщения: 64
Зарегистрирован: 19 фев 2015, 15:47

Сообщение megatron_dam » 29 июл 2016, 12:28

Спасибо за совет.
Просто не особо очевидно как его безболезненно поправить и можно ли это вообще делать(
phone
Последний раз редактировалось megatron_dam 01 авг 2017, 17:41, всего редактировалось 2 раза.

xelas
admin
Сообщения: 1143
Зарегистрирован: 05 мар 2007, 11:21

Сообщение xelas » 29 июл 2016, 12:39

Может быть надо было исправить не имя пира а fromuser/defaultuser?

megatron_dam
Сообщения: 64
Зарегистрирован: 19 фев 2015, 15:47

Сообщение megatron_dam » 29 июл 2016, 12:54

[url=http://asteriskforum.ru/viewtopic.php?p=83358#83358][img]http://asteriskforum.ru/images/quotebackarrow.gif[/img][/url] xelas @ Пт Июл 29, 2016 14:39 писал(а):Может быть надо было исправить не имя пира а fromuser/defaultuser?
Пир без регистрации, коллега(
Только по IP.

xelas
admin
Сообщения: 1143
Зарегистрирован: 05 мар 2007, 11:21

Сообщение xelas » 29 июл 2016, 12:59

И что?
fromuser прописывается в настройках пира и к регистрации отношения не имеет.

Added after 3 minutes:

А при ближайшем рассмотрении находим еще и такую опцию в конфигурации пира:
usereqphone = yes|no : Indicates whether to add a ";user=phone" to the URI. Default no.

megatron_dam
Сообщения: 64
Зарегистрирован: 19 фев 2015, 15:47

Сообщение megatron_dam » 29 июл 2016, 16:29

[url=http://asteriskforum.ru/viewtopic.php?p=83360#83360][img]http://asteriskforum.ru/images/quotebackarrow.gif[/img][/url] xelas @ Пт Июл 29, 2016 14:59 писал(а):И что?
fromuser прописывается в настройках пира и к регистрации отношения не имеет.

Added after 3 minutes:

А при ближайшем рассмотрении находим еще и такую опцию в конфигурации пира:
usereqphone = yes|no : Indicates whether to add a ";user=phone" to the URI. Default no.
Последний раз редактировалось megatron_dam 01 авг 2017, 17:35, всего редактировалось 1 раз.

xelas
admin
Сообщения: 1143
Зарегистрирован: 05 мар 2007, 11:21

Сообщение xelas » 29 июл 2016, 19:47

Кроме как поправить руками код -- никак.
Судя по форуму и баг трекеру Астериска эта проблема возникает с определенной периодичностью во всех ветках и только с определенным софтом на конце оператора.
Так что, либо менять оператора, либо одно из двух.
В любом случае, для версии 1.8 вы не найдете решения. EOL.

https://issues.asterisk.org/jira/browse ... 3Dphone%22

https://community.asterisk.org/t/sip-us ... er/44177/3

virus_net
Сообщения: 442
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 30 июл 2016, 06:35

megatron_dam писал(а):в случае, если пир состоит из цифр
С чего вы решили, что в p->username содержится название пира ? Мне вот так не кажется. Сделайте print содержимого этой переменной и тогда точно поймете что там.
megatron_dam писал(а):можно ли это вообще делать(
Ну а почему нет то ? Если есть исходный код, то его можно править :)
megatron_dam писал(а):как его безболезненно поправить
делаете виртуальную машину, на ней все обкатываете, а затем переносите на боевую систему. Либо ищите человека, который за денежку поправит за вас.
xelas писал(а):Так что, либо менять оператора, либо одно из двух.
+1
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

megatron_dam
Сообщения: 64
Зарегистрирован: 19 фев 2015, 15:47

Сообщение megatron_dam » 30 июл 2016, 09:59

Нашел вот это, коллеги!
Копи-паст оригинала.
Последний раз редактировалось megatron_dam 01 авг 2017, 17:36, всего редактировалось 1 раз.

xelas
admin
Сообщения: 1143
Зарегистрирован: 05 мар 2007, 11:21

Сообщение xelas » 30 июл 2016, 12:33

Символы - и + означают, что строка удаляется и добавляется.
Между 11 и 1.8 версиями очень много времени прошло. И данный кусок кода может не соответствовать тому, что вы увидите в реальности.

awsswa
Сообщения: 1723
Зарегистрирован: 28 апр 2012, 10:19
Откуда: Russia, Пермь

Сообщение awsswa » 30 июл 2016, 12:46

что мешает перейти на 11 ветку и патч накатить ?
платный суппорт по мере возможностей

virus_net
Сообщения: 442
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 31 июл 2016, 07:48

xelas прав и патч для 11-ой в прямую не подойдет для 1.8, т.к. там немного не так.
awsswa, зачем переходить, если легко можно 1.8 допилить.
megatron_dam, вы выложили результат diff

Для 1.8 будет:

Код: Выделить всё

[work:/usr/ports/net/asterisk/work/asterisk-1.8.23.1/channels/] diff -uN chan_sip.c.orig chan_sip.c

Код: Выделить всё

--- chan_sip.c.orig     2013-08-27 23:23:25.000000000 +0400
+++ chan_sip.c      2016-07-31 09:46:52.000000000 +0300
@@ -12527,9 +12527,9 @@

        ourport = (p->fromdomainport) ? p->fromdomainport : ast_sockaddr_port(&p->ourip);
        if (!sip_standard_port(p->socket.type, ourport)) {
-               snprintf&#40;from, sizeof&#40;from&#41;, "\"%s\" <sip&#58;%s@%s&#58;%d>;tag=%s", n, tmp_l, d, ourport, p->tag&#41;;
+               snprintf&#40;from, sizeof&#40;from&#41;, "\"%s\" <sip&#58;%s@%s&#58;%d%s>;tag=%s", n, tmp_l, d, ourport, urioptions, p->tag&#41;;
        &#125; else &#123;
-               snprintf&#40;from, sizeof&#40;from&#41;, "\"%s\" <sip&#58;%s@%s>;tag=%s", n, tmp_l, d, p->tag&#41;;
+               snprintf&#40;from, sizeof&#40;from&#41;, "\"%s\" <sip&#58;%s@%s%s>;tag=%s", n, tmp_l, d, urioptions, p->tag&#41;;
        &#125;

        if &#40;!ast_strlen_zero&#40;explicit_uri&#41;&#41; &#123;
Всего то надо добавить %s и urioptions.

Ну или вообще, кардинальный подход:

Код: Выделить всё

--- chan_sip.c.orig     2013-08-27 23&#58;23&#58;25.000000000 +0400
+++ chan_sip.c      2016-07-31 09&#58;46&#58;52.000000000 +0300
@@ -12527,9 +12527,9 @@

        ourport = &#40;p->fromdomainport&#41; ? p->fromdomainport &#58; ast_sockaddr_port&#40;&p->ourip&#41;;
        if &#40;!sip_standard_port&#40;p->socket.type, ourport&#41;&#41; &#123;
-               snprintf&#40;from, sizeof&#40;from&#41;, "\"%s\" <sip&#58;%s@%s&#58;%d>;tag=%s", n, tmp_l, d, ourport, p->tag&#41;;
+               snprintf&#40;from, sizeof&#40;from&#41;, "\"%s\" <sip&#58;%s@%s&#58;%d;user=phone>;tag=%s", n, tmp_l, d, ourport, p->tag&#41;;
        &#125; else &#123;
-               snprintf&#40;from, sizeof&#40;from&#41;, "\"%s\" <sip&#58;%s@%s>;tag=%s", n, tmp_l, d, p->tag&#41;;
+               snprintf&#40;from, sizeof&#40;from&#41;, "\"%s\" <sip&#58;%s@%s;user=phone>;tag=%s", n, tmp_l, d, p->tag&#41;;
        &#125;

        if &#40;!ast_strlen_zero&#40;explicit_uri&#41;&#41; &#123;
:)
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

megatron_dam
Сообщения: 64
Зарегистрирован: 19 фев 2015, 15:47

Сообщение megatron_dam » 01 авг 2016, 09:40

Коллеги, всем большое спасибо.
То ли я что-т не так делаю, то ли еще что.
Последний раз редактировалось megatron_dam 01 авг 2017, 17:37, всего редактировалось 1 раз.

virus_net
Сообщения: 442
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 01 авг 2016, 10:02

megatron_dam писал(а):Изменил файлик
Ну а asterisk то вы пересобрали после этого ?
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

megatron_dam
Сообщения: 64
Зарегистрирован: 19 фев 2015, 15:47

Сообщение megatron_dam » 01 авг 2016, 10:06

Да, как положено я написал об этом...
./configure и т.д.

virus_net
Сообщения: 442
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 02 авг 2016, 07:15

Применил патч, пересобрал, перезапустил.
Проверяю:
INVITE sip:123@127.0.0.1 SIP/2.0
Via: SIP/2.0/UDP 127.0.0.1:5060;branch=z9hG4bK3b21679d;rport
Max-Forwards: 70
From: "asterisk" <sip:asterisk@test.mega-net.ru;user=phone>;tag=as341eb14a
To: <sip:123@127.0.0.1>
Contact: <sip:asterisk@127.0.0.1:5060>
Call-ID: 43fd9cca0968754f6ad68f2a228ecae4@test.mega-net.ru
CSeq: 102 INVITE
User-Agent: test.mega-net.ru
Date: Tue, 02 Aug 2016 06:12:50 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 259
Что я делаю не так ? :) А точнее все же это вы что-то делаете не так.
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

megatron_dam
Сообщения: 64
Зарегистрирован: 19 фев 2015, 15:47

Сообщение megatron_dam » 02 авг 2016, 09:06

Спасибо за фидбэк. Попробую еще раз. Что-то "паранормал" какой-то(
А вы какой "вариант" использовали? Тот, что радикальнее?))

Added after 1 hours:
[url=http://asteriskforum.ru/viewtopic.php?p=83373#83373][img]http://asteriskforum.ru/images/quotebackarrow.gif[/img][/url] megatron_dam @ Вт Авг 02, 2016 10:06 писал(а):Спасибо за фидбэк. Попробую еще раз. Что-то "паранормал" какой-то(
А вы какой "вариант" использовали? Тот, что радикальнее?))
Всем большое спасибо за посильную помощь, коллеги.
Все завелось. В заголовках инвайтов необходимые поля помечены нужными "тэгами".
Только не понятно, почему сразу не завелось...только после второй пересборки(
Надеюсь, что наши происки будут кому-то еще полезными!

virus_net
Сообщения: 442
Зарегистрирован: 05 окт 2014, 06:10
Откуда: Москва
Контактная информация:

Сообщение virus_net » 02 авг 2016, 16:40

megatron_dam писал(а):А вы какой "вариант" использовали?
Я использовал тот вариант, который вы указали в этом своем посте, т.е. радикальный. Если бы вы делали менее радикальный, то и я бы тоже тестил его же. Иначе какой смысл пробовать разные варианты и сравнивать полученные результаты ?
megatron_dam писал(а):не понятно, почему сразу не завелось...
Это можно осознать только в одном случае: в точности воспроизведя порядок совершенных действий и результатов проверок после этих действий.
Например самое простое для проверки это смотреть изменился ли размер файла модуля chan_sip.so после ваших действий по пересборке или нет. Если не изменился, то вывод сразу очевиден и дальнейшие тесты бессмысленны.
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)
- whois сервис: whois.bitname.ru или whois.bitname.bit
- dns сервис: dns1.bitname.ru dns2.bitname.ru
- статистика по доменам
ENUMER - звони бесплатно и напрямую.

Oy90
Сообщения: 16
Зарегистрирован: 27 июн 2008, 09:10
Контактная информация:

Сообщение Oy90 » 11 авг 2016, 19:21

Патч для 11.23:

Код: Выделить всё

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index c35091f..2362617 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -13921,9 +13921,9 @@ static void initreqprep&#40;struct sip_request *req, struct sip_pvt *p, int sipmetho
        ourport = &#40;p->fromdomainport && &#40;p->fromdomainport != STANDARD_SIP_PORT&#41;&#41; ? p->fromdomainport &#58; ast_sockaddr_port&#40;&p->ourip&#41;;
 
        if &#40;!sip_standard_port&#40;p->socket.type, ourport&#41;&#41; &#123;
-               ret = ast_str_set&#40;&from, 0, "<sip&#58;%s@%s&#58;%d>;tag=%s", tmp_l, d, ourport, p->tag&#41;;
+               ret = ast_str_set&#40;&from, 0, "<sip&#58;%s@%s&#58;%d%s>;tag=%s", tmp_l, d, ourport, urioptions, p->tag&#41;;
        &#125; else &#123;
-               ret = ast_str_set&#40;&from, 0, "<sip&#58;%s@%s>;tag=%s", tmp_l, d, p->tag&#41;;
+               ret = ast_str_set&#40;&from, 0, "<sip&#58;%s@%s%s>;tag=%s", tmp_l, d, urioptions, p->tag&#41;;
        &#125;
        if &#40;ret == AST_DYNSTR_BUILD_FAILED&#41; &#123;
                /* We don't have an escape path from here... */
dCAP #2147

Ответить