You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Noah Pederson 68fc600854 Adds systemd unit files 2 weeks ago
rc.d Set up /var/run/calico and /usr/local/etc/pounce 1 month ago
systemd Adds systemd unit files 2 weeks ago
.gitignore Revert "Test getopt_config" 3 weeks ago Assume LibreSSL from brew on Darwin 4 weeks ago
LICENSE Change license to GPLv3 4 weeks ago Use -l:filename in 4 weeks ago
Makefile Revert "Test getopt_config" 3 weeks ago
README.7 Add capsicum note to README 3 weeks ago
bounce.c Request NAMES on sync by default 3 weeks ago
bounce.h Request NAMES on sync by default 3 weeks ago
calico.1 Document calico service configuration 4 weeks ago
client.c Add concept of passive clients 3 weeks ago
compat.h Fix compat.h for #defined strlcpy 4 weeks ago
config.c Revert "Test getopt_config" 3 weeks ago
dispatch.c Declare more missing functions and deal with lack of SO_NOSIGPIPE 4 weeks ago
local.c Rename listen to local 3 weeks ago
pounce.1 Mention the name CertFP in SASL EXTERNAL guide 2 weeks ago
ring.c Save and load full struct timeval 3 weeks ago
server.c Change license to GPLv3 4 weeks ago
state.c Request NAMES on sync by default 3 weeks ago


.Dd November 10, 2019
.Os "Causal Agency"
.Nm pounce
.Nd IRC pouncer :3
is a multi-client, TLS-only IRC bouncer.
It takes a simple approach,
using a multiple-consumer ring buffer
and the IRCv3.2
.Sy server-time
extension to communicate with clients.
requires LibreSSL
.Pq Fl ltls
and targets
.Fx .
It can also be built
on Darwin or GNU/Linux
by copying the appropriate file to
and modifying as needed.
.Fx ,
processes are sandboxed with
.Xr capsicum 4 .
On other systems,
who knows what might happen?
As a former
.Xr znc 1
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.
.Xr 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.
by expecting clients to implement the
.Sy server-time
all events can be accurately replayed,
rather than being limited to messages.
.Bl -tag -width "dispatch.c" -compact
.It Pa bounce.h
declarations and common functions
.It Pa bounce.c
configuration and event loop
.It Pa local.c
local server binding
.It Pa server.c
remote server connection
.It Pa client.c
remote client connections
.It Pa state.c
state shared between clients
.It Pa ring.c
buffer between server and clients
.It Pa config.c
.Xr getopt_long 3 Ns -integrated
configuration parsing
.It Pa dispatch.c
SNI socket dispatch
.It Pa compat.h
compatibility with lesser operating systems
.It Pa rc.d/
.Xr rc 8
.Xr calico 1 ,
.Xr pounce 1