Class: CMSScanner::Finders::IndependentFinders

Inherits:
Array
  • Object
show all
Defined in:
lib/cms_scanner/finders/independent_finders.rb

Overview

Independent Finders container This class is designed to handle independent results which are not related with each others e.g: interesting files

Direct Known Subclasses

SameTypeFinders, UniqueFinders

Instance Method Summary collapse

Instance Method Details

#findingsFindings

Returns:



9
10
11
# File 'lib/cms_scanner/finders/independent_finders.rb', line 9

def findings
  @findings ||= NS::Finders::Findings.new
end

#run(opts = {}) ⇒ Findings

Parameters:

  • opts (Hash) (defaults to: {})

Options Hash (opts):

  • mode (Symbol)

    :mixed, :passive or :aggressive

Returns:



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/cms_scanner/finders/independent_finders.rb', line 17

def run(opts = {})
  methods = symbols_from_mode(opts[:mode])

  each do |finder|
    methods.each do |symbol|
      [*finder.send(symbol, opts.merge(found: findings))].compact.each do |found|
        findings << found
      end
    end
  end

  findings
end

#symbols_from_mode(mode) ⇒ Array<Symbol>

Returns The symbols to call for the mode.

Parameters:

  • mode (Symbol)

    :mixed, :passive or :aggressive

Returns:

  • (Array<Symbol>)

    The symbols to call for the mode



33
34
35
36
37
38
# File 'lib/cms_scanner/finders/independent_finders.rb', line 33

def symbols_from_mode(mode)
  symbols = [:passive, :aggressive]

  return symbols if mode.nil? || mode == :mixed
  symbols.include?(mode) ? [*mode] : []
end