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

Last change on this file since 372 was 372, checked in by admin, 5 years ago

doc: fix typo in man page

File size: 6.2 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
90 If the scheme is omitted, "ircs" is assumed. If multiple *listen*
91 directives are specified, soju will listen on each of them.
92
93*hostname* <name>
94 Server hostname (default: system hostname).
95
96*tls* <cert> <key>
97 Enable TLS support. The certificate and the key files must be PEM-encoded.
98
99*sql* <driver> <source>
100 Set the SQL driver settings. The only supported driver is "sqlite3". The
101 source is the path to the SQLite database file. By default, the path to the
102 database file is "soju.db".
103
104*log* <path>
105 Path to the bouncer logs root directory, or empty to disable logging. By
106 default, logging is disabled.
107
108*http-origin* <patterns...>
109 List of allowed HTTP origins for WebSocket listeners. The parameters are
110 interpreted as shell patterns, see *glob*(7).
111
112*accept-proxy-ip* <cidr...>
113 Allow the specified IPs to act as a proxy. Proxys have the ability to
114 overwrite the remote and local connection addresses (via the X-Forwarded-\*
115 HTTP header fields). By default, the loopback addresses 127.0.0.0/8 and
116 ::1/128 are accepted.
117
118# IRC SERVICE
119
120soju exposes an IRC service called *BouncerServ* to manage the bouncer.
121Commands can be sent via regular private messages
122(_/msg BouncerServ <command> [args...]_). Commands may be written in full or
123abbreviated form, for instance *network* can be abbreviated as *net* or just
124*n*.
125
126*help* [command]
127 Show a list of commands. If _command_ is specified, show a help message for
128 the command.
129
130*network create* *-addr* <addr> [options...]
131 Connect to a new network at _addr_. _-addr_ is mandatory.
132
133 _addr_ supports several connection types:
134
135 - _[ircs://]<host>[:port]_ connects with TLS over TCP
136 - _irc+insecure://<host>[:port]_ connects with plain-text TCP
137 - _irc+unix:///<path>_ connects to a Unix socket
138
139 Other options are:
140
141 *-name* <name>
142 Short network name. This will be used instead of _addr_ to refer to the
143 network.
144
145 *-username* <username>
146 Connect with the specified username. By default, the nickname is used.
147
148 *-pass* <pass>
149 Connect with the specified server password.
150
151 *-realname* <realname>
152 Connect with the specified real name. By default, the nickname is used.
153
154 *-nick* <nickname>
155 Connect with the specified nickname. By default, the account's username
156 is used.
157
158*network update* <name> [options...]
159 Update an existing network. The options are the same as the
160 _network create_ command.
161
162 When this command is executed, soju will disconnect and re-connect to the
163 network.
164
165*network delete* <name>
166 Disconnect and delete a network.
167
168*network status*
169 Show a list of saved networks and their current status.
170
171*certfp generate* [options...] <network name>
172 Generate self-signed certificate and use it for authentication (via SASL
173 EXTERNAL).
174
175 Generates a RSA-3072 private key by default.
176
177 Options are:
178
179 *-key-type* <type>
180 Private key algoritm to use. Valid values are: rsa, ecdsa, ed25519.
181 ecdsa uses NIST P-521 curve.
182
183 *-bits* <bits>
184 Size of RSA key to generate. Ignored for other key types.
185
186*certfp fingerprint* <network name>
187 Show SHA-1 and SHA-256 fingerprints for the certificate
188 currently used with the network.
189
190*sasl set-plain* <network name> <username> <password>
191 Set SASL PLAIN credentials.
192
193*sasl reset* <network name>
194 Disable SASL authentication and remove stored credentials.
195
196*user create* -username <username> -password <password> [-admin]
197 Create a new soju user. Only admin users can create new accounts.
198
199*change-password* <new password>
200 Change current user password.
201
202# AUTHORS
203
204Maintained by Simon Ser <contact@emersion.fr>, who is assisted by other
205open-source contributors. For more information about soju development, see
206https://sr.ht/~emersion/soju.
Note: See TracBrowser for help on using the repository browser.