X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fquakeauth.rb;h=c1a8f9c474c53ab1d720a7e2b1de57b32c929b60;hb=783ffa4235330029d661752b1023db635b26f2b3;hp=dd1c884d5e6b8c033fc4a91a300e5e04732fde77;hpb=32f53f6a17396a8828c30c58ce8545c93c04ff2c;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/quakeauth.rb b/data/rbot/plugins/quakeauth.rb index dd1c884d..c1a8f9c4 100644 --- a/data/rbot/plugins/quakeauth.rb +++ b/data/rbot/plugins/quakeauth.rb @@ -1,18 +1,29 @@ -# automatically auths with Q on quakenet servers +#-- vim:sw=2:et +#++ +# +# :title: QuakeNet Auth Plugin +# +# Author:: Raine Virta +# Copyright:: (C) 2008 Raine Virta +# License:: GPL v2 +# +# Automatically auths with Q on QuakeNet servers class QPlugin < Plugin - + def help(plugin, topic="") case topic when "" - return "quath plugin: handles Q auths. topics set, identify" + return "qauth plugin: handles Q auths. topics set, identify, register" when "set" - return "nickserv set : set the Q user and password and use it to identify in future" + return "qauth set : set the Q user and password and use it to identify in future" when "identify" - return "quath identify: identify with Q (if user and auth are set)" + return "qauth identify: identify with Q (if user and auth are set)" + when "register" + return "qauth register : register with Q, an email on how to proceed will be sent to the email address you provide" end end - + def initialize super # this plugin only wants to store strings! @@ -24,28 +35,81 @@ class QPlugin < Plugin val end end + @source = nil end def set(m, params) @registry['quakenet.user'] = params[:nick] - @registry['quakenet.auth'] = params[:passwd] + @registry['quakenet.auth'] = params[:password] m.okay end - + def connect - identify(nil, nil) + identify(nil, {}) if on_quakenet? end + def identify(m, params) + @source = m.replyto if m + @registry['quakenet.auth'] = params[:password] if params[:password] + if @registry.has_key?('quakenet.user') && @registry.has_key?('quakenet.auth') - debug "authing with Q using #{@registry['quakenet.user']} #{@registry['quakenet.auth']}" - @bot.sendmsg "PRIVMSG", "Q@CServe.quakenet.org", "auth #{@registry['quakenet.user']} #{@registry['quakenet.auth']}" - m.okay if m + user = @registry['quakenet.user'] + pass = @registry['quakenet.auth'] + + debug "authing with Q using #{user} #{pass}" + msg_q "auth #{user} #{pass}" else - m.reply "not configured, try 'qauth set :nick :passwd'" if m + m.reply "not configured, try 'qauth set :nick :password' or 'qauth register :email'" if m + end + end + + def notice(m) + if m.source.user == "TheQBot" && m.source.host = "CServe.quakenet.org" + case m.message + when /a user with that name already exists/i + @bot.say @source, "user with my name already exists, identify if it belongs to you" + when /created successfully/ + @registry['quakenet.user'] = @bot.nick + @bot.say @source, "an email on how to proceed should have been sent to #{@email} -- 'qauth identify ' next" + when /too many accounts exist from this email address/i + @bot.say @source, "too many accounts on that email address" + when /registration service is unavailable/ + @bot.say @source, "the registration service is unavailable, try again later" + when /password incorrect/ + @bot.say @source, "username or password incorrect" if @source + when /you are now logged in/i + @bot.say @source, "authed successfully" if @source + when /auth is not available/ + @bot.say @source, "already authed" if @source + end end end + def register_nick(m, params) + # check nick for invalid characters + if @bot.nick =~ /[`~\^\[\]{}|_\\]/ + m.reply "for me to be able to register, my nick cannot have any of the following characters: `~^[]{}|_\\" + return + end + + @email = params[:email] + @source = m.replyto + + msg_q "hello #{@email} #{@email}" + end + + def msg_q(message) + @bot.say "Q@CServe.quakenet.org", message if on_quakenet? + end + + def on_quakenet? + @bot.server.hostname.split(".")[-2] == "quakenet" + end end + plugin = QPlugin.new -plugin.map 'qauth set :nick :passwd', :action => "set" -plugin.map 'quath identify', :action => "identify" +plugin.map 'qauth set :nick :password', :action => "set" +plugin.map 'qauth identify [:password]', :action => "identify" +plugin.map 'qauth register :email', :action => "register_nick" + +plugin.default_auth('*', false)