source: code/trunk/doc/soju.1.scd@ 611

Last change on this file since 611 was 611, checked in by contact, 4 years ago

doc/soju.1: mention that accept-proxy-ip affects PROXY proto

File size: 10.3 KB
Line 
1soju(1)
2
3# NAME
4
5soju - IRC bouncer
6
7# SYNOPSIS
8
9*soju* [options...]
10
11# DESCRIPTION
12
13soju is a user-friendly IRC bouncer. It connects to upstream IRC servers on
14behalf of the user to provide extra features.
15
16- Multiple separate users sharing the same bouncer, each with their own
17 upstream servers
18- Clients connecting to multiple upstream servers via a single connection to
19 the bouncer
20- Sending the backlog (messages received while the user was disconnected from
21 the bouncer), with per-client buffers
22
23When joining a channel, the channel will be saved and automatically joined on
24the next connection. When registering or authenticating with NickServ, the
25credentials will be saved and automatically used on the next connection if the
26server supports SASL. When parting a channel with the reason "detach", the
27channel will be detached instead of being left.
28
29When all clients are disconnected from the bouncer, the user is automatically
30marked as away.
31
32soju supports two connection modes:
33
34- Single upstream mode: one downstream connection maps to one upstream
35 connection. To enable this mode, connect to the bouncer with the username
36 "<username>/<network>". If the bouncer isn't connected to the upstream
37 server, it will get automatically added. Then channels can be joined and
38 parted as if you were directly connected to the upstream server.
39- Multiple upstream mode: one downstream connection maps to multiple upstream
40 connections. Channels and nicks are suffixed with the network name. To join
41 a channel, you need to use the suffix too: _/join #channel/network_. Same
42 applies to messages sent to users.
43
44For per-client history to work, clients need to indicate their name. This can
45be done by adding a "@<client>" suffix to the username.
46
47soju will reload the TLS certificate and key when it receives the HUP signal.
48
49Administrators can broadcast a message to all bouncer users via _/notice
50$<hostname> <text>_, or via _/notice $\* <text>_ in multi-upstream mode. All
51currently connected bouncer users will receive the message from the special
52_BouncerServ_ service.
53
54# OPTIONS
55
56*-h, -help*
57 Show help message and quit.
58
59*-config* <path>
60 Path to the config file. If unset, a default config file is used.
61
62*-debug*
63 Enable debug logging (this will leak sensitive information such as
64 passwords).
65
66*-listen* <uri>
67 Listening URI (default: ":6697"). Can be specified multiple times.
68
69# CONFIG FILE
70
71The config file has one directive per line.
72
73Example:
74
75```
76listen ircs://
77tls cert.pem key.pem
78hostname example.org
79```
80
81The following directives are supported:
82
83*listen* <uri>
84 Listening URI (default: ":6697").
85
86 The following URIs are supported:
87
88 - _[ircs://][host][:port]_ listens with TLS over TCP (default port if
89 omitted: 6697)
90 - _irc+insecure://[host][:port]_ listens with plain-text over TCP (default
91 port if omitted: 6667)
92 - _unix:///<path>_ listens on a Unix domain socket
93 - _wss://[host][:port]_ listens for WebSocket connections over TLS (default
94 port: 443)
95 - _ws+insecure://[host][:port]_ listens for plain-text WebSocket
96 connections (default port: 80)
97 - _ident://[host][:port]_ listens for plain-text ident connections (default
98 port: 113)
99
100 If the scheme is omitted, "ircs" is assumed. If multiple *listen*
101 directives are specified, soju will listen on each of them.
102
103*hostname* <name>
104 Server hostname (default: system hostname).
105
106*tls* <cert> <key>
107 Enable TLS support. The certificate and the key files must be PEM-encoded.
108
109*db* sqlite3 <path>
110 Set the SQLite database path (default: "soju.db" in the current directory).
111
112*log* fs <path>
113 Path to the bouncer logs root directory, or empty to disable logging. By
114 default, logging is disabled.
115
116*http-origin* <patterns...>
117 List of allowed HTTP origins for WebSocket listeners. The parameters are
118 interpreted as shell patterns, see *glob*(7).
119
120 By default, only the request host is authorized. Use this directive to
121 enable cross-origin WebSockets.
122
123*accept-proxy-ip* <cidr...>
124 Allow the specified IPs to act as a proxy. Proxys have the ability to
125 overwrite the remote and local connection addresses (via the PROXY protocol,
126 the Forwarded HTTP header field defined in RFC 7239 or the X-Forwarded-\*
127 HTTP header fields). The special name "localhost" accepts the loopback
128 addresses 127.0.0.0/8 and ::1/128.
129
130 By default, all IPs are rejected.
131
132# IRC SERVICE
133
134soju exposes an IRC service called *BouncerServ* to manage the bouncer.
135Commands can be sent via regular private messages
136(_/msg BouncerServ <command> [args...]_). Commands may be written in full or
137abbreviated form, for instance *network* can be abbreviated as *net* or just
138*n*.
139
140*help* [command]
141 Show a list of commands. If _command_ is specified, show a help message for
142 the command.
143
144*network create* *-addr* <addr> [options...]
145 Connect to a new network at _addr_. _-addr_ is mandatory.
146
147 _addr_ supports several connection types:
148
149 - _[ircs://]<host>[:port]_ connects with TLS over TCP
150 - _irc+insecure://<host>[:port]_ connects with plain-text TCP
151 - _irc+unix:///<path>_ connects to a Unix socket
152
153 Other options are:
154
155 *-name* <name>
156 Short network name. This will be used instead of _addr_ to refer to the
157 network.
158
159 *-username* <username>
160 Connect with the specified username. By default, the nickname is used.
161
162 *-pass* <pass>
163 Connect with the specified server password.
164
165 *-realname* <realname>
166 Connect with the specified real name. By default, the account's realname
167 is used if set, otherwise the network's nickname is used.
168
169 *-nick* <nickname>
170 Connect with the specified nickname. By default, the account's username
171 is used.
172
173 *-enabled* true|false
174 Enable or disable the network. If the network is disabled, the bouncer
175 won't connect to it. By default, the network is enabled.
176
177 *-connect-command* <command>
178 Send the specified command as a raw IRC message right after connecting
179 to the server. This can be used to identify to an account when the
180 server doesn't support SASL.
181
182 For instance, to identify with _NickServ_, the following command can be
183 used:
184
185 ```
186 PRIVMSG NickServ :IDENTIFY <password>
187 ```
188
189 The flag can be specified multiple times to send multiple IRC messages.
190 To clear all commands, set it to the empty string.
191
192*network update* <name> [options...]
193 Update an existing network. The options are the same as the
194 _network create_ command.
195
196 When this command is executed, soju will disconnect and re-connect to the
197 network.
198
199*network delete* <name>
200 Disconnect and delete a network.
201
202*network quote* <name> <command>
203 Send a raw IRC line as-is to a network.
204
205*network status*
206 Show a list of saved networks and their current status.
207
208*channel status* [options...]
209 Show a list of saved channels and their current status.
210
211 Options:
212
213 *-network* <name>
214 Only show channels for the specified network. By default, only the
215 channels in the current network are displayed.
216
217*channel update* <name> [options...]
218 Update the options of an existing channel.
219
220 Options are:
221
222 *-relay-detached* <mode>
223 Set when to relay messages from detached channels to the user with a BouncerServ NOTICE.
224
225 Modes are:
226
227 *message*
228 Relay any message from this channel when detached.
229
230 *highlight*
231 Relay only messages mentioning you when detached.
232
233 *none*
234 Don't relay any messages from this channel when detached.
235
236 *default*
237 Currently same as *highlight*. This is the default behaviour.
238
239 *-reattach-on* <mode>
240 Set when to automatically reattach to detached channels.
241
242 Modes are:
243
244 *message*
245 Reattach to this channel when any message is received.
246
247 *highlight*
248 Reattach to this channel when any message mentioning you is received.
249
250 *none*
251 Never automatically reattach to this channel.
252
253 *default*
254 Currently same as *none*. This is the default behaviour.
255
256 *-detach-after* <duration>
257 Automatically detach this channel after the specified duration has elapsed without receving any message corresponding to *-detach-on*.
258
259 Example duration values: *1h30m*, *30s*, *2.5h*.
260
261 Setting this value to 0 will disable this behaviour, i.e. this channel will never be automatically detached. This is the default behaviour.
262
263 *-detach-on* <mode>
264 Set when to reset the auto-detach timer used by *-detach-after*, causing it to wait again for the auto-detach duration timer before detaching.
265 Joining, reattaching, sending a message, or changing any channel option will reset the timer, in addition to the messages specified by the mode.
266
267 Modes are:
268
269 *message*
270 Receiving any message from this channel will reset the auto-detach timer.
271
272 *highlight*
273 Receiving any message mentioning you from this channel will reset the auto-detach timer.
274
275 *none*
276 Receiving messages from this channel will not reset the auto-detach timer. Sending messages or joining the channel will still reset the timer.
277
278 *default*
279 Currently same as *message*. This is the default behaviour.
280
281*certfp generate* [options...] <network name>
282 Generate self-signed certificate and use it for authentication (via SASL
283 EXTERNAL).
284
285 Generates a RSA-3072 private key by default.
286
287 Options are:
288
289 *-key-type* <type>
290 Private key algoritm to use. Valid values are: rsa, ecdsa, ed25519.
291 ecdsa uses NIST P-521 curve.
292
293 *-bits* <bits>
294 Size of RSA key to generate. Ignored for other key types.
295
296*certfp fingerprint* <network name>
297 Show SHA-1 and SHA-256 fingerprints for the certificate
298 currently used with the network.
299
300*sasl set-plain* <network name> <username> <password>
301 Set SASL PLAIN credentials.
302
303*sasl reset* <network name>
304 Disable SASL authentication and remove stored credentials.
305
306*user create* -username <username> -password <password> [options...]
307 Create a new soju user. Only admin users can create new accounts.
308 The _-username_ and _-password_ flags are mandatory.
309
310 Other options are:
311
312 *-admin*
313 Make the new user an administrator.
314
315 *-realname* <realname>
316 Set the user's realname. This is used as a fallback if there is no
317 realname set for a network.
318
319*user update* [-password <password>] [-realname <realname>]
320 Update the current user. The options are the same as the _user create_
321 command.
322
323*user delete* <username>
324 Delete a soju user. Only admins can delete accounts.
325
326*server status*
327 Show some bouncer statistics. Only admins can query this information.
328
329# AUTHORS
330
331Maintained by Simon Ser <contact@emersion.fr>, who is assisted by other
332open-source contributors. For more information about soju development, see
333https://sr.ht/~emersion/soju.
Note: See TracBrowser for help on using the repository browser.