diff options
author | Matthias H <apoc@sixserv.org> | 2014-07-17 23:54:19 +0200 |
---|---|---|
committer | Matthias H <apoc@sixserv.org> | 2014-07-17 23:54:19 +0200 |
commit | ec56d8a5c3dd91da1f9ec1d9daf0fca8d1669810 (patch) | |
tree | 04850df0c1eb319b8aa137ecc281a2bcffe95b3d /lib | |
parent | 836cf49c210ebfeb443861d26379a81b333c2c78 (diff) |
[agent] add options for ssl and proxy
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rbot/core/utils/agent.rb | 44 |
1 files changed, 39 insertions, 5 deletions
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 <apoc@sixserv.org> # -# 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 |