Page MenuHomePhabricator

Mostek Telegram-IRC
Updated 185 Days AgoPublic

Mostek łączący grupę #hackerspace-krk na Telegramie oraz kanał na IRCu z tą samą nazwą.

Obecny opiekun: Michał Zagórski

Obraz dockerowy: mzagorskadm/hskrk-lelegram na https://hub.docker.com/ - Dockerfile{F59334}
Notka: Na dzień 29.02.2020r. , obraz na hubie jest nieco zmodyfikowany względem oryginalnego kodu.

Budowanie projektu

Projekt jest budowany z kodu źródłowego udostępnionego na hswaw: https://gerrit.hackerspace.pl/plugins/gitiles/hscloud/+/refs/heads/master/personal/q3k/lelegram/. Klonujemy całe repozytorium hscloud.
W katalogu głównym repozytorium uruchamiamy:

. env.sh
bazel build //personal/q3k/lelegram

Wynikowa binarka znajduje się w lokalizacji bazel-bin/personal/q3k/lelegram/linux_amd64_stripped/lelegram

Byłem leniwy, więc używałem oficjalnego obrazu dockerowego Bazela do budowania:

docker run -it -v $(pwd):/src/workspace:rw \
           -v /tmp/build_output:/tmp/build_output:rw  \
           -w /src/workspace \
           --entrypoint=/bin/bash \
           l.gcr.io/google/bazel:latest

Przygotowanie środowiska

Potrzebujemy:

  • Zarejestrowany bot po stronie Telegrama;
    • Konfiguracja bota: /setjoingroups enable;
    • Konfiguracja bota: /setprivacy disable;
    • API Token;
  • GroupId grupy, w której ma być mostek;
  • Kanał na ircu.

Uruchomienie

Uruchamiamy z argumentami:

./lelegram -irc_server irc.libera.chat:6667 \
           -hspki_disable \
           -irc_channel <kanał na ircu z hashami, np. '#hskrk' albo \#hskrk> \
           -telegram_token <auth token bota telegramowego> \
           -telegram_chat <groupId> \
           -irc_login <login botowego połączenia na ircu> \
           -irc_max_connections <liczba maksymalnych połączeń bota na irca>
  • -hskpi_disable: deaktywacja integracji z infrastrukturą k8s HSWAW.
  • groupId musi być numerem, zwykle ujemnym, najłatwiej poznać groupId z webowego telegrama lub szukając w logach, które grupy ignoruje, gdy nie ma przypisanej żadnej konkretnej.
  • Dodatkowe debugi dostępne z opcją -v <int> (im wyższy numer, tym więcej poziomów logowania łapie)
  • Dodatkowe opcje można wyświetlić ./lelegram -help
  • irc_server musi być adresem z portem dostępnym dla nieszyfrowanego połączenia, lelegram nie wspiera TLS w komunikacji z serwerem IRC
  • Notka: Oryginalny bot nie wspiera opcji irc_login
Uruchomienie z dockera

W podstawowej wersji obraz uruchamia /bin/bash, więc należy go uruchomić, wywołując binarkę z argumentami:

docker run -d mzagorskadm/hskrk-lelegram /lelegram/lelegram \
           -irc_server chat.freenode.net:6667 \
           -hspki_disable \
           -irc_channel <kanał na ircu z hashami, np. '#hackerspace-krk' albo \#hackerspace-krk> \
           -telegram_token <auth token bota telegramowego> \
           -telegram_chat <groupId> \
           -irc_login <login botowego połączenia na ircu> \
           -irc_max_connections <liczba maksymalnych połączeń bota na irca>

Potrzebne poprawki

... a także znane problemy i ograniczenia :)

  • Domyślnie bot loguje się jako lelegram[t] na ircu (irc_login może być pusty);
  • Nie ma obsługi dla nicków bez username (pole username w telegramie jest opcjonalne);
  • Bot *prawdopodobnie* nie wyśle wiadomości, jeśli nie będzie mógł zrobić joina użytkownika (np. z powodu konfliktów nicków, braku voice na moderowanym kanale, etc.);
  • Znanym problem jest wieszanie się bota po kilku dniach aktywności - należy go monitorować na bieżąco; - problem został rozwiązany przez q3k w sierpniu 2020
  • Todo: warto przenieść instancję teleimg poza hswaw;
  • Todo: konfigurowalny sufix/prefix do nicków ircowych - obecnie blokujemy możliwość używania więcej niż jednej instancji w jednej sieci IRC; - dodane w 2020
  • Todo: ogarnąć więcej jednoczesnych połączeń - być może możemy użyć bloku IPv6 albo dogadać limit z Liberą. - aktualnie bot łączy się z hosta, który co kilka dni rotuje adres IPv6, przy czym ma już nawiązane połączenia z nowych adresów - takie rotowanie ułatwia trzymanie mniejszej liczby ostatnio używanych połączeń
  • Obsługa wielu wiadomości/długich wiadomości - obecnie ignorujemy Excess Flood z IRCa.
Last Author
zagura
Last Edited
Jun 2 2021, 1:07 AM

Event Timeline

zagura published a new version of this document.
zagura edited the content of this document. (Show Details)