3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-11-10 22:19:31 +01:00
ergo/README.md

74 lines
2.1 KiB
Markdown
Raw Normal View History

2012-04-18 06:24:26 +02:00
# Ergonomadic
2012-04-18 06:23:12 +02:00
2014-03-18 23:20:10 +01:00
Ergonomadic is an IRC daemon written from scratch in Go. Pull requests and
2014-03-18 23:29:31 +01:00
issues are welcome. Discuss it here or on Freenode in [#ergonomadic][irc].
2012-04-18 06:23:12 +02:00
## Some Features
- follows the RFC where possible
2014-03-01 23:45:23 +01:00
- gcfg gitconfig-style configuration
- server password (PASS command)
- channels with most standard modes
- IRC operators (OPER command)
2014-03-18 23:29:31 +01:00
- haproxy [PROXY protocol][proxy-proto] header for hostname setting
- passwords stored in bcrypt format
2014-02-26 01:48:12 +01:00
- channels that persist between restarts (+P)
## Why?
2012-04-18 06:58:26 +02:00
I wanted to learn Go.
## What's with the name?
2012-04-18 06:58:26 +02:00
"Ergonomadic" is an anagram of "Go IRC Daemon".
2012-12-09 21:51:50 +01:00
2014-03-01 23:45:23 +01:00
## What about SSL/TLS support?
2014-03-18 23:29:31 +01:00
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][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.
## What about federation?
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.
2014-03-01 23:45:23 +01:00
2014-02-27 07:25:10 +01:00
## Installation
2014-02-10 00:15:02 +01:00
```sh
go get
2014-02-10 00:15:02 +01:00
go install
2014-03-13 20:40:33 +01:00
ergonomadic initdb -conf ergonomadic.conf
2014-02-27 07:25:10 +01:00
```
## Configuration
2014-03-18 23:29:31 +01:00
See the example `ergonomadic.conf`. Passwords are base64-encoded bcrypted byte
strings. You can generate them with the `genpasswd` subcommand.
2014-02-27 07:25:10 +01:00
```sh
2014-03-13 20:40:33 +01:00
ergonomadic genpasswd 'hunter2!'
2014-02-27 07:25:10 +01:00
```
## Running the Server
```sh
2014-03-13 20:40:33 +01:00
ergonomadic run -conf ergonomadic.conf
```
2014-02-27 20:07:21 +01:00
2014-03-13 20:40:33 +01:00
## IRC Documentation
2014-02-27 20:07:21 +01:00
- [RFC 1459: Internet Relay Chat Protocol](http://tools.ietf.org/html/rfc1459)
- [RFC 2811: IRC Channel Management](http://tools.ietf.org/html/rfc2811)
- [RFC 2812: IRC Client Protocol](http://tools.ietf.org/html/rfc2812)
- [RFC 2813: IRC Server Protocol](http://tools.ietf.org/html/rfc2813)
- [IRC/2 Numeric List](https://www.alien.net.au/irc/irc2numerics.html)
2014-03-18 23:29:31 +01:00
[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