X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fwserver.rb;h=b9260170b4997d4d71352145983ce0279cc29b07;hb=052217de30c59206d7025b582d4604557a747470;hp=e1fe10bd341f1eafc675659c566612c3d4db8793;hpb=21949774b91eaec6ecde4eaa8ad121e2c0a36b87;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/wserver.rb b/data/rbot/plugins/wserver.rb index e1fe10bd..b9260170 100644 --- a/data/rbot/plugins/wserver.rb +++ b/data/rbot/plugins/wserver.rb @@ -1,62 +1,50 @@ -require 'net/http' -require 'uri' -Net::HTTP.version_1_2 - class WserverPlugin < Plugin def help(plugin, topic="") "wserver => try and determine what webserver is using" end - def privmsg(m) - unless(m.params && m.params =~ /^\S+$/) - m.reply "incorrect usage: " + help(m.plugins) - return - end + def wserver(m, params) redirect_count = 0 - hostname = m.params.dup + hostname = params[:host].dup hostname = "http://#{hostname}" unless hostname =~ /:\/\// begin if(redirect_count > 3) m.reply "cowardly refusing to follow more than 3 redirects" return end - + begin uri = URI.parse(hostname) rescue URI::InvalidURIError => err - m.reply "#{m.params} is not a valid URI" + m.reply "#{hostname} is not a valid URI" return end - + unless(uri) m.reply "incorrect usage: " + help(m.plugin) return end - - http = @bot.httputil.get_proxy(uri) - http.open_timeout = 5 - - http.start {|http| - resp = http.head('/') - server = resp['Server'] - if(server && server.length > 0) - m.reply "#{uri.host} is running #{server}" - else - m.reply "couldn't tell what #{uri.host} is running" - end - - if(resp.code == "302" || resp.code == "301") - newloc = resp['location'] - newuri = URI.parse(newloc) - # detect and ignore incorrect redirects (to relative paths etc) - if (newuri.host != nil) - if(uri.host != newuri.host) - m.reply "#{uri.host} redirects to #{newuri.scheme}://#{newuri.host}" - raise resp['location'] - end + + + resp = @bot.httputil.head(uri) + server = resp['Server'] + if(server && server.length > 0) + m.reply "#{uri.host} is running #{server}" + else + m.reply "couldn't tell what #{uri.host} is running" + end + + if(resp.code == "302" || resp.code == "301") + newloc = resp['location'] + newuri = URI.parse(newloc) + # detect and ignore incorrect redirects (to relative paths etc) + if (newuri.host != nil) + if(uri.host != newuri.host) + m.reply "#{uri.host} redirects to #{newuri.scheme}://#{newuri.host}" + raise resp['location'] end end - } + end rescue TimeoutError => err m.reply "timed out connecting to #{uri.host}:#{uri.port} :(" return @@ -65,11 +53,11 @@ class WserverPlugin < Plugin hostname = err.message retry rescue StandardError => err - puts err + error err.inspect m.reply "couldn't connect to #{uri.host}:#{uri.port} :(" return end end end plugin = WserverPlugin.new -plugin.register("wserver") +plugin.map 'wserver :host'