diff --git a/lib/common/browser.rb b/lib/common/browser.rb
index 2de66412..0a43b520 100644
--- a/lib/common/browser.rb
+++ b/lib/common/browser.rb
@@ -17,6 +17,8 @@
# along with this program. If not, see .
#++
+require 'common/typhoeus_cache'
+
class Browser
@@instance = nil
USER_AGENT_MODES = %w{ static semi-static random }
@@ -51,12 +53,12 @@ class Browser
#connecttimeout: @request_timeout
)
- # TODO : add an option for the cache dir instead of using a constant
- @cache = CacheFileStore.new(CACHE_DIR + '/browser')
+ # TODO : add an argument for the cache dir instead of using a constant
+ @cache = TyphoeusCache.new(CACHE_DIR + '/browser')
@cache.clean
- #Typhoeus::Config.cache = @cache
+ Typhoeus::Config.cache = @cache
end
private_class_method :new
@@ -199,15 +201,15 @@ class Browser
end
if !params.has_key?(:headers)
- params = params.merge(:headers => {'user-agent' => self.user_agent})
+ params = params.merge(:headers => {'ser-agent' => self.user_agent})
elsif !params[:headers].has_key?('user-agent')
params[:headers]['user-agent'] = self.user_agent
end
# Used to enable the cache system if :cache_timeout > 0
- #unless params.has_key?(:cache_ttl)
- # params = params.merge(cache_ttl: @cache_timeout)
- #end
+ unless params.has_key?(:cache_ttl)
+ params = params.merge(cache_ttl: @cache_timeout)
+ end
params
end
diff --git a/lib/common/cache_file_store.rb b/lib/common/cache_file_store.rb
index 71bf33c5..5ff42d17 100644
--- a/lib/common/cache_file_store.rb
+++ b/lib/common/cache_file_store.rb
@@ -68,7 +68,7 @@ class CacheFileStore
end
def get_entry_file_path(key)
- @storage_path + '/' + key
+ File::join(@storage_path, key)
end
end
diff --git a/lib/common/typhoeus_cache.rb b/lib/common/typhoeus_cache.rb
new file mode 100644
index 00000000..811a419a
--- /dev/null
+++ b/lib/common/typhoeus_cache.rb
@@ -0,0 +1,32 @@
+# encoding: UTF-8
+#--
+# WPScan - WordPress Security Scanner
+# Copyright (C) 2012-2013
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#++
+
+require 'common/cache_file_store'
+
+class TyphoeusCache < CacheFileStore
+
+ def get(request)
+ read_entry(request.hash.to_s)
+ end
+
+ def set(request, response)
+ write_entry(request.hash.to_s, response, request.cache_ttl)
+ end
+
+end
diff --git a/lib/environment.rb b/lib/environment.rb
index a4453599..ad5939e1 100644
--- a/lib/environment.rb
+++ b/lib/environment.rb
@@ -34,13 +34,11 @@ begin
require 'rbconfig'
require 'pp'
# Third party libs
- #gem 'typhoeus', :git => "https://github.com/typhoeus/typhoeus.git"
require 'typhoeus'
require 'json'
require 'nokogiri'
# Custom libs
require 'common/browser'
- require 'common/cache_file_store'
require 'common/custom_option_parser'
rescue LoadError => e
puts "[ERROR] #{e}"
diff --git a/spec/lib/common/typhoeus_cache_spec.rb b/spec/lib/common/typhoeus_cache_spec.rb
new file mode 100644
index 00000000..32356a91
--- /dev/null
+++ b/spec/lib/common/typhoeus_cache_spec.rb
@@ -0,0 +1,3 @@
+# encoding: UTF-8
+
+# TODO