Hola, esta vez en vez de preguntar algo voy a compartir un cachito de código del que me siento orgulloso :)
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
Saludos.
PD: En caso de opinar casi prefiero que lo hagáis aquí en la lista y no en el blog.
Hola Iñaki,
Hola, esta vez en vez de preguntar algo voy a compartir un cachito de código del que me siento orgulloso :)
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
Saludos.
PD: En caso de opinar casi prefiero que lo hagáis aquí en la lista y no en el blog.
Pués aquí va... sólo por criticar un poco porque tal y como está ya me parece bien :)
- 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.
- Esta asignación en el bloque del avp_check() creo que sobra: $avp (s:action) = "REJECT";
- 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.
- 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 :)
- 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.
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?... 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. 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.
Saludos JesusR.
------------------------------------ Jesus Rodriguez VozTelecom Sistemas, S.L. jesusr@voztele.com http://www.voztele.com Tel. 902360305 -------------------------------------
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@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.
Hola Iñaki,
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.
Se que no era lo que pretendías con tu código, simplemente era un comentario a raíz de tus comentarios en el blog :)
Pienso que de momento no hay problemas por aceptar tráfico de dominios externos... pero esto cambiará en cuanto el tema del SPIT se ponga en marcha... acabaremos con reglas muy restringidas, como pasa ahora con el mail :-/
Saludos JesusR.
------------------------------------ Jesus Rodriguez VozTelecom Sistemas, S.L. jesusr@voztele.com http://www.voztele.com Tel. 902360305 -------------------------------------
El 17/08/07, Jesus Rodriguez jesusr@voztele.com escribió:
Pienso que de momento no hay problemas por aceptar tráfico de dominios externos... pero esto cambiará en cuanto el tema del SPIT se ponga en marcha... acabaremos con reglas muy restringidas, como pasa ahora con el mail :-/
Yo por ejemplo me imagino a un trabajador con su softphone abierto y al que de repente le llega un mensaje SIP desde "gane_dinero@exito_seguro.com" con un texto que todos nos imaginamos. XDDD
Sería incluso peor que el SPAM de correo electrónico. Incluso aunque hubiese un sistema anti-span (el proyecto "Spider" ese en el que participas tengo entendido) si se cuela un mensaje hace más daño que un correo electrónico por dos cosas: - Falta de costumbre del usuario receptor. - Notificación instantánea en tiempo real.
En fin, supongo que aún queda un poco de tiempo hasta que esto ocurra, pero ocurrirá, ¿no? XD
Hola Iñaki,
Pienso que de momento no hay problemas por aceptar tráfico de dominios externos... pero esto cambiará en cuanto el tema del SPIT se ponga en marcha... acabaremos con reglas muy restringidas, como pasa ahora con el mail :-/
Yo por ejemplo me imagino a un trabajador con su softphone abierto y al que de repente le llega un mensaje SIP desde "gane_dinero@exito_seguro.com" con un texto que todos nos imaginamos. XDDD
Sería incluso peor que el SPAM de correo electrónico. Incluso aunque hubiese un sistema anti-span (el proyecto "Spider" ese en el que participas tengo entendido) si se cuela un mensaje hace más daño que un correo electrónico por dos cosas:
- Falta de costumbre del usuario receptor.
- Notificación instantánea en tiempo real.
En fin, supongo que aún queda un poco de tiempo hasta que esto ocurra, pero ocurrirá, ¿no? XD
Desgraciadamente, estoy seguro de que sí :(
Saludos JesusR.
------------------------------------ Jesus Rodriguez VozTelecom Sistemas, S.L. jesusr@voztele.com http://www.voztele.com Tel. 902360305 -------------------------------------
sr-users-es@lists.kamailio.org