Sha256: 6fce2a4464681466ed2b3c94b3f21d2b0d27886971f1cd2d9a6d6072d4290d57

Contents?: true

Size: 1.59 KB

Versions: 16

Compression:

Stored size: 1.59 KB

Contents

$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
require 'shodanz'
require 'command_lion'
require 'yaml'
require 'pry'

module Top10
  
  @rest_api = Shodanz.api.rest.new
  
  def self.check(product)
    begin
      @rest_api.host_count(product: product, facets: { country: 10 })["facets"]["country"].collect { |x| x.values }.to_h.invert
    rescue
      puts "Unable to succesffully check the Shodan API."
      exit 1
    end
  end

end

CommandLion::App.run do
  name "Top 10 Countires Running a Product Using Shodan"

  command :product do
    description "Search for this given product."
    type :string
    flag "--product"

    # Check is Shodan Enviroemnt Variable Set
    before do
      unless ENV['SHODAN_API_KEY'] 
        puts "Need to set the 'SHODAN_API_KEY' enviroment variable before using this app!"
        exit 1 # [ ╯´・ω・]╯︵┸━┸) 
      end
      if argument.empty?
        puts "What kind of nonsense is this?! You need to provide some argument..."
        exit 1 # [ ╯ ゚▽゚]╯︵┻━┻)
      end
    end

    # Do stuff.
    action do
      result = Top10.check(argument)
      if options[:json].given?
        puts JSON.pretty_generate(result)
      elsif options[:yaml].given?
        puts result.to_yaml
      else
        result.each do |country, count|
          puts "#{country}\t#{count}"
        end
      end
    end

    option :json do
      description "Use JSON as the format to output to STDOUT."
      flag "--json"
    end

    option :yaml do
      description "Use YAML as the format to output to STDOUT."
      flag "--yaml"
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
shodanz-2.0.8 examples/top_10_countries_running.rb
shodanz-2.0.7 examples/top_10_countries_running.rb
shodanz-2.0.6 examples/top_10_countries_running.rb
shodanz-2.0.5 examples/top_10_countries_running.rb
shodanz-2.0.4 examples/top_10_countries_running.rb
shodanz-2.0.3 examples/top_10_countries_running.rb
shodanz-2.0.2 examples/top_10_countries_running.rb
shodanz-2.0.1 examples/top_10_countries_running.rb
shodanz-2.0.0 examples/top_10_countries_running.rb
shodanz-1.0.6 examples/top_10_countries_running.rb
shodanz-1.0.5 examples/top_10_countries_running.rb
shodanz-1.0.4 examples/top_10_countries_running.rb
shodanz-1.0.3 examples/top_10_countries_running.rb
shodanz-1.0.2 examples/top_10_countries_running.rb
shodanz-1.0.1 examples/top_10_countries_running.rb
shodanz-1.0.0 examples/top_10_countries_running.rb