Sha256: 4bd84e8044a0921a2f6b100ec575c07b3e33cab452e0e947ac664a8cd9b79c0e

Contents?: true

Size: 985 Bytes

Versions: 1

Compression:

Stored size: 985 Bytes

Contents

# frozen_string_literal: true

require "json"
require "thor"

module Apullo
  class CLI < Thor
    desc "check [Target]", "Take fingerprints from a target(IP, domain or URL)"
    method_option :headers, type: :hash, default: {}
    def check(target)
      target = Target.new(target)
      headers = options["headers"]

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

      puts JSON.pretty_generate(results)
    end

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

        Apullo.fingerprints.map do |klass|
          fingerprint = klass.new(target)
          fingerprint.headers = headers if fingerprint.respond_to?(:headers=)

          [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.3 lib/apullo/cli.rb