Mostek łączący grupę #hackerspace-krk na Telegramie oraz kanał na IRCu z tą samą nazwą.
Obecny opiekun: [[ members/ludzie/zagura/ | 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:
```
lang=bash
. 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:
```
lang=bash
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:
```
lang=bash
./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.);
[X] 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;
[X] 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.
do szukania: //telegram, irc, телеграм, чат//