Tags: emersion/soju
Tags
soju v0.9.0
Calvin Lee (1):
doc/ext/bouncer-networks: fix typo in ADDNETWORK example
Conrad Hoffmann (1):
user: fix goroutine leak on upstream error
John Regan (3):
postgres: optimize queries for large message stores
postgres: simplify nested queries
postgres: remove some uneeded table aliases
Kirill Primak (1):
Add support for irc://, ws://, and http:// listening URIs
Shivaram Lingamneni (1):
downstream: use Dialer to block Web push to internal IPs
Simon Ser (32):
downstream: add ACCOUNTEXTBAN to ISUPPORT passthrough list
Remove remaining comments about multi-upstream mode
Upgrade dependencies
downstream: sanity check Web push endpoint
downstream: set LINELEN for bouncer connections
downstream: fix missing client arg in two JOIN errors
cmd/sojudb: add note about interactions with soju daemon
downstream: send extended-join params for self-JOIN messages
downstream: handle ircError in downstreamConn.register
Upgrade dependencies
database/sqlite: enable foreign keys
database: enable WAL for SQLite
config: bail out if a source is given when a driver doesn't need it
database/sqlite: set options for modernc build
doc: document HTTP endpoints
doc/file-uploads: new article
upstream: don't send push notifications for TAGMSG
cmd/soju: close HTTP servers on shutdown
Use HTTPS URL for Web Push subscriber
Switch to new go-scfg upstream
doc/ext/webpush: add examples
Upgrade dependencies
cmd/sojuctl: don't print timestamp in log messages
service: drop some angle-brackets for fixed choice options help
service: print less confusing error when -h/-help is used
service: print full help command when handling -h/-help
config: set default message-store to db
doc: mention manual reconnection after certfp/sasl service commands
db: create indexes for foreign keys
database: move migrations to a separate file
contrib: print network address when name is unset
doc/ext/filehost: add examples
alexpdp7 (1):
Update Gamja and Goguma links
delthas (24):
Make max-user-networks a limit of enabled networks
Add per-user max-networks limit
fileupload: Fail early on file too large
Enable user impersonation with SASL
Run user run commands as an admin
Enable using unix://drive:/path on Windows
fileupload: Allow previewing uploaded media files
fileupload: Allow previewing PDFs without downloading them
Prevent non-admin users from adding Unix socket networks
service: Fix race condition on user run
Add an auth HTTP backend
Fix creating users with 0 max networks by default
fileupload: Add an http backend
Support soju.im/SAFERATE ISUPPORT
database: Do not index ANSI colors in the message text
service: Add channel create
Enable using both a plain & an oauth auth backend at once
fileupload: Forward HTTP store response on error
Fix attempting to store last message ID with no backlog clients
service: add server debug
downstream: Fix connecting with explicit network on non-admin users
Add support for channel pinned/muted status through METADATA
Fix build error when disabling SQLite
Fix panic on pin/mute of service on downstream without network
hexadecimalDinosaur (1):
Add Halloy client
pips (1):
docs(contrib): Add relayd tls configuration
soju v0.8.2
Conrad Hoffmann (2):
conn: avoid deadlock on shutdown
upstream: fix accidental variable shadowing
James Reynolds (1):
upstream: prevent notifications that don't cause messages
Prototyped (1):
contrib/znc-import: recommend using sojudb for changing user passwords
Simon Ser (3):
Revert "conn: fix goroutine leak"
conn: rework concurrency logic
server: close admin socket on CAP/NICK/USER/PASS
Tim Culverhouse (1):
deps: replace nhooyr.io/websocket with github.com/coder/websocket
soju v0.8.1
Conrad Hoffmann (1):
conn: fix goroutine leak
Gregory Anders (1):
Fix channel membership prefixes in cached WHO replies
Krystian Chachuła (1):
Set IRC, WS and HTTP Unix sockets' mode to 775
Simon Ser (12):
Upgrade dependencies
doc: document username argument for "user status"
xirc: fix chunking in GenerateSASL
downstream: fix WHO membership prefix order without server-specific flags
doc: use openssl -verify_quiet instead of discarding stderr
Migrate to Codeberg
contrib/clients: remove note about chat.sr.ht
downstream: drop TODO about WHOX mask2
downstream: reflect AWAY status in self-WHO reply without upstream
Stop dereferencing *conn
conn: return net.ErrClosed in conn.Close
conn: document conn.ReadMessage
delthas (1):
service: user status: accept username filter
soju v0.8.0
This release contains the following new features:
- Support for a new file-upload IRC extension, to allow clients to
upload files to the bouncer. The extension is disabled by default and
requires an HTTP listener to be set up.
- Unix domain sockets are now supported for HTTP and WebSocket listeners.
- Round-robien DNS resolution is used when per-user IP addresses are set
up, to better spread load for larger bouncer deployments.
- Highlights are now ignored when they appear inside a URL.
Full commit history below.
Alex McGrath (1):
fileupload: add CORS header fields
Egor (1):
Add unix domain socket listeners for HTTP and WS
Henrique Dias (1):
Upgrade to go-sqlite3 to fix musl build
Moritz Poldrack (2):
Fix crash on start when file-upload is disabled
doc: add documentation for the file-upload key
Simon Ser (43):
doc/man: add note that memory message store is basic
Add .b4-config
contrib/certbot: new document
contrib/tlstunnel: new document
database: move schema into separate file
contrib/certbot: set -eu in renewal hook
server: fix malformed Web Push subscriber URI
downstream: use fresh context to send timeout errors
Add conn.Shutdown
upstream: consoldate TCP dial into function
config: use scfg unmarshaler
Add https:// and http+insecure:// listeners
cmd/soju: add withDefaultPort helper
config: fix MaxUserNetworks default value
service: don't send PART if not joined in "channel delete"
doc/per-user-ip: fix subnet length in ip route command
Upgrade dependencies
doc/ext/bouncer-networks: drop work-in-progress disclaimer
Add support for file uploads
Add http-ingress config directive
doc/ext/filehost: fix heading level
downstream: fix FILEHOST endpoint
fileupload: serve select MIME types as inline
doc: note that file uploads require an HTTP listener
config: validate http-origin patterns
Upgrade dependencies
Wire up server logger to testing package
Ignore highlights in URLs
fileupload: append ext to filename if missing
fileupload: hardcode a few primary file extensions
fileupload: URL-escape output filename
upstream: use round-robin DNS resolution when per-user IPs are set up
Upgrade dependencies
upstream: fix conditional for resolveIPAddr
auth/pam: upgrade to github.com/msteinert/pam v2
server: print error on getOrCreateUser failure
fileupload: fix http-origin pattern matching
upstream: fix panic on malformed RPL_CHANNELMODEIS
downstream: shallow copy message in SendMessage instead of deep copy
downstream: ensure numerics always carry a source prefix
Drop unnecessary prefixes for numerics
Drop source prefix from most non-numeric server messages
Remove RLIMIT_NOFILE bump
Tomasz Hołubowicz (1):
contrib/clients: update information on ERC for Emacs
delthas (1):
Automatically join a stored channel on INVITE
dubious (1):
Upstream change for senpai
jacob1 (2):
Fix missing prefix on away numerics
Include prefix in CAP messages again
soju v0.7.0
This is a smaller release, it contains small new features and bug fixes.
- The new draft/pre-away extension allows short-lived and background clients
(e.g. chathistorysync and Goguma's background worker) to not toggle the
auto-away status.
- The new draft/no-implicit-names extension allows clients with low bandwidth
to connect faster (e.g. Goguma with 3G).
- The contrib/migrate-db script is now a lot faster.
- SASL ANONYMOUS is now supported to log out from an upstream network.
- STATUSMSG messages are now properly routed.
Full commit history below.
Antonio Mika (1):
Update user.go to not broadcast a push notification when generated from us
Calvin Lee (4):
fix empty CHATHISTORY TARGETS
database: batch msg inserts
contrib/migrate-db: use explicit src/dest network
Fix saving `+draft/react` is msgstores
Eric Mertens (7):
Fix capability associated with account message-tag
Don't drop RPL_LISTSTART - passthrough to downstream
ERR_NOSUCHSERVER unqueues WHOIS
Pass MODE and TOPIC through for unjoined channels
Add support for STATUSMSG
Forward complete MODE message to upstream when changing modes
Only log unhandled messages in debug mode
Simon Ser (62):
downstream: set CLIENTTAGDENY=* when upstream is missing message-tags
upstream: add forwardMsgByID
upstream: forward ERR_NOSUCHNICK
upstream: don't print "unhandled message" for registration errors
downstream: return channel in cached WHO reply
gitignore: add doc/sojuctl.1
user: fix dup upstream connections due to race
user: unconditonally stop network in updateNetwork()
downstream: return FAIL on unknown BOUNCER command before registration
downstream: take irc.Message in handleCap
Improve Server.Handle readability
downstream: inline authenticate function
user: fix upstream connections closed after 1 minute
downstream: fix connection registration
Stop setting *user in downstreamConn.register
downstream: rename downstreamRegistration.password to pass
downstream: add support for ANONYMOUS SASL auth
downstream: error out if SASL PLAIN identity is specified
upstream: introduce upstreamConn.forwardMessage
downstream: pass context to SendMessage
contrib/systemd: add AmbientCapabilities=CAP_NET_BIND_SERVICE
doc/packaging: add section about binding to privileged ports
database/sqlite: fix missing argument in DeleteUser
Panic if isHighlight is called with empty nick
Use database.GetNick in network.isHighlight
service: reject params for commands that don't take any
Rename Config.Log{Driver,Path} to MsgStore
Add CHATHISTORY test
downstream: fix nick in auth error message
msgstore/znclog: fix panic on malformed input line
msgstore/znclog: fix error message
downstream: improve SASL error logging
Upgrade dependencies
server: add metric for goroutine panics
Introduce soju.im/pre-away
Replace soju.im/pre-away with draft/pre-away
service: add a way to reset a network certfp
Upgrade dependencies
doc: expand on message store specificities
doc: clarify that client suffixes are not required for chathistory
doc: remove mention of dropped multi-upstream mode
contrib/clients: drop mention of single-upstream mode
Use * instead of nick in some numeric replies
server: drop TODO about configurable vars
Use downstreamConn.upstreamForCommand when handling user MODE
Remove remnant comments about multi-upstream mode
Don't send bouncer-networks updates for removed networks
build: cleanup all man pages
build: improve readability of Go -ldflags
service: convert network certfp to lower-case
doc: add openssl command to fetch server fingerprint
go fmt
database: add NewNetwork
database: fix default value for Network.AutoAway
database: add NewUser
cmd/sojudb: use User.SetPassword
contrib/znc-import: leave password empty by default
database: drop unnecessary comment
Upgrade dependencies
upstream: use unspecified AWAY reason if possible
conn: drop ErrClosed workaround for WebSocket
Add support for draft/no-implicit-names
delthas (1):
Fix SEARCH queries with special characters on SQLite
sentriz (1):
database: use postgresQueryTimeout for PostgresDB StoreMessages
soju v0.6.1
Simon Ser (14):
downstream: set CLIENTTAGDENY=* when upstream is missing message-tags
upstream: add forwardMsgByID
upstream: forward ERR_NOSUCHNICK
upstream: don't print "unhandled message" for registration errors
downstream: return channel in cached WHO reply
gitignore: add doc/sojuctl.1
user: fix dup upstream connections due to race
user: unconditonally stop network in updateNetwork()
downstream: return FAIL on unknown BOUNCER command before registration
user: fix upstream connections closed after 1 minute
downstream: error out if SASL PLAIN identity is specified
database/sqlite: fix missing argument in DeleteUser
Panic if isHighlight is called with empty nick
Use database.GetNick in network.isHighlight
soju v0.6.0
Note to packagers: a new document (docs/packaging.md) has been added to
explain how soju should be integrated in distributions. This release
contains many changes around the build process and installation.
Highlights for this release:
- A new database message store has been introduced. Instead of being
stored in plain-text files, messages can be stored in the database.
This is useful for improved performance, full-text search, and
retaining IRCv3 message tags.
- The old sojuctl has been renamed to sojudb. The new sojuctl is a tool
which executes service commands on a running soju instance. An admin
Unix socket is used for this purpose and needs to be enabled in the
configuration file.
- External authentication has been added. This can be used to integrate
with an OAuth 2.0 server or PAM.
- New service commands: "channel delete" is a more convenient way to get
rid of channels saved but not joined, "user run" executes command as
another user, "user status" to list registered users
- Users can be disabled to not use any runtime resource while keeping
their on-disk data intact. There are new configuration options to
automatically disable inactive users after a delay and re-enable
inactive users on authentication.
- WHO information is now cached, reducing latency and mitigating rate
limits when multiple clients are connected.
- TLS certificate pinning for upstream servers has been implemented.
This can be useful to connect to servers with a self-signed
certificate.
- Auto-away can now be disabled.
- Multi-upstream mode has been completely removed. The multi-upstream-mode
configuration option has been dropped.
- Go 1.19 is now the minimum required Go version.
Full commit history below.
Enterprisey (1):
contrib/clients: Warn about Hexchat password limit
Kirill Primak (1):
service: update "user {create,update}" help
Sandra Snan (1):
Be more clear that -connect-command needs quotes
Simon Ser (100):
config: use structs to group DB/MsgAuth
database/sqlite: make optional
Upgrade dependencies
downstream: don't echo back SASL mechanism
downstream: fix CHATHISTORY LATEST without a bound
downstream: remove outdated Web Push TODO
server: close queued up connections on shutdown
server: log when waiting for user goroutines on shutdown
downstream: refuse to enable multi-upstream mode
downstream: drop downstreamConn.isMultiUpstream
downstream: drop downstreamConn.unmarshalText
downstream: drop downstreamConn.marshalUserPrefix
downstream: drop downstreamConn.marshalMessage
downstream: drop downstreamConn.marshalEntity
upstream: remove heuristic to marshal nick in errors
upstream: use forEachDownstreamByID to forward RPL_AWAY
irc: drop needMarshaling from applyChannelModes return values
doc: drop multi-upstream mode bits
config: drop multi-upstream-mode
downstream: drop downstreamConn.unmarshalEntity{,Network}
downstream: stop sending HTTP OPTIONS request on WEBPUSH REGISTER
Use ratified extended-monitor cap name
Use ratified extended-monitor cap name for needAllDownstreamCaps
contrib/clients: reference read_marker.py for Weechat
Upgrade to gopkg.in/irc.v4
Upgrade dependencies
Add WHO cache
downstream: check channel name validity on JOIN
downstream: use ERR_BADCHANMASK for invalid channel name
service: add channel delete command
service: send PART in channel delete
service: fix typo in network -cerfp flag name
doc: document command parsing rules for the service
downstream: set empty CHANTYPES for bouncer connection
doc: add "user run" to man page
service: drop unnecessary admin check in handleUserRun
database/sqlite: introduce sqliteTime type
database: store user creation date
user: take context in user.stop
Add a flag to disable users
service: indicate which users are disabled in "user status"
Add user downstream interaction time
Add disable-inactive-user config option
Add enable-user-on-auth config directive
service: add -disable-password
Use database.User.SetPassword in server tests
Add infrastructure for external authentication
Add support for external OAuth 2.0 authentication
Add support for SASL OAUTHBEARER
Auto-create users after external auth when enable-user-on-auth is on
Add support for PAM authentication
config: add missing "pam" case
downstream: only send CHATHISTORY ISUPPORT when supported
Add a default path for the config file
build: add sharedstatedir variable
build: add RUNDIR variable
build: don't record DESTDIR in config.DefaultPath
build: invoke `go build` once only
Drop permissions on Unix admin socket
database/postgres: fix nil time errors
downstream: send MSGREFTYPES ISUPPORT
msgstore: move ZNC log functions to separate package
Rate limit Web Push checks
readme: merge paragraphs about GOFLAGS
doc/packaging: new page
Bump minimum Go version to 1.19
Drop isErrClosed
Remove legacy Go build comments
identd: reference RFC
identd: use UNKNOWN for OS name
Silence "Web Push subscription expired" errors
Move authError to auth package
upstream: drop unnecessary casemapIsSet field
upstream: convert ISUPPORT tokens to upper-case
downstream: reset map with correct casemapping on MONITOR C
upstream: drop unnecessary network nil check
Drop unused partialCasemap() helper
Add downstreamConn.updateCasemapping()
Pass-through ISUPPORT CASEMAPPING
Use generics for casemapMap
Migrate case-mapping to xirc
Rename casemapMap.setCasemapping to setCaseMapping
Take case-mapping as param in newCasemapMap()
Migrate casemapMap to xirc
xirc: drop CaseMappingNone
xirc: improve CaseMapping docs
service: use database.User.SetPassword instead of bcrypt
Introduce UserUpdateFunc
downstream: fix nickCM out-of-sync with effective case-mapping
downstream: fix nil pointer deref in downstreamConn.setUser
Move DefaultUnixAdminPath to config package
doc: add man page for sojuctl
makefile: add variable with command list
Set User-Agent when sending Web Push notifications
Prune old Web Push subscriptions
Bump update time on success in network.broadcastWebPush
Simplify push subscription pruning logic
database/sqlite: delete push subscriptions and msgstore in DeleteUser
downstream: fix panic due to nil user in setUser
doc/packaging: clarify and expand
delthas (19):
Truncate message times to the second when using the FS message store
Fix clearing webpush targets after any MARKREAD
Avoid sending push notifications for all channel context messages
Store only select TAGMSG types in message stores
service: reject commands with unexpected arguments
service: refactor downstreamConn to serviceContext
service: add user run
service: add user status
xirc: Fix sending hostnames starting with ':' in WHO replies
service: Store the admin capability independently the user
service: Enable running service commands without users
service: Enable running additional commands from a global context
service: Return the error rather than printing it
sojuctl: rename to sojudb
Add administrative unix listen endpoint
Listen on the default unix admin endpoint in the default configuration
Add cmd/sojuctl
Add a database store for messages
Add support for explicit PostgreSQL schema prefixes for tests
palm93 (2):
gitignore: add sojudb
build: fix binaries not being built
rj1 (1):
Implement TLS fingerprint pinning
sentriz (1):
database/postgres: fix StoreNetwork positional arguments
zsrv (1):
Make the auto-away functionality configurable
Łukasz Margiela (1):
Add build tag for modernc/sqlite driver
Дамјан Георгиевски (1):
add an example systemd service file
soju v0.5.2
Ember Sawady (2):
Fix NICK on upstreams supporting MONITOR
Fix labeled-response without downstream echo-message
Jeff Martin (1):
server: fix panic stacktrace print formatting
Petr Ročkai (1):
downstream: fix inverted range in CHATHISTORY LATEST with a timestamp
Reto Brunner (1):
Use output given to NewLogger
Simon Ser (8):
downstream: re-format doc comment with Go 1.19 style
upstream: add timeout for pending commands
Downgrade Web Push urgency for unimportant messages
Broadcast Web Push subscriptions in a new goroutine
downstream: break findWebPushSubscription in two functions
downstream: add hard limit on Web Push subscriptions
go fmt
Pass-through ISUPPORT LINELEN
soju v0.5.1
This bugfix release addresses issues in the PostgreSQL database backend.
Simon Ser (5):
database/postgres: fix inverted network and user in StoreWebPushSubscription
database/postgres: make WebPushSubscription.user NOT NULL
database/postgres: set max open conns
database/postgres: fix inverted networkID check in StoreWebPushSubscription
database/postgres: fix inverted networkID check in ListWebPushSubscriptions
PreviousNext