Sha256: 5e96439b4c0a5d1a9c0eea26d62f2f2d81addbc0964da4818dd2b4b9b09fcdb2

Contents?: true

Size: 1.24 KB

Versions: 8

Compression:

Stored size: 1.24 KB

Contents

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)

      Digest::MD5.hexdigest(page.body.gsub(/<!--.*?-->/m, ''))
    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
      @error404_hash ||= self.class.page_hash(non_existant_page_url)
    end

    # @return [ String ] The URL of an unlikely existant page
    def non_existant_page_url
      uri.join(Digest::MD5.hexdigest(rand(999_999_999).to_s) + '.html').to_s
    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)
      md5sum = self.class.page_hash(page)

      md5sum == homepage_hash || md5sum == error_404_hash
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
cms_scanner-0.0.37.11 lib/cms_scanner/target/hashes.rb
cms_scanner-0.0.37.10 lib/cms_scanner/target/hashes.rb
cms_scanner-0.0.37.9 lib/cms_scanner/target/hashes.rb
cms_scanner-0.0.37.8 lib/cms_scanner/target/hashes.rb
cms_scanner-0.0.37.7 lib/cms_scanner/target/hashes.rb
cms_scanner-0.0.37.6 lib/cms_scanner/target/hashes.rb
cms_scanner-0.0.37.5 lib/cms_scanner/target/hashes.rb
cms_scanner-0.0.37.4 lib/cms_scanner/target/hashes.rb