Find a file
Alex Karle 8951760733 chathistory: Fix truncated backlog due to timezones
Because msgstore_fs writes logs in localtime, the CHATHISTORY timestamps
(UTC) must be converted to localtime prior to filtering ranges ensure
the right range is sent back to the client.

Prior to this patch, the iteration back from the BEFORE time failed to
load the hours between midnight UTC and midnight localtime in each day's
logged messages. This is because the final time to be considered in a
day's log file (the "start" time) reuses the previous start time's
locale:

    start = time.Date(year, month, day, 0, 0, 0, 0, start.Location()).Add(-1)

By converting the original start and end from the CHATHISTORY commands
to localtime in Load*Time and ListTargets, we ensure we read through
midnight each day.
2021-10-07 11:57:42 +02:00
cmd Set a higher timeout for proxyproto listeners 2021-09-19 17:00:40 +02:00
config Make db and log config options more future-proof 2021-04-21 18:15:04 +02:00
contrib contrib/clients: sort alphabetically and wrap lines 2021-07-07 10:37:18 +02:00
doc Add "server status" command 2021-10-05 19:13:53 +02:00
.build.yml ci: add gofmt check 2021-06-29 22:24:44 +02:00
.editorconfig Add .editorconfig 2020-11-30 11:39:41 +01:00
.gitignore doc: document "network delete" 2020-04-01 17:38:09 +02:00
bridge.go Implement casemapping 2021-03-24 18:15:52 +01:00
config.in Make db and log config options more future-proof 2021-04-21 18:15:04 +02:00
conn.go Workaround lack of net.ErrClosed in WebSocket library 2021-09-21 11:49:48 +02:00
db.go Add DB stats 2021-10-05 19:31:06 +02:00
db_sqlite.go Add DB stats 2021-10-05 19:31:06 +02:00
downstream.go Add WHOIS reply for BouncerServ 2021-10-06 11:50:12 +02:00
go.mod Upgrade dependencies 2021-09-13 14:23:33 +02:00
go.sum Upgrade dependencies 2021-09-13 14:23:33 +02:00
ident.go ident: remove leftover debug log 2020-08-18 17:57:12 +02:00
irc.go Implement CHATHISTORY BETWEEN 2021-05-18 10:44:10 +02:00
LICENSE Switch license to AGPLv3 2020-02-07 17:41:51 +01:00
Makefile Don't build soju when calling "make install" 2021-05-25 16:31:06 +02:00
msgstore.go Implement CHATHISTORY TARGETS 2021-06-02 20:32:11 +02:00
msgstore_fs.go chathistory: Fix truncated backlog due to timezones 2021-10-07 11:57:42 +02:00
msgstore_memory.go Check message stores implement expected interfaces 2021-05-18 14:19:34 +02:00
net_go113.go go fmt: add go:build tags 2021-09-09 10:07:37 +02:00
net_go116.go go fmt: add go:build tags 2021-09-09 10:07:37 +02:00
README.md readme: add note to use system libsqlite3 2021-09-21 11:44:08 +02:00
server.go Add "server status" command 2021-10-05 19:13:53 +02:00
server_test.go test: get rid of testUpstream 2021-10-05 14:26:10 +02:00
service.go Add DB stats 2021-10-05 19:31:06 +02:00
service_test.go Hand-made word splitter for BouncerServ 2021-06-24 19:33:46 +02:00
upstream.go Add per-user realname setting 2021-06-25 20:33:13 +02:00
user.go Don't send network notification when removed 2021-09-13 10:33:46 +02:00

soju

builds.sr.ht status

A user-friendly IRC bouncer.

  • Multi-user
  • Support multiple clients for a single user, with proper backlog synchronization
  • Support connecting to multiple upstream servers via a single IRC connection to the bouncer

Usage

Building and installing

Dependencies:

  • Go
  • a C89 compiler (for SQLite)
  • scdoc (optional, for man pages)

For end users, a Makefile is provided:

make
sudo make install

For development, you can use go run ./cmd/soju as usual.

To link with the system libsqlite3, use make GOFLAGS="-tags=libsqlite3".

Contributing

Send patches on the mailing list or on GitHub, report bugs on the issue tracker. Discuss in #soju on Libera Chat.

License

AGPLv3, see LICENSE.

Copyright (C) 2020 The soju Contributors