Encinch
Transparent blowfish encryption plugin for Cinch: An IRC Bot Building Framework
https://github.com/cinchrb/cinch
Installation
$[sudo] gem install encinch
Example
require 'cinch'
require 'cinch/plugins/encinch'
bot = Cinch::Bot.new do
configure do |c|
c.nick = "EnCinch"
c.server = "irc.freenode.org"
c.port = 7000
c.ssl.use = true
c.channels = ["#cryptedchan", "#plaintext", "#ignorechannel"]
c.plugins.plugins = [Cinch::Plugins::EnCinch] # optionally add more plugins
c.plugins.options[Cinch::Plugins::EnCinch] = {
:drop => true,
:key_file => 'keys/key.yml',
:uncrypted => ["#plaintext"],
:ignore => ["#ignorechan", "ignoreperson"],
:encrypt => {
'#cryptedchan' => 'myfishkey',
'#ignorechan' => 'ignoretargetscanhaveencryptionkeys'
'cryptednick' => 'mypersonalfishkey',
:default => 'defaultfishkey'
}
}
end
end
bot.start
Features
- Simple transparent message encryption for your Cinch IRC bot.
- Nicks with personal keys are updated on nick change.
- Ignore incoming encrypted messages from specific channels or users.
- Allow unencrypted messages to specific channels or users.
- Drop messages if target key not found.
- Ability to define default encryption key.
- Keys and options stored in yaml.
Commands
None. You should write your own plugin to add or remove keys, tailored to your particular needs.
Options
:encrypt
A hash of encryption targets and their corresponding encryption keys. Targets should all be lowercase.
:default
can provide a general purpose key, possibly good for private communications with the bot or ensuring it does not respond unencrypted.
:uncrypted
An array of channels and individuals from which the bot will not encrypt messages. All entries must be lowercase.
:uncrypted
is optional.
:ignore
An array of channels and individuals (other bots?) to ignore encrypted messages. All entries must be lower case. Note that it will not drop messages sent from the bot.
:ignore
is optional.
:drop
Boolean value indicating if unencrypted messages should be dropped. Targets in the :uncrypted
array are not affected. Unnecessary if a :default
key is set.
:key_file
Options are now stored in yaml. The default location is 'keys/encinch.yml'. Supply an alternate location if you so desire. Location will be created if it does not exist.
TODO
- key exchange
- user feedback... :-)