Sha256: 84a81d52951cc8b6b58e5114a9ae86602be0c9c3ae7c94df0e1c2961c44b5b3e

Contents?: true

Size: 1.6 KB

Versions: 5

Compression:

Stored size: 1.6 KB

Contents

module CMSScanner
  class Target < WebSite
    module Platform
      # wp-content & plugins directory implementation
      module WordPress
        def content_dir=(dir)
          @content_dir = dir.chomp('/')
        end

        def plugins_dir=(dir)
          @plugins_dir = dir.chomp('/')
        end

        # @return [ String ] The wp-content directory
        def content_dir
          unless @content_dir
            page        = Nokogiri::HTML(Browser.get(url).body)
            escaped_url = Regexp.escape(url).gsub(/https?/i, 'https?')
            pattern     = %r{#{escaped_url}(.+?)\/(?:themes|plugins|uploads)\/}i

            page.css('link,script,style,img').each do |tag|
              %w(href src).each do |attribute|
                attr_value = tag.attribute(attribute).to_s

                next if attr_value.nil? || attr_value.empty?
                next unless in_scope?(attr_value) && attr_value.match(pattern)

                return @content_dir = Regexp.last_match[1]
              end
            end
          end
          @content_dir
        end

        # @return [ Addressable::URI ]
        def content_uri
          uri.join("#{content_dir}/")
        end

        # @return [ String ]
        def content_url
          content_uri.to_s
        end

        # @return [ String ]
        def plugins_dir
          @plugins_dir ||= "#{content_dir}/plugins"
        end

        # @return [ Addressable::URI ]
        def plugins_uri
          uri.join("#{plugins_dir}/")
        end

        # @return [ String ]
        def plugins_url
          plugins_uri.to_s
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
cms_scanner-0.0.6 lib/cms_scanner/target/platform/wordpress/custom_directories.rb
cms_scanner-0.0.5 lib/cms_scanner/target/platform/wordpress/custom_directories.rb
cms_scanner-0.0.4 lib/cms_scanner/target/platform/wordpress/custom_directories.rb
cms_scanner-0.0.3 lib/cms_scanner/target/platform/wordpress/custom_directories.rb
cms_scanner-0.0.2 lib/cms_scanner/target/platform/wordpress/custom_directories.rb