243 Commits

Author SHA1 Message Date
contact
68661c503a Update dependencies
go-irc v3.1.1 contains a breaking change.

References: https://github.com/go-irc/irc/issues/76

git-svn-id: file:///srv/svn/repo/suika/trunk@96 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-13 15:18:53 +00:00
contact
68b7b4461c 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

git-svn-id: file:///srv/svn/repo/suika/trunk@95 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-13 14:12:44 +00:00
contact
fb60233780 Add support for upstream PASS command
git-svn-id: file:///srv/svn/repo/suika/trunk@93 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-13 11:06:02 +00:00
contact
07c41b00eb Add upstream CAP LS support
git-svn-id: file:///srv/svn/repo/suika/trunk@92 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-13 10:26:43 +00:00
contact
ff387f021a Pass-through QUIT messages
git-svn-id: file:///srv/svn/repo/suika/trunk@83 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-06 17:51:11 +00:00
contact
1037541a30 Pass-through NICK messages for other users
git-svn-id: file:///srv/svn/repo/suika/trunk@82 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-06 17:43:56 +00:00
contact
c75d825938 go fmt
git-svn-id: file:///srv/svn/repo/suika/trunk@79 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-04 18:23:24 +00:00
contact
18c962e5c0 Add SQLite database
Closes: https://todo.sr.ht/~emersion/jounce/9

git-svn-id: file:///srv/svn/repo/suika/trunk@77 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-04 17:22:58 +00:00
contact
89c458b92c Fix TOPIC parsing, broadcast to downstream clients
git-svn-id: file:///srv/svn/repo/suika/trunk@74 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-04 14:45:14 +00:00
contact
47ec2ff976 Allow clients to specify an upstream name in their username
git-svn-id: file:///srv/svn/repo/suika/trunk@73 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-04 14:44:13 +00:00
contact
7c488409a2 Remove upstream prefix for outgoing MODE and PRIVMSG
We shouldn't set the prefix when sending these commands.

git-svn-id: file:///srv/svn/repo/suika/trunk@72 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-03 14:33:21 +00:00
contact
c52d54edc7 Add functions to translate between upstream and downstream names
git-svn-id: file:///srv/svn/repo/suika/trunk@69 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-19 17:25:19 +00:00
contact
81ffb3748b Fix PING handlers, again
git-svn-id: file:///srv/svn/repo/suika/trunk@68 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-18 19:40:32 +00:00
contact
9edf0cde7e Enable TCP keep-alive on all connections
git-svn-id: file:///srv/svn/repo/suika/trunk@67 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-18 16:26:17 +00:00
contact
e6fad26ac1 Properly handle PING messages
git-svn-id: file:///srv/svn/repo/suika/trunk@66 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-18 16:07:58 +00:00
contact
d9e356a580 Add a -debug flag
git-svn-id: file:///srv/svn/repo/suika/trunk@64 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-18 15:31:18 +00:00
contact
2efaeb272a Add upstreamConn.SendMessage
Allows us to change upstreamConn implementation details without updating
the whole codebase.

git-svn-id: file:///srv/svn/repo/suika/trunk@60 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-17 15:17:31 +00:00
contact
c326b2708f 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

git-svn-id: file:///srv/svn/repo/suika/trunk@57 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-17 14:46:29 +00:00
contact
6c9fb7125b Abbreviate {upstream,downstream}Conn with uc and dc
This makes it clearer than just `c` when we manipulate both kinds at the
same time.

git-svn-id: file:///srv/svn/repo/suika/trunk@55 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-17 11:36:42 +00:00
contact
b6dfb5b24a 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.

git-svn-id: file:///srv/svn/repo/suika/trunk@54 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-17 11:27:48 +00:00
contact
64dcb3b383 Add an in-memory ring buffer
References: https://todo.sr.ht/~emersion/jounce/2

git-svn-id: file:///srv/svn/repo/suika/trunk@50 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 15:43:54 +00:00
contact
41b2a11935 Handle downstream MODE messages
git-svn-id: file:///srv/svn/repo/suika/trunk@46 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 12:08:27 +00:00
contact
a9bec2045a Close connection from writer goroutine
Connections were being closed from the reader goroutine, causing issues
when sending messages and immediately closing the connection.

git-svn-id: file:///srv/svn/repo/suika/trunk@45 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 11:42:24 +00:00
contact
6f89a1e0f5 Add upstreamConn.register
git-svn-id: file:///srv/svn/repo/suika/trunk@44 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 11:37:44 +00:00
contact
16dd0965fb Add parseMessageParams helper
git-svn-id: file:///srv/svn/repo/suika/trunk@43 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 11:36:02 +00:00
contact
fd5b120726 Allow changing nickname
git-svn-id: file:///srv/svn/repo/suika/trunk@42 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 11:19:42 +00:00
contact
17d85a3a9e Add user.forEachDownstream
git-svn-id: file:///srv/svn/repo/suika/trunk@40 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 10:56:36 +00:00
contact
08c05383eb Per-user connections
git-svn-id: file:///srv/svn/repo/suika/trunk@37 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 10:36:42 +00:00
contact
7fb28b65f8 Forward PRIVMSG messages
git-svn-id: file:///srv/svn/repo/suika/trunk@36 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 10:07:01 +00:00
contact
e0e69d10b7 Handle channel mode changes
git-svn-id: file:///srv/svn/repo/suika/trunk@35 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 10:01:53 +00:00
contact
5c2f2af4ac Handle third-party JOIN and PART messages
git-svn-id: file:///srv/svn/repo/suika/trunk@34 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 09:54:03 +00:00
contact
f12f2137b1 Use a dedicated goroutine to write upstream messages
git-svn-id: file:///srv/svn/repo/suika/trunk@33 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-06 21:46:46 +00:00
contact
4f2a8d542a Forward channel information
git-svn-id: file:///srv/svn/repo/suika/trunk@27 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-06 21:19:31 +00:00
contact
8fecd67730 Mark channel info as complete on RPL_ENDOFNAMES
git-svn-id: file:///srv/svn/repo/suika/trunk@25 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-06 20:43:22 +00:00
contact
fb1c5c5d02 Allow Server to have access to upstreamConn
git-svn-id: file:///srv/svn/repo/suika/trunk@23 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-06 20:20:22 +00:00
contact
762ec87595 Add per-upstream logger
git-svn-id: file:///srv/svn/repo/suika/trunk@21 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-06 19:26:03 +00:00
contact
6b28c42796 Split IRC helpers to separate file
git-svn-id: file:///srv/svn/repo/suika/trunk@20 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-06 18:24:32 +00:00
contact
1ce61f3942 Join channels on upstream servers
git-svn-id: file:///srv/svn/repo/suika/trunk@19 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-06 18:22:04 +00:00
contact
7a654da242 Handle NOTICE from upstream servers
git-svn-id: file:///srv/svn/repo/suika/trunk@18 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-06 17:10:13 +00:00
contact
6f73e3bdf9 Handle MODE messages from upstream servers
git-svn-id: file:///srv/svn/repo/suika/trunk@17 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-06 17:07:35 +00:00
contact
d360f10590 Handle upstream RPL_MYINFO messages
git-svn-id: file:///srv/svn/repo/suika/trunk@16 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-06 16:04:49 +00:00
contact
5d8a9e5f21 Ignore some upstream messages
git-svn-id: file:///srv/svn/repo/suika/trunk@14 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-06 15:39:09 +00:00
contact
d1ab250d9d Split downstram and upstream code into separate files
git-svn-id: file:///srv/svn/repo/suika/trunk@13 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-06 15:18:19 +00:00