Lua-mumble es un modulo Lua que nos permitirá conectar e interaccionar con servidores mumble. Con eso entre otras cosas lo que vamos a poder hacer es escribir bots.
Lo primero que vamos a necesitar es disponer de Lua en el sistema. Concretamente de la versión 5.1.5.
Aquí están descritos los pasos para disponer de Lua 5.1.5 en nuestro sistema: Compilar Lua 5.x en GNU+Linux Debian 10
Por lo tanto si disponemos ya de esa versión de lua solamente nos quedará compilar el modulo Lua-mumble.
Compilar el modulo Lua-mumble
Esto puede realizarse de la siguiente forma en una Debian 10.
En otras distros posiblemente cambiará el nombre de los paquetes y esas dependencias se tendrán que suplir mediante otros programas de paquetería o compilando.
# apt install -y libluajit-5.1-dev protobuf-compiler libprotobuf-c-dev libssl-dev libopus-dev libvorbis-dev git gcc make pkg-config libprotoc-dev protobuf-c-compiler
$ git clone https://github.com/bkacjios/lua-mumble
$ cd lua-mumble
$ make clean
$ make
# make install
Instalar en Local un servidor mumble para pruebas
Para probar podemos instalar mumble y mumble-server en local simplemente así:
# apt install mumble-server mumble
Esto es bueno ya que dispondremos de un cliente mumble al que configurar un servidor mumble de pruebas.
El servidor de pruebas en local estará accesible atacando a 127.0.0.1 por el puerto por defecto (el 64738).
Nuestro «Hola mundo» con lua-mumble
Nos crearemos un directorio llamado prueba1 y generaremos un certificado así:
$ mkdir -p /tmp/prueba1
$ cd /tmp/prueba1
$ openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
$ ls -larth
Eso nos generará 2 archivos. Uno llamado cert.pem y otro llamado key.pem
Ahora ya podemos comenzar a crear un script que se conecte a nuestro servidor mumble de pruebas.
Un ejemplo de código Lua para conectar es este:
local mumble = require("mumble")
local client = assert(mumble.connect("localhost", 64738, "cert.pem", "key.pem"))
client:auth("Botijo")
Veremos que el usuario Botijo (nuestro bot) se desconecta cuando pasen 30 segundos.
Para evitar eso hemos de añadir lo siguiente a nuestro script:
while client:isConnected() do
client:update()
mumble.sleep(0.01)
end
De esta forma ya tendríamos nuestro primer bot escrito en Lua. No hace nada especia pero se conecta a un server Mumble.
Espero que les gustase este primer post sobre lua-mumble y le encuentren alguna utilidad.
En un futuro posiblemente escribiré algo más sobre lua-mumble.
Saludos cordiales.