Sha256: a1a08b317f787861b4bdded9c2c16471b9abe0a3152aef84f53ab1ab7a72f9a8

Contents?: true

Size: 816 Bytes

Versions: 1

Compression:

Stored size: 816 Bytes

Contents

# frozen_string_literal: true

require "json"
require "parallel"
require "thor"

module Apullo
  class CLI < Thor
    desc "check [Target]", "Take fingerprints from a target(IP, domain or URL)"
    def check(target)
      target = Target.new(target)

      results = build_results(target)
      meta = { target: target.id }
      results = results.merge(meta: meta)

      puts JSON.pretty_generate(results)
    end

    no_commands do
      def build_results(target)
        unless target.valid?
          return {
            error: "Invalid target is given. Target should be an IP, domain or URL."
          }
        end

        Parallel.map(Apullo.fingerprints) do |klass|
          fingerprint = klass.new(target)
          [fingerprint.name, fingerprint.results]
        end.to_h
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
apullo-0.1.2 lib/apullo/cli.rb