README(7) FreeBSD Miscellaneous Information Manual README(7)
pounce – IRC pouncer :3
pounce is a multi-client, TLS-only IRC bouncer. It takes a simple
approach, using a multiple-consumer ring buffer and the IRCv3.2
server-time extension to communicate with clients.
pounce requires LibreSSL (-ltls) and targets FreeBSD. It can also be
built on Darwin or GNU/Linux by copying the appropriate file to config.mk
and modifying as needed. On FreeBSD, processes are sandboxed with
capsicum(4). On other systems, who knows what might happen?
As a former znc(1) user, I was dissatisfied with the multi-client
experience it offered. I wanted to connect from both my laptop and my
phone and have full chat history on both. With znc(1), my options were
either having both clients spammed with redundant history every time they
connect, or having one client consume the buffer and the other get no
history at all.
With a multiple-consumer ring buffer, each client has its own place in
the history and can be brought up to date independently. Additionally,
by expecting clients to implement the server-time extension, all events
can be accurately replayed, rather than being limited to messages.
bounce.h declarations and common functions
bounce.c configuration and event loop
local.c local server binding
server.c remote server connection
client.c remote client connections
state.c state shared between clients
ring.c buffer between server and clients
config.c getopt_long(3)-integrated configuration parsing
dispatch.c SNI socket dispatch
compat.h compatibility with lesser operating systems
rc.d/ FreeBSD rc(8) scripts
Causal Agency November 10, 2019 Causal Agency