From 4b0ff55430c704709856c0026616e6a67148b273 Mon Sep 17 00:00:00 2001 From: Yvan Aillet Date: Tue, 24 Apr 2012 10:09:42 +0200 Subject: [PATCH 1/2] NTLM parameters in core.rb --- lib/anemone/core.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/anemone/core.rb b/lib/anemone/core.rb index 208c6d4c..5eec2bc3 100644 --- a/lib/anemone/core.rb +++ b/lib/anemone/core.rb @@ -56,6 +56,14 @@ class Core :proxy_port => false, # HTTP read timeout in seconds :read_timeout => nil + # Are we using NTLM protocol ? + :use_ntlm => false + # NTLM user name + :ntlm_user => nil + # NTLM domain name + :ntlm_domain => nil + # NTLM password + :ntlm_password => nil } # Create setter methods for all options to be called from the crawl block From 6f0198445cf7d513ebdb09612c005264a989f203 Mon Sep 17 00:00:00 2001 From: Yvan Aillet Date: Tue, 24 Apr 2012 16:30:58 +0200 Subject: [PATCH 2/2] Ajout du support NTLM --- anemone.gemspec | 1 + lib/anemone/core.rb | 8 ++++---- lib/anemone/http.rb | 21 ++++++++++++++++----- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/anemone.gemspec b/anemone.gemspec index 2cf69cb7..958e4d98 100644 --- a/anemone.gemspec +++ b/anemone.gemspec @@ -14,6 +14,7 @@ spec = Gem::Specification.new do |s| s.add_dependency("nokogiri", ">= 1.3.0") s.add_dependency("robotex", ">= 1.0.0") + s.add_development_dependency "ruby-ntlm", ">=0.0.1" s.add_development_dependency "rake", ">=0.9.2" s.add_development_dependency "rdoc", ">=3.12" s.add_development_dependency "rspec", ">=2.8.0" diff --git a/lib/anemone/core.rb b/lib/anemone/core.rb index 5eec2bc3..312ecd2a 100644 --- a/lib/anemone/core.rb +++ b/lib/anemone/core.rb @@ -55,13 +55,13 @@ class Core # proxy server port number :proxy_port => false, # HTTP read timeout in seconds - :read_timeout => nil + :read_timeout => nil, # Are we using NTLM protocol ? - :use_ntlm => false + :use_ntlm => false, # NTLM user name - :ntlm_user => nil + :ntlm_user => nil, # NTLM domain name - :ntlm_domain => nil + :ntlm_domain => nil, # NTLM password :ntlm_password => nil } diff --git a/lib/anemone/http.rb b/lib/anemone/http.rb index 3e6a298f..f3958ddd 100644 --- a/lib/anemone/http.rb +++ b/lib/anemone/http.rb @@ -132,11 +132,22 @@ def get_response(url, referer = nil) retries = 0 begin start = Time.now() - # format request - req = Net::HTTP::Get.new(full_path, opts) - # HTTP Basic authentication - req.basic_auth url.user, url.password if url.user - response = connection(url).request(req) + req = nil + response = nil + if ! @opts[:use_ntlm] + # format request + req = Net::HTTP::Get.new(full_path, opts) + # HTTP Basic authentication + req.basic_auth url.user, url.password if url.user + response = connection(url).request(req) + else + require 'ntlm/http' + # format request + req = Net::HTTP::Get.new(full_path, opts) + # NTLM authentication + req.ntlm_auth(@opts[:ntlm_user], @opts[:ntlm_domain], @opts[:ntlm_password]) + response = connection(url).request(req) + end finish = Time.now() response_time = ((finish - start) * 1000).round @cookie_store.merge!(response['Set-Cookie']) if accept_cookies?