Implementando A2billing Parte 2 – A2billing

Saudações companheiros. Vamos para a segunda parte do nosso tutorial de implementação do a2billing. Nesse novo tutorial iremos abordar o processo de implementação seguinte a instalação do asterisk, assim  o asterisk deve estar compilado. Se ainda não tem o asterisk compilado veja em https://blog.moraes.eti.br/2015/01/03/implementando-o-a2billing-parte-1-asterisk/.

Todas as informações contidas nesse artigo foram retiradas do arquivo “INSTALL.rst” que fica no diretório do a2billing, veremos isso logo abaixo. Mãos na massa!

Vamos entrar no diretório /usr/src e baixar os pacotes do a2billing:

wget https://github.com/Star2Billing/a2billing/archive/master.tar.gz

Logo em seguida vamos descompacta-lo:

tar zxvf master.tar.gz

Depois da descompactação teremos o diretório a2billing-master.

cd a2billing-master/

Agora vamos dar uma olhada no conteúdo do diretório com ls. Na versão que está retratada neste  artigo temos os seguintes arquivos:

a2billing.conf
a2billing_dashboard.png
addons
admin
agent
AGI
AUTHORS
CallBack
CHANGELOG
common
COPYING
Cronjobs
customer
DataBase
INSTALL.rst
README.rst
REQUIREMENTS.rst
webservice

Instalando algumas dependências, LAMP Server:

apt-get install libapache2-mod-php5 php5 php5-common
apt-get install php5-cli php5-mysql mysql-server apache2 php5-gd
apt-get install openssh-server subversion

Para inicio de configuração assumimos que:

  • Diretório padrão do apache2 é /var/www
  • Diretório de sons do asterisk é /var/lib/asterisk/sounds
  • Diretório de AGIs do asterisk é /var/lib/asterisk/agi
  • E todas as dependências acima e do primeiro artigo foram instaladas

Configurando a base de dados (MYSQL):

Logue no mysql e crie a base mya2billing:

mysql> CREATE DATABASE mya2billing;

Depois de criada a base vamos criar a estrutura da mesma, dentro do diretório a2billing-master execute:

cd DataBase/mysql-5.x/
./install-db.sh

O script install-db.sh irá pedir algumas informações, o retorno deverá ser o seguinte:

root@a2btutorial:/usr/src/a2billing-master/DataBase/mysql-5.x# ./install-db.sh

Install A2Billing DataBase
-----------------------------

Enter Database Name : 
mya2billing
Enter Hostname : 
127.0.0.1
Enter UserName : 
root
Enter Password : 
SENHA_MYSQL
mysql --user=root --password=SENHA_MYSQL --host=127.0.0.1 mya2billing

Estou usando o usuário root mas você pode criar um usuário no mysql com as permissões que desejar desde que atenda a necessidade do a2b. Isto vai do seu conhecimento.

Agora, voltando ao diretório principal, a2billing-master vamos copiar o arquivo a2billing.conf para /etc/:

cp /usr/src/a2billing-master/a2billing.conf /etc/

Editar as configurações do a2billing.conf de acordo com as informações da base:

[database]
 hostname = localhost
 port = 3306
 user = a2billinguser
 password = a2billing
 dbname = mya2billing
 dbtype = mysql

Fixando permissões nos diretórios e arquivos do asterisk:

Deve-se tomar muito cuidado com permissões de pastas e arquivos. Estou usando aqui 777 mas para produção entre mais a fundo nas permissões e tente setar somente as permissões necessárias.

chmod 777 /etc/asterisk
touch /etc/asterisk/additional_a2billing_iax.conf
touch /etc/asterisk/additional_a2billing_sip.conf
echo \#include additional_a2billing_sip.conf >> /etc/asterisk/sip.conf
echo \#include additional_a2billing_iax.conf >> /etc/asterisk/iax.conf
chown -Rf www-data /etc/asterisk/additional_a2billing_iax.conf
chown -Rf www-data /etc/asterisk/additional_a2billing_sip.conf

 

Arquivos de sons:

O a2billing assume, neste script, que o diretório do asterisk é /usr/share/asterisk/ e não /var/lib/asterisk. Então, por segurança, verifique se este diretório existe, se ele não existir crie:

mkdir /usr/share/asterisk

Faça um link simbólico do diretório de sons verdadeiro para este diretório:

ln -s /var/lib/asterisk/sounds /usr/share/asterisk

Depois, no diretório a2billing-master entre na pasta addons:

cd addons/sounds/

e execute o script para instalar os arquivos de sons:

./install_a2b_sounds.sh

root@a2btutorial:/usr/src/a2billing-master/addons/sounds# ls /var/lib/asterisk/sounds/

br en es fr ru

Dê permissões:

chmod 777 /var/lib/asterisk/sounds/ -R

Agora vamos a configuração do manager.conf:

vi /etc/asterisk/manager.conf

Edite as informações referentes ao  manager e usuários:

[general]
 enabled = yes
 port = 5038
 bindaddr = 127.0.0.1 (Só libere o manager remoto se houver real necessadide do contrári
 deixe apenas para acesso local)

 [usuario_para_o_a2b]
 secret=senha_para_o_a2b
 read=system,call,log,verbose,command,agent,user
 write=system,call,log,verbose,command,agent,user

De volta ao diretório principal /usr/src/a2billing-master, vamos copiar os arquivos do AGI responsável pelo funcionamento do a2b:

cd AGI/
cp a2billing* /var/lib/asterisk/agi-bin/
cp -r ../common/lib/ /var/lib/asterisk/agi-bin/

Agora vamos copiar os arquivos web para o diretório em /var/www e criar os diretórios de pid e script:

mkdir /var/www/a2billing
chown www-data:www-data /var/www/a2billing
mkdir -p /var/lib/a2billing/script
mkdir -p /var/run/a2billing
cp -rf admin /var/www/a2billing
cp -rf agent /var/www/a2billing
cp -rf customer /var/www/a2billing
cp -rf common /var/www/a2billing

Permissões:

chmod 755 /var/www/a2billing/admin/templates_c
chmod 755 /var/www/a2billing/customer/templates_c
chmod 755 /var/www/a2billing/agent/templates_c
chown -Rf www-data:www-data /var/www/a2billing/admin/templates_c
chown -Rf www-data:www-data /var/www/a2billing/customer/templates_c
chown -Rf www-data:www-data /var/www/a2billing/agent/templates_c

Bom, se tudo correu como esperado já devemos ter acesso via navegador http://< IP >/a2billing/admin

Mas ainda não terminamos!

Agora vamos configurar o asterisk em realtime:

vim /etc/asterisk/res_config_mysql.conf

Inserir as informações referentes a conexão a base de dados:

[general]
dbhost = 127.0.0.1
dbname = mya2billing
dbuser = user_mysql_com_acesso_ao_BD_a2b
dbpass = senha_mysql
dbport = 3306

Em seguida:

vim /etc/asterisk/extconfig.conf

Inserir as configurações referente a base do a2billing:

[settings]
iaxusers => mysql,general,cc_iax_buddies
iaxpeers => mysql,general,cc_iax_buddies
sipusers => mysql,general,cc_sip_buddies
sippeers => mysql,general,cc_sip_buddies

 

Ativando o a2billing no dialplan:

vi /etc/asterisk/extensions.conf
[general]
autofallthrough=no
language=pt_BR

[a2billing]
 include => a2billing_callingcard
; include => a2billing_monitoring
 include => a2billing_voucher

 [a2billing_callingcard]
 ; Asterisk Calling Card
 exten => _X.,1,NoOp(A2Billing Start)
 same=>n,Agi(a2billing.php,1)
 same=>n,Hangup

[a2billing_voucher]
exten => _X.,1,Answer(1)
exten => _X.,n,Agi(a2billing.php,1,voucher)
;exten => _X.,n,AGI(a2billing.php|1|voucher|44) ; will add 44 in front of the callerID for the CID authentication
exten => _X.,n,Hangup

[a2billing_did]
exten => _X.,1,Noop(${EXTEN})
exten => _X.,n,Agi(a2billing.php,1,did)
exten => _X.,n,Hangup

As configurações acima são referentes aos contextos utilizados pelo a2billing na hora da criação do cartão.

O a2billing também possui alguns serviços agendados que devem ser adicionados ao crontab (retirado do arquivo INSTALL.rst):

 - update the currency table::

 0 6 * * * php /usr/local/src/a2billing/Cronjobs/currencies_update_yahoo.php

 - manage the monthly services subscription::

 0 6 1 * * php /usr/local/src/a2billing/Cronjobs/a2billing_subscription_fee.php

 - To check account of each Users and send an email if the balance is less than the user have choice::

 0 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_notify_account.php

 - this script will browse all the DID that are reserve and check if the customer need to pay for it bill them or warn them per email to know if they want to pay in order to keep their DIDs::

 0 2 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_bill_diduse.php

 - This script will take care of the recurring service. ::

 0 12 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_process.php

 - Generate Invoices at 6am everyday::

 0 6 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_billing.php

 - to proceed the autodialer::

 * / 5 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_autodialer.php

 - manage alarms::

 0 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_alarm.php

 

Agora sim, vamos reiniciar a maquina e acessar o nosso a2billing: http://< IP >/a2billing/admin

Tela de login a2billing
Tela de login a2billing

Não abordarei a configuração de callback, a mesma é abordada no arquivo INSTALL.rst. Outro ponto muito importante são as configurações de segurança, não apenas do asterisk mas também do servidor como um todo. As preocupações com segurança em servidores para aplicações VoIP nunca são de mais, afinal, uma bobeira pode causar imensas perdas.

Com este tutorial deixamos o a2billing pronto para as configurações via web mais a frente veremos as configurações do agi.conf na interface admin do a2billing.

Forte abraço a todos

 

 

 

 

 

Implementando o A2billing Parte 1 – Asterisk

Linux, Voip e Infra-estrutura da internet

O A2billing é uma poderosa ferramenta de tarifação VoIP, seus benefícios são inúmeros e ajuda a reduzir os custo na hora de iniciar uma pequena operação. O objetivo dessa série de artigos é abordar o processo de implementação do a2billing começando desde a instalação do asterisk até o processo de administração de clientes e taxas.

Na primeira parte da série abordaremos a compilação do asterisk puro. É possível realizar integrações com elastix e outras distros asterisk porem não irei aborda-las nesta série.

Instalação Asterisk distribuição debain wheezy

Instalação de dependências asterisk para debian wheezy:

echo >> "deb http://ftp.debian.org/debian stable main" >> /etc/apt/sources.list
apt-get install vim php5 apache2 php5-mysql mysql-server mysql-client libxml2 libxml2-dev linux-headers-$(uname -r) libtool make tar wget build-essential subversion php5-cli openssl libssl-dev libmysqld-dev ncurses-term libncurses5 libncurses5-dev

Asterisk 1.8-current-version:

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.8-current.tar.gz

Libpri:

wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz

Dahdi Linux:

wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

Para quem já está acostumado a baixar também o dahdi-tools, ele já vem…

Ver o post original 106 mais palavras

AGI para consulta de saldo por telefone no A2Billing;

Uma necessidade forte para nós que trabalhamos com telefonia VoIP e em qualquer outra área de TI é facilitar a vida do cliente, quanto mais simples as informações chegarem, melhor. Constantemente procuro desenvolver aplicações para facilitar a vida do cliente e a minha.

Com a necessidade de criar uma consulta de crédito mais rápida para o cliente eu dei a sorte de encontrar o google tts, um excelente “text to speech” que me auxiliou e me ajudou a diminuir custos.

Vou compartilhar o AGI com a comunidade, para que outros demorem menos tempo que eu para encontrar essa solução. Fiz o mais simples possível para ficar pequeno e fácil de alterar.

#!/usr/bin/php -q
<?php
/*
 * AGI para asterisk; 
 * Responsável por verificar o saldo e preparar as váriaveis accountcode do asterisk;
 * Versão: 0.01
 * @Autor: Deivison Moraes
 * 
 */

require_once __DIR__ . '/../additions/phpagi/phpagi.php';
define("AST_DIR_SOUND", "/var/lib/asterisk/sounds");

$agi = new AGI();
$agi->noop("Executando AGI para consulta de saldo via *494");

$cc_card_username = $agi->request['agi_accountcode'];
$agi->verbose("Cliente: " . $cc_card_username);

$mysqlPDO = new PDO("mysql:host=localhost;dbname=a2b", "fulanodetal", "mart321");

$mysqlPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $mysqlPDO->prepare("SELECT username, credit, lastname FROM cc_card WHERE username = ?");
$stmt->execute(array($cc_card_username));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$agi->verbose("Cliente: " . $row['lastname']);
$agi->verbose("Numero da conta: " . $row['username']);
//Formato do numero para 2 casas decimais
$nformat = number_format($row['credit'], 2, ".", "");

$agi->verbose("Crédito: " . $nformat);

$sepcredit = explode(".", $nformat);
//Separando reais de centavos

$credito['real'] = $sepcredit['0'];
$credito['cents'] = $sepcredit['1'];

//Checando se a gravação do valor já foi utilizada
//$agi->verbose("Diretorio de sons: " . AST_DIR_SOUND . "/saldos/" . $credito['real'] . ".wav");

if (!file_exists(AST_DIR_SOUND . "/saldos/" . $credito['real'] . ".wav")) {
 $agi->verbose("Capturando gravação para valor " . $credito['real']);
 GetMp3($credito['real']);
}


if (!file_exists(AST_DIR_SOUND . "/saldos/" . $credito['cents'] . ".wav")) {
 $agi->verbose("Capturando gravação para valor " . $credito['cents']);
 GetMp3($credito['cents']);
}

function GetMp3($valor) {
 //Envia o valor e salva o arquivo.
 $tts = "http://translate.google.com.br/translate_tts?ie=UTF-8&q=" . $valor . "&tl=pt_BR&prev=input";

 $soundreal = file_get_contents($tts);
 //Salvando o conteudo a gravação

 file_put_contents("/tmp/$valor.mp3", $soundreal);

 //Converte a gravação para wav
 shell_exec("rasterisk -x \"file convert /tmp/$valor.mp3 /tmp/$valor.wav\"");
 //Aumenta o Volume da gravação;
 shell_exec("sox -v 10.0 /tmp/$valor.wav" . " " . AST_DIR_SOUND . "/saldos/$valor.wav");
}

//Fala Saldo do cliente via playback
//## O MOTIVO PARA EU TER USADO PLAYBACK AO INVÉS DE SAYNUMBER É SIMPLES. 
//SAYNUMBER NÃO ESTAVA FUNCIONANDO ADEQUADAMENTE E DIZIA OS NUMEROS ERRADOS.

$agi->verbose("Saldo Cliente ###################################################");
$agi->answer();

if ($credito['real'] == 1) {

 $agi->exec("Playback", AST_DIR_SOUND . "/saldos/" . "vm-youhave");
 $agi->exec("Playback", AST_DIR_SOUND . "/saldos/" . $credito['real']);
 $agi->exec("Playback", AST_DIR_SOUND . "/saldos/" . "real");
 $agi->exec("Playback", AST_DIR_SOUND . "/saldos/" . "and");
 $agi->exec("Playback", AST_DIR_SOUND . "/saldos/" . $credito['cents']);
 $agi->exec("Playback", AST_DIR_SOUND . "/saldos/" . "centavos");
 $agi->exec("Playback", AST_DIR_SOUND . "/saldos/" . "obrigado");
 $agi->hangup();
} else {
 $agi->exec("Playback", AST_DIR_SOUND . "/saldos/" . "vm-youhave");
 $agi->exec("Playback", AST_DIR_SOUND . "/saldos/" . $credito['real']);
 $agi->exec("Playback", AST_DIR_SOUND . "/saldos/" . "reais");
 $agi->exec("Playback", AST_DIR_SOUND . "/saldos/" . "and");
 $agi->exec("Playback", AST_DIR_SOUND . "/saldos/" . $credito['cents']);
 $agi->exec("Playback", AST_DIR_SOUND . "/saldos/" . "centavos");
 $agi->exec("Playback", AST_DIR_SOUND . "/saldos/" . "obrigado");
 $agi->hangup();
}

 

Chamando o AGI no extensions.conf do asterisk:

exten => 9999,1,Noop(Agi Consulta Saldo)
 same => n,Agi(/caminho/do/agi/consultaSaldoAGI.php)
 same => n,HangUp()

 

Neste script assumo que a pasta “/var/lib/asterisk/sounds/saldo” está criada. A função GetMp3, faz o áudio, converte para wav e aumenta o volume da gravação, Ajustem a gosto.

Não tive tempo de debuga-lo totalmente ainda, então pode haver alguns erros. Este AGI já está funcionando dessa forma para mim, mas não “debugado” totalmente.

No momento estou utilizando: Debian 7 wheezy, asterisk 1.8.27 e a2billing 2.0.7.

 

 

Preparando o Ambiente para se tornar um “SAGE” e mantendo o uso de IPv6.

     Há algum tempo a Hurricane Electric está dando a oportunidade para profissionais da área de T.I de retirar certificados baseados nos seus conhecimentos em IPv6. As formas de avaliações são baseadas no estabelecimento de conexões usando IPv6 e repostas a questionários sobre o assunto. A intenção deste artigo não é responder aos questionários da HE, mas sim passar o ambiente de testes que foi utilizado para transportar IPv6 disponibilizado pelo túnel da HE.

     Como não possuo IPv6 nativo foi necessário preparar um ambiente onde ficasse viável o uso através do meu laptop. Para isso utilizei um servidor debian wheezy remoto com IPv4 fixo válido. Este usei para fechar o túnel com a Hurricane Electric e receber um /64. Neste ponto, o servidor remoto já estava com conectividade IPv6 saindo pelo túnel da HE, agora era necessário transportar o IPv6 para o meu laptop. Para tal utilizei o OPENVPN.

A HE me cedeu o bloco: 2001:470:4:48::/64 e eu separei um /126 deste bloco para ser usado no túnel do openvpn.

OPENVPN Server:

Instalando OPENVPN no Debian wheezy:

apt-get install openvpn

Depois de instalado os arquivos de configuração ficarão em /etc/openvpn.

Gerando a chave secreta do servidor:

openvpn --genkey --secret servidor.key

Arquivo de configuração da VPN:

# Configuração do Servidor
 #
 # Dispositivo Tunel
 dev tun
 # Endereço de ip_local e ip_remoto
 ifconfig 172.16.1.254 172.16.1.253
 # Rotas para redes existentes na outra ponta da VPN
 #Exemplo de rotas para o cliente, caso exista.
 #route 192.168.56.0 255.255.255.0 172.16.1.253
 # Chave de Autenticação
 cd /etc/openvpn
 secret servidor.key
 port 1194
 # Modo Servidor
 proto tcp-server
 user nobody
 daemon
 comp-lzo
 verb 3
 keepalive 10 60
 ping-timer-rem
 persist-tun
 persist-key
 #Script para ser executado quando a sessão da openvpn subir
 up /etc/openvpn/ipv6.sh

O script que será executado após a sessão openvpn subir é responsável por adicionar o IPv6 à interface do túnel, ele é responsável por adicionar o IPv6 a interface do túnel e mascarar as conexões IPv4. O script deverá ter permissão de execução.

Script ipv6.sh:

#!/bin/sh
#Configuração com IPv6 na interface
ip -6 addr add 2001:470:4:48::6/126 dev $dev
#ativando forwarding
sysctl -w net.ipv6.conf.all.forwarding=1
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
iptables -X
iptables -A FORWARD -s 172.16.1.252/30 -j ACCEPT
iptables -A FORWARD -d 172.16.1.252/30 -j ACCEPT
iptables -t nat -A POSTROUTING -s 172.16.1.252/30 -o eth0 -j MASQUERADE

Finalizando a parte do servidor iniciando a openvpn:

/etc/init.d/openvpn start

Se não ocorreu nenhum erro  a interface do túnel já deve ter subido com os endereços IPv4 e IPv6.

Configuração do cliente:

Não irei abordar os procedimentos de instalação no cliente pois pode ser feito nos diferentes sistemas operacionais, no meu caso estou usando gentoo/linux mas poderia estar utilizando ubuntu, windows ou qualquer outra distribuição linux.

#
# Configuração do Cliente
#
# Dispositivo Tunel
dev tun
# Endereço de ip_local e ip_remoto
ifconfig 172.16.1.253 172.16.1.254
# Rotas para redes existentes na outra ponta da VPN
#route 192.168.20.0 255.255.255.0 172.16.1.254
# IP do Servidor OpenVPN
remote IPv4_do_Servidor
# Chave de Autenticação
cd /etc/openvpn
secret servidor.key
port 1194
#Utilizando o tunel openvpn como gateway
redirect-gateway
#Modo Cliente
proto tcp-client
user nobody
daemon
comp-lzo
verb 3
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
script-security 3
up /etc/openvpn/openvpn-up.sh

Nas distribuições linux segue o padrão do diretório onde ficam os arquivos de configuração /etc/openvpn.

Script openvpn-up.sh:

#!/bin/sh
#Adicionando IP ao tunel
#ip -6 addr add 2001:470:4:48::5/126 dev $dev
#IPv6 HE 
ip -6 addr add 2001:470:4:48::5/126 dev $dev
ip -6 route add ::/0 via 2001:470:4:48::6 dev $dev
/etc/init.d/openvpn start

Os endereços utilizados neste artigo são disponibilizados pela HE e não estão sendo usados mais nesta aplicação.

Agora, com esta aplicação eu consigo utilizar IPv4 e IPv6 em dual stack saindo pelo meu servidor remoto, também posso me conectar a esta vpn de qualquer ambiente e sempre ter a conectividade IPv4+IPv6 sem depender do meu provedor de acesso para tal.

sage he1

Desde já agradeço ao Julião Braga por me fornecer um bloco /64 para realizar estas configurações e também pelo servidor remoto virtual. Graças a isso foi possível realizar os testes e compartilhar este conhecimento.

Implementando o A2billing Parte 1 – Asterisk

O A2billing é uma poderosa ferramenta de tarifação VoIP, seus benefícios são inúmeros e ajuda a reduzir os custo na hora de iniciar uma pequena operação. O objetivo dessa série de artigos é abordar o processo de implementação do a2billing começando desde a instalação do asterisk até o processo de administração de clientes e taxas.

Na primeira parte da série abordaremos a compilação do asterisk puro. É possível realizar integrações com elastix e outras distros asterisk porem não irei aborda-las nesta série.

 

Instalação Asterisk distribuição debain wheezy

Instalação de dependências asterisk para debian wheezy:

echo  "deb http://ftp.debian.org/debian stable main" >> /etc/apt/sources.list
apt-get install vim php5 apache2 php5-mysql mysql-server mysql-client libxml2 libxml2-dev linux-headers-$(uname -r) libtool make tar wget build-essential subversion php5-cli openssl libssl-dev libmysqld-dev ncurses-term libncurses5 libncurses5-dev

Asterisk 1.8-current-version:

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.8-current.tar.gz

Libpri:

wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz

Dahdi Linux:

wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

Para quem já está acostumado a baixar também o dahdi-tools, ele já vem incluso no pacote dahdi-linux.

Descompacte os pacotes baixados.

A ordem de instalação é: Dahdi, Libpri, Asterisk

Entre na pasta descompactada pelo dahdi e execute:

1) make all
2) make install
3) make config - Opcional

Seguindo o manual da digium.

Compilação Libpri:

Dentro da pasta descompactada da libpri execute:
 1) make
2) make install

Compilação Asterisk:

Dentro da pasta descompactada do asterisk execute:

1) ./configure

No make menuselect precisamos habilitar o res_config_mysql e o format_mp3 caso houver necessidade de reprodução mp3.

2) make menuselect
3) contrib/scripts/get_mp3_source.sh - Para baixar as sources mp3
4) make
5) make install
6) make samples
7) make config

 

Testando compilação do asterisk:

asterisk -cvvv

Se tudo tiver ocorrido como o previsto irá aparecer o console do asterisk.

 

Asterisk Ready.
 == Parsing '/etc/asterisk/cli.conf': == Found
*CLI>

 

 

 

Para sair execute core stop now.

Distro: Debian wheezy

 

Parte 2 https://blog.moraes.eti.br/2015/01/20/implementando-a2billing-parte-2-a2billing/.

Firewall Básico Iptables

O iptables é o firewall padrão nas distribuições linux, muito eficiente e de fácil manuseio. O exemplo de firewall deste post não é o mais completo, mas se trata de um modelo básico, inicial, que atende as necessidades quando se conhece as origens que farão requisições no servidor.

 

#!/bin/sh

#Carregando Modulos
/sbin/depmod -a

modprobe ip_conntrack_ftp
modprobe ip_conntrack_pptp

##############Liberando redes  #############################################

IPS_LIBERADOS=”192.168.0.0/24 192.168.10.0/24 10.5.0.0/16 ”   

WAN=”eth0″
LAN=”eth1″

############################################################################
#LIMPAR TABELAS EXISTENTES
iptables -F
iptables -t nat -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

for IP in $IPS_LIBERADOS; do
iptables -A INPUT -s $IP -p tcp -j ACCEPT
iptables -A INPUT -s $IP -p udp -j ACCEPT
iptables -A INPUT -s $IP -p icmp -j ACCEPT

done

iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT

 

Neste modelo simples, é aceito apenas requisições que estiverem na variável “IPS_LIBERADOS”.  O modelo do firewall que usamos, depende da necessidade. O modelo acima é uma estrutura básica e de simples manuseio.

 

[]’s

 

Deivison Moraes

 

Compilação Asterisk 1.8 com placa Digivoice

Os passos para compilação do asterisk 1.8.X.X são praticamente o mesmo para as outras versões, diferenciando apenas a parte de não ser mais necessário a compilação do pacote asterisk-addons. Desta forma, vamos tentar passar aqui o passo-a-passo de instalação levando em conta um servidor limpo, que acabou de ser formatado.

Versões utilizadas:

Não me arrisco a dizer que essas versões são as melhores para serem utilizadas, mas no momento é as que estou utilizando e me atendendo bem, fiquem a vontade para testarem outras versões.

asterisk-1.8.10.0
dahdi-linux-2.6.0
dahdi-tools-2.6.0
libpri-1.4.12
voicerlib-4.2.4.0
dgvchannel-1.1.0_rc3

Como Já mencionei alguns posts anteriores as dependências do asterisk e seus pacotes as vezes são o que mais geram dor de cabeça. A algum tempo atras postei um script que pode resolver isso no centOS, salvo algumas mudanças nos nomes dos pacotes. Não esqueça de desabilitar o selinux no diretorio /etc/sysconfig, acertar o firewall nativo do centOS também neste diretório, e reiniciar o servidor quando tiver terminado de baixar as dependências. Pois o SO não encontra os cabeçalhos do kernel antes disso.

Iniciando:

O diretório utilizado para descompactar os pacotes foi o /usr/src/ baixe os pacotes pra la e os descompacte:

[root@pabx /]#tar zxf asterisk-1.8.10.0.tar.gz
[root@pabx /]#tar zxf dahdi-linux-2.6.0.tar.gz
[root@pabx /]#tar zxf dahdi-tools-2.6.0.tar.gz
[root@pabx /]#tar zxf libpri-1.4.12.tar.gz
[root@pabx /]#tar zxf voicerlib-4.2.4.0.tar.gz
[root@pabx /]#tar zxf dgvchannel-1.1.0_rc3.tar.gz

Depois de descompactar os arquivos vamos iniciar a compilação na ordem dos “DAHDIS”:

Comentar a linha do driver thor no dahdi:

[root@pabx /]#vim dahdi-linux-2.6.0/drivers/dahdi/Kbuild  #Comentar a linha     

#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_TOR2)              += tor2.o

Feche e saia do arquivo:

Entre no diretorio do arquivo dahdi-linux e inicie a compilação:

[root@pabx /]#make && make install 

Quando estiver terminado será exibido a seguinte mensagem:

###################################################
###
### DAHDI installed successfully.
### If you have not done so before, install the package
### dahdi-tools.
###
###################################################

Salvo tenha ocorrido algum erro.

Passamos então para a próxima parte: dahdi-tools

Acesse o diretorio e execute os comandos:

[root@pabx /]#./configure
[root@pabx /]#make menuselect ### Opcional
[root@pabx /]#make &&make install && make config

Agora vamos ao diretorio da libpri:

[root@pabx /]#make && make install

Agora, o tão esperado asterisk. primeiramente vamos acessar o diretório do asterisk que está em /usr/src/ e baixar os sources para a reprodução de mp3:

[root@pabx /]#/usr/src/asterisk-1.8.10.0/contrib/scripts/get_mp3_source.sh

Depois disso vamos iniciar o procedimento:

[root@pabx /]#./configure

Apos rodar este script deverá aparecer uma tela com o simbolo do asterisk e informações do sistema se tudo ocorrer corretamente.

Continuando:

[root@pabx /]#make menuselect -> Aqui vamos ativar o format_mp3.

O pacote para gravar cdrs em banco de dados mysql deverá estar escrito “deprected”, informando assim que já não é mais necessário o ativar nos addons. Existem inúmeras outras coisas que podem ser ativadas porem vamos entrar apenas na instalação basica.

Prosseguindo:

[root@pabx /]#make && make install && make samples && make config

Esses comandos servem para compilar o asterisk, levar os dados de documentação para o diretório /etc/asterisk e habilitar as configurações no init. A partir deste momento o asterisk já deverá estar subindo. Podemos checar isso com um asterisk -r ou rasterisk.

Compilação drivers da placa DIGIVOICE:

Primeiramente vamos parar o serviço do asterisk:

[root@pabx /]#/etc/init.d/asterisk stop 

Agora vamos iniciar:

Criando links simbólicos para os diretorios asterisk e libpri.

[root@pabx /]#ln -s /usr/src/asterisk-versão /usr/src/asterisk

[root@pabx /]#ln -s /usr/src/libpri-versão /usr/src/libpri

Entre no diretorio da voicerlib-4.2.4.0:

[root@pabx /]#make && make install

Testando a voicerlib.

[root@pabx /]#vlib_diag

Compilando dgvchannel:

[root@pabx /]#make && make install && make config && make install_config #O ultimo cria um arquivo de configuração das placas no diretório /etc/asterisk.

Se tudo Ocorrer OK digite:[root@pabx /]#asterisk -cvvv 

Este comando irá abrir um console do asterisk, digite:

pabx*CLI> dgv show version

Channel Driver Version: 1.0.8
VoicerLib Version…..: 4.2.4.0 (4240)
Firmware Versions…..:
|_ DigiVoice Card 1: 4ah
|_ DigiVoice Card 2: 28ah

Pronto, agora é só executar suas configurações no asterisk. Lembrando que para sair do console em verbose é necessário executar o core stop now. 

Referências

[Digivoice] Curso Básico de asterisk Digivoice centro de formação [apostila do curso].

Experiência com 1.8.X.X Laboratórios internos.

[]’s

Deivison Moraes – Administrador de redes linux na IZI internet Banda Larga, Consultor na Empresa  TeleSA Telecomunicações S. A.