[AsteriskBrasil] Funcao Cadeado
Andre Ruiz
andre.ruiz em gmail.com
Sábado Setembro 30 00:48:40 BRT 2006
Foi eu que mandei.
O authenticate vai resolver o problema, mas vai autenticar sempre, se
você colocá-lo antes das rotas de saída. O que eu propus permite que
você controle por ramal. Até daria pra misturar os dois (eu usei DISA,
poderia ter usado o authenticate diferenciando o ramal por contexto).
E tem outra difereça muito importante: usando o authenticate, você
apenas decide se passa ou não passa a ligação, baseado numa senha. Se
passar, as credenciais serão as do ramal que está discando. Com o
DISA, você troca totalmente o ramal e contexto para os selecionados no
arquivo de senhas, de forma que as credenciais usadas na ligação
passam a ser de quem usou a senha. Meu cliente queria exatamente isso:
ter 100 ramais, e 2000 senhas, onde cada um que tinha uma senha
poderia pegar um ramal livre e discar, usando a própria senha, o
sistema bilhetaria no nome dele (e no ramal virtual dele, que não tem
ninguém logado normalmente mas tem um número válido para efeito de
bilhetagem).
Pense no que é melhor pra você. Segue abaixo o texto, novamente:
==========================8<--------------------------------------------
Eu implementei um sistema de cadeado pra um cliente há algumas
semanas. Não ficou "uma brastemp" mas foi o que veio à cabeça na hora.
Certamente ainda vou tentar desenvolver um melhor para colocar no
lugar depois.
Nesse caso específico, nós estávamos usando uma instalação baseada em
AMP/AAH, e o que fiz foi o seguinte:
1) Criei um contexto novo, chamado cadeado, e coloquei nele uma
extensão que chama o DISA. A extensão pode chamar por exemplo *00.
2) Dupliquei o contexto "from-internal" com o nome "from-internal-semcadeado".
3) Retirei o contexto all-outbound e incluí o contexto "cadeado" no
contexto "from-internal". Opcionalmente você pode também incluir o
contexto "cadeado" no "from-internal-semcadeado".
Agora você tem um contexto default que não disca pra fora, mas pode
discar *00 pra cair no disa. E os ramais que você quer livrar do
cadeado, basta trocar o contexto default deles para o -semcadeado que
eles voltam ao normal. Fiz assim porque a quantidade de ramais que não
teriam cadeado era pequena. Se for o contrário, inverta os nomes, vai
dar menos trabalho.
O DISA vai ler uma base de dados de senha, onde cada usuário vai ter
que digitar sua senha para poder ganhar um tom de linha e daí fazer a
ligação. O contexto onde o DISA disca é o all-outbound-routes.
Agora, se alguém que está num ramal cujo contexto não tem o
all-outbound-routes, se ele tentar ligar pra fora, vai falhar. Ele vai
precisar discar *00, daí virá um novo tom de linha pra discar a
senha... Depois de discar a senha (se ela for válida), virá um novo
tom de linha onde ele disca pra fora. Se for discar pra ramais
internos, basta discar direto, pois está no contexto default dele.
Não creio que o DISA seja um problema de segurança nesse caso, pois
você vai estar rodando o disa no contexto all-outbound-routes, que ele
já teria acesso de qualquer forma, você só colocou uma senha no
caminho. (É normal ver o DISA como furo de segurança quando não for
bem usado).
Desculpe não poder dar mais detalhes, creio que meu empregador não
permitiria que eu colasse aqui o que foi feito lá exatamente. Mas você
entendeu a idéia :-)
Observações:
1) O DISA não pergunta usuário, apenas a senha. É como se o
número-senha fosse um login e senha ao mesmo tempo. Isso pode ser
ruim, pois na hora de mudar a senha de alguém você precisa verificar
se não repetiu outra senha.
2) É possível que alguém disque senhas sequenciais até achar alguma
válida, já que não tem login. Use senhas de muitos dígitos e bem
espaçadas entre si, e veja nos logs se pega alguém tentando fazer
isso.
3) A maneira com que o DISA opera faz com que ele mude o caller ID de
saída da ligação para aquele associado ao ramal de quem está discando,
mesmo que essa pessoa tenha ido usar o ramal de outro usuário. Isso
faz com que nos CDRs apareça quem ligou e nunca de onde ele ligou (não
dá pra ter idéia se foi do telefone dele mesmo ou não). Isso não é tão
ruim, mas é importante saber.
4) Não use essa solução como definitiva, tente bolar alguma coisa
melhor. Como eu disse, foi só um quebra-galho até implementar alguma
coisa melhor. E, quando você bolar alguma melhor, manda ela pra mim,
heheheh :-)
Abraços,
andre
On 9/29/06, Leonardo Kamache (Gmail) <lkamache em gmail.com> wrote:
> Dê uma olhada na aplicação authenticate. Deve ser isso que está querendo.
>
>
> Abraços;
>
> LK
>
>
>
>
> On 9/28/06, bruno em connectech.com.br <bruno em connectech.com.br> wrote:
> > Senhores,
> >
> > A algum tempo atras foi enviado uma mensagem para a lista com a funcao
> cadeado no extensions.conf e
> > outra funcao que nao me lembro. Se alguem ou o autor enviar novamente
> aquela mensagem seria muito
> > interessante. Estive olhando o historico e nao consegui encontrar.
> >
> > Grato,
> >
> > Bruno
> >
> > Bruno Mayworm - Consultor de T.I.
> > Connectech Networks
> > (24)92268387
> > ----------------------------------------
> > Estação VoIP 2006
> > 5 e 6 Dezembro
> > Curitiba PR
> > http://www.estacaovoip.com.br
> >
> > _______________________________________________
> > LIsta de discussões AsteriskBrasil.org
> > AsteriskBrasil em listas.asteriskbrasil.org
> >
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> >
> > _______________________________________________
> > Acesse o wiki AsteriskBrasil.org:
> > http://www.asteriskbrasil.org
> >
>
>
> ----------------------------------------
> Estação VoIP 2006
> 5 e 6 Dezembro
> Curitiba PR
> http://www.estacaovoip.com.br
>
> _______________________________________________
> LIsta de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>
> _______________________________________________
> Acesse o wiki AsteriskBrasil.org:
> http://www.asteriskbrasil.org
>
>
--
Andre Ruiz <andre.ruiz em gmail.com>
Curitiba, PR, Brasil
Mais detalhes sobre a lista de discussão AsteriskBrasil