1. kylelemons
  2. jaid

Wiki

Clone wiki

jaid / Home

Introduction

The jaid project is a project to create an IRC daemon written entirely in the Go language (golang.org). The architecture is to be heavily goroutine/channel centric (as good, idiomatic go code should be), which will hopefully make it suitable for running on multicore machines. The goal is also to make it adhere to RFC1459, RFC2812, ISUPPORT, and TS6 as possible.

Status

Here is a brief description of the status of the project, as of release-v0.6.0

Client Communication

Things that work:

  • Client registration (NICK/USER/QUIT) with ISUPPORT
  • User queries (WHOIS/WHO)
  • Operator commands (OPER/WALLOPS/CLEARCHAN/CLEAROPS/KILL/OJOIN)
  • Channel registration (JOIN/PART/NAMES)
  • Channel management (TOPIC/KICK/INVITE)
  • Channel modes (MODE/+beI/+l/+k/+imnpstq)
  • Membership querying (NICK/WHO)

Things that aren't implemented:

  • Operator commands (KLINE)
  • Query commands (ADMIN/LUSERS)
  • Operator monitoring (+c, etc)
  • Connection classes
  • Server linking

Server Communication

There is currently no support for server-to-server linking. This will be added once the client communication is more robust.

RFC Compliance

Currently, jaid deviates from the RFCs in (including, but not liminted to) the following ways:

  • Only #-channels are supported
  • Halfop is included
    • Halfops can (un)set all flags, (un)set keys and limits, and unban
    • Halfops can kick anyone but ops
  • Mode changes may be nonstandard:
    • MODE #chan tb+o User is the same as MODE +t, MODE b, and MODE +o User
    • Key unset (-k key) must equal the key set (+k key) to actually remove it
    • Keys (+k key) are limited to the same characters as nicknames
    • Unban (-b mask) must actually have been banned (+b mask) to report the -b
    • Users are allowed to set +q

Installation

For the most up-to-date information, read INSTALL. The quick-start instructions below are a few commands that will take you from zero to a running copy of jaid. You will want to edit the contents of ircd.conf and the conf/ directory to your liking, however, before you start connecting clients.

Quick-start:

hg clone -u release http://bitbucket.org/kylelemons/jaid && cd jaid
make deppkg install
mkdir -p conf/ssl && cd conf/ssl && jaid-gencert -host="ssl.mynetwork.net"; cd -
cp ircd.conf{.example,}
jaid

Dependencies

Jaid currently also depends on the log4go and goconf libraries (installed for you by make deppkg):

goinstall -u log4go.googlecode.com/hg
goinstall -u goconf.googlecode.com/hg

Acknowledgements

Thanks go out to the many denizens of #go-nuts who signed on to test things out, and in particular to KBme <johnny (a) r0x0r (.) me> for his help with live-fire and compliance testing.

Updated