Sha256: 59292f80e6ff3a896702664f029e335d7724be12c61de2d190363bbb98bf7f44

Contents?: true

Size: 1.19 KB

Versions: 2

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

require "thor"
require "json"

module RogueOne
  class CLI < Thor
    desc "report [DNS_SERVER]", "Show a report of a given DNS server"
    method_option :default_list, type: :string, default: "alexa", desc: "A default list of top 100 domains (Alexa or Fortune)"
    method_option :custom_list, type: :string, desc: "A path to a custom list of domains"
    method_option :threshold, type: :numeric, desc: "Threshold value for determining malicious or not"
    method_option :verbose, type: :boolean
    def report(dns_server)
      with_error_handling do
        Ping.pong? dns_server

        default_list = options["default_list"].downcase
        custom_list = options["custom_list"]
        threshold = options["threshold"]
        verbose = options["verbose"]
        detector = Detector.new(target: dns_server, default_list: default_list, custom_list: custom_list, threshold: threshold, verbose: verbose)
        puts JSON.pretty_generate(detector.report)
      end
    end

    no_commands do
      def with_error_handling
        yield
      rescue StandardError => e
        message = { error: e.to_s }
        puts JSON.pretty_generate(message)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rogue_one-0.4.1 lib/rogue_one/cli.rb
rogue_one-0.4.0 lib/rogue_one/cli.rb