Skip to content

Instantly share code, notes, and snippets.

@ghafran
Last active September 7, 2020 07:12
Show Gist options
  • Select an option

  • Save ghafran/544546bb4ca15c4a767c to your computer and use it in GitHub Desktop.

Select an option

Save ghafran/544546bb4ca15c4a767c to your computer and use it in GitHub Desktop.
#!/bin/bash
# https://code.google.com/p/webrtc2sip/wiki/Building_Source_v2_0
sudo su
sudo yum -y update
sudo yum install -y make libtool autoconf subversion git cvs wget libogg-devel gcc gcc-c++ pkgconfig nasm
#Building libsrtp
cd /usr/local/src/
git clone https://github.com/cisco/libsrtp/
cd libsrtp
git checkout v1.5.0
CFLAGS="-fPIC" ./configure --enable-pic && make && make install
#Building OpenSSL
yum install -y openssl-devel
# cd /usr/local/src/
# wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
# tar -xvzf openssl-1.0.1c.tar.gz
# cd openssl-1.0.1c
# ./config shared --prefix=/usr/local --openssldir=/usr/local/openssl && make && make install
#Building libspeex and libspeexdsp
cd /usr/local/src/
wget http://downloads.xiph.org/releases/speex/speex-1.2beta3.tar.gz
tar -xvzf speex-1.2beta3.tar.gz
cd speex-1.2beta3
./configure --disable-oggtest --without-libogg && make && make install
#Building YASM
cd /usr/local/src/
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar -xvzf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure && make && make install
#Building libvpx
sudo yum install -y libvpx-devel
# cd /usr/local/src/
# git clone http://git.chromium.org/webm/libvpx.git
# cd libvpx
# ./configure --enable-realtime-only --enable-error-concealment --disable-examples --enable-vp8 --enable-pic --enable-shared --as=yasm
# make && make install
#Building libyuv - documents say to skip it
# cd /usr/local/src/
# yum install -y gcc gcc-c++ kernel-devel
# mkdir libyuv && cd libyuv
# svn co http://src.chromium.org/svn/trunk/tools/depot_tools .
# ./gclient config http://libyuv.googlecode.com/svn/trunk
# ./gclient sync && cd trunk
# make -j6 V=1 -r libyuv BUILDTYPE=Release
# make -j6 V=1 -r libjpeg BUILDTYPE=Release
# cp out/Release/obj.target/libyuv.a /usr/local/lib
# cp out/Release/obj.target/third_party/libjpeg_turbo/libjpeg_turbo.a /usr/local/lib
# mkdir --parents /usr/local/include/libyuv/libyuv
# cp -rf include/libyuv.h /usr/local/include/libyuv
# cp -rf include/libyuv/*.h /usr/local/include/libyuv/libyuv
#Build libopus
cd /usr/local/src/
wget http://downloads.xiph.org/releases/opus/opus-1.0.2.tar.gz
tar -xvzf opus-1.0.2.tar.gz
cd opus-1.0.2
./configure --with-pic --enable-float-approx && make && make install
#Building opencore-amr
cd /usr/local/src/
git clone git://opencore-amr.git.sourceforge.net/gitroot/opencore-amr/opencore-amr
cd opencore-amr
autoreconf --install && ./configure && make && make install
#Building libgsm - document says to skip it
# sudo yum install gsm-devel
# cd /usr/local/src/
# wget http://www.quut.com/gsm/gsm-1.0.13.tar.gz
# tar -xvzf gsm-1.0.13.tar.gz
# cd gsm-1.0-pl13 && make && make install
# cp -rf ./inc/* /usr/local/include
# cp -rf ./lib/* /usr/local/lib
#Building g729 - document says to skip it
# cd /usr/local/src/
# svn co http://g729.googlecode.com/svn/trunk/ g729b
# cd g729b
# ./autogen.sh && ./configure --enable-static --disable-shared && make && make install
#Building iLBC
cd /usr/local/src/
svn co http://doubango.googlecode.com/svn/branches/2.0/doubango/thirdparties/scripts/ilbc
cd ilbc
wget http://www.ietf.org/rfc/rfc3951.txt
awk -f extract.awk rfc3951.txt
./autogen.sh && ./configure
make && make install
#Building x264
cd /usr/local/src/
wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
tar -xvjf last_x264.tar.bz2
# the output directory may be difference depending on the version and date
cd x264-snapshot-20141218-2245
./configure --enable-shared --enable-pic --disable-asm && make && make install
#Building OpenH264
cd /usr/local/src/
git clone https://github.com/cisco/openh264.git
cd openh264
git checkout v1.1
make ENABLE64BIT=Yes # Use ENABLE64BIT=No for 32bit platforms
make install
#Building FFmpeg
cd /usr/local/src/
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
# grap a release branch
git checkout n1.2
# configure source code
./configure \
--extra-cflags="-fPIC" \
--extra-ldflags="-lpthread" \
--enable-pic --enable-memalign-hack --enable-pthreads \
--enable-shared --disable-static \
--disable-network --enable-pthreads \
--disable-ffmpeg --disable-ffplay --disable-ffserver --disable-ffprobe \
--enable-libx264 --enable-encoder=libx264 --enable-decoder=h264 \
--enable-gpl --enable-nonfree \
--enable-encoder=h263 --enable-encoder=h263p --enable-decoder=h263 \
--disable-debug
# to force enabling h264, append to the configure command: --enable-libx264 --enable-encoder=libx264 --enable-decoder=h264
# to force enabling h263 and h263+, append to the configure command: --enable-encoder=h263 --enable-encoder=h263p --enable-decoder=h263
# build and install
make && make install
#Building Doubango
cd /usr/local/src/
svn checkout http://doubango.googlecode.com/svn/branches/2.0/doubango doubango
cd doubango
chmod 755 ./autogen.sh && ./autogen.sh
#./configure --with-doubango=/usr/local/src/doubango --with-ssl --with-srtp --with-vpx --with-yuv --with-amr --with-speex --with-speexdsp --with-opus --with-gsm --with-ilbc --with-g729 --with-ffmpeg
./configure --with-doubango=/usr/local/src/doubango --with-ssl --with-srtp --with-vpx --with-amr --with-speex --with-speexdsp --with-opus --with-ilbc --with-ffmpeg
make && make install
#Building webrtc2sip
cd /usr/local/src/
yum install -y libxml2-devel
svn co https://webrtc2sip.googlecode.com/svn/trunk/ webrtc2sip
cd webrtc2sip
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig"
export PREFIX=/opt/webrtc2sip
./autogen.sh && ./configure --prefix=$PREFIX CFLAGS='-lpthread' LDFLAGS='-ldl' LIBS='-ldl'
make clean && make && make install
cp -f ./config.xml $PREFIX/sbin/config.xml
# generate cert
cd /opt/webrtc2sip/sbin
sudo openssl req -new > new.ssl.csr
sudo openssl rsa -in privkey.pem -out new.cert.key
sudo openssl x509 -in new.ssl.csr -out new.cert.cert -req -signkey new.cert.key -days 999999
sudo mkdir -p /etc/ssl/certs/
sudo cp new.cert.cert /etc/ssl/certs/server.crt
sudo chmod 640 /etc/ssl/certs/server.crt
sudo mkdir -p /etc/ssl/private/
sudo cp new.cert.key /etc/ssl/private/server.key
sudo chmod 640 /etc/ssl/private/server.key
#config.xml
cd /opt/webrtc2sip/sbin
cp config.xml config.bak.xml
cat <<EOF > config.xml
<?xml version="1.0" encoding="utf-8" ?>
<!-- Please check the technical guide (http://webrtc2sip.org/technical-guide-1.0.pdf) for more information on how to adjust this file -->
<config>
<debug-level>INFO</debug-level>
<transport>udp;*;10060</transport>
<transport>ws;*;10060</transport>
<transport>wss;*;10062</transport>
<!--transport>tcp;*;10063</transport-->
<!--transport>tls;*;10064</transport-->
<enable-rtp-symetric>yes</enable-rtp-symetric>
<enable-100rel>no</enable-100rel>
<enable-media-coder>yes</enable-media-coder>
<enable-videojb>yes</enable-videojb>
<video-size-pref>vga</video-size-pref>
<rtp-buffsize>65535</rtp-buffsize>
<avpf-tail-length>100;400</avpf-tail-length>
<srtp-mode>optional</srtp-mode>
<srtp-type>sdes;dtls</srtp-type>
<dtmf-type>rfc4733</dtmf-type>
<codecs>opus;pcma;pcmu;vp8;h264-bp;h264-mp;h263;h263+</codecs>
<codec-opus-maxrates>48000;48000</codec-opus-maxrates>
<stun-server>stun.l.google.com;19302;;</stun-server>
<enable-icestun>yes</enable-icestun>
<max-fds>-1</max-fds>
<!--nameserver>66.66.66.6</nameserver-->
<ssl-certificates>
/etc/ssl/private/server.key;
/etc/ssl/certs/server.crt;
yes
</ssl-certificates>
<!-- ***CLICK-TO-CALL SERVICE*** -->
<transport>c2c;*;10070</transport>
<transport>c2cs;*;10072</transport>
<database>sqlite;*</database>
<!--account-mail>smtps;*;*;auth.smtp.1and1.fr;465;noreply@example.com;noreply@example.com;mysecret</account-mail-->
<!--account-sip-caller>*;sip:a@example.com;a;example.com;mysecret</account-sip-caller-->
</config>
EOF
# upstart webrtc2sip
echo 'Defaults:root !requiretty' > /etc/sudoers.d/888-cloud-init-requiretty
service ntpd restart
mkdir -p /var/log/webrtc2sip
touch /var/log/webrtc2sip/webrtc2sip.log
chmod 666 /var/log/webrtc2sip/webrtc2sip.log
cat <<EOF > /etc/init/webrtc2sip.conf
description "webrtc2sip"
start on (local-filesystems and net-device-up IFACE=eth0)
stop on shutdown
respawn
script
exec sudo -u root /opt/webrtc2sip/sbin/webrtc2sip --config=/opt/webrtc2sip/sbin/config.xml >> /var/log/webrtc2sip/webrtc2sip.log 2>&1
end script
EOF
start webrtc2sip
#tail logs
tail -f /var/log/webrtc2sip/webrtc2sip.log
# test webrtc2sip
# cd /opt/webrtc2sip/sbin
# ./webrtc2sip --help
# ./webrtc2sip
@samucs
Copy link

samucs commented Nov 19, 2015

Hello my friend, is this some kind of batch file that installs everything?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment