class Explorer::Server::DNS

Public Class Methods

new(port) click to toggle source
Calls superclass method
# File lib/explorer/server/dns.rb, line 6
def initialize(port)
  super listen: interfaces(port)
  async.run
end

Public Instance Methods

process(name, resource_class, transaction) click to toggle source
# File lib/explorer/server/dns.rb, line 11
def process(name, resource_class, transaction)
  return transaction.fail!(:NXDomain) unless name_matches?(name)

  if resource_class == Resolv::DNS::Resource::IN::A
    transaction.respond!('127.0.0.1')
  elsif resource_class == Resolv::DNS::Resource::IN::AAAA
    transaction.respond!('::1')
  else
    transaction.fail!(:NXDomain)
  end
end

Private Instance Methods

interfaces(port) click to toggle source
# File lib/explorer/server/dns.rb, line 25
def interfaces(port)
  [
    [:udp, "0.0.0.0", port],
    [:tcp, "0.0.0.0", port]
  ]
end
name_matches?(name) click to toggle source
# File lib/explorer/server/dns.rb, line 32
def name_matches?(name)
  name =~ /.*\.dev/
end