packages feed

hulk-0.1: README.md

# Hulk IRC Server Guide

## Installation

### From Hackage

    $ cabal install hulk

### From Github

    $ git clone git://github.com/chrisdone/hulk.git
    $ cd hulk
    $ cabal install

## Usage

### Configuration

    $ cp hulk.conf.example hulk.conf
    
You can edit the port, server name and MOTD file in here.
    
### Auth

    $ mkdir auth

Put a salt for your passwords in auth/passwd. For example:

    $ head -c 128 /dev/random | sha1sum > auth/passwd-key

Then generate a password for your IRC user:

    $ hulk-generate-pass -u demo -c=hulk.conf >> auth/passwd

(It will wait for a single line containing a pass and output the user
and sha1 sum.)

### Start the server

    $ hulk -chulk.conf

Logs / events will be outputted to stdout. This will be a
configuration option later. (Send me a patch if you already did this!)

Clients *must* connect with a password and user that matches the users
and passwords in your `auth/passwd` file.

## Using with SSL

You can use it with stunnel.

Change the port setting in hulk.conf:

    port = 6666

Generate an SSL certificate:

    $ openssl req -new -out hulk.pem -keyout hulk.pem -nodes -x509 -days 365

Make a stunnel.conf file:

    pid = /path/to/wherever/stunnel.pid
    client = no
    foreground = yes
    output = /dev/stdout
    cert = hulk.pem
    [hulk]
    connect = 127.0.0.1:6666
    accept = 6667
    
Then run it:
    
    stunnel stunnel.conf

(It may be in `/usr/sbin/stunnel` depending on your system.)

Then run hulk:

    hulk -chulk.conf

## Logging

Hulk doesn't support specific channel logging yet, but you can use a
logger bot.

    $ cabal install hog
    $ hog -h=127.0.0.1 --port=6666 -n=hog -u=hog --pass=mypassword --channels=#dev,#x -l/directory/of/logs -d5

`-d5` is the timeout before reconnect.

## Using an announcer bot

If you're using a private IRC server you're probably using it at a dev
company, and you probably want to make announcements about commits,
tickets, etc. from a feed.

You can use rss2irc. But you need a patched version which supports
sending the PASS command:

    $ git clone git://github.com/chrisdone/rss2irc.git
    $ cd rss2irc
    $ cabal install

Then run it:

    $ rss2irc http://myserver/foo.atom announce@127.0.0.1/#dev \
      -p 6667 -i 1 -l  --pass myannouncepass

## Utility for 'telling' people things externally

Sometimes you want automatic scripts to send notices to the IRC.

Save this script in `tell.sh`:

    (cat /mypath/tell-login; echo "NICK $1"; echo "TELL $2 :$3") | nc serverip 6667 -w 1 > /dev/null

Run it like this:

    $ tell announce '#dev' 'Stuff happened!'

And put this in your /mypath/tell-login:

    $ cat /opt/hulk/tell-login
    PASS mypassword
    USER myuser * * *