====== 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, [[https://github.com/hifi/heisenbridge|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 [[serveur_hebergement:matrix:installer_matrix|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) :
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.