lunes, 25 de febrero de 2013

roster compartido en prosody


En el post anterior hablamos sobre un servidor de jabber con prosody y hablamos sobre sus características expandibles. Como servidor Muc, BOSH y roster compartido. Empezemos por la que más me gusta.

El mal llamado roster compartido, es en realidad un grupo en el que varios JID ya están declarados y no han de ser añadidos. De esta forma, un nuevo usuarios se incorpora y estará en la lista, además, tendrá a todos los usuarios en la suya. Evita tener que agregar usuario por usuario. Para crear este grupo especial, debemos tener habilitado un módulo llamado "groups", si no sabe como hacer esto, diríjase al post anterior.

Una vez habilitado, escribiremos su parámetro de configuración fuera de la sesión donde declaramos los módulos. El parámetro se llama groups_file y sería más o menos así.

echo 'groups_file = "/etc/prosody/sharedgroups.txt"' >> /etc/prosody/prosody.cfg.lua

Pero tenemos un fichero nuevo, un tal sharedgroups.txt. Dicho fichero no existe aun así que lo crearemos. Ahí declararemos un grupo llamada "Usuarios" y le pondremos los usuarios deseados. Los grupos se declaran poniendo el [Nombre] entre corchetes. Puede poner todo los grupos que quiera. Debajo del grupo pondremos la JID, podemos agregarle un nombre real con un "="

echo '[Usuarios]'
echo 'admin@dominio.cu'
echo 'fulano@dominio.cu'
echo 'contabilidad@dominio.cu=Hilda Maria
echo 'chicho@gmail.com'
echo 'pepe@jabber.org'

Con eso creamos un grupo llamado Usuarios. El roster de esos tres usuarios tendrá a lo mismos autorizados; listos para hacer click e iniciar la charla. Además, tendrá otros dos extras.

Pero sería desesperante tener que escribir en un fichero cada vez que se crea un usaurio. Mejor sería algo que mantenga esa lista de manera automática. Por eso, cree un fichero que al ser corrido, recoge todos los
usuarios del sistema y recrea el fichero.

Para esto, vamos a necesitas un módulo extra:

curl http://prosody.im/files/mod_listusers.lua > /usr/share/lua/5.1/prosody/modules/mod_listusers.lua

Ojo con la versión y la ruta. Bajamos un módulo especial que NO se usará dentro del servidor. ¿Se recuerdan que prosodyctl hacia mas cosas de las que dice hacer? Una vez bajado el módulo corremos:

prosodyctl restart
prosodyctl mod_listusers

¡Y sorpresa! una lista con todos los usaurios de nuestro sistema. ¿Qué podemos hacer con ella? Mire:

root@donor:~# cat /usr/local/bin/update_prosody_roster.sh
#!/bin/bash
echo '[Usuarios]' > /etc/prosody/sharedgroups.txt
prosodyctl mod_listusers >> /etc/prosody/sharedgroups.txt
killall -9 lua
/etc/init.d/prosody start

De esta forma, cuando un usuario se agregue o cuando lo agreguemos manualmente, solo tenemos que correr "update_prosody_roster.sh" y para tener todos los usaurios en el roster masivo. Si tienes el módulo
"watchregistrations" te enterarás cada vez que un usuario se registre y podrías correr el script. De otra forma, si los agregas tu a mano, corres el script despues de agreagarlos, o modifica el escript para mandarle el usuario como parámetro y que este ejecute el add de prosodyctl.

En el próximo post, veremos como configurar un servidor MUC para conferencias...

No hay comentarios:

Publicar un comentario

Si vas a decir groserias, aclara el significado para los que no somos de tu mismo país.