From: Matthias H Date: Thu, 17 Jul 2014 21:54:19 +0000 (+0200) Subject: [agent] add options for ssl and proxy X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=ec56d8a5c3dd91da1f9ec1d9daf0fca8d1669810;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git [agent] add options for ssl and proxy --- diff --git a/lib/rbot/core/utils/agent.rb b/lib/rbot/core/utils/agent.rb index fc73c288..8949a5c8 100644 --- a/lib/rbot/core/utils/agent.rb +++ b/lib/rbot/core/utils/agent.rb @@ -6,12 +6,18 @@ # # Author:: Matthias Hecker # -# Central repository for Mechanize agent instances, creates -# pre-configured agents, allows for persistent caching, -# cookie and page serialization. +# Central factory for Mechanize agent instances, creates +# pre-configured agents. The main goal of this is to have +# central proxy and user agent configuration for mechanize. +# +# plugins can just call @bot.agent.create to return +# a new unique mechanize agent. require 'mechanize' +require 'digest/md5' +require 'uri' + module ::Irc module Utils @@ -19,6 +25,24 @@ class AgentFactory Bot::Config.register Bot::Config::IntegerValue.new('agent.max_redir', :default => 5, :desc => "Maximum number of redirections to be used when getting a document") + Bot::Config.register Bot::Config::BooleanValue.new('agent.ssl_verify', + :default => true, + :desc => "Whether or not you want to validate SSL certificates") + Bot::Config.register Bot::Config::BooleanValue.new('agent.proxy_use', + :default => true, + :desc => "Use HTTP proxy or not") + Bot::Config.register Bot::Config::StringValue.new('agent.proxy_host', + :default => '127.0.0.1', + :desc => "HTTP proxy hostname") + Bot::Config.register Bot::Config::IntegerValue.new('agent.proxy_port', + :default => 8118, + :desc => "HTTP proxy port") + Bot::Config.register Bot::Config::StringValue.new('agent.proxy_username', + :default => nil, + :desc => "HTTP proxy username") + Bot::Config.register Bot::Config::StringValue.new('agent.proxy_password', + :default => nil, + :desc => "HTTP proxy password") def initialize(bot) @bot = bot @@ -28,10 +52,20 @@ class AgentFactory end # Returns a new, unique instance of Mechanize. - def get_instance + def create(noproxy=false) agent = Mechanize.new agent.redirection_limit = @bot.config['agent.max_redir'] - + if not @bot.config['agent.ssl_verify'] + agent.agent.http.verify_mode = OpenSSL::SSL::VERIFY_NONE + end + if @bot.config['agent.proxy_use'] and not noproxy + agent.set_proxy( + @bot.config['agent.proxy_host'], + @bot.config['agent.proxy_port'], + @bot.config['agent.proxy_username'], + @bot.config['agent.proxy_password'] + ) + end agent end end