delthas
54275c25ac
Add WHO support
2020-03-20 00:29:03 +01:00
Simon Ser
166d8b0626
Remove some IRCv3 constants
...
go-irc v3.1.2 adds some missing IRCv3 constants.
2020-03-19 14:51:45 +01:00
Simon Ser
7dc2d4d9b1
Fix history name
...
dc.username contains the raw account username, not the username supplied
by the client.
2020-03-19 14:44:49 +01:00
delthas
37eb162b75
Add create-network bouncer service command
2020-03-19 01:14:44 +01:00
delthas
37e56a01b2
Add suffixing for multi-upstream connections
2020-03-19 00:06:48 +01:00
Simon Ser
e3d97bb164
Add basic infrastructure for bouncer service
2020-03-18 12:23:08 +01:00
Simon Ser
0db032d267
Fix typo
2020-03-17 16:17:39 +01:00
Simon Ser
dc26908466
Fix echo PRIVMSG messages
2020-03-17 16:15:54 +01:00
Simon Ser
651e936913
Add downstream SASL support
2020-03-16 16:16:27 +01:00
Simon Ser
9b777922ae
Allow CAP command when registered
2020-03-16 15:12:46 +01:00
Simon Ser
bdfb8634e9
Log downstream messages before registration
2020-03-16 15:10:16 +01:00
Simon Ser
1241bf82aa
Protect upstreamConn.history with a lock
2020-03-16 15:08:56 +01:00
Simon Ser
af76c3868a
Add CAP support for downstream connections
2020-03-16 15:05:24 +01:00
Simon Ser
87684f7eab
Don't reply to PING when client is unregistered
2020-03-16 14:32:38 +01:00
Simon Ser
b1b519d4f9
Make downstreamConn.runUntilegistered exit with an error on EOF
2020-03-16 14:30:49 +01:00
Simon Ser
75e698f671
Echo downstream PRIVMSGs to other downstream connections
2020-03-16 14:28:45 +01:00
Simon Ser
d5db7c988f
Rename consumption to ringMessage
2020-03-16 14:05:48 +01:00
Simon Ser
3919ee2036
Per-user dispatcher goroutine
...
This allows message handlers to read upstream/downstream connection
information without causing any race condition.
References: https://todo.sr.ht/~emersion/soju/1
2020-03-16 12:44:59 +01:00
Simon Ser
cdab0dc825
Rename messages channels to outgoing
2020-03-16 11:26:54 +01:00
Simon Ser
88877f3c5a
Strip client & network name from username
2020-03-16 09:32:18 +01:00
Simon Ser
f3940117d1
Rename project to soju
2020-03-13 18:13:03 +01:00
Simon Ser
03d5600da6
Add support for SASL authentication
...
We now store SASL credentials in the database and automatically populate
them on NickServ REGISTER/IDENTIFY.
References: https://todo.sr.ht/~emersion/jounce/10
2020-03-13 15:12:44 +01:00
Simon Ser
fee8fc79c6
Add support for upstream PASS command
2020-03-13 12:06:02 +01:00
Simon Ser
85f28daf2d
Auto-save IRC networks
2020-03-12 21:28:09 +01:00
Simon Ser
0ef08dfbb5
Store NICK changes in the DB
2020-03-12 19:17:06 +01:00
Simon Ser
0c4e9b539c
Update DB on JOIN and PART
2020-03-12 18:33:03 +01:00
Simon Ser
461de13ecc
Fix nil dereference when network is specified in username
2020-03-12 18:21:41 +01:00
Simon Ser
f3656028f6
Add support for PASS to downstream
2020-03-11 19:09:32 +01:00
Simon Ser
84fe3ae255
Add SQLite database
...
Closes: https://todo.sr.ht/~emersion/jounce/9
2020-03-04 18:22:58 +01:00
Simon Ser
eacd4e6f0c
Rename network to upstreamName
2020-03-04 16:02:45 +01:00
Simon Ser
03c546e8bf
Remove unused user.getChannel, move getUpstream to user
2020-03-04 16:00:19 +01:00
Simon Ser
c22ce793a1
Allow clients to specify an upstream name in their username
2020-03-04 15:44:13 +01:00
Simon Ser
d1550a3cdb
Remove upstream prefix for outgoing MODE and PRIVMSG
...
We shouldn't set the prefix when sending these commands.
2020-03-03 15:33:21 +01:00
Simon Ser
70fcef297b
Add functions to translate between upstream and downstream names
2020-02-19 18:25:19 +01:00
Simon Ser
ef2d145d1f
Fix PING handlers, again
2020-02-18 20:40:32 +01:00
Simon Ser
d484e6e374
Properly handle PING messages
2020-02-18 17:07:58 +01:00
Simon Ser
286fb4b18c
Add a -debug flag
2020-02-18 16:31:18 +01:00
Simon Ser
9fea758956
Fix panic when closing downstream connection
2020-02-18 15:08:06 +01:00
Simon Ser
3c3f218b2b
Add upstreamConn.SendMessage
...
Allows us to change upstreamConn implementation details without updating
the whole codebase.
2020-02-17 16:17:31 +01:00
Simon Ser
70d811f5a8
Document Ring
2020-02-17 16:09:35 +01:00
Simon Ser
528c402bd0
Forward PRIVMSG coming from downstream
2020-02-17 15:56:18 +01:00
Simon Ser
9a93c56cdf
Fix issues related to Ring
...
- RingConsumer is now used directly in the goroutine responsible for
writing downstream messages. This allows the ring buffer not to be
consumed on write error.
- RingConsumer now has a channel attached. This allows PRIVMSG messages
to always use RingConsumer, instead of also directly pushing messages
to all downstream connections.
- Multiple clients with the same history name are now supported.
- Ring is now protected by a mutex
2020-02-17 15:46:29 +01:00
Simon Ser
2a43dbd71a
Add downstreamConn.writeMessages
...
This logic will become more complicated in upcoming commits.
2020-02-17 12:41:27 +01:00
Simon Ser
09dffc0f68
Abbreviate {upstream,downstream}Conn with uc and dc
...
This makes it clearer than just `c` when we manipulate both kinds at the
same time.
2020-02-17 12:36:42 +01:00
Simon Ser
0cf731aeab
Don't write to downstreamConn.messages directly
...
Use a helper function instead. This will allow us to change
downstreamConn implementation details without having to update the whole
codebase.
2020-02-17 12:27:48 +01:00
Simon Ser
7127fa325a
Add names to consumers
2020-02-07 17:35:57 +01:00
Simon Ser
fad9d820c1
Add an in-memory ring buffer
...
References: https://todo.sr.ht/~emersion/jounce/2
2020-02-07 16:43:54 +01:00
Simon Ser
69a35069ef
Handle downstream PART messages
2020-02-07 13:36:32 +01:00
Simon Ser
09a793ff9c
Handle downstream JOIN messages
2020-02-07 13:31:09 +01:00
Simon Ser
2e5395f20b
Send fake RPL_CREATED message
2020-02-07 13:23:09 +01:00