Treten Sie Matrix von Ihrem bevorzugten IRC -Kunden bei
Matrix2051 (oder kurz M51) ist ein IRC -Server, der von Matrix unterstützt wird. Sie können es auch als IRC -Türsteher sehen, der anstelle von IRC -Servern mit Matrix -Homeservers verbunden ist. Mit anderen Worten:
IRC client
(eg. weechat or hexchat)
|
| IRC protocol
v
Matrix2051
|
| Matrix protocol
v
Your Homeserver
(eg. matrix.org)
Ziele:
Nichtgänger:
Zwei Notizen zu diesem Screenshot:
sudo apt install elixir erlang erlang-dev erlang-inets erlang-xmerlmix deps.getmix testmix run matrix2051.exslocalhost:2051 an:user:homeserver.example.org )Weiter unten finden Sie zusätzliche Anweisungen, um mit Web -Clients zu arbeiten.
Eine produktionsorientiertere Anleitung siehe INSTALL.md .
matrix2051.exs startet M51.Application, der M51.Supervisor startet, was beaufsichtigt:config.ex : Global Config Agentirc_server.ex : Ein DynamicSupervisor , der Verbindungen von IRC -Clients erhält. Jedes Mal, wenn irc_server.ex eine Verbindung empfängt, wird irc_conn/supervisor.ex erzeugt, was beaufsichtigt:
irc_conn/state.ex : speichert den Status der Verbindungirc_conn/writer.ex : Genserver hält den Socket und erlaubt, Zeilen darauf zu schreiben (und in Zukunft Zeilenstapel)irc_conn/handler.ex : Aufgabe, die auf den eingehenden Befehlen des Lesers geschäftig sind, Antworten auf die einfachen und sendet komplexere Befehlematrix_client/state.ex : Hält den Zustand der Verbindung zu einem Matrix -Homeservermatrix_client/client.ex : Verwendet eine Verbindung zu einem Matrix -Homeserver als einzelner Benutzermatrix_client/sender.ex : Sendet Ereignisse an den Matrix Homeserver und mit Wiederholungen zum Ausfallmatrix_client/poller.ex : fragt wiederholt den Matrix Homeserver nach neuen Ereignissen (einschließlich der anfänglichen Synchronisierung)irc_conn/reader.ex : Aufgabe, auf den eingehenden Zeilen zu erwarten, und sendet sie an den HandlerVersorgungsunternehmen:
matrix/raw_client.ex : Matrix-Client / Dünn-Wrapper mit niedriger Ebene um HTTP-Anforderungenirc/command.ex : Manipulation von IRC -Linien, einschließlich "Herabstufung" für Kunden, die einige Funktionen nicht unterstützen.irc/word_wrap.ex : Generisches Zeilenverpackungformat/ : Konvertieren Sie zwischen IRCs Formatierung und org.matrix.custom.htmlmatrix_client/chat_history.ex : Fetches Nachrichtenverlauf von Matrix, wenn er vom IRC -Client angefordert wird Es gibt viele großartige IRC -Kunden, aber ich kann keinen Matrix -Kunden finden, den ich mag. Einige Gemeinden wechseln jedoch von IRC zu Matrix, also habe ich dies geschrieben, damit ich mich mit einem komfortablen Kunden anschließen kann.
Dies ist auch eine Möglichkeit, die neuesten IRCV3 -Funktionen leicht zu prototypisieren und das Matrixprotokoll zu lernen.
Theoretisch sollte jeder IRC -Kunde funktionieren. Insbesondere teste ich es mit Gamja, Irccloud, der Lounge und Weechat.
Bitte öffnen Sie ein Problem, wenn Ihr Kunde Probleme hat.
Theoretisch schrieb jeder, wie ich dies schrieb, indem ich die Matrixspezifikationen liest. In der Praxis wird dies nur mit Synapse getestet.
Eine bemerkenswerte Ausnahme ist die Registrierung, bei der eine synapsenspezifische API verwendet wird, da Matrix selbst keine Registrierung angibt.
Bitte öffnen Sie ein Problem, wenn Sie ein Problem mit Ihrem HomeServer haben (ein Dummy -Login/Passwort, mit dem ich eine Verbindung damit herstellen kann, wäre geschätzt).
Zum Zeitpunkt des Schreibens wird Matrix2051, wenn sowohl Matrix als auch IRC/IRCV3 sie unterstützen, wahrscheinlich. Schauen Sie sich die Liste der offenen „Verbesserungsprobleme“ an.
Eine bemerkenswerte Ausnahme sind Direktnachrichten, da das Modell von Matrix erheblich von IRCs unterscheidet.
Um Web -Clients zu verbinden, benötigen Sie ein WebSocket -Gateway. Matrix2051 wurde mit dem Webircgateway von Kiwiirc getestet (probieren Sie diesen Patch, wenn Sie es in alten Go -Versionen ausführen müssen).
So konfigurieren Sie es mit Gamja, um eine Verbindung zu Matrix2051 herzustellen:
[ fileserving ]
enabled = true
webroot = " /path/to/gamja "
[ upstream . 1 ]
hostname = " localhost "
port = 2051
tls = false
# Connection timeout in seconds
timeout = 20
# Throttle the lines being written by X per second
throttle = 100
webirc = " "
serverpassword = " "Dies ist ein Verweis auf XKCD 1782:
Treten Sie #matrix2051 unter irc.interlinked.me bei. (Nein, ich esse nicht mein eigenes Hundefutter, ich bevorzuge immer noch "einheimische" irc.)