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