WeeChat als Twitch IRC Bouncer nutzen

Wie einige eventuell wissen läuft der Twitch Chat über das alte aber bewährte Chat Protokoll IRC. Aus IRC Zeiten kennen viele auch noch den Nutzen eines Bouncers. Für die, die ein Bouncer nicht kennen hier eine kurze Erklärung. Auf damaligen IRC Servern gab es keine Logins oder ähnliches. Damit der eigene Name jedoch reserviert bleibt hat man sich auf einem Server einen IRC Client ständig online bleibt. Dies hat dann ebenfalls den Vorteil, dass man ältere Nachrichten empfangen kann, auch wenn man nicht „online“ war.

Für Twitch möchte man bspw. auch ältere Nachrichten von Twitch Kanälen empfangen oder nebenbei einen Log führen. Umgesetzt kann das Ganze recht Simpel mit Weechat. In diesem Fall auf einem Debian Stretch System.

WeeChat mit tmux auf Debian installieren

$ sudo apt-key adv –keyserver hkp://p80.pool.sks-keyservers.net:80 –recv-keys 11E9DE8848F2B65222AA75B8D1820DB22A11534E

$ echo „deb https://weechat.org/debian stretch main“ | sudo tee /etc/apt/sources.list.d/weechat.list

$ sudo apt-get install apt-transport-https

$ sudo apt-get update

$ sudo apt-get install weechat-curses weechat-plugins weechat-python weechat-perl tmux

$ sudo adduser ircuser

Quelle: WeeChat Dokumentation

Zu Twitch Verbinden

Für die nächsten Schritte zu dem User ircuser wechseln mit su ircuser.

Zuerst muss zum Chatten ein oAuth-Token generiert werden bspw. auf https://twitchapps.com/tmi/, Anschließend WeeChat mit dem Befehl weechat starten.

# Server hinterlegen mit Zugangsdaten für Twitch

/server add twitch irc.twitch.tv/6667 -password=oauth:XXXXXXXX -nicks=TWITCHNICK -username=TWITCHNICK

# Zusätzliche Inhalte „abonnieren“ die Twitch in IRC bereitstellt

/set irc.server.twitch.capabilities „twitch.tv/membership,twitch.tv/commands,twitch.tv/tags“

# Automatisch Twitch Server starten, wenn WeeChat gestartet wird

/set irc.server.twitch.autoconnect on

# Keine JOIN,QUIT,PART Nachrichten loggen

/set logger.level.irc.twitch 3

# Automatisch in folgende Channel joinen, wenn WeeChat sich mit dem Twitch Server verbindet

/set irc.server.twitch.autojoin „#gurkengewuerz,#thetownserver,#…“

 

/save

Quelle: https://gist.github.com/noromanba/df3d975613713f60e6ae

Twitch Skript installieren

Für Twitch gibt ein ein zusätzliches Python Skript welches den Stream Status als Titel anzeigt und dabei die IRC NOTICE Nachrichten korrekt interpretieren kann wie bspw. für Subscriptions.

# Skript installieren

/script install twitch.py

# Zum aktualisieren der Twitch Channel Daten in einem IRC Channel

/twitch

Quelle: https://github.com/weechat/scripts/blob/master/python/twitch.py

WeeChat Relay mit nginx Proxy

# Relay anlegen

/relay add weechat 9001

# Starkes Passwort festlegen
/set relay.network.password „randomPasswort“

 

/save

 

# Set up brute force protection
limit_req_zone $binary_remote_addr zone=weechat:10m rate=5r/m;
server {
    [...] # Your config goes here!
    location /weechat {
        proxy_pass http://localhost:8000/weechat; # Change the port to your relay's
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;   # These two lines ensure that the
        proxy_set_header Connection "Upgrade";    # a WebSocket is used
        proxy_read_timeout 604800;                # Prevent idle disconnects
        proxy_set_header X-Real-IP $remote_addr;  # Let WeeChat see the client's IP
        limit_req zone=weechat burst=1 nodelay;   # Brute force prevention
    }
}

Quelle: https://github.com/glowing-bear/glowing-bear/wiki/Proxying-WeeChat-relay-with-a-web-server#nginx

WeeChat als Service laufen lassen

Zunächst sollte WeeChat geschlossen werden (/exit) und die nächsten Bash Befehle als Admin ausgeführt werden.

Um Weechat weiter im Hintergrund laufen zu lassen kann ein systemd Service erstellt werden welcher in einer tmux Session WeeChat als ircuser startet. Dafür wird in der Datei /etc/systemd/system/weechat.service folgendes hinzugefügt.

[Unit]
Description=Weechat IRC Client (in tmux)

[Service]
User=ircuser
Type=forking
ExecStart=/usr/bin/tmux -2 new-session -d -s weechat /usr/bin/weechat
ExecStop=/usr/bin/tmux kill-session -t weechat

[Install]
WantedBy=multi-user.target

Zum aktivieren des Service sudo systemctl enable weechat und zum starten sudo systemctl start weechat ausführen.

Quelle:  https://iamkelv.in/blog/2017/08/weechat.html

Hinweis

Zwar werden JOIN/PART Nachrichten verschickt (manchmal auch gesammelt gesendet), jedoch nur bis ca. 1000 Zuschauern. Möchte man alle Zuschauer haben, kann man bspw. die Twitch API nutzen.

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.