#! /usr/bin/env ruby require_relative('../lib/retriever.rb') options = {} optparse = OptionParser.new do|opts| # Set a banner, displayed at the top # of the help screen. opts.banner = "Usage: rr [options] Target_URL" options[:filename] = nil opts.on( '-o', '--out FILENAME', 'Dump output to selected filename' ) do|filename| options[:filename] = filename end # Define the options, and what they do options[:verbose] = false opts.on( '-v', '--verbose', 'Output more information' ) do options[:verbose] = true end options[:progress] = false opts.on( '-p', '--progressbar', 'Output more information' ) do options[:progress] = true end options[:sitemap] = false opts.on( '-s', '--sitemap', 'Crawl site and output sitemap' ) do options[:sitemap] = true end options[:fileharvest] = false opts.on( '-f', '--files', 'Crawl site and collect links for files found' ) do options[:fileharvest] = true end options[:maxpages] = false opts.on( '-l', '--limit PAGE_LIMIT_#', 'set a max on the total number of crawled pages' ) do |maxpages| options[:maxpages] = maxpages end options[:file_ext] = false opts.on( '-e', '--ext FILE_EXTENSION', 'set a file extension to look for on crawled pages' ) do |file_ext| options[:file_ext] = file_ext end options[:autodown] = false opts.on( '-a', '--autodown', 'Automatically download all files of filetype located' ) do options[:autodown] = true end # This displays the help screen, all programs are # assumed to have this option. opts.on( '-h', '--help', 'Display this screen' ) do puts opts exit end end optparse.parse! if ARGV[0].nil? abort("###Missing Required Argument\nUsage: rr [mode] [options] Target_URL") end ARGV.each do|q| if options[:verbose] puts "###############################" puts "### [RubyRetriever]" puts "### Creating Sitemap" if options[:sitemap] puts "### Performing File Harvest" if options[:fileharvest] puts "### Searching for file extension: #{options[:file_ext]} pages" if (options[:file_ext]) puts "### Writting output to filename: #{options[:filename]}" if options[:filename] puts "### Being verbose" puts "### Stopping after #{options[:maxpages]} pages" if options[:maxpages] end puts "###############################" puts "### [RubyRetriever] go fetch #{q}" test = Retriever::FetchFiles.new(q, options) if options[:fileharvest] test = Retriever::FetchSitemap.new(q, options) if options[:sitemap] puts "### [RubyRetriever] is done." puts "###############################" puts end