Monday, 6 April 2015

Asterisk Webrtc Setup (source : github/(jwoertink))

By vm  |  23:07 No comments

Setup Network config

  1. vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
DHCP_HOSTNAME=pbx.dev
HOSTNAME="pbx.dev"
IPV6INIT=yes
MTU=1500
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
HWADDR=00:00:00:00:00 #YOUR MAC ADDRESS of VirtualBox
DNS1=8.8.8.8
USERCTL=no
IPADDR=0.0.0.0 #IP YOU NEED i.e. 172.16.1.56
NETMASK=255.255.255.0
GATEWAY=0.0.0.0 #YOUR GATEWAY i.e. 172.16.1.1
  1. service network restart If any fail, you may need to run reboot
  2. ifconfig | grep "inet addr" Check for IP address
  3. service iptables save
  4. service iptables stop
  5. chkconfig iptables off

Update Server Hostname

  1. vi /etc/sysconfig/network
  2. HOSTNAME=pbx.dev Set the HOSTNAME to pbx.dev or whatever you want your hostname to be
  3. vi /etc/hosts
172.16.1.56 pbx.dev #use your IP address
127.0.0.1 localhost pbx.dev
::1 localhost pbx.dev
  1. hostname pbx.dev
  2. service network restart

Install Virtualbox Guest Additions

  1. Devices > Insert Guest Additions CD Image
  2. mkdir /media/VirtualBoxGuestAdditions
  3. mount -r /dev/cdrom /media/VirtualBoxGuestAdditions
  4. yum update -y
  5. yum groupinstall -y "Development Tools"
  6. rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  7. yum install -y gcc kernel-devel kernel-headers dkms make bzip2 perl
  8. yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)
  9. KERN_DIR=/usr/src/kernels/$(uname -r)/
  10. export KERN_DIR
  11. cd /media/VirtualBoxGuestAdditions
  12. ./VBoxLinuxAdditions.run
  13. reboot

Configure Terminal

  1. vi /etc/grub.conf
  2. Find the kernel line and add vga=791 to the end of the line
  3. vi /etc/bashrc
  4. update PS1 to PS1='\[\033[02;32m\]\u@\h\[\033[02;34m\]\w\$\[\033[00m\] '
  5. add alias currip="ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{print \$1}'"
  6. save and exit
  7. sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
  8. reboot

Install Asterisk Current

  1. yum install -y wget gcc-c++ ncurses-devel libxml2-devel sqlite-devel libsrtp-devel libuuid-devel openssl-devel iksemel-devel jansson-devel
  2. cd /usr/local/src/
  3. wget downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
  4. wget downloads.asterisk.org/pub/telephony/dahdi-tools/dahdi-tools-current.tar.gz
  5. wget http://www.pjsip.org/release/2.2.1/pjproject-2.2.1.tar.bz2
  6. wget downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
  7. wget downloads.asterisk.org/pub/telephony/asterisk/asterisk-12-current.tar.gz
  8. tar zxvf dahdi-linux*
  9. cd dahdi-linux*
  10. make && make install && make config
  11. cd ..
  12. tar zxvf dahdi-tools*
  13. cd dahdi-tools*
  14. make && make install && make config
  15. cd ..
  16. tar zxvf libpri*
  17. cd libpri*
  18. make && make install
  19. cd ..
  20. tar -xjvf pjproject-2.2.1.tar.bz2
  21. cd pjproject*
  22. ./configure --prefix=/usr/lib64/ --enable-shared
  23. make dep
  24. make && make install
  25. pjproject installs files to /usr/lib64/lib cd /usr/lib64/lib mv lib* .. mv pkgconfig/libpjproject.pc ../pkgconfig/
  26. cd /usr/local/src/pjproject*
  27. ldconfig
  28. ldconfig -p | grep pj should return a huge list of symlinked .so files
  29. PKG_CONFIG_PATH=/usr/lib64/pkgconfig/
  30. export PKG_CONFIG_PATH
  31. cd ..
  32. tar zxvf asterisk*
  33. cd asterisk*
  34. ./configure --libdir=/usr/lib64
  35. make menuselect
  36. Select Resource Modules then scroll down to ensure a * is next to res_srtp. Press x to save & quit
  37. vi include/asterisk/autoconfig.h this is a super hack >_<
  38. replace #undef HAVE_PJ_TRANSACTION_GRP_LOCK with #define HAVE_PJ_TRANSACTION_GRP_LOCK 1
  39. make && make install
  40. make samples
  41. make config

Configure Asterisk for WebRTC

  1. mkdir /etc/asterisk/keys
  2. cd /usr/local/src/asterisk*/contrib/scripts
  3. ./ast_tls_cert -C $(currip) -O "My Super Company" -d /etc/asterisk/keys
  4. vi /etc/asterisk/http.conf
[general]
enabled=yes
bindaddr=127.0.0.1 ; Replace this with your IP address
bindport=8088 ; Replace this with the port you want to listen on
  1. vi /etc/asterisk/sip.conf
[general]
context=default
allowguest=no
allowoverlap=no
accept_outofcall_message=yes
outofcall_message_context=default
realm=127.0.0.1 ; Replace this with your IP address
udpbindaddr=127.0.0.1 ; Replace this with your IP address
transport=ws,wss,udp
language=en
icesupport=yes
videosupport=yes
nat=auto_force_rport,auto_comedia
allow=!all,alaw,ulaw,gsm
;
[1060] ; This will be WebRTC client
type=friend
username=1060 ; The Auth user for SIP.js
host=dynamic ; Allows any host to register
secret=password ; The SIP Password for SIP.js
encryption=yes ; Tell Asterisk to use encryption for this peer
avpf=yes ; Tell Asterisk to use AVPF for this peer
icesupport=yes ; Tell Asterisk to use ICE for this peer
context=default ; Tell Asterisk which context to use when this peer is dialing
directmedia=no ; Asterisk will relay media for this peer
transport=ws,wss,udp ; Asterisk will allow this peer to register on UDP or WebSockets
force_avp=yes ; Force Asterisk to use avp. Introduced in Asterisk 11.11
dtlsenable=yes ; Tell Asterisk to enable DTLS for this peer
dtlsverify=no ; Tell Asterisk to not verify your DTLS certs
dtlscertfile=/etc/asterisk/keys/asterisk.pem ; Tell Asterisk where your DTLS cert file is
dtlsprivatekey=/etc/asterisk/keys/asterisk.pem ; Tell Asterisk where your DTLS private key is
dtlssetup=actpass ; Tell Asterisk to use actpass SDP parameter when setting up DTLS
videosupport=yes
nat=no
disallow=all
allow=ulaw,vp8,h264
;
[1061] ; This will be the legacy SIP client
type=friend
username=1061
host=dynamic
secret=password
context=default
directmedia=no
transport=udp
force_avp=yes
dtlsenable=no
videosupport=yes
nat=no
disallow=all
allow=ulaw,vp8
  1. vi /etc/asterisk/extensions.conf
[default]
exten => 1060,1,Dial(SIP/1060) ; Dialing 1060 will call the SIP client registered to 1060
exten => 1061,1,Dial(SIP/1061) ; Dialing 1061 will call the SIP client registered to 1061
  1. vi /etc/asterisk/manager.conf
[general]
enabled=yes
port=5038
bindaddr=0.0.0.0
;
[admin]
secret=password
read=all
write=all
writetimeout=5000
  1. service asterisk restart
  2. Ensure Linphone is installed, and all Video and Audio codecs are turned on
  3. SIP account should be sip:1061@CENT_OS_IP_ADDRESS with udp transport

Install & Configure ejabberd

  1. yum install -y ejabberd
  2. vi /etc/ejabberd/ejabberd.cfg
% Find this line and add the pbx.dev
{hosts, ["localhost", "pbx.dev"]}.
  1. service ejabberd start
  2. ejabberdctl register admin pbx.dev password to create an account called admin on pbx.dev with the password "password"
  3. vi /etc/ejabberd/ejabberd.cfg
% This goes under the ACCESS CONTROL section
{acl, admin, {user, "admin", "pbx.dev"}}.
  1. service ejabberd restart
  2. Browse to http://pbx.dev:5280/admin and use admin/password to log in
  3. Virtual Hosts > pbx.dev > Users - Make a user called "asterisk". Also make yourself a user
  4. vi /etc/asterisk/xmpp.conf
[general]
autoregister=yes
autoprune=no
;
[ejabberd]
type=client
serverhost=pbx.dev
username=asterisk@pbx.dev
secret=password ;your password you chose for asterisk
priority=1
port=5222
usetls=no
usesasl=yes
status=available
statusmessage="It's Asterisk!"
timeout=5
  1. asterisk -r
  2. module reload res_xmpp - should show reloading
  3. xmpp show connections - should show 1 client connected. If so, then exit
  4. vi /etc/asterisk/extensions.conf
; replace the exten 1061 dialplan with this
exten => 1061,1,Set(JSTATUS=${JABBER_STATUS(ejabberd,youruser@pbx.dev/Desktop)}) ; /Desktop is the resource you will set in your xmpp client like Adium/Pidgin
same => n,GotoIf($[0${JSTATUS}=1]?available:unavailable)
same => n(available), JabberSend(ejabberd,youruser@pbx.dev,"Incoming call from ${CALLERID(num)}")
same => n,Dial(SIP/1061)
same => n,Hangup()
same => n(unavailable),JabberSend(ejabberd,youruser@pbx.dev,"Missed call from ${CALLERID(num)}")
; do other dialplan stuff when you're not available
  1. service asterisk restart

vm Author: vm

Hello, I am Author, decode to know more: In commodo magna nisl, ac porta turpis blandit quis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In commodo magna nisl, ac porta turpis blandit quis. Lorem ipsum dolor sit amet.

Related Posts

0 comments:

E-mail Newsletter

Sign up now to receive breaking news and to hear what's new with us.

Recent Articles

© 2014 VOIP4Learn. WP themonic converted by Bloggertheme9. Powered by Blogger.