An IRC Server aimed for small companies and teams. Update for Ruby 1.9.2.
Ruby
Switch branches/tags
Nothing to show
Pull request Compare This branch is 22 commits ahead of tedkulp:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
.gitignore
README.markdown
README.orig
Rakefile
ircchannel.rb
ircclient.rb
ircd.rb
ircserver.rb
lineconnection.rb
rbircd.conf.dist
server_config.rb

README.markdown

Hideaway

An IRC Server aimed for small companies and teams. Designed for authenticating users, controlling their access to the server/channels. It's written in Ruby, and based on the awesome EventMachine networking library.

This project was forked from the rbircd project on Github. Thanks to danopia for starting it!

Database

Hideaway uses MongoDB as it's backend. It stores all authentication details for users, as well as all the channel logs and other details. While this may be modified at some point to allow for other databases, it's not in the immediate roadmap, as it serves all of the needs of the project without too much trouble.

Installation

Hideaway requires the following gems:

  • eventmachine
  • daemons
  • mongo
  • json

Users are stored in the users collection in mongodb. The passwords are simply a sha1 hashed string. The easiest way to hash it is to use:

echo -n "blah" | shasum

Which will produce:

5bf1fd927dfb8679496a2e6cf00cbe50c1c87145

Now go into the mongo shell and do the following:

$ mongo
MongoDB shell version: 1.6.5
connecting to: test
> use rbircd
switched to db rbircd
> db.users.insert({username: "test", password: "5bf1fd927dfb8679496a2e6cf00cbe50c1c87145", allow_channels: ['*']})

If you now look, you'll see the user is created:

> db.users.find()
{ "_id" : ObjectId("4d4a91d1595c4e3b7721d196"), "username" : "test",
	"allow_channels" : [ "*" ], "password" : "5bf1fd927dfb8679496a2e6cf00cbe50c1c87145" }

(We'll setup a rake task to add/remove users and other settings in the future)

Copy rbircd.conf.dist to rbircd.conf and modify to taste. Run ircd.rb to start it up.

TODO

  • Crypt passwords (done)
  • Add allowed channels for users (done)
  • Ability to spit back logs to people who were offline (done)
  • Add the concept of groups for permissions
  • Setup Rakefile for common tasks and maintenance (add users, groups, etc.) (done)
  • Ping timeouts (done? -- needs testing)
  • Web based configuration tool
    • Sinatra?
    • Rails?
    • PHP?
  • Allow ability to auto-join channels on connect
  • Join channel list
  • Modes
  • Code needs to be split up across files
  • Check for params to reduce errors
  • Check for chanop etc. before accepting modes, topics
  • INVITE
  • AWAY