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

Version Path
cms_scanner-0.10.1 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.10.0 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.9.0 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.8.6 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.8.5 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.8.4 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.8.3 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.8.2 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.8.1 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.8.0 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.7.1 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.7.0 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.6.2 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.6.1 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.6.0 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.5.8 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.5.7 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.5.6 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.5.5 lib/cms_scanner/finders/base_finders.rb
cms_scanner-0.5.4 lib/cms_scanner/finders/base_finders.rb