El Thursday 16 August 2007 22:43:52 Jesus Rodriguez escribió:
> Se trata de un mecanismo para implementar
permisos personalizados
> (ACL's) en
> llamadas entrantes a cada dominio, y funciona en modo multidominio.
>
> Ya puestos he empezado un blog XD
>
> Pues nada, a ver qué os parece, toda opinión es bienvenida:
>
>
http://blog.aliax.net/2007/08/openser-acls-multidominio.html
- En la query, la línea:
(to_username IS NULL OR to_username = '$rU') AND
te puede dar problemas si usas alias. Deberías resolver primero el
alias para que $rU sea el destinatario final que deberia ser el
username de la base de datos.
Cierto. La verdad es que en mi fichero lo tengo puesto así, y ahora lo he
añadido en el blog para que quede claro.
- Esta asignación en el bloque del avp_check() creo
que sobra: $avp
(s:action) = "REJECT";
Sí, es verdad. No sé porqué lo puse.
- Y este else:
else if ($avp(s:action) == "ACCEPT") {
si no es para el xlog() te lo puedes ahorrar ya que al mirar
primero que sea (ACCEPT||REJECT) y después que sea REJECT, al final
sólo queda que pueda ser ACCEPT y como no necesitas hacer nada en ese
caso, el if no es necesario.
Corregido :)
- El texto que tienes encima del route(6) que empieza
con
"Importante", dices que "Sólo tiene sentido mirar el grupo del
llamante en el caso en que pertenezca al grupo del llamado" y creo
que debería decir "sólo tiene sentido mirar el grupo del llamante en
el caso en que pertenezca al dominio del llamado"... al menos es lo
que haces en el código :)
¡Un bug! corregido.
- En el último trozo de código dónde miras se es un
INVITE o un
MESSAGE, primero miras los grupos, después los permisos y después
haces la autenticación. Yo cambiaría el orden a primerio autenticar y
después todo lo demas... puedes ahorrarte unas cuantas queries a la
base de datos.
Muy cierto, corregido ;)
Como comentario a parte de este tema... ¿porqué no quieres aceptar
libremente llamadas desde dominios externos?. De la misma forma que
te pueden llamar desde cualquier número PSTN a lo mejor deberían
poder llamarte desde cualquier dirección SIP, ¿no?...
Bueno, digamos que lo que he hecho es simplemente ofrecer esa opción para
aquellos **dominios** (entiéndase: grupos, empresas, etc) que así lo
quisieran.
Lo que tú comentas está muy bien en redes de VoIP para usuarios finales,
aquellos que tienen su cuenta de GoogleTalk, Gizmo, Skype... es decir, que no
tienen una centralita delante y posiblemente estén en sus casas o usan VoIP
en el trabajo a título personal o bien para llamadas internacionales o a
otras delegaciones. Obviamente eso no es lo que yo considero "VoIP en la
empresa" y no es el objetivo de lo que yo pretendía con mi cachito de código.
esta es una
discusión entretenida cuando hablas con proveedores de VoIP y te das
cuenta de las diferentes "políticas" y sobre todo, motivaciones que
tiene cada uno para aceptar o no llamadas desde dominios externos.
Yo no lo enfoco así, yo no hablaría de proveedores de VoIP.
He conocido más de una empresa (por lo que me cuentan amigos y demás) en la
que tienen capado internet, o en las que no les permiten tener encendido el
móvil. Dudo que en esas empresas haría gracia la posibilidad adoptar
corporativamente VoIP y que eso conllevase el poder recibir llamadas de
cualquier parte del mundo.
Es más, incluso conozco casos de gente que prácticamente ha apagado su
teléfono IP para que no le puedan llamar directamente al escuchar en
Asterisk "si conoce la extensión de la persona a la que desea llamar
márquela". XD
Quizás podrías añadir en tu código que sea una opción
del usuario el
aceptar o no llamadas desde cualquier dominio externo.
Los programas de usuario "doméstico" (GoogleTalk, Messenger, Gizmo, Skype)
están muy preparados para eso, en plan:
"Está recibiendo una llamada de XXXX(a)XXX.com el cuál no figura en su lista de
contactos, ¿qué desea hacer?"
- [ Aceptar llamada ]
- [ Denegar llamada ]
- [ ] Hacer esto siempre.
Pero esa funcionalidad es mucha más difusa, en los pocos casos que he visto,
en softphones SIP genéricos y mucho más en teléfonos IP de sobremesa. Además,
si hubiese necesidad una política un tanto rígida en cuanto a llamadas
entrantes sería mucho más fácil y controlable del lado de servidor.
Por otra parte, no creo que sea algo muy rebuscado, el propio OpenSer dispone
de un módulo de presencia XCAP que al fin y al cabo sólo sirve para
**restringir** nuestro estado de presencia a según qué usuarios (si los
clientes lo soportan, claro, que de momento sólo conozco el Eyebeam y familia
que lo soporten).
Pero vamos, que en cualquier caso son reglas restrictivas opcionales ;)
Saludos y mil gracias por las correcciones.
--
Iñaki Baz Castillo
ibc(a)in.ilimit.es