797 Commits

Author SHA1 Message Date
contact
04123f6a5b gitignore: add soju.db and soju.1
git-svn-id: file:///srv/svn/repo/suika/trunk@147 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-25 12:44:32 +00:00
contact
dd844bdefc Add support for channel keys
git-svn-id: file:///srv/svn/repo/suika/trunk@146 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-25 10:54:08 +00:00
contact
3773283aa6 Handle downstream JOIN/PART with multiple channel names
Closes: https://todo.sr.ht/~emersion/soju/19

git-svn-id: file:///srv/svn/repo/suika/trunk@145 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-25 10:32:44 +00:00
contact
1f17d1a841 Consume ring buffer for networks added on-the-fly
git-svn-id: file:///srv/svn/repo/suika/trunk@144 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-25 10:28:25 +00:00
contact
d7d76f9c25 Move upstreamConn.ring to network
This handles upstream disconnection and re-connection better.

git-svn-id: file:///srv/svn/repo/suika/trunk@143 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-25 09:53:08 +00:00
delthas
55660bef2f Add downstream self WHO and WHOIS support
git-svn-id: file:///srv/svn/repo/suika/trunk@142 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-25 08:51:22 +00:00
delthas
65bb73bb52 Add user hostname to downstream user prefix
git-svn-id: file:///srv/svn/repo/suika/trunk@141 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-25 08:48:00 +00:00
delthas
b551c53872 Add downstream NAMES support
NAMES reply for channels currently joined will be returned from cache;
requests for channels not joined will be forwarded from upstream.

git-svn-id: file:///srv/svn/repo/suika/trunk@140 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-25 08:47:26 +00:00
delthas
ae9d1ebd3f Add MODE arguments support
- Add RPL_ISUPPORT support with CHANMODES, CHANTYPES, PREFIX parsing
- Add support for channel mode state with mode arguments
- Add upstream support for RPL_UMODEIS, RPL_CHANNELMODEIS
- Request channel MODE on upstream channel JOIN
- Use sane default channel mode and channel mode types

git-svn-id: file:///srv/svn/repo/suika/trunk@139 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-25 08:40:08 +00:00
contact
0b2b5420c9 Add more details to ring buffer panics
git-svn-id: file:///srv/svn/repo/suika/trunk@138 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-24 08:22:40 +00:00
contact
913e583b44 Add user.{add,remove}Downstream
git-svn-id: file:///srv/svn/repo/suika/trunk@137 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-23 15:05:00 +00:00
contact
b360940009 Add network.upstream helper
git-svn-id: file:///srv/svn/repo/suika/trunk@136 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-21 09:24:38 +00:00
contact
c6ee21b3c6 Fix typo
git-svn-id: file:///srv/svn/repo/suika/trunk@135 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-21 07:44:03 +00:00
contact
63d9b733a9 Fix empty SASL challenge message
We were sending an empty string. We need to send "+" instead.

git-svn-id: file:///srv/svn/repo/suika/trunk@134 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-21 07:41:14 +00:00
contact
9779857f91 Drop messages on closed connections
This prevents this panic:

    panic: send on closed channel
    goroutine 9 [running]:
    git.sr.ht/~emersion/soju.(*upstreamConn).SendMessage(...)
            /home/simon/src/soju/upstream.go:866
    git.sr.ht/~emersion/soju.(*upstreamConn).handleMessage(0xc000084b40, 0xc000144680, 0x2, 0x0)
            /home/simon/src/soju/upstream.go:152 +0x62b
    git.sr.ht/~emersion/soju.(*user).run(0xc0000b8070)
            /home/simon/src/soju/user.go:144 +0x53d
    created by git.sr.ht/~emersion/soju.(*Server).Run
            /home/simon/src/soju/server.go:88 +0x286

git-svn-id: file:///srv/svn/repo/suika/trunk@133 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-21 07:29:44 +00:00
contact
a29ce6fc7d Avoid sending JOIN twice for the same channel
git-svn-id: file:///srv/svn/repo/suika/trunk@132 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-20 21:53:05 +00:00
contact
1577d3620c Move upstreamConn.history to network
git-svn-id: file:///srv/svn/repo/suika/trunk@131 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-20 21:48:17 +00:00
contact
4389f5de5b Fix deadlocks in single-upstream mode
git-svn-id: file:///srv/svn/repo/suika/trunk@130 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-20 09:42:17 +00:00
delthas
577365e189 Fix MODE downstream support
- Fix replies without client as first argument
- Replace wrong prefix check with a proper entity type check

git-svn-id: file:///srv/svn/repo/suika/trunk@129 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-20 09:11:27 +00:00
delthas
94d76ebfb4 Add WHOIS support
git-svn-id: file:///srv/svn/repo/suika/trunk@128 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-20 09:11:27 +00:00
delthas
522f2fe8a5 Add WHO support
git-svn-id: file:///srv/svn/repo/suika/trunk@127 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-19 23:29:03 +00:00
contact
af3a4050ee Add basic Makefile
git-svn-id: file:///srv/svn/repo/suika/trunk@126 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-19 14:11:43 +00:00
contact
b7f48f8766 Remove some IRCv3 constants
go-irc v3.1.2 adds some missing IRCv3 constants.

git-svn-id: file:///srv/svn/repo/suika/trunk@125 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-19 13:51:45 +00:00
contact
2030b6aefd Fix history name
dc.username contains the raw account username, not the username supplied
by the client.

git-svn-id: file:///srv/svn/repo/suika/trunk@124 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-19 13:44:49 +00:00
contact
2c31125439 readme: add ref to man page, add link to GitHub repo
git-svn-id: file:///srv/svn/repo/suika/trunk@123 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-19 13:33:49 +00:00
contact
f1d7602a37 man: fix typo
git-svn-id: file:///srv/svn/repo/suika/trunk@122 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-19 13:18:31 +00:00
contact
1137cd48d1 man: add basic man page
git-svn-id: file:///srv/svn/repo/suika/trunk@121 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-19 13:16:39 +00:00
delthas
c4fc09cea0 Add create-network bouncer service command
git-svn-id: file:///srv/svn/repo/suika/trunk@120 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-19 00:14:44 +00:00
delthas
cbb0e4e8fa Add suffixing for multi-upstream connections
git-svn-id: file:///srv/svn/repo/suika/trunk@119 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-18 23:06:48 +00:00
delthas
0b5e3e828a schema: add Network.name
git-svn-id: file:///srv/svn/repo/suika/trunk@118 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-18 23:06:48 +00:00
contact
0504ff78cf Add basic infrastructure for bouncer service
git-svn-id: file:///srv/svn/repo/suika/trunk@117 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-18 11:23:08 +00:00
contact
075fed636d ci: add builds.sr.ht manifest
git-svn-id: file:///srv/svn/repo/suika/trunk@116 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-18 09:28:58 +00:00
delthas
5bb7c8bf6d Add upstream INVITE support
git-svn-id: file:///srv/svn/repo/suika/trunk@115 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-18 09:26:25 +00:00
contact
57eaf243fa Fix typo
git-svn-id: file:///srv/svn/repo/suika/trunk@114 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-17 15:17:39 +00:00
contact
be09463daa Fix echo PRIVMSG messages
git-svn-id: file:///srv/svn/repo/suika/trunk@113 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-17 15:15:54 +00:00
contact
3edc848651 Add downstream SASL support
git-svn-id: file:///srv/svn/repo/suika/trunk@112 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-16 15:16:27 +00:00
contact
164a26f6b8 Allow CAP command when registered
git-svn-id: file:///srv/svn/repo/suika/trunk@111 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-16 14:12:46 +00:00
contact
6d755b782f Log downstream messages before registration
git-svn-id: file:///srv/svn/repo/suika/trunk@110 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-16 14:10:16 +00:00
contact
de72ae8f31 Protect upstreamConn.history with a lock
git-svn-id: file:///srv/svn/repo/suika/trunk@109 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-16 14:08:56 +00:00
contact
65f45675ec Add CAP support for downstream connections
git-svn-id: file:///srv/svn/repo/suika/trunk@108 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-16 14:05:24 +00:00
contact
b013602e14 Don't reply to PING when client is unregistered
git-svn-id: file:///srv/svn/repo/suika/trunk@107 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-16 13:32:38 +00:00
contact
656f73b959 Make downstreamConn.runUntilegistered exit with an error on EOF
git-svn-id: file:///srv/svn/repo/suika/trunk@106 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-16 13:30:49 +00:00
contact
7515b2a1da Echo downstream PRIVMSGs to other downstream connections
git-svn-id: file:///srv/svn/repo/suika/trunk@105 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-16 13:28:45 +00:00
contact
4c1c98048c Rename consumption to ringMessage
git-svn-id: file:///srv/svn/repo/suika/trunk@104 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-16 13:05:48 +00:00
contact
55f987eb29 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

git-svn-id: file:///srv/svn/repo/suika/trunk@103 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-16 11:44:59 +00:00
contact
137eef6768 Rename messages channels to outgoing
git-svn-id: file:///srv/svn/repo/suika/trunk@102 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-16 10:26:54 +00:00
contact
f169a0a35a Split user logic into its own file
git-svn-id: file:///srv/svn/repo/suika/trunk@101 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-16 10:18:41 +00:00
contact
80d5aefb7b Strip client & network name from username
git-svn-id: file:///srv/svn/repo/suika/trunk@100 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-16 08:32:18 +00:00
contact
b6135cf1cb Add sojuctl to .gitignore
git-svn-id: file:///srv/svn/repo/suika/trunk@99 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-13 17:14:14 +00:00
contact
1a9d6a58a0 Rename project to soju
git-svn-id: file:///srv/svn/repo/suika/trunk@98 f0ae65fe-ee39-954e-97ec-027ff2717ef4
2020-03-13 17:13:03 +00:00