All Projects → heyitsanthony → etcdircd

heyitsanthony / etcdircd

Licence: AGPL-3.0 license
An ircd backed by etcd

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to etcdircd

rubircd
💬 An IRC server written in Ruby
Stars: ✭ 23 (-69.74%)
Mutual labels:  irc, ircd, irc-server
bahamut
The Bahamut IRC Daemon
Stars: ✭ 47 (-38.16%)
Mutual labels:  irc, ircd, irc-server
ergo
A modern IRC server (daemon/ircd) written in Go.
Stars: ✭ 1,916 (+2421.05%)
Mutual labels:  irc, ircd, irc-server
solanum
An IRCd for unified networks
Stars: ✭ 179 (+135.53%)
Mutual labels:  irc, ircd
IRC-Server
IRC server based on TCP/IP protocol to rfc1459 standard
Stars: ✭ 27 (-64.47%)
Mutual labels:  irc, irc-server
Jenni
jenni was a python IRC bot. Project is closed. Try Sopel instead, https://sopel.chat/
Stars: ✭ 232 (+205.26%)
Mutual labels:  irc
Phabulous
A Phabricator bot for Slack
Stars: ✭ 222 (+192.11%)
Mutual labels:  irc
Archivebot
ArchiveBot, an IRC bot for archiving websites
Stars: ✭ 218 (+186.84%)
Mutual labels:  irc
sshproxy
Proxy SSH connections on a gateway
Stars: ✭ 75 (-1.32%)
Mutual labels:  etcd
anyfesto
Low cost Raspberry Pi /Linux based access point with audio, education and communications local content server. Inspired by the ideas of sharing with others. Anyfesto - a platform from which to speak.
Stars: ✭ 66 (-13.16%)
Mutual labels:  irc-server
Irccloud Desktop
IRCCloud Desktop App
Stars: ✭ 215 (+182.89%)
Mutual labels:  irc
Matterircd
Connect to your mattermost or slack using your IRC-client of choice.
Stars: ✭ 241 (+217.11%)
Mutual labels:  irc
Snooful
The most complete bot for moderation, utility, and fun in Reddit Chat.
Stars: ✭ 13 (-82.89%)
Mutual labels:  irc
CloudBot
CloudBot - The simple, fast, expandable, open-source Python IRC Bot!
Stars: ✭ 69 (-9.21%)
Mutual labels:  irc
minietcd
☁️ Super small and "dumb" read-only client in Go for coreos/etcd (v2).
Stars: ✭ 12 (-84.21%)
Mutual labels:  etcd
Hexchat
GTK+ IRC client
Stars: ✭ 2,608 (+3331.58%)
Mutual labels:  irc
jChat
jChat is an overlay that allows you to show your Twitch chat on screen with OBS, XSplit, and any other streaming software that supports browser sources.
Stars: ✭ 106 (+39.47%)
Mutual labels:  irc
Android
IRCCloud Android App
Stars: ✭ 244 (+221.05%)
Mutual labels:  irc
Ios
IRCCloud iOS App
Stars: ✭ 243 (+219.74%)
Mutual labels:  irc
freenode-exodus
Projects and channels that have decided to leave Freenode. (Final leave count: 1056)
Stars: ✭ 130 (+71.05%)
Mutual labels:  irc

etcdircd

An encrypted irc daemon backed by etcd.

Running etcdircd

Install go, then build etcd and etcdircd:

$ go get github.com/heyitsanthony/etcdircd/cmd/etcdircd
$ go get github.com/coreos/etcd/cmd/etcd

Launch an etcd server and an etcdircd server:

$ etcd &
$ etcdircd &

Connect with an irc client:

$ irssi -n mynick --connect localhost

If it all worked, the client will connect and display the welcome banner. See the security guide to encrypt everything.

How it works

An etcdircd server communicates with other etcdircd servers through etcd. Each server receives messages by watching on etcd keys; network disconnection is tolerated by resuming the watches. If an etcdircd server permanently loses contact with etcd, its resources are automatically released through session expiration.

User information is stored under /user/ with a given <nick>. The key /user/ctl/<nick> holds user metadata including modes, name, and joined channels. The key /user/msg/<nick> forwards IRC messages to <nick>'s connection. For example, writing a PRIVMSG message to /user/msg/<nick> will send a private message to <nick>.

Channel information is similar; its keys are prefixed with /chan/ and take a given <channel>. The key /chan/ctl/<channel> holds metadata such as the channel topic. The key /chan/msg/<nick> forwards IRC messages to all users on the channel. To notify channels when users disconnect, joined users are written to per-server keys /chan/nicks/<channel>/<session>; when the session expires, the key deletion event signals server loss and all the server's users are removed from the channel.

Limitations

etcdircd is still under active development. It's enough to chat, but not much else!

etcd backend encryption is missing:

  • Key revocation
  • Key rotation (2^32 messages before risking repeat IV)
  • Replay attack protection
  • Certificates other than 4096-bit RSA
  • Physical attestation

The irc frontend:

  • Many IRC commands and modes
  • Services
  • Server linking

Contact

Use the issue tracker

Or try the etcd channel on freenode.

License

etcdircd is under the AGPLv3 license. See LICENSE for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].