about summary refs log tree commit diff
path: root/README.7
blob: d15c34a5ac103d2b85475647c5ee8077df569898 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
.Dd May 19, 2020
.Dt README 7
.Os "Causal Agency"
.
.Sh NAME
.Nm pounce
.Nd IRC pouncer :3
.
.Sh DESCRIPTION
.Xr 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
.Sy server-time
extension to communicate with clients.
.
.Sh RATIONALE
As a former
.Xr 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
.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.
.
.Pp
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
.Sy server-time
extension,
all events can be accurately replayed,
rather than being limited to messages.
.
.Sh INSTALLING
.Nm
requires LibreSSL
.Pq Fl ltls
and primarily targets
.Fx ,
where it is sandboxed with
.Xr capsicum 4 .
.Bd -literal -offset indent
make all
sudo make install PREFIX=/usr/local
.Ed
.
.Pp
On other systems,
such as macOS and Linux,
the build is configured using
.Xr pkg-config 1 .
If LibreSSL is installed
in a non-standard prefix,
set
.Ev PKG_CONFIG_PATH
appropriately.
For example:
.Bd -literal -offset indent
PKG_CONFIG_PATH=/opt/libressl/lib/pkgconfig ./configure
make all
sudo make install PREFIX=/usr/local
.Ed
.
.Sh FILES
.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 other systems
.It Pa rc.d/
.Fx
.Xr rc 8
scripts
.El
.
.Sh CONTRIBUTING
The upstream URL of this project is
.Aq Lk https://git.causal.agency/pounce .
Contributions in any form can be sent to
.Aq Mt list+pounce@causal.agency .
For sending patches by email, see
.Aq Lk https://git-send-email.io .
.
.Sh SEE ALSO
.Xr calico 1 ,
.Xr pounce 1
.
.Pp
Central logging with full-text search:
.Lk https://git.causal.agency/litterbox "litterbox"