irc | ||
.gitignore | ||
LICENSE | ||
oragono.go | ||
oragono.motd | ||
oragono.yaml | ||
README.md |
Oragono is a very early, extremely experimental fork of the Ergonomadic IRC daemon. Ergonomadic looks cool, and this is something I can experiment on. Hopefully most of the stuff I do in this can be merged back into Ergonomadic! Also see the mammon IRC daemon for something similar written in Python.
Features
- UTF-8 nick and channel names
- yaml configuration
- server password (PASS command)
- channels with most standard modes
- IRC operators (OPER command)
- passwords stored in bcrypt format
- channels that persist between restarts (+P)
- messages are queued in the same order to all connected clients
What about SSL/TLS support?
Go has a not-yet-verified-as-safe TLS 1.2 implementation. Sadly, many popular IRC clients will negotiate nothing newer than SSLv2. If you want to use SSL to protect traffic, I recommend using stunnel version 4.56 with haproxy’s [PROXY protocol][proxy-proto]. This will allow the server to get the client’s original addresses for hostname lookups.
Installation
go get
go install
cp oragono.yaml ircd.yaml
vim ircd.yaml # modify the config file to your liking
oragono initdb
Configuration
See the example oragono.yaml
.
Passwords are base64-encoded bcrypted byte strings. You can generate
them with the genpasswd
subcommand.
oragono genpasswd
Running the server
oragono run
Credits
- Jeremy Latt, creator of Ergonomadic, https://github.com/jlatt
- Edmund Huber, maintainer of Ergonomadic, https://github.com/edmund-huber
- Niels Freier, added WebSocket support to Ergonomadic, https://github.com/stumpyfr
- apologies to anyone I forgot.