Service mis en place

Motivation

Depuis longtemps Telegram s'est imposé comme outil de communication officieux, bien que l'officiel restant IRC.

Histoire de pouvoir faire discuter tout le monde ensemble, après avoir testé et abandonné Matrix, on a décidé à la réunion technique du 21 juillet de mettre en place en bridge entre les deux.

Fonctionnalités

Chaque message sur Télégram est écrit sur irc par le bot 'egdirbBot' sous la forme " message". Si l'utilisateur n'a pas définit de pseudo sur Télégram, ça sera sous la forme " message".

Chaque message sur irc est écrit sur Télégram par le bot sous la forme " message".

Si un utilisateur Télégram envoie un document, une photo, une musique, etc..., le bot va hoster le fichier sur un serveur web (auto hébergé) et envoyer un lien de téléchargement sur irc.

Si un utilisateur Télégram répond à un message ou forwarde un message, le bot va afficher sur irc l'utilisateur du message initial (y compris s'il s'agit d'un message provenant d'IRC) puis la réponse ou le message forwardé.

Le bot n'envoit pas sur Télégram les annonces de join et quit d'IRC pour éviter le flood.

Sur Télégram il y a quelques commandes pour le bot :

  • /names : affiche la liste des utilisateurs connectés à IRC
  • /topic : affiche le topic du canal irc
  • /me : simule la commande /me d'IRC et envoie un message sans le pseudo
  • /command : permet d'envoyer une commande sur IRC via le bot, pour un autre bot sur irc par exemple. En fait ça affiche le message sans le pseudo de la personne qui l'a envoyé pratique pour commander un eggdrop depuis telegram par exemple.

Configuration & Implémentation

Bridge sur neko

Le bot est un fork du projet teleirc (https://github.com/FruitieX/teleirc) un peu modifié.

Le code est sur la vm neko, avec un utilisateur "teleirc", cloné dans le dossier /srv/teleirc/git. La config du service est dans /srv/teleirc/config.js Cf /srv/teleirc/README.md pour plus d'infos techniques.

Il y a un script d'init (/etc/init.d/teleirc), on peut lancer et arrêter le service via "service teleirc (start|stop)"

Les logs sont dispos dans /var/log/teleirc.log

Le service permet de transférer les fichiers de Telegram vers IRC, pour ça il met en place en serveur web pour télécharger les fichier en http. Le service écoute sur neko : neko.adm-pub.resel.fr:9090

Reverse proxy sur cyric

Dans la conf d'Apache sur cyric, conf du reverse proxy dans /etc/apache2/sites-available/proxys/teleirc-data.resel.fr

  • Vhost https://teleirc-data.resel.fr vers neko.adm-pub.resel.fr port 9090 en https
  • Vhost http qui rewrite vers le https.

Entrées dans le DNS sur saymyname

Dans la vue Brest et internet (/etc/bind/master/view/internet/zone.resel.fr et /etc/bind/master/view/Brest/zone.resel.fr) j'ai rajouté une ligne pour teleirc-data.resel.fr avec un CNAME vers cyric. J'ia màj le serial et restart le DNS (service bind9 restart et rdnc reload)

Compte IRC

Pour assurer que le bot est le bon pseudo sur IRC, il a un compte auprès du NickServ de rezosup, le nom est egdirbBot et le mot de passe est dans le keepass Président.