require 'resolv'
require 'net/http'
+require 'net/https'
Net::HTTP.version_1_2
# class for making http requests easier (mainly for plugins to use)
:default => [],
:desc => "List of regexps to check against a URI's hostname/ip to see if we should use the proxy to access this URI. All URIs are proxied by default if the proxy is set, so this is only required to re-include URIs that might have been excluded by the exclude list. e.g. exclude /.*\.foo\.com/, include bar\.foo\.com")
BotConfig.register BotConfigArrayValue.new('http.proxy_exclude',
+ :default => [],
:desc => "List of regexps to check against a URI's hostname/ip to see if we should use avoid the proxy to access this URI and access it directly")
def initialize(bot)
list = [uri.host]
begin
- list.push Resolv.getaddresses(uri.host)
+ list.concat Resolv.getaddresses(uri.host)
rescue StandardError => err
- puts "warning: couldn't resolve host uri.host"
+ warning "couldn't resolve host uri.host"
end
unless @bot.config["http.proxy_exclude"].empty?
if @bot.config["http.use_proxy"]
if (ENV['http_proxy'])
- proxy = URI.parse ENV['http_proxy']
+ proxy = URI.parse ENV['http_proxy'] rescue nil
end
if (@bot.config["http.proxy_uri"])
- proxy = URI.parse ENV['http_proxy_uri']
+ proxy = URI.parse @bot.config["http.proxy_uri"] rescue nil
end
if proxy
- debug "proxy is set to #{proxy.uri}"
+ debug "proxy is set to #{proxy.host} port #{proxy.port}"
if proxy_required(uri)
proxy_host = proxy.host
proxy_port = proxy.port
end
end
- return Net::HTTP.new(uri.host, uri.port, proxy_host, proxy_port, proxy_user, proxy_port)
+ h = Net::HTTP.new(uri.host, uri.port, proxy_host, proxy_port, proxy_user, proxy_port)
+ h.use_ssl = true if uri.scheme == "https"
+ return h
end
# uri:: uri to query (Uri object)
if resp.code == "200"
return resp.body
else
- puts "HttpUtil.get return code #{resp.code} #{resp.body}"
+ log "HttpUtil.get return code #{resp.code} #{resp.body}"
end
return nil
}
rescue StandardError, Timeout::Error => e
- $stderr.puts "HttpUtil.get exception: #{e}, while trying to get #{uri}"
+ error "HttpUtil.get exception: #{e.inspect}, while trying to get #{uri}"
end
return nil
end