This commit is contained in:
emerson 2023-01-28 08:25:27 -05:00
parent 513b945b77
commit 4fdcb58fec
3 changed files with 15 additions and 91 deletions

View file

@ -27,12 +27,22 @@ Then `npm ci`, `npm run build`, and `node reflection.js config.json` (replace `c
## Known issues
* Encrypted rooms don't work. In theory you can use [pantalaimon](https://github.com/matrix-org/pantalaimon), however I haven't tried it yet.
* You can't `/JOIN` channels. However, if you join a channel via Element (other clients are available), it will auto-join your IRC client to it.
* You can't open a PM to individual users, since a "PM" in Matrix is just another room, and you can't join rooms from IRC yet.
* You can't `/join` channels. However, if you join a channel via Element (other clients are available), it will auto-join your IRC client to it.
* You can't open a PM to individual users, since a "PM" in Matrix is just another room, and you can't join rooms from IRC.
* There's no IRC equivalent to Spaces. Since they are just regular rooms, they show up in IRC as just regular rooms, however, you can't send messages to them.
* In order to highlight users, you need to prefix their nick with an `@`, so `@emerson: hi`. Reflection automatically expands this to the user's MXID, so even though it's annoying, it's needed to stop inadvertent highlights for now.
* In general, Reflection trusts IRC clients to do the right thing, and doesn't have a lot of error-checking of IRC messages (it does have robust error checking for the Matrix side because Matrix sends a lot of error-filled messages).
## Compatibility
Because Matrix and IRC are open protocols, there's no way for me to test every single implementation, so here's a list of what I test on. If you see a bug in a specific Matrix or IRC client, please join the [support channel](#support) and report it. If it's a closed instance, please DM/PM me a login and I'll look into it.
### Matrix
Reflection implements features straight from the Client-Server spec, so any homeserver that conforms to the specification will be compatible. I only test Synapse right now, if you know of an open Dendrite or Conduit homeserver, let me know!
### IRC
I regularly test on Weechat, Gamja (using Soju), and The Lounge. Any actively maintained IRC client will be able to have basic functionality, although no free IRC clients currently support things like reactions, message editing/deleting, and channel renaming. If you're using multiple clients, it's best to use a bouncer like Soju to connect to Reflection, and then connect your clients to Soju.
## FAQs
### Who is this for?
@ -50,9 +60,6 @@ Because matrix room names are often long and have characters that IRC channel na
### Why do messages appear out of order?
If you have `server-time` enabled on your client, you might find messages arriving late or out of order. Similarly, if you're joined to the same channel from different homeservers, you may see messages appear on one several minutes/hours before the other(s). This is called "federation", and is considered a feature of Matrix.
### Does IRC actually support all of these cool new features?
In theory, yes. In reality, no. There's currently no free, standalone IRC client that supports reactions, replies, editing/deleting messages, and channel renaming. But one day they might, and when they do, Reflection will be ready to support them.
### What does "Sync is lagging" mean?
The matrix sync is set with a timeout of 15 seconds (configurable in milliseconds as the `syncTimeout` value in the config file). The server is supposed to return an HTTP response after the timeout (if not sooner). If the server doesn't respond after 20 seconds (also configurable as `lagWarningLimit`), that message is printed to the console to warn you that the homeserver is lagging.
@ -94,7 +101,7 @@ On Libera I'm `emerson`, on Matrix I'm `@emersonveenstra:matrix.org`, feel free
| Extended invites <small>(IRCv3)</small> | ✅ | ✅ ||
| Typing notifications <small>(IRCv3)</small> | ✅ | ✅ | Not all servers or clients send typing indicators |
| Chat history <small>(IRCv3)</small> | ❌ | ❌ | [#9](https://todo.sr.ht/~emerson/reflectionircd/9) |
| Multiline messages <small>(IRCv3)</small> | ❌ | ❌ | [#10](https://todo.sr.ht/~emerson/reflectionircd/10) |
| Multiline messages <small>(IRCv3)</small> | ✅ | ✅ ||
| Global display names <small>(IRCv3)</small> | ❌ | ❌ | [#11](https://todo.sr.ht/~emerson/reflectionircd/11) |
| Per-room display names <small>(IRCv3)</small> | ❌ | ❌ | [#13](https://todo.sr.ht/~emerson/reflectionircd/13) |
| Message editing <small>(IRCv3)</small> | ❌ | ❌ | [#14](https://todo.sr.ht/~emerson/reflectionircd/14) |

View file

@ -1,52 +0,0 @@
-----BEGIN PRIVATE KEY-----
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
fSUwm5pFNMgrf3lXspCbSbQxFxg268E=
-----END PRIVATE KEY-----

1
reflection.key Symbolic link
View file

@ -0,0 +1 @@
/home/emerson/.acme.sh/emerson.lol/emerson.lol.key

View file

@ -1,33 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIFoTCCA4mgAwIBAgIUWDylg92nWo1hSqX7H+y2rrYCgvEwDQYJKoZIhvcNAQEL
BQAwXzELMAkGA1UEBhMCVVMxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEYMBYGA1UEAwwPcmVmbGVjdGlvbi5j
aGF0MCAXDTIxMDczMTE0NTQzOFoYDzMwMjAxMjAxMTQ1NDM4WjBfMQswCQYDVQQG
EwJVUzETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lk
Z2l0cyBQdHkgTHRkMRgwFgYDVQQDDA9yZWZsZWN0aW9uLmNoYXQwggIiMA0GCSqG
SIb3DQEBAQUAA4ICDwAwggIKAoICAQDa+e4/SuYY80SmeQF5YJPxd3oL+YQf+FeM
DkLW8PW+pLATqQxYsQWDfSz+0UuL8SZiDQmXGf7CqNw2eb0x5MQsst9VmxBrxNar
2Sj67ctq8oHivHq1hrPpAfwUcbPhoL8sv2wc26jwz5z7Q8B1Tk0tMYJFH2epVf2X
Q7idwpivignk0+UfBtYQUZgqyTzJ4jMJIz8CmqybuRZSqnlLS3McEHcL+k+hzXhB
ukOMFl889LdjgHABpOALunH9d6VXNgMQSKQ9pK7xsu22ZjXc+wunFTkAAS0eeS32
RnXZVXSjduGPenhNBfGatzw1Ja7kYpPX4oZ2GwqYWpDGbjNx9TnW7F9pXCbOnwsp
XCyKEPjqKc7DBzEqD2eFxRB5ngr/Thp8dmXDefpOGUwpsD/LokLQQgBrR3pp21pm
Q04h/Zlf2oa/Iv/WqZ2nuTUTAUAAhslA0iFKwlPXK6ikWY13lYtJ/KK8uEV6BRIf
mkjeIBSn6AX6jivA6lK0Wh4snn5Y5hEUDwHg9XazC5MxrkVSIY+4YISZj3THLQ5w
sdg3JoKLc+TRhun45kEmafP+af/rkTNfFRD3FRSrAkNV/LVkpQ7TwL2yvWXSYumB
42h1VSmWiE4AgSaOv2JjiEW5OCTUtGSMSHYh5MQqnCyp3QwdfgOiSi8OSwI3i0Pb
T65HfZLOGQIDAQABo1MwUTAdBgNVHQ4EFgQUGbRWXcPf39cHBGZq/9Stw6+zKcIw
HwYDVR0jBBgwFoAUGbRWXcPf39cHBGZq/9Stw6+zKcIwDwYDVR0TAQH/BAUwAwEB
/zANBgkqhkiG9w0BAQsFAAOCAgEA1YEhMV/AoquZWD1BvmnIV8+QRP5WRJr54+ci
xWI5OrUbx/RQhM6f6lbZOoBwOOzpcVy7n4JiRjVM6YtAgSb0bKz9MsHzOOSNat0x
IcZYccBWAKaByls42Yk83/EUI4GdW66Qk52a2IonDRq65pQ5XS+pLigwe0NZj/A5
KshV8IiLIV5MdanBDe8MBdWdcS2xpMv5PguCepS1ODZJinWlZZGHZjLMullUAsVA
hTXkrogA8BRf0G+Y4NGOJMlDS9H6CfRHFLtM/tQ/AGoCdTG+hakfwS0KA0JNVxvq
VT4mR61itq3E91woag4R5n8RRllgLLi2JgP3WJ2t4yIZMBBA+jzSc2VIwMd/btF9
5SA7hsF6Ov2VVEMhGbNOVx/jsaYAq+3RdTaLfm8qH37GqENBgscUxb4hLRkawkZL
9VCsVFE1cl/XJUmtFEpbwnaZfoo9hxmw6xD1aHTM6qqC9hCERAwMQePtH9ONZVUf
WlZ0nczHSbu/hk7YyEdekgRFBWiIED75StVwh2xst2Q/kGRTZjQ5tfPTXiFACzgT
l3v718oDthiP4SY/BP1wAAN8RZJiAa87iAR3gVAB0+ng2EvLgr9d1Ledvv255k8Z
9FSDqavOB6gp93mR6zq/QXHmuJWjiaGxxfdPsnHO6vE6NG98eAjrHsFtQTF5jgOX
MXTN2Jw=
-----END CERTIFICATE-----

1
reflection.pem Symbolic link
View file

@ -0,0 +1 @@
/home/emerson/.acme.sh/emerson.lol/fullchain.cer