|
|
|
#!/bin/bash
|
|
|
|
trap "" 2 20
|
|
|
|
|
|
|
|
# O Debian não coloca o /sbin no PATH por default
|
|
|
|
# O diretório deve ser apenas disponível para administrador e para evitar conflitos
|
|
|
|
PATH="${PATH}:/sbin"
|
|
|
|
|
|
|
|
|
|
|
|
# O usuário precisa ser ROOT
|
|
|
|
if [ $(id -u) -ne 0 ];then
|
|
|
|
echo "Deve ser executado como root"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
function add_sbin_path(){
|
|
|
|
|
|
|
|
[[ ! $(echo $PATH|grep "/sbin") ]] && PATH="$PATH:/sbin"
|
|
|
|
}
|
|
|
|
|
|
|
|
# Sair do script com código de retorno
|
|
|
|
function exit_installation(){
|
|
|
|
|
|
|
|
/bin/rm -rf /tmp/install_simplesip.pid 2>&1 > /dev/null
|
|
|
|
/bin/rm -rf /usr/src/tools_simplesip
|
|
|
|
exit $1
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
verifica_erro()
|
|
|
|
{
|
|
|
|
RESULTADO=$1
|
|
|
|
MODULO=$2
|
|
|
|
TIPO=$3
|
|
|
|
|
|
|
|
if [ "$RESULTADO" != "0" ] ; then
|
|
|
|
clear
|
|
|
|
if [ "$TIPO" = "DESINSTALAR" ] ; then
|
|
|
|
echo "Erro durante a desinstalacao do Modulo $MODULO"
|
|
|
|
else
|
|
|
|
echo "Erro durante a instalacao do Modulo $MODULO, favor verificar as dependencias"
|
|
|
|
fi
|
|
|
|
! [ -d /etc/asterisk ] && mkdir -p /etc/asterisk
|
|
|
|
! [ -d /var/lib/asterisk ] && mkdir -p /var/lib/asterisk
|
|
|
|
[ -d /tmp/etc_asterisk-$data ] && for i in $(ls /tmp/etc_asterisk-$data/) ; do /bin/mv -f /etc/asterisk/$i /etc/asterisk/ ;done
|
|
|
|
[ -d /tmp/var_lib_asterisk-$data ] && for i in $(ls -1 /tmp/var_lib_asterisk-$data/) ; do /bin/rm -rf /var/lib/asterisk/$i && /bin/mv -f /tmp/var_lib_asterisk-$data/$i /var/lib/asterisk/ ; done
|
|
|
|
exit_installation $RESULTADO
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#Descobrindo o caminho do script
|
|
|
|
dir=$(dirname $0)
|
|
|
|
path_arquivo=$(cd $dir;pwd)
|
|
|
|
arquitetura=$(uname -m)
|
|
|
|
log=/var/log/tools_simplesip.log
|
|
|
|
versao_linux=$(cat /etc/debian_version | sed 's/[a-zA-Z() ]//g' | cut -d "." -f 1)
|
|
|
|
|
|
|
|
|
|
|
|
declare -x data=$(date +%F-%H-%M-%S)
|
|
|
|
|
|
|
|
#Verifica se o script esta rodando
|
|
|
|
|
|
|
|
if [ -e /tmp/install_simplesip.pid ] ; then
|
|
|
|
clear
|
|
|
|
echo "Script em Excecucao..."
|
|
|
|
exit_installation 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
#Gera PID do scritp
|
|
|
|
echo $$ > /tmp/install_simplesip.pid
|
|
|
|
|
|
|
|
|
|
|
|
apt-get install -y dialog
|
|
|
|
while true ; do
|
|
|
|
|
|
|
|
DIALOGDATA="$(for i in $(/usr/bin/timedatectl list-timezones) ; do echo -n "$i '' off " | sed -e "s/America\/Cuiaba '' off/America\/Cuiaba '' on/g" ; done)"
|
|
|
|
TIMEZONE=$(dialog --stdout --default-item America/Cuiaba --radiolist " CONFIGURE O TIMEZONE " 0 0 0 $DIALOGDATA)
|
|
|
|
|
|
|
|
# Apertou CANCELAR ou ESC, sair...
|
|
|
|
[ $? -ne 0 ] && /bin/rm -rf /tmp/sip_atualiza.pid && exit
|
|
|
|
OPCAO=$(echo $TIMEZONE | sed "s/,/\\n/g")
|
|
|
|
|
|
|
|
if ! [ -z "$OPCAO" ] ; then
|
|
|
|
/usr/bin/timedatectl set-timezone $OPCAO
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
|
|
|
|
done
|
|
|
|
clear
|
|
|
|
|
|
|
|
#busca enconding
|
|
|
|
encode=$(locale | tr [[:upper:]] [[:lower:]] | sed -e "s/\"//g" | grep "^lang=")
|
|
|
|
|
|
|
|
# O SO será em UTF-8, porém o banco em ISO
|
|
|
|
if ! [ "$encode" = "lang=en_us.iso-8859-1" ] ; then
|
|
|
|
clear
|
|
|
|
echo -n "Encoding: $encode incorreto, deseja corrigir e reiniciar o servidor? (S/N):"
|
|
|
|
read -n 1 resposta
|
|
|
|
echo ""
|
|
|
|
if [[ $resposta != +(s|S|y|Y|sim|SIM) ]] ; then
|
|
|
|
exit_installation
|
|
|
|
fi
|
|
|
|
|
|
|
|
lines_locale=$(grep -E "^[^#]" /etc/locale.gen)
|
|
|
|
for line in $lines_locale; do echo $line; sed -i "s|^$line|# $line|g" /etc/locale.gen; done
|
|
|
|
echo "en_US ISO-8859-1" >> /etc/locale.gen
|
|
|
|
|
|
|
|
/sbin/locale-gen
|
|
|
|
|
|
|
|
/bin/localectl set-locale LANG="en_US.ISO-8859-1"
|
|
|
|
/bin/localectl set-locale LANGUAGE="en_US.ISO-8859-1"
|
|
|
|
|
|
|
|
|
|
|
|
clear
|
|
|
|
echo "Reiniciando..."
|
|
|
|
for i in {5..1};do sleep 1 && echo -n "$i ";done
|
|
|
|
echo ""
|
|
|
|
echo "Recomece a atualizacao"
|
|
|
|
/bin/rm -rf /tmp/sip_install.pid
|
|
|
|
[ -e /sbin/reboot ] && /sbin/reboot
|
|
|
|
reboot
|
|
|
|
fi
|
|
|
|
|
|
|
|
# adicionar a pasta sbin para variável de ambiente
|
|
|
|
add_sbin_path
|
|
|
|
|
|
|
|
#Remover o source.list e colocar o padrão
|
|
|
|
[ -f /etc/apt/sources.list ] && /bin/rm -f /etc/apt/sources.list
|
|
|
|
[ -d /etc/apt/sources.list.d ] && /bin/rm -rf /etc/apt/souces.list.d/*
|
|
|
|
echo "#Principal repositório de Debian" > /etc/apt/sources.list
|
|
|
|
echo "deb http://deb.debian.org/debian/ bullseye main contrib non-free" >> /etc/apt/sources.list
|
|
|
|
echo "deb http://deb.debian.org/debian bookworm contrib main non-free-firmware" >> /etc/apt/sources.list
|
|
|
|
echo "deb http://deb.debian.org/debian bookworm-updates contrib main non-free-firmware" >> /etc/apt/sources.list
|
|
|
|
echo "deb http://deb.debian.org/debian bookworm-backports contrib main non-free-firmware" >> /etc/apt/sources.list
|
|
|
|
echo "deb http://deb.debian.org/debian-security bookworm-security contrib main non-free-firmware" >> /etc/apt/sources.list
|
|
|
|
|
|
|
|
|
|
|
|
apt-get update -y
|
|
|
|
apt-get upgrade -y
|
|
|
|
apt-get install -y aptitude aptitude-common libboost-iostreams1.74.0 libcwidget4 libdpkg-perl libfile-fcntllock-perl \
|
|
|
|
libsigc++-2.0-0v5 libxapian30 lsb-release apt-transport-https ca-certificates pkg-config
|
|
|
|
|
|
|
|
clear
|
|
|
|
|
|
|
|
echo "#######################################################"
|
|
|
|
echo "# VERIFICANDO DEPENDENCIAS & INSTALANDO #"
|
|
|
|
echo "#######################################################"
|
|
|
|
echo "Instaladno pacotes necessários . . . "
|
|
|
|
|
|
|
|
apt-get install -y $(cat $path_arquivo/dependencias_simplesip.txt) linux-headers-$(uname -r)
|
|
|
|
if [[ $? -ne 0 ]];then
|
|
|
|
echo "não foi possível instalar todos os pacote."
|
|
|
|
exit_installation
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "Dependencias instaladas ... "
|
|
|
|
|
|
|
|
sleep 5
|
|
|
|
clear
|
|
|
|
|
|
|
|
clear
|
|
|
|
#Realizando backup da pasta de gravacoes
|
|
|
|
if [ -d /var/spool/asterisk/monitor ] ; then
|
|
|
|
cd /var/spool/asterisk/monitor/
|
|
|
|
raiz_monitor=$(pwd -P | cut -d "/" -f2)
|
|
|
|
|
|
|
|
if [ "$raiz_monitor" = "var" ] ; then
|
|
|
|
mkdir -p /hdaux/gravacoes-$data
|
|
|
|
/bin/mv -f /var/spool/asterisk/monitor /hdaux/gravacoes-$data/
|
|
|
|
else
|
|
|
|
mkdir -p /$raiz_monitor/gravacoes-$data
|
|
|
|
/bin/mv -f /var/spool/asterisk/monitor /$raiz_monitor/gravacoes-$data/
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
[ -d /etc/asterisk ] && /bin/cp -Rapf /etc/asterisk /tmp/etc_asterisk-$data
|
|
|
|
[ -d /var/lib/asterisk ] && /bin/cp -Rapf /var/lib/asterisk /tmp/var_lib_asterisk-$data
|
|
|
|
|
|
|
|
[ -L /usr/src/libpri ] && unlink /usr/src/libpri
|
|
|
|
[ -L /usr/src/asterisk ] && unlink /usr/src/asterisk
|
|
|
|
|
|
|
|
#Desistalando Pacotes anteriores
|
|
|
|
if [ 0 -ne $(find /usr/src/ -name "channel*.sh" | wc -l) ] ; then
|
|
|
|
echo "Desinstalando KHOMP"
|
|
|
|
bash $(find /usr/src/ -name "channel*.sh" | sort | tail -n1 | xargs ls -1tr | tail -n1) -j
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT KHOMP DESINSTALAR
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ 0 -ne $(find /usr/src -name "spandsp-*" -type d -print | wc -l) ] ; then
|
|
|
|
echo "Desinstalando SPANDSP"
|
|
|
|
cd $(find /usr/src -name "spandsp-*" -type d -print | xargs ls -d1tr | tail -n1)
|
|
|
|
make uninstall >> $log 2>&1
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT SPANDSP DESINSTALAR
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ 0 -ne $(find /usr/src -name "libpri-*" -type d -print | wc -l) ] ; then
|
|
|
|
echo "Desinstalando LIBPRI"
|
|
|
|
cd $(find /usr/src -name "libpri-*" -type d -print | xargs ls -d1tr | tail -n1)
|
|
|
|
make uninstall >> $log 2>&1
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT LIBPRI DESINSTALAR
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ 0 -ne $(find /usr/src -name "dahdi-linux-*" -type d -print | wc -l) ] ; then
|
|
|
|
echo "Desinstalando DAHDI"
|
|
|
|
cd $(find /usr/src -name "dahdi-linux-*" -type d -print | xargs ls -d1tr | tail -n1)/linux/
|
|
|
|
make uninstall >> $log 2>&1
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT DAHDI DESINSTALAR
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ 0 -ne $(find /usr/src -name "asterisk-*" -type d -print | wc -l) ] ; then
|
|
|
|
echo "Desinstalando ASTERISK"
|
|
|
|
cd $(find /usr/src -name "asterisk-*" -type d -print | xargs ls -d1tr | tail -n1)
|
|
|
|
make uninstall-all >> $log 2>&1
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT ASTERISK DESINSTALAR
|
|
|
|
fi
|
|
|
|
|
|
|
|
[ -e /etc/init.d/dahdi ] && chkconfig --level 35 dahdi off && rm -rf /etc/init.d/dahdi
|
|
|
|
#[ -e /etc/init.d/khomp-services ] && chkconfig --level 35 khomp-services off && rm -rf /etc/init.d/khomp-services
|
|
|
|
[ -L /usr/src/libpri ] && unlink /usr/src/libpri
|
|
|
|
[ -L /usr/src/asterisk ] && unlink /usr/src/asterisk
|
|
|
|
/bin/rm -rf /usr/src/instaladores
|
|
|
|
/bin/rm -rf /usr/src/asterisk*
|
|
|
|
/bin/rm -rf /usr/src/libpri*
|
|
|
|
/bin/rm -rf /usr/src/dahdi*
|
|
|
|
/bin/rm -rf /usr/src/spandsp*
|
|
|
|
/bin/rm -rf /usr/src/channel_*
|
|
|
|
/bin/rm -rf /usr/src/usr/src/openr2-*
|
|
|
|
/bin/rm -rf /etc/asterisk
|
|
|
|
/bin/rm -rf /var/lib/asterisk
|
|
|
|
/bin/rm -rf /usr/lib/asterisk
|
|
|
|
|
|
|
|
|
|
|
|
mkdir -p /usr/src/instaladores
|
|
|
|
|
|
|
|
#Iniciando Instalacao
|
|
|
|
cd $path_arquivo/
|
|
|
|
/bin/cp -Rapf *.gz /usr/src/instaladores/
|
|
|
|
/bin/cp -Rapf pjproject-* /usr/src/instaladores/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if [ "$arquitetura" = "i686" ] ; then
|
|
|
|
/bin/cp -Rapf khomp/*i686*.gz /usr/src/instaladores/
|
|
|
|
else
|
|
|
|
/bin/cp -Rapf khomp/*64*.gz /usr/src/instaladores/
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "/usr/local" > /etc/ld.so.conf.d/spandsp.conf
|
|
|
|
echo "/usr/local/lib" >> /etc/ld.so.conf.d/spandsp.conf
|
|
|
|
|
|
|
|
echo "Instalando ferramentas para o PABX:"
|
|
|
|
|
|
|
|
# Quantidade de thread para fazer o restore
|
|
|
|
num_cpu=$(lscpu|grep -E "^CPU\(s\):" | sed 's/: \+/-/g' |awk -F- '{print $2}')
|
|
|
|
num_thread=$(lscpu|grep -E "^Thread\(s\).*:" | sed 's/: \+/-/g' |awk -F- '{print $2}')
|
|
|
|
thread_make=$( expr "$num_cpu" \* "$num_thread" )
|
|
|
|
|
|
|
|
dahdi=$(ls -1 /usr/src/instaladores/dahdi-*.tar.gz 2> /dev/null)
|
|
|
|
if [ -f "$dahdi" ] ; then
|
|
|
|
echo "Instalando DAHDI"
|
|
|
|
sleep 1
|
|
|
|
tar -zxf /usr/src/instaladores/dahdi-*.tar.gz -C /usr/src
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT DESCOMPACTANDO_DAHDI
|
|
|
|
cd /usr/src/dahdi-*
|
|
|
|
make clean >> $log 2>&1
|
|
|
|
make all >> $log 2>&1
|
|
|
|
make install >> $log 2>&1
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT DAHDI_INSTALL
|
|
|
|
make install-config >> $log 2>&1
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT DAHDI_CONFIG
|
|
|
|
[[ -f /etc/dahdi/modules ]] && /bin/cp -Rapf /etc/dahdi/modules /etc/dahdi/modules.ori
|
|
|
|
echo "" > /etc/dahdi/modules
|
|
|
|
fi
|
|
|
|
|
|
|
|
libpri=$(ls -1 /usr/src/instaladores/libpri-*.tar.gz 2> /dev/null)
|
|
|
|
if [ -f "$libpri" ] ; then
|
|
|
|
echo "Instalando LIBPRI"
|
|
|
|
sleep 1
|
|
|
|
tar -zxf /usr/src/instaladores/libpri-*.tar.gz -C /usr/src
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT DESCOMPACTANDO_LIBPRI
|
|
|
|
ln -s $(find /usr/src -name "libpri-1*" -type d -print) /usr/src/libpri
|
|
|
|
cd /usr/src/libpri-*
|
|
|
|
make clean >> $log 2>&1
|
|
|
|
make >> $log 2>&1
|
|
|
|
make -j${thread_make} install >> $log 2>&1
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT LIBPRI
|
|
|
|
fi
|
|
|
|
|
|
|
|
asterisk=$(ls -1 /usr/src/instaladores/asterisk-*.tar.gz 2> /dev/null)
|
|
|
|
if [ -f "$asterisk" ] ; then
|
|
|
|
echo "Instalando ASTERISK"
|
|
|
|
sleep 1
|
|
|
|
/bin/rm -rf /tmp/pjproject-*
|
|
|
|
/bin/cp -Rapf /usr/src/instaladores/pjproject-* /tmp/
|
|
|
|
tar -zxf /usr/src/instaladores/asterisk-*.tar.gz -C /usr/src
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT DESCOMPACTANDO_ASTERISK
|
|
|
|
ln -s $(find /usr/src -name "asterisk-*" -type d -print) /usr/src/asterisk
|
|
|
|
cd /usr/src/asterisk-*
|
|
|
|
make clean >> $log 2>&1
|
|
|
|
# Foi modificado no código fonte já. Porém é colocado aqui para mostrar
|
|
|
|
# as modificações feitas
|
|
|
|
# sed -i 's/.*HAVE_SYSTEMD.*/#define HAVE_SYSTEMD 1/' include/asterisk/autoconfig.h.in
|
|
|
|
./configure --prefix=/usr --libdir=/usr/lib64 --with-pjproject-bundled >> $log 2>&1
|
|
|
|
make menuselect/menuselect menuselect-tree menuselect.makeopts >> $log 2>&1
|
|
|
|
menuselect/menuselect --enable cdr_custom menuselect.makeopts >> $log 2>&1
|
|
|
|
menuselect/menuselect --enable cdr_manager menuselect.makeopts >> $log 2>&1
|
|
|
|
menuselect/menuselect --enable cdr_csv menuselect.makeopts >> $log 2>&1
|
|
|
|
menuselect/menuselect --enable cdr_odbc menuselect.makeopts >> $log 2>&1
|
|
|
|
menuselect/menuselect --enable cdr_pgsql menuselect.makeopts >> $log 2>&1
|
|
|
|
menuselect/menuselect --enable chan_sip menuselect.makeopts >> $log 2>&1
|
|
|
|
menuselect/menuselect --enable res_snmp menuselect.makeopts >> $log 2>&1
|
|
|
|
menuselect/menuselect --enable func_cdr menuselect.makeopts >> $log 2>&1
|
|
|
|
menuselect/menuselect --disable CORE-SOUNDS-EN-GSM menuselect.makeopts >> $log 2>&1
|
|
|
|
menuselect/menuselect --disable MOH-OPSOUND-WAV menuselect.makeopts >> $log 2>&1
|
|
|
|
make -j${thread_make} >> $log 2>&1
|
|
|
|
make install >> $log 2>&1
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT ASTERISK_INSTALL
|
|
|
|
make samples >> $log 2>&1
|
|
|
|
make config >> $log 2>&1
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT ASTERISK_CONFIG
|
|
|
|
|
|
|
|
# Inserir arquivo do systemd do asterisk
|
|
|
|
# esse arquivo não
|
|
|
|
/bin/cp -f asterisk.service /lib/systemd/system/
|
|
|
|
systemctl daemon-reload
|
|
|
|
|
|
|
|
#Colocando o asterisk na inicializacao do servidor
|
|
|
|
/bin/systemctl enable asterisk
|
|
|
|
/bin/systemctl enable dahdi.service
|
|
|
|
|
|
|
|
#Codec
|
|
|
|
cd $path_arquivo/
|
|
|
|
[ -d codec ] && /bin/cp -Rapf codec/$arquitetura/codec*.so /usr/lib$(getconf LONG_BIT | grep "64")/asterisk/modules/
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
khomp=$(ls -1 /usr/src/instaladores/channel_*.gz 2> /dev/null)
|
|
|
|
if [ -f "$khomp" ] ; then
|
|
|
|
echo "Instalando KHOMP"
|
|
|
|
sleep 1
|
|
|
|
cp -Rap /usr/src/instaladores/channel_*.gz /usr/src/
|
|
|
|
cd /usr/src
|
|
|
|
gzip -d channel_*.sh.gz
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT KHOMP_GZIP
|
|
|
|
printf 'y\n' | bash channel_*.sh >> $log 2>&1
|
|
|
|
RESULT=$?
|
|
|
|
verifica_erro $RESULT KHOMP_BASH_CHANNEL
|
|
|
|
echo "noload => chan_khomp.so" >> /etc/asterisk/modules.conf
|
|
|
|
fi
|
|
|
|
|
|
|
|
sleep 2
|
|
|
|
|
|
|
|
rm -rf /usr/src/tools_simplesip
|
|
|
|
|
|
|
|
[ -d /tmp/etc_asterisk-$data ] && [ "$(ls -l /tmp/etc_asterisk-$data | wc -l )" -ne 0 ] && /bin/mv -f /tmp/etc_asterisk-$data/* /etc/asterisk/
|
|
|
|
[ -d /tmp/var_lib_asterisk-$data ] && [ "$(ls -l /tmp/etc_asterisk-$data | wc -l )" -ne 0 ] && for i in $(ls -1 /tmp/var_lib_asterisk-$data/) ; do /bin/rm -rf /var/lib/asterisk/$i && /bin/mv -f /tmp/var_lib_asterisk-$data/$i /var/lib/asterisk/ ; done
|
|
|
|
|
|
|
|
rm -rf /tmp/install_simplesip.pid
|
|
|
|
|
|
|
|
echo "Terminou a instalação de ferramentas para o PABX";
|