soju forked to be LESS SHIT
db198335aa
Instead of having one ring buffer per network, each network has one ring buffer per entity (channel or nick). This allows history to be more fair: if there's a lot of activity in a channel, it won't prune activity in other channels. We now track history sequence numbers per client and per network in networkHistory. The overall list of offline clients is still tracked in network.offlineClients. When all clients have received history, the ring buffer can be released. In the future, we should get rid of too-old offline clients to avoid having to maintain history for them forever. We should also add a per-user limit on the number of ring buffers. |
||
---|---|---|
cmd | ||
config | ||
doc | ||
.build.yml | ||
.gitignore | ||
bridge.go | ||
conn.go | ||
db.go | ||
downstream.go | ||
go.mod | ||
go.sum | ||
irc.go | ||
LICENSE | ||
logger.go | ||
Makefile | ||
README.md | ||
ring.go | ||
schema.sql | ||
server.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
sqlite3 soju.db <schema.sql
go run ./cmd/sojuctl create-user <username>
go run ./cmd/soju
Then connect with username <username>/chat.freenode.net
and join #soju
.
See the man page at soju.1.scd
for more information.
Contributing
Send patches on the mailing list or on GitHub, report bugs on the issue tracker. Discuss in #soju on Freenode.
License
AGPLv3, see LICENSE.
Copyright (C) 2020 Simon Ser