provisioning

Provisioning para ATAs LinkSys PAP2

Gerenciar um PBX Asterisk com diversos telefones IP, ATAs e softphones, pode se tornar uma tarefa complicada dependendo da quantidade de ramais existentes na nossa rede principalmente quando queremos realizar um “pequeno ajuste” nas configurações de algum equipamento.

Como exercício, imaginaremos um PBX com 50 ramais todos conectados a ATAs Linksys, agora imagine que você encontrou um “pequeno erro” no seu DialPlan, qual a consequência? Se estiver usando um sistema de Provisioning, basta logar no servidor, executar 1 ou 2 comandos para atualizar a configuração das duas “lines” dos 25 ATAs, mas se você achou que era mais fácil configurar manualmente cada ATA, agora precisa acessar 50 páginas diferentes e atualizar o maldito DialPlan em cada uma delas….

Além desta facilidade, ainda temos a grande vantagem dos ATAs ficarem todos com as suas configurações idênticas, sendo replicadas quase que automaticamente a cada atualização.

Requisitos:
Apache ou outro servidor web. Podendo inclusive utilizar o mesmo apache onde roda o FreePBX.

Como funciona o provisioning?
Basicamente, iremos configurar o ATA LinkSys para “buscar” o arquivo de configuração em uma máquina remota via http. Este arquivo de configuração é escrito em XML e cada ATA terá o seu próprio.

Arquivo de configuração:

Recomendo nomear cada arquivo XML com o Mac Address do respectivo ATA Exemplo:

http://endereço_do_servidor/provisioning/spa001D7EXXXXXX.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<flat-profile>
	<Resync_Periodic>600</Resync_Periodic>
	<Profile_Rule>http://endereço_do_servidor/provisioning/spa001D7EXXXXXX.xml</Profile_Rule>
<!-- tag case appears to be important -->
<!-- system, system configuration -->
 	<Admin_Passwd></Admin_Passwd>
 	<User_Passwd></User_Passwd>

<!-- system, optional network configuration -->
 	<HostName>spa</HostName>
 	<Domain>dominio.com.br</Domain>
 	<Primary_DNS>servidordns1</Primary_DNS>
 	<Secondary_DNS>servidordns2</Secondary_DNS>
 	<DNS_Server_Order>DHCP,Manual</DNS_Server_Order>
 	<Primary_NTP_Server>ntp.exemplo.com.br</Primary_NTP_Server>

<!-- line 1, proxy and registration -->
 	<Proxy_1_>voip.exemplo.com.br</Proxy_1_>

<!-- line 1, subscriber information -->
 	<Display_Name_1_>1001</Display_Name_1_>
 	<User_ID_1_>1001</User_ID_1_>
 	<Password_1_>supersenha</Password_1_>
	<Dial_Plan_1_>(000xxxxx.|0xxxxxxxx|0xxxxxxxxxxS0|00800xxxx.|1xxxS0|*8S0|*xx|xxx)</Dial_Plan_1_>

<!-- line 2, proxy and registration -->
 	<Proxy_2_>voip.exemplo.com.br</Proxy_2_>

<!-- line 2, subscriber information -->
 	<Display_Name_2_>1002</Display_Name_2_>
 	<User_ID_2_>1002</User_ID_2_>
 	<Password_2_>supersenha</Password_2_>
	<Dial_Plan_2_>(000xxxxx.|0xxxxxxxx|0xxxxxxxxxxS0|00800xxxx.|1xxxS0|*8S0|*xx|xxx)</Dial_Plan_2_>

	<Call_Return_Code></Call_Return_Code>
	<Blind_Transfer_Code></Blind_Transfer_Code>
	<Call_Back_Act_Code></Call_Back_Act_Code>
	<Call_Back_Deact_Code></Call_Back_Deact_Code>
	<Cfwd_All_Act_Code></Cfwd_All_Act_Code>
	<Cfwd_All_Deact_Code></Cfwd_All_Deact_Code>
	<Cfwd_Busy_Act_Code></Cfwd_Busy_Act_Code>
	<Cfwd_Busy_Deact_Code></Cfwd_Busy_Deact_Code>
	<Cfwd_No_Ans_Act_Code></Cfwd_No_Ans_Act_Code>
	<Cfwd_No_Ans_Deact_Code></Cfwd_No_Ans_Deact_Code>
	<Cfwd_Last_Act_Code></Cfwd_Last_Act_Code>
	<Cfwd_Last_Deact_Code></Cfwd_Last_Deact_Code>
	<Block_Last_Act_Code></Block_Last_Act_Code>
	<Block_Last_Deact_Code></Block_Last_Deact_Code>
	<Accept_Last_Act_Code></Accept_Last_Act_Code>
	<Accept_Last_Deact_Code></Accept_Last_Deact_Code>
	<CW_Act_Code></CW_Act_Code>
	<CW_Deact_Code></CW_Deact_Code>
	<CW_Per_Call_Act_Code></CW_Per_Call_Act_Code>
	<CW_Per_Call_Deact_Code></CW_Per_Call_Deact_Code>
	<Block_CID_Act_Code></Block_CID_Act_Code>
	<Block_CID_Deact_Code></Block_CID_Deact_Code>
	<Block_CID_Per_Call_Act_Code></Block_CID_Per_Call_Act_Code>
	<Block_CID_Per_Call_Deact_Code></Block_CID_Per_Call_Deact_Code>
	<Block_ANC_Act_Code></Block_ANC_Act_Code>
	<Block_ANC_Deact_Code></Block_ANC_Deact_Code>
	<DND_Act_Code></DND_Act_Code>
	<DND_Deact_Code></DND_Deact_Code>
	<CID_Act_Code></CID_Act_Code>
	<CID_Deact_Code></CID_Deact_Code>
	<CWCID_Act_Code></CWCID_Act_Code>
	<CWCID_Deact_Code></CWCID_Deact_Code>
	<Dist_Ring_Act_Code></Dist_Ring_Act_Code>
	<Dist_Ring_Deact_Code></Dist_Ring_Deact_Code>
	<Vertical_Service_Announcement_Codes></Vertical_Service_Announcement_Codes>
	<Time_Zone>GMT-03:00</Time_Zone>

</flat-profile>

Observar que você deve customizar este arquivo de acordo com o seu PBX

Segurança
É muito importante ressaltar que a senha da conta SIP ficará exposta neste arquivo. Qualquer pessoa da sua rede poderá ver esta configuração simplesmente digitando o endereço http://endereço_do_servidor/provisioning/spa001D7EXXXXXX.xml no seu navegador.
Recomendo fortemente alguns ajustes no .htaccess proibindo o “Directory Index” e também limitando acesso a estes arquivos apenas de determinados endereços IP. Se for possível separar a rede de telefonia da rede de dados, melhor ainda!

Observações:
- Existem outros protocolos para fazer o provisioning de configurações, mas eu considero o http como a maneira mais simples.
- Existe no mercado gateways FXS com 24, 32, ou mais portas, estes podem eliminar a necessidade de provisioning, mas eles também tem as suas desvantagens.
- Estas são as configurações que eu costumo usar, e acredito que sejam suficientes para a maioria dos usuários se precisar de algo mais, pode buscar um XML completo (eu tinha mas perdi)