README(7) | Miscellaneous Information Manual | README(7) |
NAME
pounce
— IRC
pouncer :3
DESCRIPTION
pounce(1) is a multi-client,
TLS-only IRC bouncer. It maintains a persistent connection to an IRC server,
acting as a proxy and buffer for a number of clients. When a client
connects, any messages received since it last disconnected will be relayed
to it. Unlike some other bouncers, pounce
uses a
single buffer for all IRC messages, which acts as a queue from which each
client reads messages independently.
pounce
speaks regular modern IRC to both
servers and clients, using the server-time extension to
indicate when messages originally occurred. Clients identify themselves to
pounce
by their IRC usernames. See
QUIRKS(7) for notes on connecting
pounce
with particular networks and 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
OpenBSD, where it is sandboxed with
pledge(2) and
unveil(2).
FreeBSD, Linux and macOS are also supported.
./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 OpenBSD the recommended way to run
pounce
is with the process supervisor
kitd.
Additional Components
Additional functionality can be provided by special-purpose
clients connected to pounce
.
- litterbox
- provides logging and search.
- pounce-notify(1)
- provides notifications by running an external command. Configure with
--enable-notify
to build. - pounce-palaver(1)
- provides push notifications for the Palaver IRC app. Configure with
--enable-palaver
to build. 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
- 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⟩. Mailing list archives are available at ⟨https://causal.agency/list/pounce.html⟩.
Monetary contributions can be donated via Liberapay.
SEE ALSO
Central logging with full-text search: litterbox
June McEnroe, IRC Suite, https://text.causal.agency/010-irc-suite.txt, June 19, 2020.
October 21, 2023 | Causal Agency |