#!/bin/bash
if [ "$1" == "" ]
then
    version="18-current"
else
    version=$1
fi

cd /tmp
\rm pjproject-*
\rm jansson-*
wget https://raw.githubusercontent.com/asterisk/third-party/master/pjproject/2.15.1/pjproject-2.15.1.tar.bz2
wget https://raw.githubusercontent.com/asterisk/third-party/master/jansson/2.14.1/jansson-2.14.1.tar.bz2
cd -

osversion=`rpm -qa \*-release | grep -Ei "oracle|redhat|centos|rocky|alma" | cut -d"-" -f3 | cut -d"." -f1`

mainversion=`echo $version | cut -d\- -f 1 | cut -d\. -f 1`
echo "Removing old asterisk version"
\rm -r /usr/local/src/asterisk*
echo "Downloading selected asterisk version"
cd /usr/local/src
yum -y install opus-devel gsm-devel xmlstarlet libedit libedit-devel libxml2-devel
cd /usr/local/src

rpm -Uvh http://demo.mirtapbx.com/mirtapbx_support/unixODBC-2.3.4-1.el$osversion.x86_64.rpm http://demo.mirtapbx.com/mirtapbx_support/unixODBC-devel-2.3.4-1.el$osversion.x86_64.rpm
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-${version}.tar.gz
if [ ! -e asterisk-${version}.tar.gz ]
then
    wget http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-${version}.tar.gz
fi
wget http://demo.mirtapbx.com/mirtapbx_support/cdr_adaptive_odbc.c.ast${mainversion}.patch
wget http://demo.mirtapbx.com/mirtapbx_support/app_queue.c.ast${mainversion}.patch
wget http://demo.mirtapbx.com/mirtapbx_support/func_strings.c.ast${mainversion}.patch
wget http://demo.mirtapbx.com/mirtapbx_support/pbx_variables.c.ast${mainversion}.patch
tar xzvf asterisk*tar.gz
\rm asterisk*tar.gz
cd asterisk*
./configure --with-pjproject-bundled --with-jansson-bundled
make menuselect.makeopts
./menuselect/menuselect --enable ODBC_STORAGE menuselect.makeopts
./menuselect/menuselect --enable format_mp3 menuselect.makeopts
./menuselect/menuselect --enable app_meetme menuselect.makeopts
#./menuselect/menuselect --disable app_voicemail menuselect.makeopts
./menuselect/menuselect --enable app_voicemail_odbc menuselect.makeopts
#./menuselect/menuselect --enable DONT_OPTIMIZE menuselect.makeopts
./menuselect/menuselect --enable BETTER_BACKTRACES menuselect.makeopts
./menuselect/menuselect --enable codec_opus menuselect.makeopts
./menuselect/menuselect --enable codec_silk menuselect.makeopts
./menuselect/menuselect --enable chan_sip menuselect.makeopts
./menuselect/menuselect --disable chan_iax2 menuselect.makeopts

contrib/scripts/get_mp3_source.sh
if [ -e ../cdr_adaptive_odbc.c.ast${mainversion}.patch ]
then
    cd cdr
    patch -p0 < ../../cdr_adaptive_odbc.c.ast${mainversion}.patch
    cd ..
else
    echo "Unable to apply CDR patch"
    read
fi
if [ -e ../app_queue.c.ast${mainversion}.patch ]
then
    cd apps
    patch -p0 < ../../app_queue.c.ast${mainversion}.patch
    cd ..
else
    echo "Unable to apply App Queue patch"
    read
fi
if [ -e ../func_strings.c.ast${mainversion}.patch ]
then
    patch -p0 < ../func_strings.c.ast${mainversion}.patch
else
    echo "Unable to apply Func String patch"
    read
fi
if [ -e ../pbx_variables.c.ast${mainversion}.patch ]
then
    patch -p0 < ../pbx_variables.c.ast${mainversion}.patch
else
    echo "Unable to apply PBX variables patch"
    read
fi
#if [ -e ../chan_sip_cancel-retransmission.patch ]
#then
#    cd channels
#    patch -p0 < ../../chan_sip_cancel-retransmission.patch
#    cd ..
#else
#    echo "Unable to apply SIP CANCEL patch"
#    read
#fi

make || { echo "make failed ... aborting"; exit 1; }
service asterisk stop
\rm -r /usr/lib/asterisk/modules
\rm /var/lib/asterisk/astdb.sqlite3
make install
cd /usr/lib/asterisk/modules
wget http://demo.mirtapbx.com:/mirtapbx_support/codec_g723-ast${mainversion}0-gcc4-glibc-x86_64-pentium4.so
wget http://demo.mirtapbx.com:/mirtapbx_support/codec_g729-ast${mainversion}0-gcc4-glibc-x86_64-pentium4.so
cd -
ldconfig -v
sed -ri 's/^[[:space:]]*#TTY=9([[:space:]]*#.*)?$/TTY=9\1/' /usr/sbin/safe_asterisk
service asterisk start


