====== 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 # Si le fichier de version existe, on récupére la version if [ -f $versionFile ]; then currentVersion=$(cat $versionFile) #S'il n'existe pas, on force la version à 0 else currentVersion="0" fi # On récupère le numéro de la version présent sur le dépôt repositoryVersion=$(yolk -V heisenbridge | 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.