AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

SIPP

Unix Way 3 сообщений -
#1

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

Нашёл вот такую статейку
http://open-voip.org/index.php?title=SIPP_UAC_and_asterisk
Взял от туда последнее inv_uac.xml
Вот сделал такую строку

./sipp -s 670008 -ap kilo101 -r 1 8.8.8.9:5060 -sf inv_uac.xml -i 8.8.8.10 -m 1 -d 10

На что я получают вот такой ответ
2011-11-15 12:01:30:215 1321336890.215987: OpenSSL is required for the -ap option..

В целом всё про SSL стоит

Код:
openssl-devel-0.9.8e-20.el5
xmlsec1-openssl-1.2.9-8.1
openssl-0.9.8e-20.el5
mod_ssl-2.2.3-11.el5_2.centos.4
openssl097a-0.9.7a-9.el5_2.1
openssl-perl-0.9.8e-20.el5


Вроде без ошибок собрался sipp

Код:
[root@trixbox1 sipp.svn]# make
make OSNAME=`uname|sed -e "s/CYGWIN.*/CYGWIN/"` MODELNAME=`uname -m|sed "s/Power Macintosh/ppc/"` sipp
make[1]: Entering directory `/usr/src/sipp.svn'
gcc -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o xp_parser.o xp_parser.c
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o message.o message.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o scenario.o scenario.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o screen.o screen.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o call.o call.cpp
gcc -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o comp.o comp.c
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o sipp.o sipp.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o stat.o stat.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o actions.o actions.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o variables.o variables.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o infile.o infile.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o deadcall.o deadcall.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o task.o task.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o socketowner.o socketowner.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o listener.o listener.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o opentask.o opentask.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o reporttask.o reporttask.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/include/openssl -c -o watchdog.o watchdog.cpp
gcc \
-o sipp xp_parser.o message.o scenario.o screen.o call.o comp.o sipp.o stat.o actions.o variables.o infile.o deadcall.o task.o socketowner.o listener.o opentask.o reporttask.o watchdog.o -ldl -lpthread -lncurses -lstdc++ -lm -L /usr/local/lib -L /usr/lib -L /usr/lib64
make[1]: Leaving directory `/usr/src/sipp.svn'


Линух
uname -a
Linux trixbox1.localdomain 2.6.18-92.1.18.el5 #1 SMP Wed Nov 12 09:30:27 EST 2008 i686 i686 i386 GNU/Linux

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

./sipp 8.8.8.9 -s 677678 -i 8.8.8.10 -d 20s -l 10 -aa -mi 8.8.8.10 -rtp_echo -nd -r 5

Added after 25 minutes:

Решил взять сорсы libssl и прочего, что шло с sipp с svn, всё там собралось, не инсталил только, поправил файлик make для sipp, собралось


Код:
[root@trixbox1 sipp.svn]# make
make OSNAME=`uname|sed -e "s/CYGWIN.*/CYGWIN/"` MODELNAME=`uname -m|sed "s/Power Macintosh/ppc/"` sipp
make[1]: Entering directory `/usr/src/sipp.svn'
gcc -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o xp_parser.o xp_parser.c
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o message.o message.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o scenario.o scenario.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o screen.o screen.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o call.o call.cpp
gcc -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o comp.o comp.c
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o sipp.o sipp.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o stat.o stat.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o actions.o actions.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o variables.o variables.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o infile.o infile.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o deadcall.o deadcall.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o task.o task.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o socketowner.o socketowner.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o listener.o listener.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o opentask.o opentask.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o reporttask.o reporttask.cpp
g++ -D__LINUX -pthread -DSVN_VERSION="\"unknown\"" -I. -I/usr/src/sipp.svn/sipp-external-lib-src/openssl-0.9.8c -c -o watchdog.o watchdog.cpp
gcc \
-o sipp xp_parser.o message.o scenario.o screen.o call.o comp.o sipp.o stat.o actions.o variables.o infile.o deadcall.o task.o socketowner.o listener.o opentask.o reporttask.o watchdog.o -ldl -lpthread -lncurses -lstdc++ -lm -L /usr/local/lib -L /usr/lib -L /usr/lib64


Эффект равен 0, всё также говорить

2011-11-15 12:30:29:547 1321338629.547519: OpenSSL is required for the -ap option..

Added after 3 minutes:

Нашёл
Код:
http://sipp.sourceforge.net/doc/reference.html

# make ossl
#2

Ещё есть пару вопросов, решил скриптец написать, с регистрацией и звонками, но пока что не получалось ни, как регистрация проходила, но Астериск решил ещё слать OPTIONS, прочитал, что если не ответить на них, то уже не будет считаться, что номер зареган, тем самым, мой инвайт - второй инвайт шлётся в сад по 401, и не получается сделать звонок.
Решил научить скрипт отвечать на OPTIONS OK, но как добыть с OPTINONS CALL-ID, который приходит от Астериска.

Вот что имею с http://open-voip.org/index.php?title=SIPP_UAC_and_asterisk файл reg_uac.xml, чуть-чуть подправленный.


Код:









REGISTER sip:[remote_ip] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port]
To:
From: "[service]"
Contact: ;transport=[transport]
Expires: 300
Call-ID: [call_id]
CSeq: 2 REGISTER
Content-Length: 0

]]>










ACK sip:[service]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port]
From: "[service]";tag=[call_number]
To: [peer_tag_param]
Call-ID: [call_id]
CSeq: 1 ACK
Contact: sip:[service]@[local_ip]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0

]]>




REGISTER sip:[remote_ip] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port]
To:
From: "[service]"
Contact: ;transport=[transport]
[authentication username=611111 password=opiska]
Expires: 300
Call-ID: [call_id]
CSeq: 2 REGISTER
Content-Length: 0

]]>









Added after 42 minutes:

Сейчас Астериск шлёт NOTIFY, но не судьба почему-то его отловить.
Пробую вот так


Код:




SIP/2.0 200 OK
[last_Via:]
[last_From:]
[last_To:]
[last_Call-ID:]
[last_CSeq:]
Contact:
Content-Length: 0

]]>


В в логе SIPP пишет, вот так

Код:
2011-11-24 11:44:12:099 1322113452.099361: Discarding message which can't be mapped to a known SIPp call:
NOTIFY sip:611111@22.22.22.82:5060 SIP/2.0
Via: SIP/2.0/UDP 22.22.22.69:5060;branch=z9hG4bK3d24b436;rport
From: "Unknown" ;tag=as30e2ef76
To:
Contact:
Call-ID: 4651fb4c60d3e6c04466a7f3371f4b99@22.22.22.69
CSeq: 102 NOTIFY
User-Agent: Asterisk PBX
Max-Forwards: 70
Event: message-summary
Content-Type: application/simple-message-summary
Content-Length: 92

Messages-Waiting: no
Message-Account: sip:asterisk@22.22.22.69
Voice-Message: 0/0 (0/0)


Added after 52 minutes:

Тут прочитал http://www.mail-archive.com/sipp-users@l ... 01270.html, что если приходит в SIPP сообщение с отличным от известного CALL-ID, то оно шлётся садом и огородом, верно понял суть письма человека?
Если это так что делать, кто виноват? Question
#3

Вот нашёл решение
http://blog.gmane.org/gmane.comp.telepho ... h=20071101
Взял второе
Цитата:
2. Run two sipp scripts one by one like
sipp -sf register.xml && sipp -sf notify_answer.xml


Первое не удобно. Третье не понял, если кто сможет может пояснить, где добавлять //// и почему тогда всё хорошо? Confused

Пока отложил, добившись нормальной регистрации, т.е. ответа на NOTIFY, потом буду пробовать с инвайтом работать, вопрос как, в первом скрипте париться, но не уверен, что получится, ответ же будет приходить на другой CALL-ID, тогда что третий скрипт, который отработает INVITE, если так, то как генерить много звоноков. Или как-то в первом скрипте можно переназначиться CALL-ID и будет всё хорошо или попытаться поработать дальше всё также?