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

Last change on this file since 459 was 436, checked in by delthas, 4 years ago

service: Introduce channel update

This adds the channel update service command, which is used to set the
auto-detach, auto-reattach, and message relaying settings of a channel.

Of note is that currently the parser parses # as a comment, which
means any channel update #foo ... will actually need to be escaped to
channel update "#foo" ...

File size: 8.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
47# OPTIONS
48
49*-h, -help*
50 Show help message and quit.
51
52*-config* <path>
53 Path to the config file. If unset, a default config file is used.
54
55*-debug*
56 Enable debug logging (this will leak sensitive information such as
57 passwords).
58
59*-listen* <uri>
60 Listening URI (default: ":6697").
61
62# CONFIG FILE
63
64The config file has one directive per line.
65
66Example:
67
68```
69listen ircs://
70tls cert.pem key.pem
71hostname example.org
72```
73
74The following directives are supported:
75
76*listen* <uri>
77 Listening URI (default: ":6697").
78
79 The following URIs are supported:
80
81 - _[ircs://][host][:port]_ listens with TLS over TCP (default port if
82 omitted: 6697)
83 - _irc+insecure://[host][:port]_ listens with plain-text over TCP (default
84 port if omitted: 6667)
85 - _wss://[host][:port]_ listens for WebSocket connections over TLS (default
86 port: 443)
87 - _ws+insecure://[host][:port]_ listens for plain-text WebSocket
88 connections (default port: 80)
89 - _ident://[host][:port]_ listens for plain-text ident connections (default
90 port: 113)
91
92 If the scheme is omitted, "ircs" is assumed. If multiple *listen*
93 directives are specified, soju will listen on each of them.
94
95*hostname* <name>
96 Server hostname (default: system hostname).
97
98*tls* <cert> <key>
99 Enable TLS support. The certificate and the key files must be PEM-encoded.
100
101*sql* <driver> <source>
102 Set the SQL driver settings. The only supported driver is "sqlite3". The
103 source is the path to the SQLite database file. By default, the path to the
104 database file is "soju.db".
105
106*log* <path>
107 Path to the bouncer logs root directory, or empty to disable logging. By
108 default, logging is disabled.
109
110*http-origin* <patterns...>
111 List of allowed HTTP origins for WebSocket listeners. The parameters are
112 interpreted as shell patterns, see *glob*(7).
113
114*accept-proxy-ip* <cidr...>
115 Allow the specified IPs to act as a proxy. Proxys have the ability to
116 overwrite the remote and local connection addresses (via the X-Forwarded-\*
117 HTTP header fields). The special name "localhost" accepts the loopback
118 addresses 127.0.0.0/8 and ::1/128. By default, all IPs are rejected.
119
120# IRC SERVICE
121
122soju exposes an IRC service called *BouncerServ* to manage the bouncer.
123Commands can be sent via regular private messages
124(_/msg BouncerServ <command> [args...]_). Commands may be written in full or
125abbreviated form, for instance *network* can be abbreviated as *net* or just
126*n*.
127
128*help* [command]
129 Show a list of commands. If _command_ is specified, show a help message for
130 the command.
131
132*network create* *-addr* <addr> [options...]
133 Connect to a new network at _addr_. _-addr_ is mandatory.
134
135 _addr_ supports several connection types:
136
137 - _[ircs://]<host>[:port]_ connects with TLS over TCP
138 - _irc+insecure://<host>[:port]_ connects with plain-text TCP
139 - _irc+unix:///<path>_ connects to a Unix socket
140
141 Other options are:
142
143 *-name* <name>
144 Short network name. This will be used instead of _addr_ to refer to the
145 network.
146
147 *-username* <username>
148 Connect with the specified username. By default, the nickname is used.
149
150 *-pass* <pass>
151 Connect with the specified server password.
152
153 *-realname* <realname>
154 Connect with the specified real name. By default, the nickname is used.
155
156 *-nick* <nickname>
157 Connect with the specified nickname. By default, the account's username
158 is used.
159
160*network update* <name> [options...]
161 Update an existing network. The options are the same as the
162 _network create_ command.
163
164 When this command is executed, soju will disconnect and re-connect to the
165 network.
166
167*network delete* <name>
168 Disconnect and delete a network.
169
170*network status*
171 Show a list of saved networks and their current status.
172
173*channel update* <name> [options...]
174 Update the options of an existing channel.
175
176 Options are:
177
178 *-relay-detached* <mode>
179 Set when to relay messages from detached channels to the user with a BouncerServ NOTICE.
180
181 Modes are:
182
183 *message*
184 Relay any message from this channel when detached.
185
186 *highlight*
187 Relay only messages mentioning you when detached.
188
189 *none*
190 Don't relay any messages from this channel when detached.
191
192 *default*
193 Currently same as *highlight*. This is the default behaviour.
194
195 *-reattach-on* <mode>
196 Set when to automatically reattach to detached channels.
197
198 Modes are:
199
200 *message*
201 Reattach to this channel when any message is received.
202
203 *highlight*
204 Reattach to this channel when any message mentioning you is received.
205
206 *none*
207 Never automatically reattach to this channel.
208
209 *default*
210 Currently same as *none*. This is the default behaviour.
211
212 *-detach-after* <duration>
213 Automatically detach this channel after the specified duration has elapsed without receving any message corresponding to *-detach-on*.
214
215 Example duration values: *1h30m*, *30s*, *2.5h*.
216
217 Setting this value to 0 will disable this behaviour, i.e. this channel will never be automatically detached. This is the default behaviour.
218
219 *-detach-on* <mode>
220 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.
221 Joining, reattaching, sending a message, or changing any channel option will reset the timer, in addition to the messages specified by the mode.
222
223 Modes are:
224
225 *message*
226 Receiving any message from this channel will reset the auto-detach timer.
227
228 *highlight*
229 Receiving any message mentioning you from this channel will reset the auto-detach timer.
230
231 *none*
232 Receiving messages from this channel will not reset the auto-detach timer. Sending messages or joining the channel will still reset the timer.
233
234 *default*
235 Currently same as *message*. This is the default behaviour.
236
237*certfp generate* [options...] <network name>
238 Generate self-signed certificate and use it for authentication (via SASL
239 EXTERNAL).
240
241 Generates a RSA-3072 private key by default.
242
243 Options are:
244
245 *-key-type* <type>
246 Private key algoritm to use. Valid values are: rsa, ecdsa, ed25519.
247 ecdsa uses NIST P-521 curve.
248
249 *-bits* <bits>
250 Size of RSA key to generate. Ignored for other key types.
251
252*certfp fingerprint* <network name>
253 Show SHA-1 and SHA-256 fingerprints for the certificate
254 currently used with the network.
255
256*sasl set-plain* <network name> <username> <password>
257 Set SASL PLAIN credentials.
258
259*sasl reset* <network name>
260 Disable SASL authentication and remove stored credentials.
261
262*user create* -username <username> -password <password> [-admin]
263 Create a new soju user. Only admin users can create new accounts.
264
265*change-password* <new password>
266 Change current user password.
267
268# AUTHORS
269
270Maintained by Simon Ser <contact@emersion.fr>, who is assisted by other
271open-source contributors. For more information about soju development, see
272https://sr.ht/~emersion/soju.
Note: See TracBrowser for help on using the repository browser.