radd 1.6.0 → 1.6.1

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: 99edc874f70f644cf13bbf53d5c59b3ac621dc994c385ce89d5f5bff04e8037a
4
+ data.tar.gz: 37456bd0c2e82685f58267af57eda13c25a4b9be214383f8c015bfdd35d153e1
5
5
  SHA512:
6
- metadata.gz: b80b94d5fb7e63a0ffa02e9f9d67a443f548e06adf9b22244543fc4579467fbd231579a335f106cc6e7e7091ef85a4a73cd2e505f7ffe917c719762a350f81d9
7
- data.tar.gz: 1cac04ba43cfa863044ba3b5e3c37f8d718369cb753a65dc88ac1e64adf8f9eedbeb8ab02136d56e59758c1a9480dbdd00ea43668733e484f524a803419886c5
6
+ metadata.gz: f5e072ab89ccb5963f45896caf52432803f0c73b2e99829d98df93ee1d272bbe7550ae842622baae686f3d6f509c6c0ed6de2a8e2e65ffd2de94b624872d0b9f
7
+ data.tar.gz: '0082acfb267945c00505fddc30ec6babc905eae7c6f8d6f28abc1d1cff99eeff473e0bf5257af6a6eda96842727cfa25f684b81b5b08096bff7e17fa17f2da30'
@@ -7,24 +7,40 @@ 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
+ when :MX, :AAAA then return transaction.fail!(:NoError)
16
21
  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
22
  end
23
23
  transaction.fail!(:Refused)
24
24
  end
25
25
 
26
26
  private
27
27
 
28
+ def query_type(resource_class)
29
+ if Resolv::DNS::Resource::IN::A == resource_class
30
+ :A
31
+ elsif resource_class <= Resolv::DNS::Resource::SOA
32
+ :SOA
33
+ elsif resource_class <= Resolv::DNS::Resource::NS
34
+ :NS
35
+ elsif resource_class <= Resolv::DNS::Resource::MX
36
+ :MX
37
+ elsif resource_class <= Resolv::DNS::Resource::IN::AAAA
38
+ :AAAA
39
+ else
40
+ :UNKNOWN
41
+ end
42
+ end
43
+
28
44
  def respond_a(transaction, ip)
29
45
  if ip
30
46
  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.1'
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.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthias Grosser