README(7) | FreeBSD Miscellaneous Information Manual | README(7) |
NAME
pounce
—
DESCRIPTION
pounce(1) 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.RATIONALE
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.
INSTALLING
pounce
requires libtls, provided by
either
LibreTLS
(for OpenSSL) or by LibreSSL. pounce
and
libtls may be packaged for your system. Check the Repology
pages for
pounce
and
libretls.
pounce
primarily targets
FreeBSD, where it is sandboxed with
capsicum(4), and
OpenBSD, where it is sandboxed with
pledge(2) and
unveil(2). Linux and macOS are also
supported. On BSD systems, configure with
--mandir=/usr/local/man
.
./configure make all sudo make install
If installing libtls manually to
/usr/local, for example, make sure
/usr/local/lib appears in
/etc/ld.so.conf or
/etc/ld.so.conf.d/* and be sure to run
ldconfig(8) once the library is
installed. Set PKG_CONFIG_PATH
for
./configure
to find it.
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure
On FreeBSD and
OpenBSD the recommended way to run
pounce
is with the process supervisor
catsit.
Additional Components
Additional functionality can be provided by special-purpose clients connected topounce
.
- Logging can be provided by litterbox.
- Push notifications for the Palaver IRC app can be provided by
pounce-palaver
, located in the contrib/palaver directory. It additionally requires libcurl and libsqlite3.
FILES
- 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
- cert.c
- sandboxed certificate reloading
- config.c
- getopt_long(3)-integrated configuration parsing
- xdg.c
- XDG base directories
- dispatch.c
- SNI socket dispatch
CONTRIBUTING
The upstream URL of this project is ⟨https://git.causal.agency/pounce⟩. Contributions in any form can be sent to <list+pounce@causal.agency>. For sending patches by email, see ⟨https://git-send-email.io⟩.Monetary contributions can be donated via Liberapay.
SEE ALSO
calico(1), pounce(1)Central logging with full-text search: litterbox
June Bug, IRC Suite, https://text.causal.agency/010-irc-suite.txt, June 19, 2020.
February 5, 2021 | Causal Agency |