deustux

Registro web para Prosody: mi solución porque lo nativo ya está muerto

⚡ Este panel lo he creado yo personalmente y todo el código está disponible en GitHub: perl-cgi-prosody-register

xmpp_register

Este panel nace porque las opciones que ofrece Prosody para registrar usuarios son demasiado antiguas y poco fiables. Los métodos nativos llevan años sin actualizarse, no tienen flexibilidad y muchas veces ni funcionan bien, así que resultan inútiles para cualquier instalación actual.

Por eso creé mi propia solución: un panel web ligero y seguro que delega la creación de usuarios a prosodyctl mediante doas, sin base de datos ni APIs externas. Todo el sistema es seguro contra command injection y configurable para cualquier virtualhost que tengas, ofreciendo una forma fiable y controlada de gestionar registros donde las herramientas nativas fallan.


Cómo funciona realmente este panel

Este panel no hace magia ni inventa un sistema nuevo de usuarios. Lo que hace es ejecutar exactamente el mismo comando que usarías tú a mano para crear un usuario en Prosody:

1
prosodyctl adduser usuario@dominio

La diferencia es que, en vez de escribirlo en una terminal, el comando se lanza desde un script CGI en Perl cuando el usuario envía el formulario web.

Es decir: esto es literalmente inyectar un comando, pero de forma controlada, limitada y segura.


Ejecución del comando: doas y nada más

El script no corre como root ni tiene acceso general al sistema.
La ejecución de prosodyctl se delega mediante doas, permitiendo al usuario del servidor web ejecutar únicamente ese comando concreto, sin password y sin acceso a nada más.

No hay shell interactiva, no hay comandos arbitrarios y no hay escalada de privilegios fuera de lo estrictamente necesario. El panel solo sabe crear usuarios, nada más.


Sin base de datos, sin estado

El panel no usa ninguna base de datos.
No guarda usuarios, no guarda contraseñas, no mantiene sesiones ni estados propios.

Prosody ya gestiona sus usuarios internamente, así que duplicar esa información sería absurdo y peligroso. El panel simplemente actúa como una interfaz de entrada, y Prosody sigue siendo la única fuente de verdad.


Seguridad frente a command injection

Aunque el panel ejecuta un comando, no es vulnerable a command injection.
Los valores introducidos por el usuario se validan y no se interpolan de forma insegura en una shell, evitando que se puedan encadenar comandos o ejecutar código arbitrario.

Esto hace que el riesgo sea el mismo que ejecutar prosodyctl manualmente, pero con la comodidad de una interfaz web.


Soporte para múltiples virtualhosts

El sistema permite trabajar con varios virtualhosts definidos en la configuración de Prosody.

En la web, esto se refleja mediante un desplegable HTML donde el usuario puede seleccionar el dominio que quiera registrar, siempre dentro de la lista controlada en config.pl.

Esto significa que si tu servidor Prosody ofrece varios dominios, el usuario solo puede escoger entre los que tú hayas autorizado, evitando registros en dominios no deseados o mal formados.

Así, el panel funciona tanto para servidores simples como para instalaciones XMPP con múltiples dominios federados, manteniendo control y seguridad sin complicaciones adicionales.

⚡ Este panel lo he creado yo personalmente y todo el código está disponible en GitHub: perl-cgi-prosody-register

#linux #xmpp #prosody #server #freebsd