2021-12-05 17:42:41 -05:00
# ReflectionIRCd
ReflectionIRCd is an IRCd that interfaces with Matrix, allowing you to use an IRC client to chat on Matrix.
This is **very much** not production-ready yet. There's `console.log` s all over the place, no testing or error checking, lots of bugs, etc.
That said, it is usable for basic chatting.
## 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
2021-12-07 08:12:44 -05:00
- Multi-user: Log in to multiple Matrix users at the same time
2021-12-05 17:42:41 -05:00
## Feature support
2022-01-24 10:23:06 -05:00
✅ - Implemented
🟨 - Partially implemented, see notes
2021-12-05 17:42:41 -05:00
❌ - Not implemented yet
2022-01-24 10:23:06 -05:00
⬜ - Not applicable
2021-12-05 17:42:41 -05:00
< small > (IRCv3)< / small > denotes IRC features that might not be available in all clients
| Name | M->I | I->M | Notes |
| ---- | :--: | :--: | ----- |
2021-12-07 10:36:09 -05:00
| text, notice, emote messages | ✅ | ✅ ||
2022-01-24 10:23:06 -05:00
| image, file, audio, video messages | 🟨 | ⬜ | Show up as links on IRC |
2021-12-07 11:55:21 -05:00
| Channel joins | ✅ | ❌ ||
2022-01-24 10:23:06 -05:00
| Channel parts | ✅ | ✅ ||
| Channel kicks | ✅ | ✅ ||
| Channel bans | 🟨 | ❌ | Single-user bans show up on IRC as kicks, there's no banlist yet |
| Channel invites | ✅ | ✅ ||
| Channel topics | ✅ | ✅ ||
2021-12-07 08:12:44 -05:00
| Channel powers | ❌ | ❌ ||
2022-01-24 10:23:06 -05:00
| Channel lists/searching | ⬜ | ❌ ||
| Encrypted rooms | ❌ | ⬜ ||
| Rich text | ❌ | ❌ ||
| Presence | ❌ | ❌ ||
2022-01-21 12:14:53 -05:00
| Channel renaming < small > (IRCv3)< / small > | 🟨 | ❌ | Only when the canonical alias changes |
2022-01-24 10:23:06 -05:00
| Message replies < small > (IRCv3)< / small > | ✅ | ✅ | Clients without support will still receive the reply message, but it won't be marked as a reply |
| Message reactions < small > (IRCv3)< / small > | 🟨 | 🟨 | Can't undo reactions yet |
| Extended invites < small > (IRCv3)< / small > | ✅ | ✅ ||
| Chat history < small > (IRCv3)< / small > | ⬜ | ❌ ||
2021-12-05 17:42:41 -05:00
| Multiline messages < small > (IRCv3)< / small > | ❌ | ❌ ||
2021-12-07 08:12:44 -05:00
| Global display names < small > (IRCv3)< / small > | ❌ | ❌ ||
| Per-room display names < small > (IRCv3)< / small > | ❌ | ❌ ||
2022-01-24 10:23:06 -05:00
| Message editing < small > (IRCv3)< / small > | ❌ | ❌ ||
| Message deletion < small > (IRCv3)< / small > | ❌ | ❌ ||
2021-12-07 08:12:44 -05:00
## 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
2021-12-09 17:29:09 -05:00
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.