class Object

Public Instance Methods

clean_store() click to toggle source
# File lib/evil-proxy/store.rb, line 27
def clean_store
  @store = []
end
dump_store(filename = "store.yml") click to toggle source
# File lib/evil-proxy/store.rb, line 31
def dump_store filename = "store.yml"
  previous_store = YAML.load(File.read(filename)) || [] rescue []
  File.open filename, "w" do |file|
    file.puts YAML.dump(previous_store + store_as_params)
  end
  clean_store
end
join() click to toggle source
# File lib/evil-proxy/async.rb, line 16
def join
  @thread.join
end
match_store_filter(req, res) click to toggle source
# File lib/evil-proxy/store.rb, line 22
def match_store_filter req, res
  return true unless @store_filter
  instance_exec req, res, &@store_filter
end
selenium_proxy(*protocols) click to toggle source
# File lib/evil-proxy/selenium.rb, line 4
def selenium_proxy *protocols
  require 'selenium-webdriver' unless defined?(Selenium)

  protocols.push :http if protocols.empty?
  unless (protocols - [:http, :ssl, :ftp]).empty?
    raise "Invalid protocol specified.  Must be one of: :http, :ssl, or :ftp."
  end

  host = @config[:BindAddress] || "127.0.0.1"
  port = @config[:Port]

  proxy_mapping = Hash.new
  protocols.each do |proto| proxy_mapping[proto] = "#{host}:#{port}" end
  Selenium::WebDriver::Proxy.new(proxy_mapping)
end
shutdown() click to toggle source
# File lib/evil-proxy/async.rb, line 12
def shutdown
  @thread.exit
end
start() click to toggle source
# File lib/evil-proxy/async.rb, line 6
def start
  @thread = Thread.new do
    self.original_start
  end
end
store_as_params() click to toggle source
# File lib/evil-proxy/store.rb, line 39
def store_as_params
  @store.map do |req, res|
    Hash.new.tap do |params|
      params["request"] = Hash.new.tap do |request|
        request["method"] = req.request_method
        request["url"] = req.unparsed_uri
        request["headers"] = Hash.new.tap do |headers|
          req.header.each do |key, value|
            headers[key] = value.join(",")
          end
        end
        request["body"] = req.body if req.body
        request["time"] = req.request_time
      end
      params["response"] = Hash.new.tap do |response|
        response["headers"] = res.header
        response["body"] = res.body if req.body
        response["status"] = res.status
      end
    end
  end
end
store_filter(&block) click to toggle source
# File lib/evil-proxy/store.rb, line 18
def store_filter &block
  @store_filter = block
end