Sha256: 9afd020ff3daaed727ecaeba6dcb99abf85a9b965b3a617c0dfd6beebe6e46f0
Contents?: true
Size: 1.21 KB
Versions: 32
Compression:
Stored size: 1.21 KB
Contents
# frozen_string_literal: true module CMSScanner module Finders # Base class container for the Finders (i.e IndependentFinders etc) class BaseFinders < Array # @return [ Findings ] def findings @findings ||= NS::Finders::Findings.new end # Should be implemented in child classes def run; end protected # @param [ Symbol ] mode :mixed, :passive or :aggressive # @return [ Array<Symbol> ] The symbols to call for the mode def symbols_from_mode(mode) symbols = %i[passive aggressive] return symbols if mode.nil? || mode == :mixed symbols.include?(mode) ? [*mode] : [] end # @param [ CMSScanner::Finders::Finder ] finder # @param [ Symbol ] symbol See return values of #symbols_from_mode # @param [ Hash ] opts def run_finder(finder, symbol, opts) [*finder.send(symbol, opts.merge(found: findings))].compact.each do |found| findings << found end end # Allow child classes to filter the findings, such as return the best one # or remove the low confidence ones. # # @return [ Findings ] def filter_findings findings end end end end
Version data entries
32 entries across 32 versions & 1 rubygems