Matrix est capable d'échanger avec d'autres protocoles grâce à des ponts.
Les étapes pour installer un pont sont plus ou moins les mêmes quel que soit le pont. On va voir comment installer un pont entre Signal et IRC, heisenbridge, qui vous permettra de vous connecter à un serveur IRC ou à un bouncer IRC comme ZNC.
Il vous faut un serveur Matrix, Synapse par exemple. Je pars du principe que vous avez suivi le tuto sur comment Installer Matrix et que vous avez déjà ce logiciel d'installé.
Installez Python3 ainsi que pip et virtualenv
sudo aptitude install python3 virtualenv python3-pip
Créez un répertoire et accédez-y
mkdir heisenbridge && cd heisenbridge
Créez l'environnement Python
virtualenv venv
Activez-le
source venv/bin/activate
Installez le pont
pip install heisenbridge[all]
L'installation est finie, on peut passer à la configuration
Générez le fichier registration.yaml, toujours dans le dossier heisenbridge :
python -m heisenbridge -c /chemin/vers/dossier/heisenbridge/registration.yaml --generate
Ensuite ouvrez le fichier homeserver.yaml de votre serveur et indiquez l'emplacement du fichier registration.yaml après la ligne “app_service_config_files:“
# A list of application service config file to use app_service_config_files: - "/chemin/vers/dossier/heisenbridge/registration.yaml"
Relancez votre serveur Matrix :
sudo systemctl restart matrix-synapse.service
On va créer un script pour démarrer heisenbridge via systemd. Créez le fichier /etc/systemd/system/matrix-appservice-irc.service et ajoutez-y les lignes suivantes (modifiez le chemin et l'utilisateur) :
[Unit] Description=matrix-irc bridge After=matrix-synapse.service [Service] WorkingDirectory=/chemin/vers/dossier/heisenbridge/ ExecStartPre=/bin/sleep 60 ExecStart=/chemin/vers/dossier/heisenbridge/venv/bin/python -m heisenbridge -c registration.yaml User=pi [Install] WantedBy=multi-user.target
Rechargez la configuration de systemd avec la commande :
sudo systemctl daemon-reload
Activez le démarrage automatique avec la commande :
sudo systemctl enable matrix-appservice-irc.service
Démarrez heisenbridge avec la commande :
sudo systemctl start matrix-appservice-irc.service
Dans votre client Matrix (Element), ouvrez une discussion privée avec le bot @heisenbridge:votre.serveur
Dans la discussion, tapez
help
Ca va vous afficher toutes les commandes et leur fonctionnement afin que vous puissiez vous connecter à un serveur IRC. Pour ajouter une connexion au serveur IRCnet par exemple, il faudra taper les commandes suivantes :
ADDNETWORK IRCnet ADDSERVER IRCnet ssl.ircnet.io 6697 --tls OPEN IRCnet
Vous allez être invité dans un nouveau salon où vous pourrez vous y connecter avec la commande :
CONNECT
Et vous pourrez joindre un chan avec la commande :
JOIN #nom_chan
On va créer un script pour mettre à jour le pont. Créez le fichier update_irc_bridge.sh dans le même répertoire que le dossier heisenbridge et ajoutez-y les lignes suivantes (remplacez votreadressemail par une adresse mail valide et modifiez le chemin vers le dossier heisenbridge):
#!/bin/bash errorFile="../heisenbridgeErrorUpdate" versionFile="../heisenbridgeVersion" adminMail="votreadressemail" cd /chemin/vers/heisenbridge source venv/bin/activate # On récupère le numéro de la version installée currentVersion=$(pip index versions heisenbridge | head -3 |tail -1 |awk '{print $2}') # On récupère le numéro de la version présent sur le dépôt repositoryVersion=$(pip index versions heisenbridge | head -4 |tail -1 |awk '{print $2}') # Si la version présente sur le dépôt est plus récente, on lance la mise à jour if [ $currentVersion != $repositoryVersion ]; then # On supprime l'ancien fichier d'erreur s'il existe if [ -f $errorFile ]; then rm -f $errorFile fi # On lance la mise à jour du paquet pip install --upgrade heisenbridge > /dev/null 2> $errorFile # Si le fichier d'erreur n'est pas vide, on envoie un mail d'erreur if [ -s $errorFile ]; then echo "Une erreur s'est produite lors de la mise à jour du pont IRC-Matrix (heisenbridge). Le message d'erreur se trouve en pièce-jointe." | mutt -x -s "Erreur lors de la mise à jour du pont IRC-Matrix" -a $errorFile -- $adminMail else # Si le fichier d'erreur est vide, on envoie un mail de mise à jour et on met à jour le fichier de version echo "Le pont IRC-matrix (heisenbridge) a été mis à jour de la version $currentVersion vers la version $repositoryVersion" | mutt -x -s "Mise à jour du pont IRC-Matrix" -- $adminMail echo "$repositoryVersion" > $versionFile fi fi
Le script est commenté afin qu'il soit facile de comprendre chaque bloc. Pour que ce script fonctionne pleinement il faut que votre serveur soit capable d'envoyer des e-mails, sinon les mises à jours se lanceront mais vous ne serez pas averti lors des mises à jour ou des erreurs de mise à jour. Il vous faut également York pour récupérer les versions présentes sur les dépôts. Vous pouvez l'installer avec la commande suivante :
pip install yolk3k
On va créer une tâche cron afin que ce script se lance tous les jours. Ouvrez le fichier cron avec la commande
crontab -e
Ajoutez la ligne suivante (remplacez l'emplacement du répertoire) : <code bash>10 0 * * * /home/pi/matrix_bridges/update_irc_bridge.sh
Appuyez sur CTRL + O puis CTRL + X pour appliquer les modifications.
Tous les jours à minuit dix, le pont se mettra à jour si une nouvelle version est disponible.