Sha256: 4cbe4396a2cf24c0f18fdb3fee55f416c0632068ece0c04558c8a4b0d1bdd44c

Contents?: true

Size: 1.35 KB

Versions: 32

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

module CMSScanner
  # Scope system logic
  class Target < WebSite
    # @note Comments are deleted to avoid cache generation details
    #
    # @param [ Typhoeus::Response, String ] page
    #
    # @return [ String ] The md5sum of the page
    def self.page_hash(page)
      page = NS::Browser.get(page, followlocation: true) unless page.is_a?(Typhoeus::Response)

      # Removes comments and script tags before computing the hash
      # to remove any potential cached stuff
      html = Nokogiri::HTML(page.body)
      html.xpath('//script|//comment()').each(&:remove)

      Digest::MD5.hexdigest(html)
    end

    # @return [ String ] The hash of the homepage
    def homepage_hash
      @homepage_hash ||= self.class.page_hash(url)
    end

    # @note This is used to detect potential custom 404 responding with a 200
    # @return [ String ] The hash of a 404
    def error_404_hash
      @error_404_hash ||= self.class.page_hash(error_404_res)
    end

    # @param [ Typhoeus::Response, String ] page
    # @return [ Boolean ] Wether or not the page is a the homepage or a 404 based on its md5sum
    def homepage_or_404?(page)
      homepage_and_404_hashes.include?(self.class.page_hash(page))
    end

    protected

    def homepage_and_404_hashes
      @homepage_and_404_hashes ||= [homepage_hash, error_404_hash].freeze
    end
  end
end

Version data entries

32 entries across 32 versions & 3 rubygems

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