Gracias por responder (como siempre, tú! jeje)
Entiendo, entonces debería ser algo así:
if (method=="INVITE") {
if($si=="GW1"||$si=="GW2"){
xlog("L_NOTICE", "\n************** ALLOWING INCOMING CALL AS IT
COMES FROM $si ************\n");
}else{
if (!proxy_authorize("sip.midom.com","subscriber"))
{
proxy_challenge("sip.midom..com","0");
exit;
}
}
te parece correcto??
un saludo
David
2008/1/14 Iñaki Baz Castillo <ibc(a)aliax.net>et>:
El Lunes, 14 de Enero de 2008, David Villasmil
escribió:
Chicos,
Como es normal, no quiero que nadie llame si estar registrado...
No, no es normal. Asumo que lo que quieres decir es:
"Como es normal, no quiero que nadie llame sin autenticarse".
Recuerdo que en SIP estar registrado nada tiene que ver con ser un usuario
subscrito (o sea, que tienes cuenta de usuario y password).
tengo lo siguiente en mi conf:
if (method=="INVITE") {
if (!proxy_authorize("sip.midom.com","subscriber"))
{
proxy_challenge("sip.midom..com","0");
exit;
}else{
if($si=="GW1"||$si=="GW2"){
xlog("L_NOTICE", "\n************** ALLOWING
INCOMING CALL AS IT COMES FROM $si ************\n");
}
}
El problema es cuando una llamada viene de GW1/GW2... que les da DECLINED
El script es incorrecto, supongamos una llamada desde el GW1 o GW2:
- Primero haces:
if (!proxy_authorize("sip.midom.com","subscriber"))
Es decir, que si el llamante no presenta credenciales se le ofrezca un
"407
Proxy Autehntication Required", o sea, eso se traduce en:
proxy_challenge("sip.midom..com","0");
La condición anterior se cumple (el GW1 no incluía credenciales en el
INVITE)
por lo que el proxy envía el 407 al GW1.
- El GW1 recibe el 407 requeriendo que se autentique (cosa que no puede
hacer,
ni tampoco queremos que haga, aquí está el error).
- Ese "else" NO se cumplirá nunca puesto que el GW1 NUNCA se podrá
autenticar
(en cuyo caso el "if" daría falso y se ejecutaría el "else").
- El único caso en el que se ejecutaría el "else" es cuando llama
cualquier
otro usuario que sí se autentica, lo cuál no es evidentemente lo que
quieres.
El autenticar por IP se debe hacer ANTES del "proxy_authorize()". Es
decir,
sólo pedir autenticación si la IP no es la del GW1/GW2.
Además, mira el módulo "trusted" que tiene funciones apropiadas para
autenticación por IP.
Saludos.
--
Iñaki Baz Castillo
_______________________________________________
Users-es mailing list
Users-es(a)lists.openser.org
http://lists.openser.org/cgi-bin/mailman/listinfo/users-es