~emersion/soju

server: add metric for goroutine panics

This is useful to setup an alert when a panic occurs.
Upgrade dependencies
downstream: improve SASL error logging
msgstore/znclog: fix error message

err may be nil.

Fixes: 2b2a2fd4798d ("msgstore/znclog: fix panic on malformed input line")
msgstore/znclog: fix panic on malformed input line

If the line is "[01:02:03]" without a trailing space, we trip on
a "slice bounds out of range" panic.

Closes: https://todo.sr.ht/~emersion/soju/214
downstream: fix nick in auth error message

We were always printing "*" here.
Add CHATHISTORY test
Rename Config.Log{Driver,Path} to MsgStore
service: reject params for commands that don't take any

We were already rejecting extraneous params for commands that take
one or more.
Use database.GetNick in network.isHighlight

The network nickname can be empty, and defaults to the global nick
setting.
Panic if isHighlight is called with empty nick

Let's make sure callers never do this. We'd go into an infinite
loop previously.
database/sqlite: fix missing argument in DeleteUser
doc/packaging: add section about binding to privileged ports
contrib/systemd: add AmbientCapabilities=CAP_NET_BIND_SERVICE

soju needs to bind to port 113 for identd.
downstream: pass context to SendMessage

Just like upstream does.
upstream: introduce upstreamConn.forwardMessage
downstream: error out if SASL PLAIN identity is specified
downstream: add support for ANONYMOUS SASL auth

This clears any saved SASL credentials.

Closes: https://todo.sr.ht/~emersion/soju/198
downstream: rename downstreamRegistration.password to pass

This is more descriptive.
Stop setting *user in downstreamConn.register

Set it in downstreamConn.welcome instead. Makes it clearer that it
must not be accessed before welcome is called (because it can only
be accessed from the user goroutine).
Next