Sha256: 19b909c38537374f13565c6c6099e94a9ab41266dcb4d63ac55fbd1bb34f6412

Contents?: true

Size: 1.51 KB

Versions: 51

Compression:

Stored size: 1.51 KB

Contents

# frozen_string_literal: true

module CMSScanner
  module Finders
    class Finder
      # Module to provide an easy way to fingerprint things such as versions
      module Fingerprinter
        include Enumerator

        # @param [ Hash ] fingerprints The fingerprints
        # Format should be like the following:
        # {
        #   file_path_1: {
        #     md5_hash_1: version_1,
        #     md5_hash_2: [version_2]
        #   },
        #   file_path_2: {
        #     md5_hash_3: [version_1, version_2],
        #     md5_hash_4: version_3
        #   }
        # }
        # Note that the version can either be an array or a string
        #
        # @param [ Hash ] opts
        # @option opts [ Boolean ] :show_progression Wether or not to display the progress bar
        #
        # @yield [ Mixed, String, String ] version/s, url, hash The version associated to the
        #                                                       fingerprint of the url
        def fingerprint(fingerprints, opts = {})
          enum_opts = opts.merge(check_full_response: 200)

          enumerate(fingerprints.transform_keys { |k| target.url(k) }, enum_opts) do |res, fingerprint|
            md5sum = hexdigest(res.body)

            next unless fingerprint.key?(md5sum)

            yield fingerprint[md5sum], res.effective_url, md5sum
          end
        end

        # @return [ String ] The hashed value for the given body
        def hexdigest(body)
          Digest::MD5.hexdigest(body)
        end
      end
    end
  end
end

Version data entries

51 entries across 51 versions & 3 rubygems

Version Path
cms_scanner-0.15.0 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.14.3 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.14.2 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.13.9 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.13.8 lib/cms_scanner/finders/finder/fingerprinter.rb
new_cms_scanner-0.13.7 lib/cms_scanner/finders/finder/fingerprinter.rb
k8s_cms_scanner-0.1.0 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.13.7 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.13.6 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.13.5 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.13.4 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.13.3 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.13.2 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.13.1 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.13.0 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.12.2 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.12.1 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.12.0 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.11.0 lib/cms_scanner/finders/finder/fingerprinter.rb
cms_scanner-0.10.1 lib/cms_scanner/finders/finder/fingerprinter.rb