diff options
author | M. Hecker <apoc@sixserv.org> | 2014-09-03 15:48:00 +0200 |
---|---|---|
committer | M. Hecker <apoc@sixserv.org> | 2014-09-03 15:48:00 +0200 |
commit | 6423121e96dd602093cbda86de1922e95a45ff07 (patch) | |
tree | bef3634c09c81c515bb7ed96825fdd2b29f70c84 | |
parent | 53cfadbb9f2b25efe4c22b2fd02f8bc33b5e9d2d (diff) | |
parent | 2fb24ad9834f0544ac0eef0b589a71fa7add63cf (diff) |
Merge branch 'fork' of github.com:4poc/rbot into fork
-rw-r--r-- | lib/rbot/core/utils/agent.rb | 44 | ||||
-rw-r--r-- | lib/rbot/core/utils/extends.rb | 11 |
2 files changed, 49 insertions, 6 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 diff --git a/lib/rbot/core/utils/extends.rb b/lib/rbot/core/utils/extends.rb index f3662395..11ebfc61 100644 --- a/lib/rbot/core/utils/extends.rb +++ b/lib/rbot/core/utils/extends.rb @@ -370,8 +370,17 @@ class ::String "#{pre}#{self}#{post}" end end -end + # Format a string using IRC colors + # + def colorformat + txt = self.dup + + txt.gsub!(/\*([^\*]+)\*/, Bold + '\\1' + NormalText) + + return txt + end +end # Extensions to the Regexp class, with some common and/or complex regular # expressions. |