forked from SimplesIP/install_pabx
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
377 lines
13 KiB
377 lines
13 KiB
#!/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";
|
|
|