This leaf is capable of running a script on the local server in response to the !deploy channel command. For security you have to authenticate first. To do so you send it a message with a password. it then it http authenticates against a specific url with your nickname and the mesage text as the password. If the file fetched matches predesignated contents then you are added to the internal ACL. Anyone in the ACL can run the !deploy command. If you leave the chan, join the chan, change nicks, or quit irc you will be removed from the ACL and have to re-authenticate. This could be adapted to any system command for any purpose. I ended up not needing this leaf; I still wanted to put it out there since its functional and useful.
require 'net/http' require 'net/https' class Commander < AutumnLeaf before_filter :authenticate, :only => [ :reload, :sync, :quit, :deploy ] $authenticated = [] def authenticate_filter(sender, channel, command, msg, options) return true if $authenticated.include?(sender) return false end def did_receive_private_message(sender, msg) # assumes there is a file at # http://my.svnserver.com/svn/access # whose contents are "granted" Net::HTTP.start('my.svnserver.com') {|http| req = Net::HTTP::Get.new('/svn/access'); req.basic_auth(sender, msg) response = http.request(req) $authenticated < < sender if response.body == "granted" } end def someone_did_quit(sender, msg) $authenticated.delete(sender) end def someone_did_leave_channel(sender, channel) $authenticated.delete(sender) end def someone_did_join_channel(sender, channel) $authenticated.delete(sender) end def deploy_command(sender, channel, text) message "deploying..." system("sudo /usr/local/bin/deploy.sh 1>/dev/null 2>/dev/null") end end