Find a file
Simon Ser cb52f393f4
Drop messages on closed connections
This prevents this panic:

    panic: send on closed channel
    goroutine 9 [running]:
    git.sr.ht/~emersion/soju.(*upstreamConn).SendMessage(...)
            /home/simon/src/soju/upstream.go:866
    git.sr.ht/~emersion/soju.(*upstreamConn).handleMessage(0xc000084b40, 0xc000144680, 0x2, 0x0)
            /home/simon/src/soju/upstream.go:152 +0x62b
    git.sr.ht/~emersion/soju.(*user).run(0xc0000b8070)
            /home/simon/src/soju/user.go:144 +0x53d
    created by git.sr.ht/~emersion/soju.(*Server).Run
            /home/simon/src/soju/server.go:88 +0x286
2020-03-21 08:29:44 +01:00
cmd Rename project to soju 2020-03-13 18:13:03 +01:00
config Rename project to soju 2020-03-13 18:13:03 +01:00
.build.yml ci: add builds.sr.ht manifest 2020-03-18 10:28:58 +01:00
.gitignore Add sojuctl to .gitignore 2020-03-13 18:14:14 +01:00
bridge.go Avoid sending JOIN twice for the same channel 2020-03-20 22:53:05 +01:00
db.go schema: add Network.name 2020-03-19 00:06:48 +01:00
downstream.go Avoid sending JOIN twice for the same channel 2020-03-20 22:53:05 +01:00
go.mod Remove some IRCv3 constants 2020-03-19 14:51:45 +01:00
go.sum Remove some IRCv3 constants 2020-03-19 14:51:45 +01:00
irc.go Add WHOIS support 2020-03-20 10:11:27 +01:00
LICENSE Switch license to AGPLv3 2020-02-07 17:41:51 +01:00
Makefile Add basic Makefile 2020-03-19 15:11:43 +01:00
README.md Fix deadlocks in single-upstream mode 2020-03-20 10:42:17 +01:00
ring.go Rename project to soju 2020-03-13 18:13:03 +01:00
schema.sql schema: add Network.name 2020-03-19 00:06:48 +01:00
server.go Per-user dispatcher goroutine 2020-03-16 12:44:59 +01:00
service.go Add create-network bouncer service command 2020-03-19 01:14:44 +01:00
soju.1.scd man: fix typo 2020-03-19 14:18:31 +01:00
upstream.go Move upstreamConn.history to network 2020-03-20 22:48:17 +01:00
user.go Drop messages on closed connections 2020-03-21 08:29:44 +01:00

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