Sha256: 1b4d66bb04729cdb4c0eb987c43c613385973063ee47b9ad203275d79cafbafd
Contents?: true
Size: 1.53 KB
Versions: 3
Compression:
Stored size: 1.53 KB
Contents
# frozen_string_literal: true require "thor" require "json" module DoHClient class CLI < Thor class_option :resolver, type: :string, desc: "a resolver to use ('google' or 'cloudflare', default: google)" desc "resolve [NAME]", "resolve a given name" method_option :type, type: :string, default: "A" method_option :cd, type: :boolean method_option :do, type: :boolean method_option :edns_client_subnet, type: :string method_option :random_padding, type: :string def resolve(name) hash = resolver.resolve(name, options) puts hash.to_json end desc "act_as_server", "act as a local DNS server on a given port (default: 5300)" method_option :port, type: :numeric, default: 5300 def act_as_server port = options[:port] interfaces = [[:udp, "0.0.0.0", port], [:tcp, "0.0.0.0", port]] server = DoHClient::Server.new(interfaces) puts "Starting DNS server 0.0.0.0:#{port} (tcp/udp)" begin server.run rescue Interrupt puts "\nStopping DNS server..." ensure puts "Stopped" end end no_commands do def resolver case options[:resolver] when "google" DoHClient::Client::Google when "cloudflare" DoHClient::Client::Cloudflare else DoHClient::Client::Google end end def with_error_handling yield rescue ResponseError => e puts "Warning: #{e}" rescue ArgumentError => _ puts "Warning: #{e}" end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
doh_client-0.2.2 | lib/doh_client/cli.rb |
doh_client-0.2.1 | lib/doh_client/cli.rb |
doh_client-0.2.0 | lib/doh_client/cli.rb |