990937d451
Simplify code and server maintaining by removing password file caching and refreshing it with HUP signal. Also use pointers to strings, already presented after flag-module work. |
||
---|---|---|
AUTHORS | ||
client_test.go | ||
client.go | ||
COPYING | ||
daemon_test.go | ||
daemon.go | ||
events.go | ||
goircd.go | ||
INSTALL | ||
Makefile | ||
README | ||
room_test.go | ||
room.go |
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 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 But it has some convincing features: * Only standard Go libraries, no external requirements * 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 * 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↔password 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 SUPPORTED IRC COMMANDS * PASS/NICK/USER during registration workflow * PING/PONGs * NOTICE/PRIVMSG * MOTD, LUSERS, WHO, WHOIS, VERSION, 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 * -tlsbind/-pem: enable TLS, specify address to listen on and path to PEM file with certificate and private key * -passwords: enable client authentication and specify path to passwords file * -verbose: increase log messages verbosity 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:password1\n login2:password2\n … You can force rereading of passwords file without server interruption by sending HUP signal to him. 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. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.