sábado, 26 de maio de 2018

Instalando FreePBX 13 com Asterisk 13 no CentOS 7

By: Janduy Euclides On: maio 26, 2018
  • Share The Gag


  • O FreePBX é uma das opções para gerenciar o moderno mecanismo de telefonia IP - Asterisk. Por mais que os integradores não gostem dessa "superestrutura", certamente é o líder das instalações de PBX IP.

    Desativando o SELINUX

    vim /etc/sysconfig/selinux

    Substitua SELINUX=enforcing

    para

    SELINUX=disabled

    Configurando Dependências

    root@asteriskhelp# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

    root@asteriskhelp# yum install -y kernel-devel kernel-headers

    root@asteriskhelp# yum install -y e2fsprogs-devel keyutils-libs-devel krb5-devel libogg \
    libselinux-devel libsepol-devel libxml2-devel libtiff-devel gmp php-pear \ 
    php-gd php-mysql php-pdo php mbstring ncurses-devel \ 
    mysql-connector-odbc unixODBC unixODBC-devel \ 
    audiofile-devel libogg-devel openssl-devel zlib-devel \ 
    perl-DateManip sox git wget net-ferramentas psmisc \ 
    yum instalar -y gcc gcc-c ++ fazer gnutls-devel \ 
    libxml2-devel ncurses-devel subversion doxygen \ 
    texinfo curl-devel net-snmp-devel néon-devel \ 
    uuid-devel libuuid-devel sqlite-devel sqlite \ 
    speex-devel gsm-devel libtool libtool-ltdl libtool-ltdl-devel \ 
    libsrtp libsrtp-devel xmlstarlet
    

    Fazendo as atualizações do sistema

    root@asteriskhelp# yum install update -y

    Reinicie o servidor

    root@asteriskhelp# reboot

    Instalando o mysql (mariadb)

    root@asteriskhelp# yum -y instala mariadb-server mariadb mariadb-devel

    Habilitando mariadb na inicialização do sistema

    root@asteriskhelp# systemctl enable mariadb.service

    Iniciando o mariadb

    root@asteriskhelp# systemctl start mariadb.service

    Iniciando o configurador do Mysql

    root@asteriskhelp# mysql_secure_installation
    Set root password? [Y/n] y 
    New password:
    Re-enter new password:
    Password updated successfully! 
    Reloading privilege tables.. 
     ... Success!
     
    
    By default, a MariaDB installation has an anonymous user, allowing anyone 
    to log into MariaDB without having to have a user account created for 
    them.  This is intended only for testing, and to make the installation 
    go a bit smoother.  You should remove them before moving into a 
    production environment. 
    
    Remove anonymous users? [Y/n] y
    ... Success!
    
    Normally, root should only be allowed to connect from "localhost".  This 
    ensures that someone cannot guess at the root password from the network.
    
    Disallow root login remotely? [Y/n] n 
    ... skipping.
    
    By default, MariaDB comes with a database named "test" that anyone can
    access.  This is also intended only for testing, and should be removed
    before moving into a production environment.
    
    Remove test database and access to it? [Y/n] y
    - Dropping test database...
     ... Success!
     - Removing privileges on test database...
     ... Success!
    
    Reloading the privilege tables will ensure that all changes made so far
    will take effect immediately.
    
    Reload privilege tables now? [Y/n] y
    ... Success!
    
    Cleaning up...
    
    All done!  If you"ve completed all of the above steps, your MariaDB
    installation should now be secure.
    
    Thanks for using MariaDB!
    

    Instalando o PJProject
    root@asteriskhelp# cd /usr/src
    
    root@asteriskhelp# git clone https://github.com/asterisk/pjproject pjproject
    
    root@asteriskhelp# cd pjproject/
    
    root@asteriskhelp# sudo ./configure --libdir=/usr/lib64 --prefix=/usr \ 
    --enable-shared --disable-sound --disable-resample --disable-video
    
    root@asteriskhelp# sudo make dep
    
    root@asteriskhelp# sudo make
    
    root@asteriskhelp# sudo make install
    
    root@asteriskhelp# sudo ldconfig
    


    Instalando o libjansson
    root@asteriskhelp#  cd /usr/src
    
    root@asteriskhelp#  wget http://www.digip.org/jansson/releases/jansson-2.5.tar.gz
    
    root@asteriskhelp#  tar xzf jansson-2.5.tar.gz
    
    root@asteriskhelp#  cd jansson-2.5
    
    root@asteriskhelp#  sudo ./configure --prefix=/usr/
    
    root@asteriskhelp#  sudo make clean
    
    root@asteriskhelp#  sudo make
    
    root@asteriskhelp#  sudo make install
    
    root@asteriskhelp#  sudo ldconfig
    


    Lame - para codificação de áudio para o formato MP3
    root@asteriskhelp# cd /usr/src
    
    root@asteriskhelp# wget http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz
    
    root@asteriskhelp# tar zxvf lame-*.gz
    
    root@asteriskhelp# cd lame-*
    
    root@asteriskhelp# sudo ./configure
    
    root@asteriskhelp# sudo make
    
    root@asteriskhelp# sudo make install
    


    Instalando DAHDI
    root@asteriskhelp# cd /usr/src
    
    root@asteriskhelp# wget https://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/ \ 
    dahdi-linux-complete-current.tar.gz
    
    root@asteriskhelp# tar xzf dahdi-linux-complete-current.tar.gz
    
    root@asteriskhelp# cd dahdi-linux-complete-*
    
    root@asteriskhelp# sudo make all
    
    root@asteriskhelp# sudo make install
    
    root@asteriskhelp# sudo make config
    


    Instalando LIBPRI
    root@asteriskhelp# cd /usr/src
    
    root@asteriskhelp# wget https://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
    
    root@asteriskhelp# tar xzf libpri-*.tar.gz
    
    root@asteriskhelp# cd /usr/src/libpri-*
    
    root@asteriskhelp# sudo make
    
    root@asteriskhelp# sudo make install
    


    Instalando Asterisk 13
    root@asteriskhelp# cd /usr/src
    
    root@asteriskhelp# wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
    
    root@asteriskhelp# tar xvfz asterisk-13*.tar.gz
    
    root@asteriskhelp# cd asterisk-13.*
    
    root@asteriskhelp# sudo ./contrib/scripts/install_prereq install
    
    root@asteriskhelp# sudo ./configure --libdir=/usr/lib64
    
    root@asteriskhelp# sudo contrib/scripts/get_mp3_source.sh
    
    root@asteriskhelp# sudo make menuselect
    


    Depois de inserir o comando make menuselect, será solicitado a selecionar os módulos a serem instalados. A maioria os módulos necessários são selecionados automaticamente. Para suporte a mp3, inclua o módulo "format_mp3"
    --->  Add-ons (See README-addons.txt)
                 --- extended ---
                 XXX chan_mobile
                 [*] chan_ooh323
                 [*] format_mp3
                 [*] res_config_mysql
                 --- deprecated ---
                 [*] app_mysql
                 [*] app_saycountpl
                 [*] cdr_mysql
    
      ---> Core Sound Packages
                [*] CORE-SOUNDS-RU-GSM
      ---> Extras Sound Packages
                [*] EXTRA-SOUNDS-EN-GSM 
    root@asteriskhelp# make && make install && make config && ldconfig

    Instalar o asterisk a partir do usuario asterisk

    No arquivo /usr/sbin/safe_asterisk nós substituímos as linhas:

    ASTARGS="" para ASTARGS="-U asterisk"
    

    Crie um usuário do Asterisk e defina as permissões do usuário.

    root@asteriskhelp# useradd -m asterisk
    

    Definir as permissões de pasta necessárias para o usuário asterisk
    root@asteriskhelp# chown asterisk.asterisk /var/run/asterisk
    
    root@asteriskhelp# chown -R asterisk.asterisk /etc/asterisk
    
    root@asteriskhelp# chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk
    
    root@asteriskhelp# chown -R asterisk.asterisk /usr/lib64/asterisk
    
    

    Configurar o servidor web httpd (Apache)

    No arquivo de configuração do servidor web /etc/httpd/conf/httpd.conf

    Nós especificamos o usuário asterisk nas diretivas Usuário e Grupo:
    root@asteriskhelp# user  asterisk 
    root@asteriskhelp# group asterisk
    Especifique todas as diretivas para substituir as configurações do arquivo .htaccess

    No arquivo de configuração do servidor web /etc/httpd/conf/httpd.conf

    Alterar o AllowOverride None para AllowOverride All

    Configurando o php
    No arquivo /etc/php.ini
    Defina as diretivas no próximo. valores:
    date.timezone = America/Sao_Paulo
    upload_max_filesize = 120 milhões

    Reinicie o apache
    root@asteriskhelp# systemctl restart httpd
    
    root@asteriskhelp# systemctl enable httpd
    

    Instalando FreePBX
    root@asteriskhelp# cd /usr/src
    
    root@asteriskhelp# wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz
    
    root@asteriskhelp# tar xzf freepbx-13.0-latest.tgz
    
    root@asteriskhelp# cd freepbx
    
    root@asteriskhelp# sudo ./start_asterisk start
    
    
    NOTA:
    Alterar as configurações de conexão do banco de dados

    No arquivo installlib/installcommand.class.php, um array $settings está configurado, a chave dbpass, que é um array, e neste array para a chave padrão, configure o valor da sua senha atual para o usuário root se conectar ao banco de dados:

    "dbpass" => array (
    "default" => "* senha para o banco de dados *",
    "description" => "Senha do banco de dados"
    
    root@asteriskhelp# ./install -n


    Pronto, seu PBX IP esté pronto, conecte-se ao FreePBX.

    http://IP_FreePBX/admin

    FreePBX & Magnus Billing - trunk IAX (Peer to Peer)

    By: Janduy Euclides On: maio 26, 2018
  • Share The Gag

  • As configurações a seguir é para auxiliar na configuração entre dois servidores asterisk, usando o protocolo IAX com FreePBX e o Magnus Billing, neste não é o foco regras de segurança de servidores linux e nem asterisk.


    Neste laboratório usa-se dois servidores:

    Servidor A
    • CentOS 7
    • FreePBX 13

    Servidor B
    • CentOS 7
    • Magnus Billing 6

    Vamos iniciar as configurações pelo FreePBX.

    No Caminho: Connectivity => Trunk

    Siga as instruções a seguir.

    confs:
    Trunk Name: Trunk_integra
    
    PEER Details: deny=all
                  allow=g729&alaw
                  type=friend
                  host=ip_do_MagnusBilling
                  qualify=yes
                  context=fron-internal
    
    Checando o status de registro com o Magnus Billing:


    A conexão com o tarifador já está estabelecida, agora precisamos fazer as configurações no magnus.

    No magnus, vamos no caminho: Rotas => Provedor

    Siga as instruções:


    A seguir vamos criar o trunk e associá-lo ao provedor.

    Caminho: Rotas => Troncos

    Checando o status de registro com o FreePBX:



    Adicione as regras basicas em seu iptables, liberando o protocolo IAX para os servidores autorizados.

    MBilling:
    iptables -A INPUT -s  IP_FreePBX/32 -p udp -m udp --dport 4569 -m comment --comment "Interligacao FreePBX" -j ACCEPT
    

    FreePBX:
    iptables -A INPUT -s  IP_MBilling/32 -p udp -m udp --dport 4569 -m comment --comment "Interligacao FreePBX" -j ACCEPT
    

    Pronto, desta forma a comunicação entre os dois servidores asterisk está transparente.

    sábado, 5 de maio de 2018

    Instalando FreePBX 13 com Asterisk 13 no Debian 9 Stretch!

    By: Angelo de Barros Delphini On: maio 05, 2018
  • Share The Gag
  • Quando acabarmos com este artigo usamos as seguintes tecnologias:
    - Debian 9.0;
    - Asterisco 13;
    - FreePBX 13;
    - MariaDB 10.1;
    - PHP 5.6.


    Por que essa solução é usando o MariaDB, e não o MySQL, é que para facilitar a vida dos iniciantes vamos fazer uso do MariaDB, abordando a maneira correta de preparar este SGBD para o projeto FreePBX. Para a instalação, vamos utilizar um o CD minimal install do sistema Debian 9.0 é os pacotes já instalados MariaDB, PHP 7.0, Servidor OpenSSH padrão para o Debian 9 Stretch. Vamos aproveitar e configurar o parâmetro "PermitRootLogin without-password", ele desabilita a autorização do root usar o SSH. Acho isso desconfortável para máquinas de teste em uma rede local, então eu ligo novamente. Todos os comandos são executados a partir do root.

    1 - Preparação do Sistema:

    1vim /etc/ssh/sshd_config

    2systemctl restart sshd.service

    Quando terminar de fazer toda a configuração, você deve vir novamente a este ponto e desabilitar está permissão. Pois seu servidor ficara permitindo que o root se conecte nele e isto é uma quebra de segurança.

    usando uma ferramenta de SSH (sugerimos o MobaXterm) faça:

    1ssh root@192.168.15.99

    Claro substitua o nosso ip pelo ip do seu servidor. 

    Atualize os pacotes do sistema e o sistema.


    1apt-get update && apt-get upgrade -y

    2 - Instale os pacotes necessários:

    1apt-get install -y build-essential linux-headers-`uname -r`

    apt-get install -y openssh-server apache2 bison flex libmariadb-dev
    apt-get install -y libmariadbclient-dev mariadb-server mariadb-client

    apt-get install -y php-pear curl sox php7.0 php7.0-mysql php7.0-mcrypt

    apt-get install -y php7.0-curl php7.0-gd libapache2-mod-php7.0 php7.0-mbstring

    apt-get install -y php7.0-xml libncurses5-dev libssl-dev mpg123 libpng-dev

    apt-get install -y libxml2-dev libxml2 libcurl3 libnewt-dev sqlite3 libsqlite3-dev
    apt-get install -y pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev
    apt-get install -y libasound2-dev libogg-dev libvorbis-dev libcurl4-openssl-dev
    apt-get install -y libical-dev libneon27-dev libsrtp0-dev libspandsp-dev
    apt-get install -y sudo vim subversion libgmime-2.6-0 libgmime-2.6-dev


    Durante a instalação, o sistema solicitará uma senha para o usuário root do MariaDB. Aconselhamos que você crie uma senha complexa e anote-a. Para uso meramente acadêmico vamos usar aqui myPass@2018.




    3 - Reinicie o sistema:


    1reboot

    4 - Substitua o PHP7.0 pelo PHP5.6:


    1vim /etc/apt/sources.list 

    Vamos adicionar os repositórios. Coloque no final do arquivo sources.list.


    1# Repositorios de Jessie
    2deb http://ftp.debian.org/debian/ jessie main contrib non-free
    3deb-src http://ftp.debian.org/debian/ jessie main contrib non-free
    4deb http://security.debian.org/ jessie/updates main contrib non-free

    5deb-src http://security.debian.org/ jessie/updates main contrib non-free

    Vamos configurar as preferências do apt e apt-get, para usar dois repositórios. Adicione o seguinte ao arquivo /etc/apt/preferences.d/jessie:



    1Package: *
    2Pin: release n=stretch
    3Pin-Priority: 900
    4
    5Package: *
    6Pin: release n=jessie

    7Pin-Priority: 100

    Atualize as novas configurações.

    1apt update

    Instalar o PHP5.6.


    1apt install php5 php5-pgsql php5-gd php5-curl php5-cli apache2


    5 - Defina as dependências necessárias para o Google Voice:


    1pear install Console_Getopt

    1cd /usr/src
    3cd iksemel
    4./configure
    5make
    6make install
    7ldconfig

    6 - Faça o download dos pacotes necessários Dahdi, Libpri, Asterisk 13, Jansson, PJproject:


    7 - Descompacte e instale o Dahdi, Libpri:


    01cd /usr/src/

    02tar xvfz dahdi-linux-complete-current.tar.gz

    03cd dahdi-linux-complete-*

    04make all

    05make install

    06make config

    07cd /usr/src/
    08tar xvfz libpri-current.tar.gz
    09cd libpri-*
    10make
    11make install

    8 - Descompacte e instale o Pjproject:


    1cd /usr/src

    2tar -xjvf pjproject-2.6.tar.bz2

    3cd pjproject-2.6

    4CFLAGS='-DPJ_HAS_IPV6=1' ./configure --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr

    5make dep

    6make

    7make install

    9 - Descompacte e instale o Jansson:


    1cd /usr/src

    2tar vxfz jansson.tar.gz

    3cd jansson-*

    4autoreconf -i

    5./configure

    6make

    7make install

    10 - Descompacte e instale o Asterisk 13:

    1cd /usr/src/
    2tar xvfz asterisk-13-current.tar.gz
    3cd asterisk-*
    4./contrib/scripts/get_mp3_source.sh
    5./contrib/scripts/install_prereq install

    Na janela que se abre, você deve fornecer o código do país, nosso caso, Brasil é 55.



    6./contrib/scripts/install_prereq install-unpackaged
    7./configure
    8make menuselect

    Também é necessário selecionar os módulos format_mp3 e aqueles que você pode precisar no futuro, as imagens é para que você tenha uma ideia do que julgamos necessários.

















    Depois que os módulos forem selecionados, clique em Salvar e Sair e continue a instalação:

    1make
    2make install
    3make config
    4ldconfig

    5update-rc.d -f asterisk remove


    11 - Baixe e instale arquivos de som para o Asterisk 13:


    1cd /var/lib/asterisk/sounds/

    2mkdir br

    3cd br

    4wget -O core.zip https://www.asterisksounds.org/pt-br/download/asterisk-sounds-core-pt-BR-sln16.zip

    5

    6789
    wget -O extra.zip https://www.asterisksounds.org/pt-br/download/asterisk-sounds-extra-pt-BR-sln16.zip

    unzip core.zip
    unzip extra.zip
    chown -R asterisk.asterisk /var/lib/asterisk/sounds/br
    find /var/lib/asterisk/sounds/br -type d -exec chmod 0775 {} \;


    12 - Convertendo arquivos de som para outros formatos:

    1cd /var/lib/asterisk/sounds/br/

    2vim astconvert.sh

    #!/bin/bash
    for a in $(find . -name '*.sln16'); do
      sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t gsm -r 8k `echo $a|sed "s/.sln16/.gsm/"`;\
      sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t raw -r 8k -e a-law `echo $a|sed "s/.sln16/.alaw/"`;\
      sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t raw -r 8k -e mu-law `echo $a|sed "s/.sln16/.ulaw/"`;\
    done
    1chmod a+x astconvert.sh

    2./astconvert.sh

    Para ativar os sons utilizando FreePBX, basta alterar o parâmetro da variável language dentro de Asterisk SIP Settings. Neste caso, colocando es. Se existirem ramais ou linhas IAX2, será necessário configurar no parâmetro language acessando o menu Asterisk IAX Settings.

    Cada canal de Asterisk tem sua configuração de língua. O valor inserido na configuração é dividido por cada underline para construir a rota onde Asterisk buscará os sons. Assim, Asterisk utilizará o primeiro arquivo que encontre.

    Isso quer dizer que se o valor do parâmetro language for es_AR_Maria, Asterisk buscará os arquivos em:


    .../sounds/pt_br_Maria
    .../sounds/pt_br 
    .../sounds/pt
    .../sounds
    
    Isso faz com que seja possível acrescentar novas variantes de uma língua baseadas em um esquema geral.

    13 - Vamos iniciar a instalação do FreePBX 13:

    Para fazer isso, crie um usuário e defina permissões nas pastas:

    1adduser --system --group --home /var/lib/asterisk --no-create-home --gecos "Asterisk PBX" asterisk
    2usermod -a -G dialout,audio asterisk

    01chown -R asterisk:asterisk /var/lib/asterisk &&
    02chown -R asterisk:asterisk /var/log/asterisk &&
    03chown -R asterisk:asterisk /var/run/asterisk &&
    04chown -R asterisk:asterisk /var/spool/asterisk &&
    05chown -R asterisk:asterisk /usr/lib/asterisk &&
    06chown -R asterisk:asterisk /etc/asterisk &&
    07chmod -R u=rwX,g=rX,o= /var/lib/asterisk &&
    08chmod -R u=rwX,g=rX,o= /var/log/asterisk &&
    09chmod -R u=rwX,g=rX,o= /var/run/asterisk &&
    10chmod -R u=rwX,g=rX,o= /var/spool/asterisk &&
    11chmod -R u=rwX,g=rX,o= /usr/lib/asterisk &&
    12chmod -R u=rwX,g=rX,o= /etc/asterisk

    14 - Vamos modificar o Apache 2 para trabalhos futuros com o FreePBX 13:


    1sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php5/apache2/php.ini

    2cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig

    3sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf

    4sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf

    5service apache2 restart

    15 - Configure o ODBC:


    1cat >> /etc/odbcinst.ini << EOF

    2[MySQL]

    3Description = ODBC for MySQL

    4Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so

    5Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so

    6FileUsage = 1

    7   

    8EOF

    Edite ou crie o arquivo /etc/odbc.ini e configure:


    01cat >> /etc/odbc.ini << EOF

    02[MySQL-asteriskcdrdb]

    03Description=MySQL connection to 'asteriskcdrdb' database

    04driver=MySQL

    05server=localhost

    06database=asteriskcdrdb

    07Port=3306

    08Socket=/var/run/mysqld/mysqld.sock

    09option=3
    10   
    11EOF


    16 - Configure o banco de dados MariaDB:


    Lembrando que a senha que informamos na instalação do MariaDB foi myPass@2018. Então iremos informar como usuário root e o password myPass@2018.



    1mysqladmin -uroot -pmyPass@2018 create asterisk

    2mysqladmin -uroot -pmyPass@2018 create asteriskcdrdb

    3mysql -uroot -pmyPass@2018 -e "GRANT ALL PRIVILEGES ON asterisk.* TO root@localhost IDENTIFIED BY 'myPass@2018';"

    4mysql -uroot -pmyPass@2018 -e "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO root@localhost IDENTIFIED BY 'myPass@2018';"

    5mysql -uroot -pmyPass@2018 -e "FLUSH PRIVILEGES;"



    17 - O estágio final. Baixe e instale o FreePBX 13:


    O motivo de estarmos utilizando o FreePBX 13 é para poder usar o AstSBC 13, para conseguir o pacote visite o site do projeto.




    Durante a fase de instalação, você deve especificar dbuser e dbpass, que você inseriu na etapa 16.

    1cd /usr/src
    3tar vxfz freepbx-13.0-latest.tgz
    4cd freepbx
    5./start_asterisk start
    6./install -n --dbuser=root --dbpass=myPass@2018

    A instalação está concluída e agora você precisa ir para o endereço http://YOUR_IP/admin e configurar o administrador, especificando o login e a senha.


    Isso conclui a instalação, você pode prosseguir com a configuração. Se houver erros ou inconsistências no artigo, ficaremos gratos se você nos escrever sobre eles nos comentários.



    O objetivo é criar um instalador automatizando assim este artigo.