cms_scanner 0.0.17 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/models/interesting_file.rb +1 -0
- data/app/models/robots_txt.rb +1 -1
- data/lib/cms_scanner/target.rb +20 -0
- data/lib/cms_scanner/version.rb +1 -1
- data/spec/fixtures/target/comments.html +29 -0
- data/spec/lib/target_spec.rb +39 -0
- metadata +4 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 4967adc46d0b17b3762f4aa25608fbd5fa7372f4
         | 
| 4 | 
            +
              data.tar.gz: d8b5abec16cff468b52d2596c8544b279dbfc347
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a807670ea5bdf871cd0f70779f939ddfb8c1dbd83262447e1427369109db103cc38192bbf6f95531264081e003200cf29be0c3af0849544b0d943824d6a0c734
         | 
| 7 | 
            +
              data.tar.gz: d9c5c442e85d106dc960eee3db9a5277e2078816fd2dd331e73ac6206ffdcf08d6945ef071cdbf035d278ef6bf361ae11b22842be6190404f57e0b87d59025db
         | 
    
        data/app/models/robots_txt.rb
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            module CMSScanner
         | 
| 2 2 | 
             
              # Robots.txt
         | 
| 3 3 | 
             
              class RobotsTxt < InterestingFile
         | 
| 4 | 
            -
                # @todo Better detection, currently  | 
| 4 | 
            +
                # @todo Better detection, currently everything not empty or / is returned
         | 
| 5 5 | 
             
                #
         | 
| 6 6 | 
             
                # @return [ Array<String> ] The interesting Allow/Disallow rules detected
         | 
| 7 7 | 
             
                def interesting_entries
         | 
    
        data/lib/cms_scanner/target.rb
    CHANGED
    
    | @@ -25,5 +25,25 @@ module CMSScanner | |
| 25 25 | 
             
                def interesting_files(opts = {})
         | 
| 26 26 | 
             
                  @interesting_files ||= NS::Finders::InterestingFiles::Base.find(self, opts)
         | 
| 27 27 | 
             
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                # @param [ Regexp ] pattern
         | 
| 30 | 
            +
                # @param [ Typhoeus::Response, String ] page
         | 
| 31 | 
            +
                #
         | 
| 32 | 
            +
                # @return [ Array<Array<MatchData, Nokogiri::XML::Comment>> ]
         | 
| 33 | 
            +
                # @yield [ MatchData, Nokogiri::XML::Comment ]
         | 
| 34 | 
            +
                def comments_from_page(pattern, page = nil)
         | 
| 35 | 
            +
                  page    = NS::Browser.get(url(page)) unless page.is_a?(Typhoeus::Response)
         | 
| 36 | 
            +
                  matches = []
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  page.html.xpath('//comment()').each do |node|
         | 
| 39 | 
            +
                    next unless node.text.to_s.strip =~ pattern
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                    yield Regexp.last_match, node if block_given?
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                    matches << [Regexp.last_match, node]
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  matches
         | 
| 47 | 
            +
                end
         | 
| 28 48 | 
             
              end
         | 
| 29 49 | 
             
            end
         | 
    
        data/lib/cms_scanner/version.rb
    CHANGED
    
    
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            <!DOCTYPE html>
         | 
| 2 | 
            +
            <html lang="en-US" class="no-js">
         | 
| 3 | 
            +
            <head>
         | 
| 4 | 
            +
              <meta charset="UTF-8">
         | 
| 5 | 
            +
              <meta name="viewport" content="width=device-width">
         | 
| 6 | 
            +
              <link rel="profile" href="http://gmpg.org/xfn/11">
         | 
| 7 | 
            +
              <link rel="pingback" href="http://wp.lab/wordpress-4.1.1/xmlrpc.php">
         | 
| 8 | 
            +
              <!--[if lt IE 9]>
         | 
| 9 | 
            +
              <script src="http://wp.lab/wordpress-4.1.1/wp-content/themes/twentyfifteen/js/html5.js"></script>
         | 
| 10 | 
            +
              <![endif]-->
         | 
| 11 | 
            +
              <script>(function(){document.documentElement.className='js'})();</script>
         | 
| 12 | 
            +
              <title>WP 4.1.1 | Just another WordPress site</title>
         | 
| 13 | 
            +
            <meta name='robots' content='noindex,follow' />
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            <!-- All in One SEO Pack 2.2.5.1 by Michael Torbert of Semper Fi Web Design -->
         | 
| 16 | 
            +
            <link rel="canonical" href="http://wp.lab/wordpress-4.1.1/" />
         | 
| 17 | 
            +
            <!-- /all in one seo pack -->
         | 
| 18 | 
            +
            <!--[if lt IE 9]>
         | 
| 19 | 
            +
            <link rel='stylesheet' id='twentyfifteen-ie-css'  href='http://wp.lab/wordpress-4.1.1/wp-content/themes/twentyfifteen/css/ie.css?ver=20141010' type='text/css' media='all' />
         | 
| 20 | 
            +
            <![endif]-->
         | 
| 21 | 
            +
            <!--[if lt IE 8]>
         | 
| 22 | 
            +
            <link rel='stylesheet' id='twentyfifteen-ie7-css'  href='http://wp.lab/wordpress-4.1.1/wp-content/themes/twentyfifteen/css/ie7.css?ver=20141010' type='text/css' media='all' />
         | 
| 23 | 
            +
            <![endif]-->
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            <!-- .site-branding -->
         | 
| 26 | 
            +
            <!-- .site-header -->
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            </body>
         | 
| 29 | 
            +
            </html>
         | 
    
        data/spec/lib/target_spec.rb
    CHANGED
    
    | @@ -27,4 +27,43 @@ describe CMSScanner::Target do | |
| 27 27 | 
             
                  end
         | 
| 28 28 | 
             
                end
         | 
| 29 29 | 
             
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              describe '#comments_from_page' do
         | 
| 32 | 
            +
                let(:fixture) { File.join(FIXTURES, 'target', 'comments.html') }
         | 
| 33 | 
            +
                let(:page) { Typhoeus::Response.new(body: File.read(fixture)) }
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                context 'when the pattern does not match anything' do
         | 
| 36 | 
            +
                  it 'returns an empty array' do
         | 
| 37 | 
            +
                    expect(target.comments_from_page(/none/, page)).to eql([])
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                context 'when the pattern matches' do
         | 
| 42 | 
            +
                  let(:pattern) { /all in one seo pack/i }
         | 
| 43 | 
            +
                  let(:s1) { 'All in One SEO Pack 2.2.5.1 by Michael Torbert of Semper Fi Web Design' }
         | 
| 44 | 
            +
                  let(:s2) { '/all in one seo pack' }
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  context 'when no block given' do
         | 
| 47 | 
            +
                    it 'returns the expected matches' do
         | 
| 48 | 
            +
                      results = target.comments_from_page(pattern, page)
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                      [s1, s2].each_with_index do |s, i|
         | 
| 51 | 
            +
                        expect(results[i].first).to eql s.match(pattern)
         | 
| 52 | 
            +
                        expect(results[i].last.to_s).to eql "<!-- #{s} -->"
         | 
| 53 | 
            +
                      end
         | 
| 54 | 
            +
                    end
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                  # The below doesn't work, dunno why
         | 
| 58 | 
            +
                  context 'when block given' do
         | 
| 59 | 
            +
                    it 'yield the MatchData' do
         | 
| 60 | 
            +
                      expect { |b| target.comments_from_page(pattern, page, &b) }
         | 
| 61 | 
            +
                        .to yield_successive_args(
         | 
| 62 | 
            +
                          [MatchData, Nokogiri::XML::Comment],
         | 
| 63 | 
            +
                          [MatchData, Nokogiri::XML::Comment]
         | 
| 64 | 
            +
                        )
         | 
| 65 | 
            +
                    end
         | 
| 66 | 
            +
                  end
         | 
| 67 | 
            +
                end
         | 
| 68 | 
            +
              end
         | 
| 30 69 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: cms_scanner
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.18
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - WPScanTeam - Erwan Le Rousseau
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-02- | 
| 11 | 
            +
            date: 2015-02-27 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: opt_parse_validator
         | 
| @@ -328,6 +328,7 @@ files: | |
| 328 328 | 
             
            - spec/fixtures/finders/interesting_files/xml_rpc/homepage_out_of_scope_pingback.html
         | 
| 329 329 | 
             
            - spec/fixtures/finders/interesting_files/xml_rpc/xmlrpc.php
         | 
| 330 330 | 
             
            - spec/fixtures/output.txt
         | 
| 331 | 
            +
            - spec/fixtures/target/comments.html
         | 
| 331 332 | 
             
            - spec/fixtures/target/platform/php/debug_log/debug.log
         | 
| 332 333 | 
             
            - spec/fixtures/target/platform/php/fpd/wp_rss_functions.php
         | 
| 333 334 | 
             
            - spec/fixtures/target/scope/index.html
         | 
| @@ -449,6 +450,7 @@ test_files: | |
| 449 450 | 
             
            - spec/fixtures/finders/interesting_files/xml_rpc/homepage_out_of_scope_pingback.html
         | 
| 450 451 | 
             
            - spec/fixtures/finders/interesting_files/xml_rpc/xmlrpc.php
         | 
| 451 452 | 
             
            - spec/fixtures/output.txt
         | 
| 453 | 
            +
            - spec/fixtures/target/comments.html
         | 
| 452 454 | 
             
            - spec/fixtures/target/platform/php/debug_log/debug.log
         | 
| 453 455 | 
             
            - spec/fixtures/target/platform/php/fpd/wp_rss_functions.php
         | 
| 454 456 | 
             
            - spec/fixtures/target/scope/index.html
         |