]> Cypherpunks.ru repositories - goircd.git/blobdiff - README
Many fixes and additions
[goircd.git] / README
diff --git a/README b/README
index c69f8d23ac179934749d616e6264a89d779f41cf..e9c5eb110a785cce6b2886f68a83cf0ec7dfae63 100644 (file)
--- a/README
+++ b/README
@@ -1,21 +1,17 @@
      goircd -- minimalistic simple Internet Relay Chat (IRC) server
      ==============================================================
 
-SYNOPSIS
-
-goircd is very simple IRC server, written on Go.
-
 DESCRIPTION
 
 goircd is very simple IRC server, written on Go.
-It is heavily inspired by miniircd daemon written on Python.
+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
-  and so on
-* No ident lookups, reverse DNS queries
+* There is no support for channel operators, many modes, votes, invites
+* No ident lookups
 
 But it has some convincing features:
 
@@ -23,45 +19,84 @@ But it has some convincing features:
 * Single executable binary
 * No configuration file, just few command line arguments
 * IPv6 out-of-box support
-* 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)
+* Optional ability to authenticate users by nickname and password
 
 Some remarks and recommendations related to it's simplicity:
 
-* Use either nohup or similar tools to daemonize it
-* Use either crywrap or similar tools for TLS-capable connections
-* 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
 
-* NICK/USER during registration workflow
+* PASS/NICK/USER during registration workflow
 * PING/PONGs
-* NOTICE/PRIVMSG
-* MOTD, LUSERS, WHO, WHOIS, 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 be 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
+       -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
+
+If you specify -bind and -tlsbind simultaneously, then you will have
+both raw and encrypted listening sockets. You can use -bind "" to
+disable raw socket.
+
+AUTHENTICATION
+
+You can turn on optional client authentication by preparing passwords
+file and using the -passwords argument. Format of passwords file is:
+
+    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
+saving. That is why you can safely rename them for rotation purposes.
+
+STATE FILES
+
+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