No description
Find a file
2022-02-02 12:55:43 -05:00
docs/specs spec work 2022-02-01 17:46:22 -05:00
src fix duplicate messages 2022-02-02 12:55:43 -05:00
test add tsconfig and rawlogbot 2021-12-05 17:44:13 -05:00
.gitignore initial commit, moving things over from the old repo 2021-12-05 17:42:41 -05:00
.tsconfig.json add tsconfig and rawlogbot 2021-12-05 17:44:13 -05:00
config.example.json update README and remove lazyload 2021-12-07 08:12:44 -05:00
LICENSE initial commit, moving things over from the old repo 2021-12-05 17:42:41 -05:00
package-lock.json update packages 2022-02-01 16:32:22 -05:00
package.json update packages 2022-02-01 16:32:22 -05:00
README.md Fix channel renaming M->I 2022-02-02 12:51:34 -05:00
reflection.js initial commit, moving things over from the old repo 2021-12-05 17:42:41 -05:00
reflection.key initial commit, moving things over from the old repo 2021-12-05 17:42:41 -05:00
reflection.pem initial commit, moving things over from the old repo 2021-12-05 17:42:41 -05:00

ReflectionIRCd

ReflectionIRCd is an IRCd that bridges Matrix, allowing you to use an IRC client to chat on Matrix.

This is very much not production-ready yet. There's console.logs all over the place, an inadequate amount of testing and error/bounds checking, several bugs, etc.

That said, it is usable for basic chatting. See the support matrix (pun intended) below for what it can do.

Highlights

  • IRC first: The goal is for modern IRC clients to have feature parity with any other Matrix client
  • Standalone: Uses the Client-Server API, so you can use it with any homeserver
  • Built-in bouncer: Multiple IRC clients can be authenticated to a Matrix user
  • Multi-user: Log in to multiple Matrix users at the same time

FAQs

Who is this for?

It's for people who want to use their IRC client to chat on Matrix. It's like Bitlbee or Matterbridge, but focused specifically on IRC <-> Matrix, as well as being a reference client for IRCv3 specifications.

It's not meant for community use; if you are a homeserver admin and want to allow your users to use IRC, you would be better off with heisenbridge.

Why are there different channel prefixes?

Because matrix room names are often long and have characters that IRC channel names can't use, Reflection has to attempt to find a suitable IRC equivalent

# channels are channels that have a canonical alias for us to use. & channels are two-person channels (either DMs or normal channels). ! channels are the room IDs of channels whose names can't be converted into IRC-friendly names.

Note that there are no PMs, because Matrix doesn't differentiate between DMs and normal two-person channels, any channel with two people in it gets marked as a & channel.

Feature support

- Implemented
🟨 - Partially implemented, see notes
- Not implemented yet

(IRCv3) denotes IRC features that might not be available in all clients

Name M->I I->M Notes
text, notice, emote messages Highlighting users with their IRC nick doesn't translate into highlighting their Matrix user #23
image, file, audio, video messages 🟨 Show up as links on IRC
Channel joins #1
Channel parts
Channel kicks
Channel bans 🟨 #24 Single-user bans show up on IRC as kicks, there's no banlist yet
Channel invites
Channel topics
Channel powers #6
Channel lists/searching #30
Encrypted rooms #20
Rich text #31
Presence #25 Note that not all homeservers have presence enabled
Channel renaming (IRCv3) #16
Message replies (IRCv3) Clients without support will still receive the reply message, but it won't be marked as a reply
Message reactions (IRCv3) Can't undo reactions yet
Extended invites (IRCv3)
Typing notifications (IRCv3) #26
Chat history (IRCv3) #9
Multiline messages (IRCv3) #10
Global display names (IRCv3) #11
Per-room display names (IRCv3) #13
Message editing (IRCv3) #14
Message deletion/redaction (IRCv3) #14

Running

Copy config.example.json to config.json, edit the values if needed, then npm run build and then node reflection.js to start it

Authentication

Authentication is done via SASL PLAIN, the username is your mxid and the password is an access token from another session plus your server domain, separated by a : (so access_token:matrix.org if your server is matrix.org). Note this is the domain for m.server, not necessarily the homeserver domain.

Support

The main chat is #reflectionircd on Libera (webchat), which is available on Matrix as well at #reflectionircd:matrix.org