DESCRIPTION
goircd is very simple IRC server, written on Go.
-It is heavily inspired by miniircd daemon written on Python.
-GoVPN is free software: see the file COPYING for copying conditions.
+It was heavily inspired by miniircd daemon written on Python.
+goircd is free software: see the file COPYING for copying conditions.
It does not aim to replace full featured mass scalable IRC networks:
* It can not connect to other servers. Just standalone installation
* It has few basic IRC commands
-* There is no support for channel operators, modes, votes, invites
+* There is no support for channel operators, many modes, votes, invites
* No ident lookups
But it has some convincing features:
* Single executable binary
* No configuration file, just few command line arguments
* IPv6 out-of-box support
-* Ability to listen on TLS-capable ports
-* Optional channel logging to plain text files
+* Ability to additionally listen on TLS-capable ports
+* Optional channels logging to plain text files
* Optional permanent channel's state saving in plain text files
(so you can reload daemon and all channels topics and keys won't
disappear)
Some remarks and recommendations related to it's simplicity:
-* Use either nohup or similar tools to daemonize it
-* Just plain logging on stderr, without syslog support
+* Use daemontools to daemonize, setuid/gid it
+* Just plaintext logging to stdout, without syslog support -- use
+ daemontool's multilog
SUPPORTED IRC COMMANDS
* PASS/NICK/USER during registration workflow
* PING/PONGs
-* NOTICE/PRIVMSG
-* AWAY, MOTD, LUSERS, WHO, WHOIS, VERSION, QUIT
+* NOTICE/PRIVMSG, ISON
+* AWAY, MOTD, LUSERS, NAMES, WHO, WHOIS, VERSION, WALLOPS, QUIT
* LIST, JOIN, TOPIC, +k/-k channel MODE
USAGE
Just execute goircd daemon. It has following optional arguments:
- -hostname: hostname to show for client's connections
- -bind: address to bind to (:6667 by default)
- -motd: absolute path to MOTD file. It is reread every time
- MOTD is requested
- -logdir: directory where all channels messages will be saved. If
- omitted, then no logs will be kept
- -statedir: directory where all channels states will be saved and
- loaded during startup. If omitted, then states will be
- lost after daemon termination
- -tlsbind: enable TLS, specify address to listen on and path
- -tlspem to PEM file with certificate and private key
- -passwords: enable client authentication and specify path to
- passwords file
- -v: increase verbosity
+ -hostname: hostname to show for client's connections
+ -bind: address to bind to (:6667 by default)
+ -cloak: cloak user's host with the given hostname
+ -motd: absolute path to MOTD file. It is reread every time
+ MOTD is requested
+ -logdir: directory where all channels messages will be saved. If
+ omitted, then no logs will be kept
+ -statedir: directory where all channels states will be saved and
+ loaded during startup. If omitted, then states will be
+ lost after daemon termination
+ -tlsbind: enable TLS, specify address to listen on and path
+ -tlspem: to PEM file with certificate and private key
+ -passwd: enable client authentication and specify path to
+ passwords file
+ -timestamped: enabled timestamps for stderr messages
+ -verbose: increase verbosity
+ -debug: also show traffic messages
+ -perm-state-dir: permission (before umask) for newly created state directory
+-perm-state-file: permission (before umask) for newly created state file
+ -perm-log-file: permission (before umask) for newly created log file
TLS
You can turn on optional client authentication by preparing passwords
file and using the -passwords argument. Format of passwords file is:
- login1:password1\n
- login2:password2\n
+ login1:hex(sha256(password1))\n
+ login2:hex(sha256(password2))\n
...
+You can get hashed password value using: echo -n password | sha256
+
LOG FILES
Log files are not opened all the time, but only during each message
STATE FILES
-Each state file has the name equals to room's one. It contains two plain
-text lines: room's topic and room's authentication key (empty if none
-specified). For example:
-
- % cat states/meinroom
- This is meinroom's topic
- secretkey
+Room's state is created/saved when either topic or key is set. State is
+a directory (room's name) with "topic" and "key" plaintext files.
LICENCE
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-any later version.
+the Free Software Foundation, version 3 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of