ref: 0f6bac30b894b4a562f72ccffdaa0411b6ac74f3 soju/doc d---------
cmd/soju: allow specifying -listen multiple times

Closes: https://todo.sr.ht/~emersion/soju/67
Reload TLS certs on SIGHUP

References: https://todo.sr.ht/~emersion/soju/42
Add Unix socket listener

Closes: https://todo.sr.ht/~emersion/soju/51
service: Introduce `channel update`

This adds the `channel update` service command, which is used to set the
auto-detach, auto-reattach, and message relaying settings of a channel.

Of note is that currently the parser parses `#` as a comment, which
means any `channel update #foo ...` will actually need to be escaped to
`channel update "#foo" ...`
Don't accept any IP as a proxy by default

It's too easy to setup a reverse proxy which doesn't support the PROXY
protocol, or lets the X-Forwarded-For header fields pass through.
Disable this by default.

To restore the previous behaviour, add `accept-proxy-ip localhost` to
the config file.
doc: add ident server to man page
doc: fix typo in man page
Add accept-proxy-ip config directive

This allows to set the list of IPs allowed to act as a proxy. This is
only used for WebSockets right now, but will be expanded to TCP as well
once the PROXY protocol is supported.
Change unix:// to irc+unix://

When Unix socket support will be added for listeners, unix:// will be
ambiguous. It won't be clear whether to setup an IRC server, or some
other kind of server (e.g. identd).

unix:// is still recognized to avoid breaking existing DBs.
doc: add example config file in man page
doc: mention SASL EXTERNAL in the CertFP docs
Rename `certfp reset` to `sasl reset`

And make it reset all SASL credentials.
Add a `sasl set-plain` command

This allows to manually set the SASL credentials for a network.
doc: document the network update command
Add support for upstream Unix socket connections

References: https://todo.sr.ht/~emersion/soju/51
docs: Fix manpage syntax
Add support for the user create admin service command

This adds support for user create, a new service command only accessible
to admin users. This lets users create other users on the fly and makes
soju start the user routine immediately; unlike sojuctl which currently
requires closing soju, creating the user, and starting soju again.
Add support for WebSocket connections

WebSocket connections allow web-based clients to connect to IRC. This
commit implements the WebSocket sub-protocol as specified by the pending
IRCv3 proposal [1].

WebSocket listeners can now be set up via a "wss" protocol in the
`listen` directive. The new `http-origin` directive allows the CORS
allowed origins to be configured.

[1]: https://github.com/ircv3/ircv3-specifications/pull/342
doc: update URL to sr.ht hub in man page
doc: add missing change-password service command