Class: Radd::Nameserver

Inherits:
Async::DNS::Server
  • Object
show all
Defined in:
lib/radd/nameserver.rb

Instance Method Summary collapse

Constructor Details

#initializeNameserver

Returns a new instance of Nameserver.



2
3
4
# File 'lib/radd/nameserver.rb', line 2

def initialize
  super(Async::DNS::Endpoint.for(Radd.dns_host, port: Radd.dns_port))
end

Instance Method Details

#process(name, resource_class, transaction) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/radd/nameserver.rb', line 6

def process(name, resource_class, transaction)
  name = name.downcase
  case resource_class
  when Resolv::DNS::Resource::IN::A
    ip = Radd.domain == name ? Radd.ip : Radd.query(name)
    return transaction.respond!(ip, ttl: Radd.ttl) if ip
  when Resolv::DNS::Resource::IN::SOA
    return transaction.respond!(Radd.mname, Radd.rname, Radd.serial, 10800, 1800, 604800, 1800)
  end
  transaction.fail!(:NXDomain)
end