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