class Pentest::SqlProxy

Public Class Methods

disable!(handler) click to toggle source
# File lib/pentest/sql_proxy.rb, line 29
def self.disable!(handler)
  Arproxy.configure do |config|
    config.adapter_class.class_eval do
      alias_method :exec_query, :exec_query_original
    end
  end
  Arproxy.proxy_chain.head.unregister_handler(handler)
  Arproxy.disable!
end
enable!(handler) click to toggle source
# File lib/pentest/sql_proxy.rb, line 8
def self.enable!(handler)
  Arproxy.configure do |config|
    config.use self
    config.adapter_class.class_eval do
      attr_accessor :handler
      @@handler = handler
      def exec_query_proxy(*args)
        sql, = args
        unless @@handler.nil?
          @@handler.call(sql)
        end
        self.exec_query_original(*args)
      end
      alias_method :exec_query_original, :exec_query
      alias_method :exec_query, :exec_query_proxy
    end
  end
  Arproxy.enable!
  Arproxy.proxy_chain.head.register_handler(handler)
end
new() click to toggle source
# File lib/pentest/sql_proxy.rb, line 39
def initialize
  @handler = nil
end

Public Instance Methods

exec_query_proxy(*args) click to toggle source
# File lib/pentest/sql_proxy.rb, line 14
def exec_query_proxy(*args)
  sql, = args
  unless @@handler.nil?
    @@handler.call(sql)
  end
  self.exec_query_original(*args)
end
execute(*args) click to toggle source
Calls superclass method
# File lib/pentest/sql_proxy.rb, line 51
def execute(*args)
  sql, = args
  unless @handler.nil?
    @handler.call(sql)
  end
  super(*args)
end
register_handler(handler) click to toggle source
# File lib/pentest/sql_proxy.rb, line 43
def register_handler(handler)
  @handler = handler
end
unregister_handler(handler) click to toggle source
# File lib/pentest/sql_proxy.rb, line 47
def unregister_handler(handler)
  @handler = nil
end