• Mo chevron_right

    WebSocket connections on

    Timothée Jaussoin · / Movim · 6 days ago - 22:09 edit

The #XMPP server now supports connections through #WebSockets.

This means that if you're using a #web client like conversejs, you'll be able to connect directly using your account.

If you are a #Movim user. Nothing changes as Movim is using standard good ol' TCP/TLS connections to login 😉

The clients that wants to connect to using WebSockets will normally automatically discovers the endpoint (using the related XEPs). If not, it is available manualy at wss://

That's all folks!

  • favorite

    3 Like

    U , Timothée Jaussoin , Marzanna

  • chevron_right

    OpenPGP mit XMPP - Wie funktioniert dies eigentlich?

    DebXWoody · 7 days ago - 08:42 · 1 minute

Um Nachrichten zu signierten und / oder zu verschlüssel kann bei XMPP OpenPGP verwendet werden. Die Erweiterung wird in XEP-0373: OpenPGP for XMPP (OX) beschrieben.

Wie funktioniert dies?

Alle Teilnehmer besitzt je ein Schlüsselpaar. Also einen private und einen öffentlich Schlüssel. Wem dies noch nicht bekannt ist, es gib ein sehr gut gemachtes Video. XEP-0373 beschreibt wie ein XMPP Client einen öffentlichen Schlüssel im "Personal Eventing Protocol" (PEP) abspeichern kann. XMPP Nutzer können so auf das PEP des Kommunikationspartner zugreifen und dessen öffentlichen Schlüssel beziehen.

Im ersten Schritt werden die im PEP gespeicherten öffentlichen Schlüsse abgefragt. Die Rückgabe ist eine Liste der Fingerprints. Danach kann der Client die öffentlichen Schlüssel pro Fingerprint abfragen und importieren.

Wenn der öffentliche Schlüssel des Kommunikationspartner bekannt ist, kann die Kommunikation via OpenPGP erfolgen. I.d.R. sollte man drauf achten, dass man den öffentlichen Schlüssel des Kommunikationspartner signiert hat. Denn nur durch den Abgleich des Fingerprints und des unterschreiben des öffentlichen Schlüssel, kann sichergestellt werden, dass der Schlüssel wirklich der richtige ist.


Ich habe angefangen OX in profanty zu implementieren. Hierzu werden ich demnächst ein kleinen Eintrag im Blog von profanity vornehmen.

#XMPP #OX #Profanity

  • favorite

    1 Like


  • Be chevron_right

    We'll Meet Again, in real life!

    debacle · / berlin-xmpp-meetup · Monday, 6 July - 18:12 edit

We'll Meet Again, in real life!

This time, we will enjoy socialising and talking about this and that and XMPP. We meet outside of xHain using their chairs on the pavement. We will keep 2 meters of physical distance and use cloth face masks when entering xHain.

When? Wednesday, 2020-07-08 18:00 CEST (always 2ⁿᵈ Wednesday of every month)

Where? Pavement in front of xHain hack+makespace, Grünberger Str. 16, 10243 Berlin (as formerly)

Please respect the xHain "house rules"!

See you then!

Or join our non-physical room (!

#xmpp #community #xhain #freesoftware #berlin #meetup #federation #fediverse

  • favorite

    1 Like


Profanity 0.9.0 wurde released!

Four months and 350 commits after 0.8.1 we are happy to release 0.9.0.

profanity ist ein XMPP Client für die console mit sehr vielen coole Funktionen.

#XMPP #profanity #Messenger #IM #Linux #console

  • link

    Profanity 0.9.0

    Four months and 350 commits after 0.8.1 we are happy to release 0.9.0. 7 people contributed code to it: pasis, wstrm, DebXWoody, toogley, pmaziere, moppman and jubalh. Thanks to everybody who was involved, be it testing, writing documentation, updating the website or whatever you did! I also would like to express my gratitude to my sponsors mdosch and wstrm! LMC We support XEP-0308: Last Message Correction now. Enable it with /correction on.

  • favorite

    2 Like

    DebXWoody , debacle

  • chevron_right

    Linker - LD_LIBRARY_PATH

    DebXWoody · Sunday, 7 June - 11:16 · 1 minute

Ich habe gestern angefangen meine XEP Implementierungen in eine eigene lib zu ziehen. Ich habe wenig Lust immer alles in die verschieden Anwendungen nachzuziehen :-) Dabei bin ich auf folgendes gekommen,...

‎Wenn ich eine Anwendung bauen will, bei der die shared lib nicht in den Verzeichnissen von ld liegt, dann kommt es bei der Ausführung zu einem Fehler (kann die shared lib nicht finden). Mit der Variable LD_LIBRARY_PATH kann man das Problem beheben.

Beispiel Ich baue eine Anwendung mit folgendem Befehl:

 gcc `pkg-config --cflags --libs libstrophe` `gpgme-config --libs --cflags`  -I../ ../.libs/ -o XEP-0030-disco XEP-0030-disco.c

libcxmppx ist meine lib, die ich lokal entwickel und nicht im System ist. Wenn ich die Anwendung ausführe, dann kommt:

./XEP-0030-disco: error while loading shared libraries: cannot open shared object file: No such file or directory

Bei der Ausführung der Anwendung guckt (Was auch immer die ELF ausführt) nach der lib, findet die aber nicht im System (/etc/ Also setzte ich die Variable export LD_LIBRARY_PATH=../.libs/. Dann bekomme ich auch meine Anwendung zum laufen:

‎./XEP-0030-disco user pwd jid
Abfrage <iq id="c3d05d07-af84-410d-84f8-58483af7e584" to= ....


Kaidan is a user-friendly and modern chat app for every device. It uses the open communication protocol XMPP (Jabber). Unlike other chat apps, you are not dependent on one specific service provider.

Kaidan does not have all basic features yet and has still some stability issues. But we do our best to improve it!

  • Mo chevron_right

    Chat picture resolver and Telegram stickers

    Timothée Jaussoin · / Movim · Friday, 15 May - 07:50 edit · 3 minutes

Movim 0.18 is planned to be released soon.

In the meantime, let's have a look at one specific feature that is really useful when you integrate Movim with the Spectrum2 - Telegram bridge.

For those that are not aware, XMPP can connect to other chat networks using tools called "transport". One of the most used is called Spectrum2 and can connect to many other networks thanks to its libpurple support.

Telegram transport setup

What will we do here is:

  • Setup telegram-purple in Spectrum2 on Debian
  • Connect it to a XMPP server (here ejabberd)
  • Adapt the transport to integrate with Movim

Setup Spectrum2 and telegram-purple

Here I will not detail the basic installation, the official Spectrum2 documentation is pretty complete.

Once the repository is setup, please install the base package and the libpurple module:

apt install spectrum2 spectrum2-backend-libpurple

For telegram-purple the README is also quite complete

Create a Telegram transport

Once all the packages are setup, we will create a transport configuration file. You can reuse the spectrum.cfg.example located in the /etc/spectrum2/transports/ as a base.

# nano /etc/spectrum2/transports/spectrum_telegram.cfg

This is basically the config file that I used for my own transport:

server_mode = 0

jid =
password = spectrumpassword
server =
port = 5347
backend_host =




name=Telegram Transport

config = /etc/spectrum2/logging.cfg
backend_config = /etc/spectrum2/backend-logging.cfg

type = sqlite3


When Spectrum2 will connect to the Telegram network, the stickers will be downloaded as files on the server. By default an ugly path is simply sent to the XMPP clients. We will turn it to a proper URL and let Movim to its magic.

To do that we need to configure the Web Storage module. You can also find more documentation about it there.


It's pretty self explanatory. The downloaded stickers will be put in the web_directory directory. The second parameter, web_url, is basically telling Spectrum2 how to general its URL before sending them in the messages.

Configure ejabberd

Then we need to add a new service in our ejabberd.yml configuration file.

    port: 5347
    module: ejabberd_service
    access: all
    ip: ""
    global_routes: false
        password: "spectrumpassword"

Once everything is setup, restart Spectrum2 and ejabberd. For Spectrum2 you can do it using spectrum2_manager or a dedicated systemd configuration file.

Configure our web server

We then need to expose those files to the web. A simple nginx configuration will handle it.

server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;


    root /home/movim/upload;

    location /spectrum {
        alias /home/movim/movim/spectrum;

Fix the nasty file rights with Incron

If you start to use your Telegram transport at this point you'll notice that the stickers URLs are returning a 403 Forbidden error.

Indeed, Spectrum2 is writting the files in the directory using it's own rights. And this can't be configured.

We will then use another useful tool called Incron. This tool works like CRON but instead of working on time events, it works on file events.

You can find a pretty complete documentation there.

apt install incron 
nano /etc/incron.allow # add your spectrum user there
sudo -su spectrum
incrontab -e

In the incrontab file well then change dynamicaly the rights of the files once they are wrote in the directory (check the documentation for more details).

/home/movim/upload/spectrum   IN_CLOSE_WRITE          chmod 664 $@/$#

Enjoy your nice Telegram stickers in Movim

In Movim, nothing more to do. With the version 0.18, Movim will try to resolve the incoming messages that contains a URL and see if it's a valid picture. Which is the case for Telegram stickers.

Telegram stickers displayed in the Movim chat

You can also note that it works for any other incoming picture URL, including those sent using Conversations or other XMPP clients.

That's all folks!

#telegram #xmpp #movim #transport #stickers #ejabberd #admin

  • Pictures

  • visibility
  • favorite

    7 Like

    norz , Felipe , Slavko , debacle , Marzanna , U , Sandeep


  • 15 May ThurahT

    Fantastic that libpurpl is still useful : ) I hope the bridge works out, not that I have any telegram contacts.

  • chevron_right

    y sin embargo se mueve,

    xikufrancesc · Wednesday, 13 May - 02:59

Nada que envidiar este modelo de Movim sobre los demás.

La agradable sorpresa de como el protocolo #xmpp puede dar mucho mas que la mensajería por si sola. Y sin descartar que todavía se le puede extender y añadir mas funciones por que así lo permite el propio protocolo.

Muy de primera mano quiero seguir este modelo de red, suscripción y participación.