Jibri - Authenticating if a room has a password added by moderator

If you add the check of the domain (if user==‘recorder’ and domain==‘recorder.my.domain’), yes, you should change “my.domain”, if not the script as is should work.
The prosody log is /var/log/prosody/prosody.log
Beware, you need at least prosody 0.11.

Ok, I create the module and change the config to activate it at jitsi. But I have prosody 0.10, installed from jitsi’s stable deb. Must i change to unstable deb and update?

Thanks a lot!!

I cannot help you there: I’m using debian 10 (buster) and it has prosody 0.11.2

Don’t worry, you helped me a lot!!! I will try to upgrade prosody in some way, and try it.

Thanks a lot !!!

Refer to the steps provided on this website to upgrade prosody to 0.11.5

Thanks river

Yesterday I found that prosody page and follow the steps to upgrade prosody. Now, I got it on version 0.11.5, but now my prosody is not working, i opened a new thread..

Thanks a lot for your help!!

Thanks olivluca!!!

Its works, we have install Prosody 0.11.5 on Ubuntu 18.04


@ignlazaro Can you please say how you do the upgrade and what changes have you done? I try doing it yesterday, but after upgrading to versión 0.11.5 my prosody stops working.

Thank you

hi @gotzon,

you do have storage = “memory” configured in your prosody file, do you?
I heard somewhere, that prosody > 0.11 has problems with other values.

Component "conference.your.dom.ain" "muc"
   storage = "memory"
   modules_enabled = {
       "xyz"; -------- this
       -- "token_verification";
   admins = { "focus@auth.your.dom.ain" }


hi @tafkaz

Thank you for your help. Yes, I changed storage = “none” to storage = “memory”, but with no luck. This week I will try it again and I hope I will have more luck!!

Thanks again.

i have prosody 0.11.5, enabled prosody debug mode, and added mod as described in this post (enabled in conference component, storage=memory, etc). but, it seems muc-occupant-pre-join is not fired.

log in the start of the mod were shown in prosody log, but not log within muc-occupant-pre-join hook. understandably there were message saying recording couldn’t join due to invalid password.

i also tried adding/changing/removing hook priority to no avail.

any help? TIA.

nevermind. i use docker-jitsi-meet. i didn’t really remember modifications i did on prosody config, but in the end i enable the mod on muc.my-domain (so, wrong component initially), and voila the hook is fired and recording can be started.

thanks, @olivluca

Today I am trying to upgrade prosody to version 0.11.5 and I am getting the error again. I changed storage=memory, but it not works.

I did a netstat -anp | grep lua and this is the result:
tcp 0 0* ESCUCHAR 1876/lua5.2
tcp 0 0* ESCUCHAR 1876/lua5.2
tcp6 0 0 :::5222 :::* ESCUCHAR 1876/lua5.2
tcp6 0 0 :::5269 :::* ESCUCHAR 1876/lua5.2
unix 3 FLUJO CONECTADO 33903 1876/lua5.2

I am a bit confused. I see that it isn’t listning at port 5347, is that normal? I did the netstat following this threat, because at jicofo.log i am getting strange errors:

Jicofo 2020-05-18 11:16:00.567 GRAVE: [42] org.jitsi.xmpp.component.ComponentBase.log() Failed to send ping
at org.xmpp.component.AbstractComponent.send(AbstractComponent.java:925)
at org.jitsi.xmpp.component.ComponentBase.access$400(ComponentBase.java:36)
at org.jitsi.xmpp.component.ComponentBase$PingTask.run(ComponentBase.java:577)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
Jicofo 2020-05-18 11:16:00.898 GRAVE: [43] org.jitsi.meet.ComponentMain.log() java.net.ConnectException: Conexión rehusada (Connection refused), host:localhost, port:5347
org.xmpp.component.ComponentException: java.net.ConnectException: Conexión rehusada (Connection refused)
at org.jivesoftware.whack.ExternalComponent.connect(ExternalComponent.java:296)
at org.jivesoftware.whack.ExternalComponentManager.addComponent(ExternalComponentManager.java:242)
at org.jivesoftware.whack.ExternalComponentManager.addComponent(ExternalComponentManager.java:222)
at org.jitsi.meet.ComponentMain.lambda$getConnectCallable$0(ComponentMain.java:285)
at org.jitsi.retry.RetryStrategy$TaskRunner.run(RetryStrategy.java:193)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.ConnectException: Conexión rehusada (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:607)
at org.jivesoftware.whack.ExternalComponent.connect(ExternalComponent.java:174)
… 11 more

hello , Can you let me know what changes are needed on docker to make it work jibri recording with pasword enabled meetings?

Swathi Ambujakshan

Thank you for sharing this module with us! I am running the latest prosody 0.11.5 and can see the

--------------> user recorder domain recorder.meet.jitsi res i_3Mufeu pass S1CR3T

in the prosody logs after adding it to Component "muc.meet.jitsi" "muc", modules_enabled. But I still get

FINE: [58] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property 'isJoined' of undefined
SEVERE: [58] org.jitsi.jibri.selenium.pageobjects.CallPage.visit() Timed out waiting for call page to load
INFO: [58] org.jitsi.jibri.selenium.JibriSelenium.onSeleniumStateChange() Transitioning from state Starting up to Error: FailedToJoinCall SESSION Failed to join the call
INFO: [58] org.jitsi.jibri.service.impl.FileRecordingJibriService.onServiceStateChange() File recording service transitioning from state Starting up to Error: FailedToJoinCall SESSION Failed to join the call

in the jibri logs. Could it be recent changes in jibri / prejoin / lobby?

My fault: I thought that I’d have to add the password hard-coded to the lua module. Just leaving

      join:tag("password", { xmlns = MUC_NS }):text(room:get_password());

as posted above worked! Thanks!

What helped me was setting prosody's log level to debug.
In config/prosody.cfg.lua search for

log = {
        { levels = {min = "info"}, to = "console"};

and set info to debug.
After restarting prosody I could see

recorder@recorder.meet.jitsi/ljkadsf9 couldn't join due to invalid password

in the prosody logs, which guided me to the correct solution mentioned above.

Tnks … incredible,

in the future jisti could embed this functionality natively!

try add end); at the end of the lua file.

This solution worked with Prosody 0.11.

Thanks @olivluca

All right(Solved Using docker.)

1 - Added the module name to .env XMPP_MUC_MODULES=module_name

2 - Run docker-compose.

3 - Create a module in /usr/lib/prosody/modules/module_name.lua

4 - Restart the container prosody

5 - Sucess in recording.

What if I have multiple jibri instances with users recorder2, recorder3, etc?
How to modify the module in this case?