Configurando 802.1q VLAN Tagging no ubuntu 16.04

1 – Realize a instalação do módulo

sudo apt-get install vlan

2 – Verifique se o módulo está carregado no kernel

lsmod | grep 8021q

3 – Se o módulo não tiver carregado, carregue com o seguinte comando:

modprobe 8021q

4 – Configure o módulo para iniciar automaticamente após o reboot

sudo sh -c 'grep -q 8021q /etc/modules-load.d/modules.conf || echo 8021q >> /etc/modules-load.d/modules.conf'

5 – Configure as interfaces editando o arquivo /etc/network/interfaces, onde o nome da interface será o nome da VLAN, e haverá um parâmetro vlan-raw-device onde será definido qual interface física deve ser usada. No exemplo abaixo vamos supor que nossa VLAN é 192 e a interface física a ser usada é a enp0s3:

auto vlan192
iface vlan192 inet static
address 192.168.1.1
netmask 255.255.255.0
vlan-raw-device enp0s3 

6 – Se houver a necessidade de configurar uma segunda VLAN, como por exemplo, VLAN ID 193, na mesma interface, adicione um novo trecho no arquivo /etc/network/interfaces com o device vlan193 seguindo o mesmo modelo apresentado.

7 – Reinicie as interfaces de rede para que o linux carregue as informações, com o seguinte comando:

/etc/init.d/networking restart

Filtrando logs de uma chamada no Asterisk

Uma das coisas mais interessantes do Asterisk é a capacidade de você tratar e identificar erros olhando somente o arquivo de log do mesmo.

Porém por ser bem detalhado e completo, dependendo da quantidade de chamadas simultâneas que há em seu ambiente é uma tarefa quase impossível ler este arquivo de log de uma forma que você possa isolar as informações de uma única ligação.

Buscando na internet encontrei um post bem interessante que mostra um comando linux para realizar essa atividade (http://hackrr.com/2013/asterisk/get-all-logs-of-a-number-that-was-dialed/), desta forma o meu intuito aqui é apenas incrementar este script para pegar dinamicamente o local  e nome do arquivo de log do asterisk e depois filtrar os logs necessários.

Segue abaixo o script completo. Basta salva-lo no local de sua preferência Ex.: /root/busca.sh

#/bin/bash
#

LOGPATH=$(cat /etc/asterisk/asterisk.conf | grep -v "^\s*[#\;]\|^\s*$" | grep --only-matching -i --perl-regex "(\bastlogdir\b).*" | cut -d'=' -f 2 | sed 's/>//g')
FILE=$(cat /etc/asterisk/logger.conf | grep -v "^\s*[#\;]\|^\s*$" | grep --only-matching -i --perl-regex "(\bfull\b).*" | cut -d'=' -f 1)
LOGFILE="$LOGPATH/$FILE"

grep $1 $LOGFILE | grep -o "C-[0-9a-f]\+" | uniq | xargs -I{} grep "\[{}\]" $LOGFILE

Agora depois de salvo basta executa-lo passando como parâmetro qualquer informação que você ache que possa localizar a chamada, lógico que quanto mais específico melhor. Ex.: Canal, contexto, peer e etc..

/root/busca.sh 'SIP/6619-00001121'

 

Instalando PHP 5.6 no ubuntu

Segue um passo a passo para instalação do PHP5.6 no Ubuntu

Preparando Ambiente

Primeiro passo é remover a versão atual do PHP

sudo apt-get remove --purge php5* 

Depois, adicionar o repositório do PHP5.6 e atualizar a listagem de pacotes

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

Instalando PHP5.6 + NGINX

Adicione o repositório do NGINX e atualize a listagem de pacotes

echo deb http://nginx.org/packages/mainline/ubuntu/ `lsb_release --codename --short` nginx >> /etc/apt/sources.list
sudo apt-get update

E por fim instale o NGINX + PHP-FPM

sudo apt-get install nginx php5.6-common php5.6-cli php5.6-fpm

Instalando PHP5.6 + Apache2

Recomendo a utilização do ambiente com NGINX, por ter menos falhas e um desempenho muito melhor. Mas caso precise/deseje utilizar o Apache basta instalar com os comandos abaixo:

apt-get install apache2 php5.6-common php5.6-cli php5.6 libapache2-mod-php5.6

Biblioteca para MySQL

Caso vá utilizar o MySQL como base de dados basta adicionar o pacote do MySQL

sudo apt-get install php5.6-mysql

Pronto!

 

Instalando PHP7 no Ubuntu

Segue um passo a passo para instalação do PHP7 no Ubuntu

Preparando Ambiente

Primeiro passo é remover a versão atual do PHP

sudo apt-get remove --purge php5* 

Depois, adicionar o repositório do PHP7 e atualizar a listagem de pacotes

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

Instalando PHP7 + NGINX

Adicione o repositório do NGINX e atualize a listagem de pacotes

echo deb http://nginx.org/packages/mainline/ubuntu/ `lsb_release --codename --short` nginx >> /etc/apt/sources.list
sudo apt-get update

E por fim instale o NGINX + PHP-FPM

sudo apt-get install nginx php7.0-common php7.0-cli php7.0-fpm

Instalando PHP7 + Apache2

Recomendo a utilização do ambiente com NGINX, por ter menos falhas e um desempenho muito melhor. Mas caso precise/deseje utilizar o Apache basta instalar com os comandos abaixo:

apt-get install apache2 php7.0-common php7.0-cli php7.0 libapache2-mod-php7.0

Biblioteca para MySQL

Caso vá utilizar o MySQL como base de dados basta adicionar o pacote do MySQL

sudo apt-get install php7.0-mysql

Pronto!

 

Instalando Asterisk 13

O Asterisk é um poderoso software de PBX (central telefônica), free, que possibilita realizar interconexões entre o mundo analógico, digital e possibilita aplicações e recursos que quando vistos em outras centrais telefônicas, são de grande porte.

Leia mais

Asterisk FastAGI com PHP e Nginx

Antes de mais nada é importante lembrarmos o que é o Asterisk AGI, segundo o site Voip-Info (http://www.voip-info.org/wiki/view/Asterisk+AGI) AGI é o acrônimo de Asterisk Gateway Interface, em outras palavras, é uma interface de comunicação para adicionar novas funcionalidades ao Asterisk, basicamente o Asterisk chama um script externo que pode ser escrito em qualquer linguagem (Perl, PHP, C, Pascal, Shell e etc…).

Uma característica do AGI é que o script deve estar fisicamente na mesma maquina do Asterisk, o que pode acabar sobrecarregado essa maquina, sendo assim existe uma variante do AGI que é o FastAGI, que basicamente é a mesma coisa do AGI mas podendo ser utilizado via rede, pois o Asterisk conecta via socket TCP a um servidor externo para chamar o script. Para maiores informações consulte o link http://www.voip-info.org/wiki/view/Asterisk+FastAGI.

Dito isso, o que veremos neste post é como montar toda a estrutura de um servidor FastAGI. Neste utilizaremos como linguagem de programação o PHP e como servidor o Ubuntu 14.04 com os aplicativos Xinet + Nginx, a utilização do Nginx se da pelo fato de facilitar a criação de balanceamento de carga, segurança entre outros.

Leia mais

Corrigindo erro de usuários órfãos no Microsoft SQL

Um Erro muito comum é quando se restaura uma base de dados, ou até mesmo ao anexar uma nova base é que os usuários dessa base perdem i vínculo com o usuário de segurança do Microsoft SQL Server.

Para resolver este problema tem um comando simples e rápido.

Estes de mais nada garanta que o usuário exista no SQL server e depois execute o comando abaixo dentro da base de dados desejada.

 

EXEC sp_change_users_login 'Auto_Fix', 'usuario_orfao'

git push error: RPC failed; result=56, HTTP code = 0

Ao tentar migrar um repositório do GitHub para um servidor local usando Bonobo Git Server (https://bonobogitserver.com/), tive o seguinte erro:

Counting objects: 5682, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3751/3751), done.
error: unable to rewind rpc post data - try increasing http.postBuffer
error: RPC failed; result=56, HTTP code = 0
Writing objects:  10% (619/5682), fatal: The remote end4.75 M huniB | 3g u6p unexpecte.00 Kdly
Writing objects: 100% (5682/5682), 34.68 MiB | 22.00 KiB/s, done.
Total 5682 (delta 1827), reused 5682 (delta 1827)
fatal: The remote end hung up unexpectedly

Pesquisando na internet verifiquei que este erro está associado ao tamanho do pacote que necessita ser enviado pelo cliente ao servidor, sendo assim a solução do mesmo é ajustar o cliente e o servidor para receber pacotes maiores.

No cliente fiz o ajuste com o seguinte comando

git config --global http.postBuffer 100M

Ja no servidor alterei o arquivo web.config do Bonobo para permitir o conteúdo com 100Mb (conforme abaixo)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
...
  <system.web>
    <httpRuntime maxRequestLength="104857600" />
    ...
  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits executionTimeout="18000" maxAllowedContentLength="104857600" />
        ...

Após este procedimento e a aplicação do HotFix Microsoft (KB2634328) tudo funcionou normalmente em meu ambiente.

Referência:
https://bonobogitserver.com/frequently-asked-questions/

Tratando código CNL para ligações conurbadas no Asterisk e FreePBX

Introdução e contextualização

Antes de qualquer coisa vamos direto ao problema que pretendemos resolver neste post. O sistema de telefonia fixa no Brasil adota um padrão de separação das localidades e uma subordinação político-administrativa (isso será explicado um pouco mais a frente com mais detalhes). Basicamente com essa separação poderemos ter 2 municípios com o mesmo DDD onde para realizar ligações um deles não é necessário adicionar o código de DDD, e para outro sim.

Exemplo: Moro na cidade de Curitiba (cujo DDD é 41), temos diversos municípios de Curitiba e região metropolitana como Curitiba, Lapa, São José dos Pinhais, Colombo e etc… Quando em Curitiba não necessito utilizar o DDD para efetuar uma ligação a estes municípios, porém quando ligamos para Paranaguá, uma cidade a +- 100 Km de Curitiba, que utiliza o mesmo DDD, ja é necessário utilizar o DDD para realizar ligações.

Sendo assim surge o nosso problema, se o DDD não é quem difere se devo ou não colocar o DDD ao realizar uma chamada, como podemos realizar essa distinção? A resposta esta na base de dados CNL.

Leia mais