]> Cypherpunks.ru repositories - goircd.git/blob - README
Ability to listen on raw and TLS sockets simultaneously
[goircd.git] / README
1      goircd -- minimalistic simple Internet Relay Chat (IRC) server
2      ==============================================================
3
4 SYNOPSIS
5
6 goircd is very simple IRC server, written on Go.
7
8 DESCRIPTION
9
10 goircd is very simple IRC server, written on Go.
11 It is heavily inspired by miniircd daemon written on Python.
12 It does not aim to replace full featured mass scalable IRC networks:
13
14 * It can not connect to other servers. Just standalone installation
15 * It has few basic IRC commands
16 * There is no support for channel operators, modes, votes, invites
17   and so on
18 * No ident lookups, reverse DNS queries
19
20 But it has some convincing features:
21
22 * Only standard Go libraries, no external requirements
23 * Single executable binary
24 * No configuration file, just few command line arguments
25 * IPv6 out-of-box support
26 * Ability to listen on TLS-capable ports
27 * Optional channel logging to plain text files
28 * Optional permanent channel's state saving in plain text files
29   (so you can reload daemon and all channels topics and keys won't
30   disappear)
31 * Optional ability to authenticate users by nickname↔password
32
33 Some remarks and recommendations related to it's simplicity:
34
35 * Use either nohup or similar tools to daemonize it
36 * Just plain logging on stderr, without syslog support
37
38 SUPPORTED IRC COMMANDS
39
40 * PASS/NICK/USER during registration workflow
41 * PING/PONGs
42 * NOTICE/PRIVMSG
43 * MOTD, LUSERS, WHO, WHOIS, VERSION, QUIT
44 * LIST, JOIN, TOPIC, +k/-k channel MODE
45
46 USAGE
47
48 Just execute goircd daemon. It has following optional arguments:
49
50 * -hostname: hostname to show for client's connections
51 * -bind: address to bind to (:6667 be default)
52 * -motd: absolute path to MOTD file. It is reread every time MOTD is
53          requested
54 * -logdir: directory where all channels messages will be saved. If
55            omitted, then no logs will be kept
56 * -statedir: directory where all channels states will be saved and
57              loaded during startup. If omitted, then states will be
58              lost after daemon termination
59 * -tlsbind/-tlskey/-tlscert: enable TLS, specify address to listen on,
60                              certificate and key files
61 * -passwords: enable client authentication and specify path to
62               passwords file
63 * -verbose: increase log messages verbosity
64
65 TLS
66
67 If you specify -bind and -tlsbind simultaneously, then you will have
68 both raw and encrypted listening sockets. You can use -bind "" to
69 disable raw socket.
70
71 AUTHENTICATION
72
73 You can turn on optional client authentication by preparing passwords
74 file and using the -passwords argument. Format of passwords file is:
75
76     login1:password1\n
77     login2:password2\n
78     …
79
80 You can force rereading of passwords file without server interruption by
81 sending HUP signal to him.
82
83 LICENCE
84
85 This program is free software: you can redistribute it and/or modify
86 it under the terms of the GNU General Public License as published by
87 the Free Software Foundation, either version 3 of the License, or
88 any later version.
89
90 This program is distributed in the hope that it will be useful,
91 but WITHOUT ANY WARRANTY; without even the implied warranty of
92 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
93 GNU General Public License for more details.