Class: Radd::Nameserver
- Inherits:
-
Async::DNS::Server
- Object
- Async::DNS::Server
- Radd::Nameserver
- Defined in:
- lib/radd/nameserver.rb
Instance Method Summary collapse
-
#initialize ⇒ Nameserver
constructor
A new instance of Nameserver.
- #process(name, resource_class, transaction) ⇒ Object
Constructor Details
#initialize ⇒ Nameserver
Returns a new instance of Nameserver.
4 5 6 |
# File 'lib/radd/nameserver.rb', line 4 def initialize super(Async::DNS::Endpoint.for(Radd.dns_host, port: Radd.dns_port)) end |
Instance Method Details
#process(name, resource_class, transaction) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/radd/nameserver.rb', line 8 def process(name, resource_class, transaction) name = Resolv::DNS::Name.create(name.downcase) # NOTE: do not use case..when, as resource classes are not identical if Resolv::DNS::Resource::IN::A == resource_class if Radd.mname == name || Radd.origin == name return respond_a(transaction, Radd.ip) elsif name.subdomain_of?(Radd.origin) return respond_a(transaction, Radd.query(name)) end elsif resource_class <= Resolv::DNS::Resource::SOA && Radd.origin == name # mname, rname, serial, refresh, retry_, expire, minimum return transaction.respond!(Radd.mname, Radd.rname, Radd.serial, 10800, 1800, 604800, 1800) elsif resource_class <= Resolv::DNS::Resource::NS && Radd.origin == name return transaction.respond!(Radd.mname) end transaction.fail!(:Refused) end |