This commit is contained in:
Jeremy Latt 2014-03-18 15:29:31 -07:00
parent e5bba28daa
commit a4f4e4df9c

@ -1,8 +1,7 @@
# Ergonomadic # Ergonomadic
Ergonomadic is an IRC daemon written from scratch in Go. Pull requests and Ergonomadic is an IRC daemon written from scratch in Go. Pull requests and
issues are welcome. Discuss it here or on Freenode in issues are welcome. Discuss it here or on Freenode in [#ergonomadic][irc].
[#ergonomadic](irc://chat.freenode.net/#ergonomadic).
## Some Features ## Some Features
@ -11,7 +10,7 @@ issues are welcome. Discuss it here or on Freenode in
- server password (PASS command) - server password (PASS command)
- channels with most standard modes - channels with most standard modes
- IRC operators (OPER command) - IRC operators (OPER command)
- haproxy [PROXY protocol](http://haproxy.1wt.eu/download/1.5/doc/proxy-protocol.txt) header for hostname setting - haproxy [PROXY protocol][proxy-proto] header for hostname setting
- passwords stored in bcrypt format - passwords stored in bcrypt format
- channels that persist between restarts (+P) - channels that persist between restarts (+P)
@ -25,14 +24,17 @@ I wanted to learn Go.
## What about SSL/TLS support? ## What about SSL/TLS support?
Go has a not-yet-verified-as-safe TLS 1.2 implementation. Sadly, many Go has a not-yet-verified-as-safe TLS 1.2 implementation. Sadly, many popular
popular IRC clients will negotiate nothing newer than SSLv2. If you IRC clients will negotiate nothing newer than SSLv2. If you want to use SSL to
want to use SSL to protect traffic, I recommend using protect traffic, I recommend using [stunnel][stunnel] version 4.56 with
[stunnel](https://www.stunnel.org/index.html) version 4.56 with haproxy's [PROXY protocol][proxy-proto]. This will allow the server to get the
haproxy's client's original addresses for hostname lookups.
[PROXY protocol](http://haproxy.1wt.eu/download/1.5/doc/proxy-protocol.txt). This
will allow the server to get the client's original addresses for ## What about federation?
hostname lookups.
IRC federation solves a problem that was more likely to occur on the internet of
1991 than today. We are exploring alternatives to federation that avoid nickname
and channel sync issues created during netsplits.
## Installation ## Installation
@ -44,9 +46,8 @@ ergonomadic initdb -conf ergonomadic.conf
## Configuration ## Configuration
See the example `ergonomadic.conf`. Passwords are base64-encoded See the example `ergonomadic.conf`. Passwords are base64-encoded bcrypted byte
bcrypted byte strings. You can generate them with the `genpasswd` strings. You can generate them with the `genpasswd` subcommand.
subcommand.
```sh ```sh
ergonomadic genpasswd 'hunter2!' ergonomadic genpasswd 'hunter2!'
@ -65,3 +66,8 @@ ergonomadic run -conf ergonomadic.conf
- [RFC 2812: IRC Client Protocol](http://tools.ietf.org/html/rfc2812) - [RFC 2812: IRC Client Protocol](http://tools.ietf.org/html/rfc2812)
- [RFC 2813: IRC Server Protocol](http://tools.ietf.org/html/rfc2813) - [RFC 2813: IRC Server Protocol](http://tools.ietf.org/html/rfc2813)
- [IRC/2 Numeric List](https://www.alien.net.au/irc/irc2numerics.html) - [IRC/2 Numeric List](https://www.alien.net.au/irc/irc2numerics.html)
[proxy-proto]: http://haproxy.1wt.eu/download/1.5/doc/proxy-protocol.txt
[irc]: irc://chat.freenode.net/#ergonomadic
[stunnel]: https://www.stunnel.org/index.html