Table des matières

Installer un pont IRC - Matrix

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.

Prérequis

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é.

Python3

Installez Python3 ainsi que pip et virtualenv

sudo aptitude install python3 virtualenv python3-pip

heisenbridge

Installation

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

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

Lancement du pont via Systemd

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

Utilisation du pont

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

Mise à jour

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.