STIR/SHAKEN Install steps --> Freswitch version 1.10.7 to 1.10.10

STIR/SHAKEN Install steps --> Freswitch version 1.10.7 to 1.10.10

Step 1: Uninstall Freeswitch Version 1.10.7 and upgrade it to Version 1.10.10-release~64bit

vim /etc/monit/monitrc

comment freeswitch

systemctl stop freeswitch apt-get remove freeswitch -y apt-get autoremove -y apt purge freeswitch rm /etc/init.d/freeswitch cd /usr/src/ ls -la cd signalwire-c/ make uninstall make clean cd .. mv signalwire-c/ signalwire-c_bkp ls -la cd spandsp make uninstall make clean cd .. mv spandsp/ spandsp-bkp ls -la cd sofia-sip ls -la make uninstall make clean cd .. mv sofia-sip/ sofia-sip-bkp ls -la cd libks make uninstall make clean mv libks/ libks-bkp mv /usr/local/freeswitch/ /usr/local/freeswitch-bkp

Steps 2: Packages to install:

apt-get install -y cmake autoconf \
automake devscripts gawk dnsutils sendmail-bin sensible-mda ffmpeg libffi-dev \
libjpeg62-turbo-dev libncurses5-dev make python-dev pkg-config libgdbm-dev librabbitmq-dev\
gettext sudo libxml2 libxml2-dev openssl gettext gcc libldns-dev libpcre3-dev \
uuid-dev build-essential libssl-dev zlib1g-dev libspeex-dev libspeexdsp-dev libtool \
libsqlite3-dev libedit-dev libldns-dev libpq-dev bc unixodbc-dev libtiff-dev python3-pip \
libvpx-dev liblua5.2-dev yasm libavformat-dev libswscale-dev libopus-dev libsndfile-dev

apt-get install autoconf automake devscripts gawk g++ git-core libjpeg-dev libncurses5-dev libtool libtool-bin make python-dev gawk pkg-config libtiff5-dev libperl-dev libgdbm-dev libdb-dev gettext libssl-dev libcurl4-openssl-dev libpcre3-dev libspeex-dev libspeexdsp-dev libsqlite3-dev libedit-dev libldns-dev libpq-dev memcached libmemcached-dev

apt-get install uuid-dev yasm

apt install -y ntpdate ntp lua5.1 bc libxml2 libxml2-dev openssl libcurl4-openssl-dev gettext gcc g++

apt install python3-distutils

apt-get install -y yasm lua5.2 lua5.2-dev libsndfile-dev portaudio19-dev

Step 3: Install Freeswitch Prerequisties and spand-sp from below commands:

cd /usr/src/ git clone https://github.com/inextrixsupport/spandsp.git cd spandsp/ /bin/bash autogen.sh ./configure make && make install #Install libks from below commands: cd /usr/src git clone https://github.com/inextrixsupport/libks.git cd libks/ cmake . -DCMAKE_BUILD_TYPE=Debug make && make install #Install signalwire from below commands: cd /usr/src git clone https://github.com/inextrixsupport/signalwire-c.git cd signalwire-c/ cmake . -DCMAKE_BUILD_TYPE=Debug make && make install #Install lib-curl from below commands: cd /usr/src/ #cp -r /opt/ASTPP/misc/curl-7.55.0.tar.gz /usr/src/ (wget http://dl.astppbilling.org:9843/ASTPPv5.tar.gz) #tar -xzf curl-7.55.0.tar.gz cd curl-7.55.0 ./configure make && make install #Install sofia-sip from below command: cd /usr/src/ git clone https://github.com/inextrixsupport/sofia-sip.git cd sofia-sip/ /bin/bash autogen.sh ./configure make && make install
Run below for libjwt cd /usr/src/ git clone https://github.com/akheron/jansson cd jansson/ autoreconf -i ./configure make sudo make install ----------------------------------- cd /usr/src/ git clone https://github.com/benmcollins/libjwt cd libjwt/ autoreconf -i ./configure make sudo make install

fatal error: libks/ks.h: No such file or directory

cp -rf /usr/include/libks2/libks/ /usr/include/

Install stir/shaken: cd /usr/src/ git clone https://github.com/signalwire/libstirshaken cd libstirshaken ./bootstrap.sh ./configure make (apt install libjwt-dev) sudo make install make check
cd /usr/src wget http://dl.astppbilling.org:9843/freeswitch-1.10.10.tar.gz wget http://dl.astppbilling.org:9843/switch_core_io.c wget http://dl.astppbilling.org:9843/switch_core_media.c tar -xzf freeswitch-1.10.10.tar.gz mv /usr/src/freeswitch-1.10.10/src/switch_core_io.c /tmp/ mv /usr/src/freeswitch-1.10.10/src/switch_core_media.c /tmp/ cp -rf switch_core_io.c /usr/src/freeswitch-1.10.10/src/ cp -rf switch_core_media.c /usr/src/freeswitch-1.10.10/src/ cd freeswitch-1.10.10 sudo ldconfig
Step 4: now complie freeswitch: cd /usr/src wget http://dl.astppbilling.org:9843/freeswitch-1.10.10.tar.gz tar -xzf freeswitch-1.10.10.tar.gz cd freeswitch-1.10.10 ./configure --enable-core-odbc-support make # v80 error if there then run below else run sed...command cp /usr/local/include/spandsp/v80.h /usr/local/include/spandsp/private/v80.h make sed -i 's|#applications/mod_curl|applications/mod_curl|g' /usr/src/freeswitch-1.10.10/modules.conf sed -i 's|#applications/mod_json_cdr|applications/mod_json_cdr|g' /usr/src/freeswitch-1.10.10/modules.conf sed -i 's|#xml_int/mod_xml_cdr|xml_int/mod_xml_cdr|g' /usr/src/freeswitch-1.10.10/modules.conf sed -i 's|#xml_int/mod_xml_curl|xml_int/mod_xml_curl|g' /usr/src/freeswitch-1.10.10/modules.conf sed -i 's|#applications/mod_nibblebill|applications/mod_nibblebill|g' /usr/src/freeswitch-1.10.10/modules.conf sed -i 's|#applications/mod_db|applications/mod_db|g' /usr/src/freeswitch-1.10.10/modules.conf sed -i 's|#event_handlers/mod_json_cdr|event_handlers/mod_json_cdr|g' /usr/src/freeswitch-1.10.10/modules.conf sed -i 's|#applications/mod_abstraction|applications/mod_abstraction|g' /usr/src/freeswitch-1.10.10/modules.conf make install make cd-sounds-install mv -f /usr/local/freeswitch/scripts /tmp/. # ln -s /opt/ASTPP/freeswitch/fs /var/www/html ln -s /opt/ASTPP/freeswitch/scripts_deb9 /usr/local/freeswitch/scripts # mv /opt/ASTPP/freeswitch/scripts_deb9/astpp/astpp_deb9.lua /opt/ASTPP/freeswitch/scripts_deb9/astpp/astpp.lua cp -rf /opt/ASTPP/freeswitch/sounds/*.wav /usr/local/freeswitch/sounds/en/us/callie/ cp -rf /opt/ASTPP/freeswitch/conf/autoload_configs/* /usr/local/freeswitch/conf/autoload_configs/ # chmod -Rf 777 /var/www/html/fs/ # chmod -Rf 777 /opt/ASTPP/ cp -r /opt/ASTPP/misc/freeswitch.sh /etc/init.d/freeswitch chmod +x /etc/init.d/freeswitch systemctl daemon-reload
Step 5: Normalize freeswitch installation: systemctl enable freeswitch sed -i "s#max-sessions\" value=\"1000#max-sessions\" value=\"2000#g" /usr/local/freeswitch/conf/autoload_configs/switch.conf.xml sed -i "s#sessions-per-second\" value=\"30#sessions-per-second\" value=\"50#g" /usr/local/freeswitch/conf/autoload_configs/switch.conf.xml sed -i "s#max-db-handles\" value=\"50#max-db-handles\" value=\"500#g" /usr/local/freeswitch/conf/autoload_configs/switch.conf.xml sed -i "s#db-handle-timeout\" value=\"10#db-handle-timeout\" value=\"30#g" /usr/local/freeswitch/conf/autoload_configs/switch.conf.xml sed -i "s#<\!-- <load module=\"mod_conference\"/> --># <load module=\"mod_conference\"/>#g" /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml sed -i "s#<\!-- <load module=\"mod_fifo\"/> --># <load module=\"mod_fifo\"/>#g" /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml sed -i "s#<\!-- <load module=\"mod_nibblebill\"/> --># <load module=\"mod_nibblebill\"/>#g" /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml sed -i '26i <load module=\"mod_spy\"/>' /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml sed -i '26i <load module=\"mod_spandsp\"/>' /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml sed -i '26i <load module=\"mod_curl\"/>' /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml #update fs_cli password in below command sed -i -e "s/ClueCon/BgPe737f48yWD4oNH0QmP/g" /usr/local/freeswitch/conf/autoload_configs/event_socket.conf.xml sed -i "s#mailer-app\" value=\"sendmail#mailer-app\" value=\"/usr/bin/php /var/www/html/fs/lib/astpp.vmailer.php#g" /usr/local/freeswitch/conf/autoload_configs/switch.conf.xml sed -i "s#mailer-app-args\" value=\"-t#mailer-app-args\" value=\"#g" /usr/local/freeswitch/conf/autoload_configs/switch.conf.xml sudo ldconfig ln -s /usr/local/freeswitch/bin/freeswitch /usr/local/bin/freeswitch ln -s /usr/local/freeswitch/bin/fs_cli /usr/local/bin/fs_cli systemctl start freeswitch rm -rf /usr/local/freeswitch/conf/dialplan/* touch /usr/local/freeswitch/conf/dialplan/astpp.xml rm -rf /usr/local/freeswitch/conf/directory/* touch /usr/local/freeswitch/conf/directory/astpp.xml rm -rf /usr/local/freeswitch/conf/sip_profiles/* touch /usr/local/freeswitch/conf/sip_profiles/astpp.xml chmod -Rf 755 /usr/local/freeswitch/sounds/en/us/callie # cp -rf /opt/ASTPP/web_interface/nginx/deb_fs.conf /etc/nginx/conf.d/fs.conf # chown -Rf root.root /var/www/html/fs # chmod -Rf 755 /var/www/html/fs chmod -Rf 777 /usr/local/freeswitch/sounds/music systemctl restart freeswitch systemctl enable freeswitch

Step 6: Now connect fs_cli

Now we need to create cert and pem file cd /usr/src/ nano cert.sh keep below file in cert.sh

#ssl:
#!/bin/sh

set -e
set -x

cat > TNAuthList.conf << EOF
asn1=SEQUENCE:tn_auth_list
[tn_auth_list]
field1=EXP:0,IA5:1234
EOF
openssl asn1parse -genconf TNAuthList.conf -out TNAuthList.der
cat > openssl.conf << EOF
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req
[ req_distinguished_name ]
commonName = "SHAKEN"
[ v3_req ]
EOF
od -An -t x1 TNAuthList.der | \
sed -E -e 's/ +/:/g ; s/:$// ; s/^/1.3.6.1.5.5.7.1.26=DER/' >> openssl.conf
openssl ecparam -noout -name prime256v1 -genkey -out private_key.pem \
-outform PEM
openssl req -new -nodes -key private_key.pem -keyform PEM \
-out csr.pem -outform PEM \
-subj '/C=US/ST=VA/L=Somewhere/O=AcmeTelecom, Inc./OU=VOIP/CN=SHAKEN' \
-sha256 -config openssl.conf

openssl ecparam -noout -name prime256v1 -genkey -out myCA.key -outform PEM
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem \
-subj '/C=CA/ST=BC/L=Someplace/O=BigFatTelecom Corp./OU=VOIP/CN=SHAKEN' \
-outform PEM
openssl x509 -extfile openssl.conf -extensions v3_req -req -in csr.pem -CA \
myCA.pem -CAkey myCA.key -CAcreateserial \
-out cert.pem -days 825 -sha256 -outform PEM

chmod +x cert.sh mv cert.pem /var/www/html/astpp/ vim /etc/monit/monitrc Uncomment freeswitch.