soju v0.4.0
Highlights for this release:
- Add support for the new soju.im/read extension
- Add support for proxying sasl and draft/account-registration after
connection registration
- Improved BouncerServ commands: make network argument optional, add
"sasl status"
- Fallback to alternative nick if unavailable (and use MONITOR to roll
back to the preferred nick as soon as possible)
- Add exponential backoff when re-connecting to upstream servers
Full commit history below.
Chris Howey (1):
bump required go version to 1.15
Simon Ser (76):
Add missing account-notify to permanentUpstreamCaps
Abort SASL if in-progress while completing registration
Use RPL_LOGGEDIN/OUT to mirror upstream status
Send RPL_LOGGEDIN with bouncer account in multi-upstream mode
Add support for post-connection-registration upstream SASL auth
Remove sasl cap after registration if network doesn't support it
Return more descriptive auth failure errors
downstream: improve unmarshalEntityNetwork error message
doc/soju.1: add `network create` example
Add support for draft/account-registration proxying
Add "sasl status" command
Validate address in user.checkNetwork
Add context to connectToUpstream
Fix upstream gauge metric
Add soju_upstream_connect_errors_total metric
Add exponential backoff when re-connecting to upstream
Don't retry connecting on permanent failure
Mark ACCOUNT_REQUIRED error as permanent connection failure
Cancel pending commands on downstream disconnect
Add context to upstreamConn.handleMessage
Add context to network.storeClientDeliveryReceipts
Use golang.org/x/time/rate
Avoid forwarding MONITOR requests if upstream doesn't support it
Fallback to alt nick
Read nickname from RPL_WELCOME
Stop incrementing hopcount in RPL_WHOREPLY
Remove Logger.Print
Add Logger.Debugf
Downgrade conn log messages to debug
Improve msgStore.Append log message wording
Add username to downstreamConn log messages
Disallow ',' in nicknames
Use more descriptive errors when aborting pending commands
Improve error message when downstream doesn't authenticate
Use dc.nick instead of "*" for RPL_* messages
service: send summary when executing "server notice"
server: cleanup user in defer
Add context to {conn,upstreamConn}.SendMessage
Don't forward duplicate JOIN commands
Block RPL_{CREATIONTIME,TOPICWHOTIME} for detached channels
Add support for downstream multi-line AUTHENTICATE commands
Handle upstream multi-line SASL
Add context to upstreamConn.handleCapAck
Don't send RPL_NOTOPIC on JOIN
Retry on temporary net.Listener failure
Fix incorrect listen addr in error message
Drop user.forEachNetwork
Ensure consistent network ordering
Fix capitalization of handleServiceSASLStatus
service: switch to -network flag for certfp and sasl commands
service: make name arg optional for network commands
Forbid empty and flag-looking network names
db_postgres: use enum for sasl_mechanism
makefile: switch to BSD/GNU make
Add context to upstreamConn.runUntilRegistered
Add context to upstreamConn.register
Refactor generateWHOXReply
Fix flags variable name in RPL_WHOREPLY handler
doc: move read spec to ext/
Ignore READ commands for service
Introduce formatServerTime
irc: add isHighlight tests
irc: simplify isHighlight
msgstore_fs: fix direct message targets
downstream: panic when registering twice
downstream: be less strict when picking up client name
downstream: fail on client or network name mismatch
Upgrade dependencies
downstream: fix network name msimatch check being too strict
downstream: re-format illegalNickChars doc comment
downstream: disallow '.' in nicknames
doc/ext: add README
contrib/clients: warn about catgirl
contrib/clients: add goguma
db: allow registering multiple metrics collectors
db_postgres: report network metrics with hostname label
Theodor Thornhill (1):
contrib/clients: Add information about emacs irc clients
delthas (2):
Fix echo-message for TAGMSG
Add support for the wip soju.im/read capability and READ command