1 goircd -- minimalistic simple Internet Relay Chat (IRC) server
2 ==============================================================
6 goircd is very simple IRC server, written on Go.
7 It is heavily inspired by miniircd daemon written on Python.
8 It does not aim to replace full featured mass scalable IRC networks:
10 * It can not connect to other servers. Just standalone installation
11 * It has few basic IRC commands
12 * There is no support for channel operators, modes, votes, invites
13 * No ident lookups, reverse DNS queries
15 But it has some convincing features:
17 * Only standard Go libraries, no external requirements
18 * Single executable binary
19 * No configuration file, just few command line arguments
20 * IPv6 out-of-box support
21 * Ability to listen on TLS-capable ports
22 * Optional channel logging to plain text files
23 * Optional permanent channel's state saving in plain text files
24 (so you can reload daemon and all channels topics and keys won't
26 * Optional ability to authenticate users by nickname and password
28 Some remarks and recommendations related to it's simplicity:
30 * Use either nohup or similar tools to daemonize it
31 * Just plain logging on stderr, without syslog support
33 SUPPORTED IRC COMMANDS
35 * PASS/NICK/USER during registration workflow
38 * AWAY, MOTD, LUSERS, WHO, WHOIS, VERSION, QUIT
39 * LIST, JOIN, TOPIC, +k/-k channel MODE
43 Just execute goircd daemon. It has following optional arguments:
45 -hostname: hostname to show for client's connections
46 -bind: address to bind to (:6667 by default)
47 -motd: absolute path to MOTD file. It is reread every time
49 -logdir: directory where all channels messages will be saved. If
50 omitted, then no logs will be kept
51 -statedir: directory where all channels states will be saved and
52 loaded during startup. If omitted, then states will be
53 lost after daemon termination
54 -tlsbind : enable TLS, specify address to listen on and path
55 -tlspem to PEM file with certificate and private key
56 -passwords: enable client authentication and specify path to
58 -v: increase verbosity
62 If you specify -bind and -tlsbind simultaneously, then you will have
63 both raw and encrypted listening sockets. You can use -bind "" to
68 You can turn on optional client authentication by preparing passwords
69 file and using the -passwords argument. Format of passwords file is:
75 You can force rereading of passwords file without server interruption by
76 sending HUP signal to him.
80 This program is free software: you can redistribute it and/or modify
81 it under the terms of the GNU General Public License as published by
82 the Free Software Foundation, either version 3 of the License, or
85 This program is distributed in the hope that it will be useful,
86 but WITHOUT ANY WARRANTY; without even the implied warranty of
87 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
88 GNU General Public License for more details.