SIPP

Linux/*BSD и всё что с ними связано.

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

Ответить
EXA
Сообщения: 487
Зарегистрирован: 24 фев 2008, 17:28

Сообщение EXA » 15 ноя 2011, 07:43

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

Нашёл вот такую статейку
http://open-voip.org/index.php?title=SI ... d_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

EXA
Сообщения: 487
Зарегистрирован: 24 фев 2008, 17:28

Сообщение EXA » 24 ноя 2011, 07:46

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

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

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

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<!--                                                                  -->
<!--                 Sipp Rgistration scenario.                       -->
<!--                                                                  -->
<!--               ***** Send Register packet ******                  -->
<scenario name="Basic Sipstone UAC">
  <send retrans="500">
    <!&#91;CDATA&#91;

      REGISTER sip&#58;&#91;remote_ip&#93; SIP/2.0
      Via&#58; SIP/2.0/&#91;transport&#93; &#91;local_ip&#93;&#58;&#91;local_port&#93;
      To&#58; <sip&#58;&#91;service&#93;@&#91;remote_ip&#93;&#58;&#91;remote_port&#93;>
      From&#58; "&#91;service&#93;"<sip&#58;&#91;service&#93;@&#91;remote_ip&#93;&#58;&#91;remote_port&#93;>
      Contact&#58; <sip&#58;&#91;service&#93;@&#91;local_ip&#93;&#58;&#91;local_port&#93;>;transport=&#91;transport&#93;
      Expires&#58; 300
      Call-ID&#58; &#91;call_id&#93;
      CSeq&#58; 2 REGISTER
      Content-Length&#58; 0

    &#93;&#93;>
  </send>
<!--               ***** Getting 100 message is optional ******       -->
  <recv response="100"
        optional="true">
<!--               ***** Must get 401. auth="true" to take the challenge into account ****** -->
  </recv>
    <recv response="401" auth="true">
  </recv>
<!--               ***** Send Ack ******       -->
  <send>
    <!&#91;CDATA&#91;

      ACK sip&#58;&#91;service&#93;@&#91;remote_ip&#93;&#58;&#91;remote_port&#93; SIP/2.0
      Via&#58; SIP/2.0/&#91;transport&#93; &#91;local_ip&#93;&#58;&#91;local_port&#93;
      From&#58; "&#91;service&#93;"<sip&#58;&#91;service&#93;@&#91;local_ip&#93;&#58;&#91;local_port&#93;>;tag=&#91;call_number&#93;
      To&#58; <sip&#58;&#91;service&#93;@&#91;remote_ip&#93;&#58;&#91;remote_port&#93;>&#91;peer_tag_param&#93;
      Call-ID&#58; &#91;call_id&#93;
      CSeq&#58; 1 ACK
      Contact&#58; sip&#58;&#91;service&#93;@&#91;local_ip&#93;&#58;&#91;local_port&#93;
      Max-Forwards&#58; 70
      Subject&#58; Performance Test
      Content-Length&#58; 0

    &#93;&#93;>
  </send>
<!--               ***** Send Registration with the authentication, note the user and password ******       -->
  <send retrans="500">
    <!&#91;CDATA&#91;

      REGISTER sip&#58;&#91;remote_ip&#93; SIP/2.0
      Via&#58; SIP/2.0/&#91;transport&#93; &#91;local_ip&#93;&#58;&#91;local_port&#93;
      To&#58; <sip&#58;&#91;service&#93;@&#91;remote_ip&#58;&#91;remote_port&#93;>
      From&#58; "&#91;service&#93;"<sip&#58;&#91;service&#93;@&#91;remote_ip&#93;&#58;&#91;remote_port&#93;>
      Contact&#58; <sip&#58;&#91;service&#93;@&#91;local_ip&#93;&#58;&#91;local_port&#93;>;transport=&#91;transport&#93;
      &#91;authentication username=611111 password=opiska&#93;
      Expires&#58; 300
      Call-ID&#58; &#91;call_id&#93;
      CSeq&#58; 2 REGISTER
      Content-Length&#58; 0

    &#93;&#93;>
  </send>
<!--               ***** Getting 100 message is optional ******       -->
  <recv response="100"
        optional="true">
  </recv>
<!--               ***** Should get 200 Ok ******                     -->
  <recv response="200" rtd="true">
  </recv>
</scenario>


Added after 42 minutes:

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

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

<recv request="NOTIFY">
</recv>

  <send>
    <!&#91;CDATA&#91;
      SIP/2.0 200 OK
      &#91;last_Via&#58;&#93;
      &#91;last_From&#58;&#93;
      &#91;last_To&#58;&#93;
      &#91;last_Call-ID&#58;&#93;
      &#91;last_CSeq&#58;&#93;
      Contact&#58; <sip&#58;&#91;local_ip&#93;&#58;&#91;local_port&#93;;transport=&#91;transport&#93;>
      Content-Length&#58; 0

    &#93;&#93;>
  </send>
В в логе SIPP пишет, вот так

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

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

Messages-Waiting&#58; no
Message-Account&#58; sip&#58;asterisk@22.22.22.69
Voice-Message&#58; 0/0 &#40;0/0&#41;


Added after 52 minutes:

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

EXA
Сообщения: 487
Зарегистрирован: 24 фев 2008, 17:28

Сообщение EXA » 28 ноя 2011, 11:32

Вот нашёл решение
http://blog.gmane.org/gmane.comp.teleph ... h=20071101
Взял второе
2. Run two sipp scripts one by one like
sipp <other options> -sf register.xml && sipp <other options> -sf notify_answer.xml
Первое не удобно. Третье не понял, если кто сможет может пояснить, где добавлять //// и почему тогда всё хорошо? :?

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

Ответить