Simon Ser
ebe209b3a4
upstream: rename variables to clear up target confusion
...
"target" is documented by the spec to be the first argument of the
PRIVMSG. Use a more explicit name for the message store destination.
2022-06-24 13:29:56 +02:00
Simon Ser
27b8547572
database/sqlite: add migration for WebPushSubscription.user
...
This should be enough to fixup the user column for subscriptions
with a network specified.
2022-06-16 19:46:59 +02:00
Simon Ser
f0db261fc0
database: add missing user column to WebPushSubscription table
...
Some WebPushSubscription entries aren't tried to a network, in
which case the "network" column is NULL. But then all users share
the same row. Oops.
Fortunately network-less subscriptions aren't used for anything
yet, they're just stored. So the impact should be minimal.
2022-06-16 19:33:39 +02:00
Simon Ser
de0992d41e
downstream: fix panic in findWebPushSubscription for unbound conns
...
This code has been missed when adding webpush support for downstream
connections without an upstream network bound.
2022-06-15 09:09:28 +02:00
Simon Ser
3863b8cb6b
Add webpush extension
...
References: https://github.com/ircv3/ircv3-specifications/pull/471
Co-authored-by: delthas <delthas@dille.cc>
2022-06-14 16:16:12 +02:00
jesopo
804d685ab2
contrib/clients: correct comment about catgirl
2022-06-13 15:42:53 +02:00
Simon Ser
8cbaae2b90
Upgrade dependencies
2022-06-13 11:11:15 +02:00
Simon Ser
fe40c51ff0
database: add User.{Check,Set}Password
2022-06-08 13:27:33 +02:00
Simon Ser
09f2cf8489
Don't provide name in channel casemapMap Set and ForEach
...
The name is already provided in the struct.
2022-06-06 10:05:31 +02:00
Simon Ser
657e25b25c
Make casemapMap more type-safe
...
In addition to a type-safe getter, also define type-safe setters
and iterators.
References: https://lists.sr.ht/~emersion/soju-dev/patches/32777
2022-06-06 09:58:39 +02:00
Simon Ser
c8f9728ff6
Drop size arg from newCasemapMap
...
It's unused.
2022-06-06 09:23:17 +02:00
Simon Ser
4e40b498b1
Drop casemapMap.OriginalKey
...
It's unused.
2022-06-06 09:20:17 +02:00
Simon Ser
22b235602b
Add soju.im/account-required
...
References: https://github.com/ircv3/ircv3-specifications/pull/492
2022-06-04 10:52:28 +02:00
Simon Ser
3c5e603192
Remove bridge.go
...
All of its functions belong to downstream.go.
2022-05-30 09:51:36 +02:00
Simon Ser
289a4e118a
Move batch struct to upstream.go
2022-05-30 09:45:40 +02:00
Simon Ser
da8f626e51
xirc: add GenerateSASL
2022-05-30 09:41:47 +02:00
Simon Ser
f9c4ba636f
xirc: move over Membership
2022-05-30 09:12:28 +02:00
Simon Ser
f3b06f4236
xirc: move over WHOX helpers
2022-05-29 18:33:29 +02:00
Simon Ser
9b37bd2eaa
xirc: move over CapRegistry
2022-05-29 18:33:22 +02:00
Simon Ser
fa6f52ed08
xirc: encode tokens in GenerateIsupport
2022-05-29 18:24:10 +02:00
Simon Ser
c10d382a7d
xirfc: move over message generation functions
2022-05-29 17:57:21 +02:00
Simon Ser
997fe723f0
xirc: move ChannelStatus over
2022-05-29 17:28:25 +02:00
Simon Ser
4af7a1b8e5
Rename join to generateJoin
...
For consistency with other functions.
2022-05-09 17:20:17 +02:00
Simon Ser
c50fb4a26d
xirc: move command constants over
2022-05-09 17:18:51 +02:00
Simon Ser
e2e232fa9c
config: add message-store memory
...
The old way to do this was `message-store fs ""`, which is
misleading.
2022-05-09 16:59:27 +02:00
Simon Ser
80ed0d2a6c
Rename "log" config directive to "message-store"
...
This is more explicit and removes the ambiguity with error logging.
2022-05-09 16:41:41 +02:00
Simon Ser
95db42e645
Move identd to separate package
2022-05-09 16:36:54 +02:00
Simon Ser
620a8789b0
Add msgstore package
2022-05-09 16:25:57 +02:00
Simon Ser
b92afa7cca
Introduce an xirc package
2022-05-09 16:15:00 +02:00
Simon Ser
89412187d4
msgstore: rename searchMessageOptions, export fields
...
Preparation for splitting msgstore into a separate package.
2022-05-09 15:44:41 +02:00
Simon Ser
f508d36c38
msgstore: add loadMessageOptions
...
A struct containing common parameters for all messageStore.Load*
functions returning messages.
2022-05-09 15:36:39 +02:00
Simon Ser
3a7dee8128
Introduce a database package
2022-05-09 15:08:04 +02:00
Simon Ser
27f21eab94
upstream: fix panic in isChannel
...
Fixes the following:
goroutine 4380762 [running]:
runtime/debug.Stack()
runtime/debug/stack.go:24 +0x65
git.sr.ht/~emersion/soju.(*Server)addUserLocked.func1.1()
git.sr.ht/~emersion/soju/server.go:318 +0x66
panic({0x563f090c4460, 0xc002bff998})
runtime/panic.go:1038 +0x215
git.sr.ht/~emersion/soju.(*upstreamConn).isChannel(...)
git.sr.ht/~emersion/soju/upstream.go:288
git.sr.ht/~emersion/soju.(*downstreamConn).handleMessageRegistered(0xc00c23a000, {0x563f0910eb20, 0xc0027539e0}, 0xc01b8d6240)
git.sr.ht/~emersion/soju/downstream.go:1836 +0xd4ec
git.s.ht/~emersion/soju.(*downstreamConn).handleMessage(0xc00c3a000, {0x563f0910eae8, 0xc000026058}, 0xc01b8d6240)
git.sr.ht/~emersion/soju/downstream.go:697 +0xde
git.sr.ht/~emersion/soju.(*user).run(0xc00be4a0b0)
git.sr.ht/~emersion/soju/user.go:675 +0xbe5
git.sr.ht/~emersion/soju.(*Server).addUserLocked.func1()
git.sr.ht/~emersion/soju/server.go:328 +0x70
2022-05-07 09:28:53 +02:00
Brett Cornwall
9d188a7cb6
doc/getting-started: Fix simple misspelling.
2022-05-05 18:53:15 +02:00
Simon Ser
09d581dba4
db_sqlite: drop mutex
...
See [1] for details.
[1]: https://github.com/mattn/go-sqlite3/issues/209
2022-05-03 23:17:56 +02:00
Simon Ser
d37f946e83
downstream: fix setting tls=0 in bouncer-networks
...
The old code resulted in URLs like "irc+insecure://0".
2022-05-03 10:43:02 +02:00
Simon Ser
23f94a5c6e
doc/ext/bouncer-networks: remove BOUNCER BIND auth restriction
...
We now stash the network ID until connection registration completes.
2022-05-03 09:32:21 +02:00
Simon Ser
d321fcd9f0
upstream: fix missing WHOIS in abortPendingCommands
...
Fixes the following panic:
2022/05/03 08:05:32 panic serving user "asdf": Unsupported pending command "WHOIS"
goroutine 15 [running]:
runtime/debug.Stack()
/opt/go/src/runtime/debug/stack.go:24 +0x65
git.sr.ht/~emersion/soju.(*Server).addUserLocked.func1.1()
~/soju/server.go:317 +0x5d
panic({0xa18da0, 0x6815bf10})
/opt/go/src/runtime/panic.go:838 +0x207
git.sr.ht/~emersion/soju.(*upstreamConn).abortPendingCommands(0x6811c9c0)
~/soju/upstream.go:338 +0x953
git.sr.ht/~emersion/soju.(*user).handleUpstreamDisconnected(0x680b7080, 0x6811c9c0)
~/soju/user.go:744 +0x6d
git.sr.ht/~emersion/soju.(*user).updateNetwork(0x680b7080, {0xb99a00, 0x684690e0}, 0x681343c0)
~/soju/user.go:936 +0x387
git.sr.ht/~emersion/soju.handleServiceNetworkUpdate({0xb99a00, 0x684690e0}, 0x68116000, {0x681b8a20?, 0x40429108?, 0x10?})
~/soju/service.go:590 +0x14f
git.sr.ht/~emersion/soju.handleServicePRIVMSG({0xb99a00, 0x684690e0}, 0x68116000, {0x680af5d5?, 0x1?})
~/soju/service.go:146 +0x7df
git.sr.ht/~emersion/soju.(*downstreamConn).handleMessageRegistered(0x68116000, {0xb99a00, 0x684690e0}, 0x681b8940)
~/soju/downstream.go:2503 +0x9e9e
git.sr.ht/~emersion/soju.(*downstreamConn).handleMessage(0x68116000, {0xb999c8?, 0x680240a0?}, 0x681b8940)
~/soju/downstream.go:727 +0xde
git.sr.ht/~emersion/soju.(*user).run(0x680b7080)
~/soju/user.go:690 +0xe05
git.sr.ht/~emersion/soju.(*Server).addUserLocked.func1()
~/soju/server.go:327 +0x70
created by git.sr.ht/~emersion/soju.(*Server).addUserLocked
~/soju/server.go:314 +0x178
2022-05-03 08:33:20 +02:00
Simon Ser
48ec515120
doc/ext/bouncer-networks: specify how attributes are cleared in notifications
...
We send an "error" attribute without a value to clear it, for instance.
2022-05-01 19:37:36 +02:00
Simon Ser
2b9e23c278
readme: restrict CI badge to master branch
2022-04-28 14:13:13 +02:00
Simon Ser
2e5474d05a
downstream: improve error message on unrecognized message
2022-04-27 19:05:01 +02:00
delthas
5ae1ec5381
Fix network.forEachDownstream exiting on first non-match
...
This fixes a serious bug where we stop executing forEachDownstream on
the first downstream that does not match the network. Instead we want to
simply continue; it's a basic filter.
2022-04-24 18:52:36 +02:00
Frank Steinborn
2a0cc57e3a
contrib/clients: Add information about irssi
...
Adds information about how to connect irssi to a soju instance,
single-upsteam mode is assumed.
2022-04-16 08:06:20 +02:00
Simon Ser
42b8dac44e
Add user.notifyBouncerNetworkState
...
DRY.
2022-04-15 10:41:38 +02:00
Simon Ser
f3932ab500
Drop user.forEachDownstream
...
It's just a for loop.
2022-04-15 10:32:28 +02:00
Simon Ser
a6636a9b0d
Add TODO for upstreamConn.register race
2022-04-15 09:53:30 +02:00
Simon Ser
9fb789ee26
Add timeout for upstream connection registration
2022-04-15 09:49:19 +02:00
Simon Ser
77460dfb97
Split upstream connection handling to separate function
...
Just a refactoring, no functional change.
2022-04-15 09:37:43 +02:00
Simon Ser
2ba13fdefc
upstream: use context to set connectToUpstream timeout
...
This allows the timeout to apply to the whole sequence of
operations, as opposed to just Dial.
2022-04-14 19:42:02 +02:00
delthas
b790db1423
Keep batch tag for downstreams with batch cap
...
On upstreams without message-tags support, we do not advertise
message-tags anymore. Still, we want to send the batch tag when the
client explicitly requested it.
This fixes a critical issue where we drop the batch tag on chathistory
messages for upstreams that do not support message-tags.
2022-04-12 17:58:36 +02:00