radd 1.6.0 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 89f434326187f7616eb3f1c4c90b97ae0f509276885afa93f66ebdb45be2032c
4
- data.tar.gz: 501b58d548f23284c3df02301ee278beb5011e3450fe731e701570f2f7b06f9c
3
+ metadata.gz: e7638482611b0daa873a8d5873e0271bfd4edc9242d22abc2be833a041425c2f
4
+ data.tar.gz: 3ba6ea0e91e5bb6faeddc36fed49cf1020d4caf0d7fe81ab0470b5c359f8f082
5
5
  SHA512:
6
- metadata.gz: b80b94d5fb7e63a0ffa02e9f9d67a443f548e06adf9b22244543fc4579467fbd231579a335f106cc6e7e7091ef85a4a73cd2e505f7ffe917c719762a350f81d9
7
- data.tar.gz: 1cac04ba43cfa863044ba3b5e3c37f8d718369cb753a65dc88ac1e64adf8f9eedbeb8ab02136d56e59758c1a9480dbdd00ea43668733e484f524a803419886c5
6
+ metadata.gz: f4eaedcacb912dd7c1dc780ea808d9f9353c6e67d81f4b560dd86c29b9957b630462e45b5ee52d1638ba3a7c3345a42ce6a693c656f1cb43e57cb8be3fcbebdb
7
+ data.tar.gz: e57060d8c97b43271f287cb309b82242a65c7451678ac27c463494ccd5991e59b5f9a113c99bd89d491e07a5af23306146ad6d71415bed1f093959a9f8542d07
@@ -7,24 +7,41 @@ module Radd
7
7
 
8
8
  def process(name, resource_class, transaction)
9
9
  name = Resolv::DNS::Name.create(name.downcase)
10
- # NOTE: do not use case..when, as resource classes are not identical
11
- if Resolv::DNS::Resource::IN::A == resource_class
12
- if Radd.mname == name || Radd.origin == name
13
- return respond_a(transaction, Radd.ip)
14
- elsif name.subdomain_of?(Radd.origin)
15
- return respond_a(transaction, Radd.query(name))
10
+ type = query_type(resource_class)
11
+ if Radd.origin == name
12
+ case type
13
+ when :A then return respond_a(transaction, Radd.ip)
14
+ when :SOA then return transaction.respond!(Radd.mname, Radd.rname, Radd.serial, 10800, 1800, 604800, 1800)
15
+ when :NS then return transaction.respond!(Radd.mname)
16
+ end
17
+ elsif name.subdomain_of?(Radd.origin)
18
+ case type
19
+ when :A then return respond_a(transaction, Radd.query(name))
20
+ else
21
+ return transaction.fail!(:NoError)
16
22
  end
17
- elsif resource_class <= Resolv::DNS::Resource::SOA && Radd.origin == name
18
- # mname, rname, serial, refresh, retry_, expire, minimum
19
- return transaction.respond!(Radd.mname, Radd.rname, Radd.serial, 10800, 1800, 604800, 1800)
20
- elsif resource_class <= Resolv::DNS::Resource::NS && Radd.origin == name
21
- return transaction.respond!(Radd.mname)
22
23
  end
23
24
  transaction.fail!(:Refused)
24
25
  end
25
26
 
26
27
  private
27
28
 
29
+ def query_type(resource_class)
30
+ if Resolv::DNS::Resource::IN::A == resource_class
31
+ :A
32
+ elsif resource_class <= Resolv::DNS::Resource::SOA
33
+ :SOA
34
+ elsif resource_class <= Resolv::DNS::Resource::NS
35
+ :NS
36
+ elsif resource_class <= Resolv::DNS::Resource::MX
37
+ :MX
38
+ elsif resource_class <= Resolv::DNS::Resource::IN::AAAA
39
+ :AAAA
40
+ else
41
+ :UNKNOWN
42
+ end
43
+ end
44
+
28
45
  def respond_a(transaction, ip)
29
46
  if ip
30
47
  transaction.respond!(ip, ttl: Radd.ttl)
data/lib/radd/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Radd
2
- VERSION = '1.6.0'
2
+ VERSION = '1.6.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: radd
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthias Grosser