]> pere.pagekite.me Git - homepage.git/blob - blog/data/2020-05-08-zoom-jami-client.txt
Generated.
[homepage.git] / blog / data / 2020-05-08-zoom-jami-client.txt
1 Title: Jami as a Zoom client, a trick for password protected rooms...
2 Tags: english, debian, sikkerhet, surveillance
3 Date: 2020-05-08 13:30
4
5 <p>Half a year ago,
6 <a href="http://people.skolelinux.org/pere/blog/Jami_Ring__finally_functioning_peer_to_peer_communication_client.html">I
7 wrote</a> about <a href="https://jami.net/">the Jami communication
8 client</a>, capable of peer-to-peer encrypted communication. It
9 handle both messages, audio and video. It uses distributed hash
10 tables instead of central infrastructure to connect its users to each
11 other, which in my book is a plus. I mentioned briefly that it could
12 also work as a SIP client, which came in handy when the higher
13 educational sector in Norway started to promote Zoom as its video
14 conferencing solution. I am reluctant to use the official Zoom client
15 software, due to their <a href="https://zoom.us/terms">copyright
16 license clauses</a> prohibiting users to reverse engineer (for example
17 to check the security) and benchmark it, and thus prefer to connect to
18 Zoom meetings with free software clients.</p>
19
20 <p>Jami worked OK as a SIP client to Zoom as long as there was no
21 password set on the room. The Jami daemon leak memory like crazy
22 (approximately 1 GiB a minute) when I am connected to the video
23 conference, so I had to restart the client every 7-10 minutes, which
24 is not a great. I tried to get other SIP Linux clients to work
25 without success, so I decided I would have to live with this wart
26 until someone managed to fix the leak in the dring code base. But
27 another problem showed up once the rooms were password protected. I
28 could not get my dial tone signaling through from Jami to Zoom, and
29 dial tone signaling is used to enter the password when connecting to
30 Zoom. I tried a lot of different permutations with my Jami and
31 Asterisk setup to try to figure out why the signaling did not get
32 through, only to finally discover that the fundamental problem seem to
33 be that Zoom is simply not able to receive dial tone signaling when
34 connecting via SIP. There seem to be nothing wrong with the Jami and
35 Asterisk end, it is simply broken in the Zoom end. I got help from a
36 very skilled VoIP engineer figuring out this last part. And being a
37 very skilled engineer, he was also able to locate a solution for me.
38 Or to be exact, a workaround that solve my initial problem of
39 connecting to password protected Zoom rooms using Jami.</p>
40
41 <p>So, how do you do this, I am sure you are wondering by now. The
42 trick is already
43 <a href="https://support.zoom.us/hc/en-us/articles/202405539-H-323-SIP-Room-Connector-Dial-Strings#sip">documented
44 from Zoom</a>, and it is to modify the SIP address to include the room
45 password. What is most surprising about this is that the
46 automatically generated email from Zoom with instructions on how to
47 connect via SIP do not mention this. The SIP address to use normally
48 consist of the room ID (a number), an @ character and the IP address
49 of the Zoom SIP gateway. But Zoom understand a lot more than just the
50 room ID in front of the at sign. The format is "<tt>[Meeting
51 ID].[Password].[Layout].[Host Key]</tt>", and you can hear see how you
52 can both enter password, control the layout (full screen, active
53 presence and gallery) and specify the host key to start the meeting.
54 The full SIP address entered into Jami to provide the password will
55 then look like this (all using made up numbers):</p>
56
57 <p><blockquote>
58 <tt>sip:657837644.522827@192.168.169.170</tt>
59 </blockquote></p>
60
61 <p>Now if only jami would reduce its memory usage, I could even
62 recommend this setup to others. :)</p>
63
64 <p>As usual, if you use Bitcoin and want to show your support of my
65 activities, please send Bitcoin donations to my address
66 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>