Many fixes and additions
* NAMES and WALLOPS command * -cloak option * -v renamed to -verbose * -passwords renamed to -passwd * -debug option prints traffic messages * without -verbose only startup/shutdown and error messages are printed * -timestamped option provides timestamps in printed messages, as earlier. No timestamps is useful for running under daemontools * passwords are stored in SHA256-hashed format * state files replaced with state directory with files * removed many unnecessary pointers and locks * graceful shutdown with all clients notification * fixed time structure printing in log files, instead of short human readable timestamp * PART is sent to the user itself, to notify his client about leaving * log messages are printed to stdout, instead of stderr, for friendliness with daemontools logger * ability to configure newly created directories and files with -perm-state-dir, -perm-state-file, -perm-log-file
This commit is contained in:
parent
def58d0f49
commit
b7fb219307
13 changed files with 998 additions and 872 deletions
62
README
62
README
|
@ -10,7 +10,7 @@ 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:
|
||||
|
@ -19,8 +19,8 @@ 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)
|
||||
|
@ -28,35 +28,42 @@ But it has some convincing features:
|
|||
|
||||
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, ISON
|
||||
* AWAY, MOTD, LUSERS, WHO, WHOIS, VERSION, QUIT
|
||||
* 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
|
||||
|
||||
|
@ -69,10 +76,12 @@ AUTHENTICATION
|
|||
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
|
||||
|
@ -80,13 +89,8 @@ saving. That is why you can safely rename them for rotation purposes.
|
|||
|
||||
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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue