summary refs log tree commit diff
path: root/README.7
blob: 4e59a155d9919139ebcdf1846d49802d8e98653d (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
.Dd November 10, 2019
.Dt README 7
.Os "Causal Agency"
.
.Sh NAME
.Nm pounce
.Nd IRC pouncer :3
.
.Sh DESCRIPTION
.Nm
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.
.
.Pp
.Nm
requires LibreSSL
.Pq Fl ltls
and targets
.Fx .
It can also be built
on Darwin or GNU/Linux
by copying the appropriate file to
.Pa config.mk
and modifying as needed.
On
.Fx ,
processes are sandboxed with
.Xr capsicum 4 .
On other systems,
who knows what might happen?
.
.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 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 lesser operating systems
.It Pa rc.d/
.Fx
.Xr rc 8
scripts
.El
.
.Sh SEE ALSO
.Xr calico 1 ,
.Xr pounce 1
8e3f9f3b0a3ea4b5c71cbd6b332df5&follow=1'>Move color selection to format.cJune McEnroe 2018-09-13Fix len for format->split at end of stringJune McEnroe 2018-09-13Avoid uninitialized x in uiReadJune McEnroe 2018-09-13Add IRCDefault to colors enumJune McEnroe 2018-09-13Return a format->split even at the end of the stringJune McEnroe 2018-09-13Fix weird tab-complete after commaJune McEnroe I have no idea why I did this. 2018-09-13Rewrite UI againJune McEnroe The persistent topic is gone and the status line is now at the top. The status formatting still needs to be reworked. I also want to try showing the nick in the input window so it really looks like your next message. 2018-09-12Add note about C-oJune McEnroe Why are there so few well usable ctrl key bindings? 2018-09-12Use formatParse split to position input cursorJune McEnroe 2018-09-12Factor out IRC formatting parsingJune McEnroe 2018-09-11Add /help equivalent to /manJune McEnroe 2018-09-11Don't render every PM as a pingJune McEnroe 2018-09-11Add urlOpenMatchJune McEnroe 2018-09-10Depend on man.sh for chroot.tar targetJune McEnroe 2018-09-10Set LESSSECURE=1 in man.shJune McEnroe Ridiculous. 2018-09-10Add /man commandJune McEnroe 2018-09-10Install man page in chrootJune McEnroe 2018-09-10Install man pageJune McEnroe 2018-09-10Split keys into subsections and document colorsJune McEnroe 2018-09-10Add "blank" lines to chatte.1June McEnroe 2018-09-10Document key bindings in chatte.1June McEnroe 2018-09-08Document slash commands in chatte.1June McEnroe