summaryrefslogtreecommitdiff
path: root/lib/rbot
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbot')
-rw-r--r--lib/rbot/core/utils/agent.rb44
-rw-r--r--lib/rbot/core/utils/extends.rb11
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.