soju forked to be LESS SHIT
c607fd5a58
go-proxyproto added support for a read timeout in 0.6.0[1] and defaulted it to 200ms. After this time if no data is read on the socket, it is closed. This is _really_ low if the underlying connection is a TLS one as no data pops out the other end until the handshake is done. It effectively limits you to TLS connections within a 50ms RTT of your bouncer with clients that are fast enough at responding. It appears that HexChat on Arch is somehow slow enough at TLS connections thant it consistently takes longer than 200ms even over localhost, meaning it outright can't connect to soju any longer. To make this a lot less painful, have soju pass in a read timeout of 5 seconds. This feels like a reasonable tradeoff between keeping (possibly malicious) connections open and accepting the realities of network connections. [1]: https://github.com/pires/go-proxyproto/issues/65 |
||
---|---|---|
cmd | ||
config | ||
contrib | ||
doc | ||
.build.yml | ||
.editorconfig | ||
.gitignore | ||
bridge.go | ||
config.in | ||
conn.go | ||
db_sqlite.go | ||
db.go | ||
downstream.go | ||
go.mod | ||
go.sum | ||
ident.go | ||
irc.go | ||
LICENSE | ||
Makefile | ||
msgstore_fs.go | ||
msgstore_memory.go | ||
msgstore.go | ||
net_go113.go | ||
net_go116.go | ||
README.md | ||
server.go | ||
service_test.go | ||
service.go | ||
upstream.go | ||
user.go |
soju
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.
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