diff options
author | Tom Gilbert <tom@linuxbrit.co.uk> | 2005-07-21 11:03:46 +0000 |
---|---|---|
committer | Tom Gilbert <tom@linuxbrit.co.uk> | 2005-07-21 11:03:46 +0000 |
commit | ca4b8b57bd382ca4619cac1157f14ea0e396cc55 (patch) | |
tree | 658d5c63d48db28ac287c1d973fe88320ad3b0ac /rbot/plugins | |
parent | e3c4d9ad30b8548c09dd7d26abdfeef223c23f40 (diff) |
Wed Jul 20 23:30:01 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
* Move some core plugins to use the new httputil
* fix wserver's redirection handling for relative (i.e. broken) redirects
* fix tube plugin's html parsing
Diffstat (limited to 'rbot/plugins')
-rw-r--r-- | rbot/plugins/fish.rb | 12 | ||||
-rw-r--r-- | rbot/plugins/freshmeat.rb | 4 | ||||
-rw-r--r-- | rbot/plugins/google.rb | 2 | ||||
-rw-r--r-- | rbot/plugins/slashdot.rb | 4 | ||||
-rw-r--r-- | rbot/plugins/url.rb | 4 | ||||
-rw-r--r-- | rbot/plugins/wserver.rb | 51 |
6 files changed, 24 insertions, 53 deletions
diff --git a/rbot/plugins/fish.rb b/rbot/plugins/fish.rb index ab84ff16..35b141ef 100644 --- a/rbot/plugins/fish.rb +++ b/rbot/plugins/fish.rb @@ -8,16 +8,6 @@ class BabelPlugin < Plugin end def privmsg(m) - proxy_host = nil - proxy_port = nil - - if(ENV['http_proxy']) - if(ENV['http_proxy'] =~ /^http:\/\/(.+):(\d+)$/) - proxy_host = $1 - proxy_port = $2 - end - end - langs = ["en", "fr", "de", "it", "pt", "es", "nl"] query = "/babelfish/tr" @@ -53,7 +43,7 @@ class BabelPlugin < Plugin return end - http = Net::HTTP.new("babelfish.altavista.com", 80, proxy_host, proxy_port) + http = @bot.httputil.get_proxy(URI.parse("http://babelfish.altavista.com")) http.start {|http| resp = http.post(query, data, {"content-type", diff --git a/rbot/plugins/freshmeat.rb b/rbot/plugins/freshmeat.rb index 63eaf4c6..420c1bcb 100644 --- a/rbot/plugins/freshmeat.rb +++ b/rbot/plugins/freshmeat.rb @@ -25,7 +25,7 @@ class FreshmeatPlugin < Plugin def search_freshmeat(m, search, max=4) max = 8 if max > 8 begin - xml = Utils.http_get("http://freshmeat.net/search-xml/?orderby=locate_projectname_full_DESC&q=#{URI.escape(search)}") + xml = @bot.httputil.get(URI.parse("http://freshmeat.net/search-xml/?orderby=locate_projectname_full_DESC&q=#{URI.escape(search)}")) rescue URI::InvalidURIError, URI::BadURIError => e m.reply "illegal search string #{search}" return @@ -70,7 +70,7 @@ class FreshmeatPlugin < Plugin def freshmeat(m, max=4) max = 8 if max > 8 - xml = Utils.http_get("http://images.feedstermedia.com/feedcache/ostg/freshmeat/fm-releases-global.xml") + xml = @bot.httputil.get(URI.parse("http://images.feedstermedia.com/feedcache/ostg/freshmeat/fm-releases-global.xml")) unless xml m.reply "freshmeat news parse failed" return diff --git a/rbot/plugins/google.rb b/rbot/plugins/google.rb index 2e9aacba..cd96f23c 100644 --- a/rbot/plugins/google.rb +++ b/rbot/plugins/google.rb @@ -27,7 +27,7 @@ class GooglePlugin < Plugin end end - http = Net::HTTP.new("www.google.com", 80, proxy_host, proxy_port) + http = @bot.httputil.get_proxy(URI.parse("http://www.google.com")) begin http.start {|http| diff --git a/rbot/plugins/slashdot.rb b/rbot/plugins/slashdot.rb index bc0a047e..38005bde 100644 --- a/rbot/plugins/slashdot.rb +++ b/rbot/plugins/slashdot.rb @@ -24,7 +24,7 @@ class SlashdotPlugin < Plugin def search_slashdot(m, search, max=4) begin - xml = Utils.http_get("http://slashdot.org/search.pl?content_type=rss&query=#{URI.escape(search)}") + xml = @bot.httputil.get(URI.parse("http://slashdot.org/search.pl?content_type=rss&query=#{URI.escape(search)}")) rescue URI::InvalidURIError, URI::BadURIError => e m.reply "illegal search string #{search}" return @@ -51,7 +51,7 @@ class SlashdotPlugin < Plugin end def slashdot(m, max=4) - xml = Utils.http_get("http://slashdot.org/slashdot.xml") + xml = @bot.httputil.get(URI.parse("http://slashdot.org/slashdot.xml")) unless xml m.reply "slashdot news parse failed" return diff --git a/rbot/plugins/url.rb b/rbot/plugins/url.rb index 631c6e11..ed82d1c1 100644 --- a/rbot/plugins/url.rb +++ b/rbot/plugins/url.rb @@ -12,8 +12,8 @@ class UrlPlugin < Plugin return unless m.kind_of?(PrivMessage) return if m.address? # TODO support multiple urls in one line - if m.message =~ /(f|ht)tp:\/\// - if m.message =~ /((f|ht)tp:\/\/.*?)(?:\s+|$)/ + if m.message =~ /(f|ht)tps?:\/\// + if m.message =~ /((f|ht)tps?:\/\/.*?)(?:\s+|$)/ url = Url.new(m.target, m.sourcenick, Time.new, $1) list = @registry[m.target] debug "#{list.length} urls so far" diff --git a/rbot/plugins/wserver.rb b/rbot/plugins/wserver.rb index eb4effaf..e1fe10bd 100644 --- a/rbot/plugins/wserver.rb +++ b/rbot/plugins/wserver.rb @@ -12,22 +12,9 @@ class WserverPlugin < Plugin return end - proxy_host = nil - proxy_port = nil - - if(ENV['http_proxy']) - if(ENV['http_proxy'] =~ /^http:\/\/(.+):(\d+)$/) - hh = $1 - pp = $2 - unless(m.params =~ /\.db\.com/ || m.params =~ /\.deuba\.com/) - proxy_host = hh - proxy_port = pp - end - end - end - redirect_count = 0 hostname = m.params.dup + hostname = "http://#{hostname}" unless hostname =~ /:\/\// begin if(redirect_count > 3) m.reply "cowardly refusing to follow more than 3 redirects" @@ -45,47 +32,41 @@ class WserverPlugin < Plugin m.reply "incorrect usage: " + help(m.plugin) return end - if(uri.scheme == "https") - m.reply "#{uri.scheme} not supported" - return - end - host = uri.host ? uri.host : hostname - port = uri.port ? uri.port : 80 - path = '/' - if(uri.scheme == "http") - path = uri.path if uri.path - end - - http = Net::HTTP.new(host, port, proxy_host, proxy_port) + http = @bot.httputil.get_proxy(uri) http.open_timeout = 5 http.start {|http| - resp = http.head(path) - result = host + resp = http.head('/') server = resp['Server'] if(server && server.length > 0) - m.reply "#{host} is running #{server}" + m.reply "#{uri.host} is running #{server}" else - m.reply "couldn't tell what #{host} is running" + m.reply "couldn't tell what #{uri.host} is running" end if(resp.code == "302" || resp.code == "301") - if(host != URI.parse(resp['location']).host) - m.reply "#{host} redirects to #{resp['location']}" - raise resp['location'] + 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 #{host}:#{port} :(" + m.reply "timed out connecting to #{uri.host}:#{uri.port} :(" return rescue RuntimeError => err redirect_count += 1 hostname = err.message retry rescue StandardError => err - m.reply "couldn't connect to #{host}:#{port} :(" + puts err + m.reply "couldn't connect to #{uri.host}:#{uri.port} :(" return end end |