787 Commits

Author SHA1 Message Date
contact
7a61e91057 schema: add UNIQUE constraints
git-svn-id: file:///srv/svn/repo/suika/trunk@87 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-12 14:33:49 +00:00
contact
4b38c644b2 schema: make User.password NOT NULL
git-svn-id: file:///srv/svn/repo/suika/trunk@86 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-12 14:23:46 +00:00
contact
ebad23e080 Add support for PASS to downstream
git-svn-id: file:///srv/svn/repo/suika/trunk@85 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-11 18:09:32 +00:00
contact
79f3b73eab cmd/jouncectl: new command
Allows to create users.

git-svn-id: file:///srv/svn/repo/suika/trunk@84 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-11 18:01:03 +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
b6d2338737 Use a RWMutex for DB
git-svn-id: file:///srv/svn/repo/suika/trunk@81 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-04 19:15:38 +00:00
contact
9de66e9cb0 readme: pipe commands into sqlite3 instead of using -init
This makes it so sqlite3 exits after executing the file.

git-svn-id: file:///srv/svn/repo/suika/trunk@80 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-04 19:13:20 +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
4d15bbafe3 readme: add instructions to initialize database
git-svn-id: file:///srv/svn/repo/suika/trunk@78 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-04 17:27:33 +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
b8a8be5d01 Rename network to upstreamName
git-svn-id: file:///srv/svn/repo/suika/trunk@76 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-04 15:02:45 +00:00
contact
1d0f4c3577 Remove unused user.getChannel, move getUpstream to user
git-svn-id: file:///srv/svn/repo/suika/trunk@75 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-04 15:00:19 +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
0b985cd81c Retry connecting to upstream servers
Rate-limit retries in case connecting immediately fails.

git-svn-id: file:///srv/svn/repo/suika/trunk@71 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-03 14:26:19 +00:00
contact
b0ceb14bd4 cmd/jounce: fix non-TLS listener address
git-svn-id: file:///srv/svn/repo/suika/trunk@70 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-03 14:15:57 +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
5c79834aeb Don't leave connections half-opened
git-svn-id: file:///srv/svn/repo/suika/trunk@65 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-18 15:54:06 +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
c88867e28f Fix panic when closing downstream connection
git-svn-id: file:///srv/svn/repo/suika/trunk@63 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-18 14:08:06 +00:00
contact
75a8a58a44 Add config file
git-svn-id: file:///srv/svn/repo/suika/trunk@62 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-18 13:10:23 +00:00
contact
c6c6b9476d Add CLI flags for listening address and hostname
git-svn-id: file:///srv/svn/repo/suika/trunk@61 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-17 15:25:09 +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
48ac93422a Document Ring
git-svn-id: file:///srv/svn/repo/suika/trunk@59 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-17 15:09:35 +00:00
contact
e3ecbd8410 Forward PRIVMSG coming from downstream
git-svn-id: file:///srv/svn/repo/suika/trunk@58 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-17 14:56:18 +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
68300060dc Add downstreamConn.writeMessages
This logic will become more complicated in upcoming commits.

git-svn-id: file:///srv/svn/repo/suika/trunk@56 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-17 11:41:27 +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
c29b1ebe54 readme: add some high-level goals, add contributing links
git-svn-id: file:///srv/svn/repo/suika/trunk@53 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-17 11:19:27 +00:00
contact
cef8fa0e97 Switch license to AGPLv3
git-svn-id: file:///srv/svn/repo/suika/trunk@52 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 16:41:51 +00:00
contact
155c149e56 Add names to consumers
git-svn-id: file:///srv/svn/repo/suika/trunk@51 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 16:35:57 +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
4c94bee6f5 Handle downstream PART messages
git-svn-id: file:///srv/svn/repo/suika/trunk@49 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 12:36:32 +00:00
contact
c0c85ba8bf Handle downstream JOIN messages
git-svn-id: file:///srv/svn/repo/suika/trunk@48 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 12:31:09 +00:00
contact
e1d601ffef Send fake RPL_CREATED message
git-svn-id: file:///srv/svn/repo/suika/trunk@47 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 12:23:09 +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
d119170106 Skip unregistered and closed upstream connections
git-svn-id: file:///srv/svn/repo/suika/trunk@41 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 11:02:19 +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
b5b0ce6144 Add user.forEachUpstream
git-svn-id: file:///srv/svn/repo/suika/trunk@39 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 10:46:44 +00:00
contact
7afd236470 Add Server.getUser
git-svn-id: file:///srv/svn/repo/suika/trunk@38 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-02-07 10:39:56 +00:00