net-dns 0.9.0 → 0.20.0

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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -16
  3. data/README.md +1 -1
  4. data/lib/net/dns/header.rb +48 -64
  5. data/lib/net/dns/names.rb +8 -10
  6. data/lib/net/dns/packet.rb +46 -53
  7. data/lib/net/dns/question.rb +5 -3
  8. data/lib/net/dns/resolver/socks.rb +5 -7
  9. data/lib/net/dns/resolver/timeouts.rb +3 -5
  10. data/lib/net/dns/resolver.rb +54 -69
  11. data/lib/net/dns/rr/a.rb +3 -4
  12. data/lib/net/dns/rr/aaaa.rb +3 -5
  13. data/lib/net/dns/rr/classes.rb +6 -8
  14. data/lib/net/dns/rr/cname.rb +3 -5
  15. data/lib/net/dns/rr/hinfo.rb +9 -13
  16. data/lib/net/dns/rr/mr.rb +3 -5
  17. data/lib/net/dns/rr/mx.rb +5 -7
  18. data/lib/net/dns/rr/ns.rb +3 -5
  19. data/lib/net/dns/rr/null.rb +3 -5
  20. data/lib/net/dns/rr/ptr.rb +3 -5
  21. data/lib/net/dns/rr/soa.rb +11 -7
  22. data/lib/net/dns/rr/srv.rb +5 -2
  23. data/lib/net/dns/rr/txt.rb +4 -6
  24. data/lib/net/dns/rr/types.rb +90 -79
  25. data/lib/net/dns/rr.rb +2 -2
  26. data/lib/net/dns/version.rb +1 -1
  27. data/lib/net/dns.rb +3 -1
  28. metadata +11 -104
  29. data/.gitignore +0 -8
  30. data/.rubocop.yml +0 -3
  31. data/.rubocop_defaults.yml +0 -364
  32. data/.rubocop_todo.yml +0 -207
  33. data/Gemfile +0 -8
  34. data/Rakefile +0 -38
  35. data/bin/console +0 -14
  36. data/lib/net/dns/core_ext.rb +0 -45
  37. data/net-dns.gemspec +0 -23
  38. data/spec/fixtures/resolv.conf +0 -4
  39. data/spec/spec_helper.rb +0 -14
  40. data/spec/unit/resolver/dns_timeout_spec.rb +0 -36
  41. data/spec/unit/resolver/tcp_timeout_spec.rb +0 -46
  42. data/spec/unit/resolver/udp_timeout_spec.rb +0 -46
  43. data/test/test_helper.rb +0 -13
  44. data/test/unit/header_test.rb +0 -164
  45. data/test/unit/names_test.rb +0 -21
  46. data/test/unit/packet_test.rb +0 -47
  47. data/test/unit/question_test.rb +0 -81
  48. data/test/unit/resolver_test.rb +0 -114
  49. data/test/unit/rr/a_test.rb +0 -106
  50. data/test/unit/rr/aaaa_test.rb +0 -102
  51. data/test/unit/rr/classes_test.rb +0 -83
  52. data/test/unit/rr/cname_test.rb +0 -90
  53. data/test/unit/rr/hinfo_test.rb +0 -111
  54. data/test/unit/rr/mr_test.rb +0 -99
  55. data/test/unit/rr/mx_test.rb +0 -106
  56. data/test/unit/rr/ns_test.rb +0 -80
  57. data/test/unit/rr/types_test.rb +0 -71
  58. data/test/unit/rr_test.rb +0 -127
@@ -4,65 +4,82 @@ module Net # :nodoc:
4
4
  # This is an auxiliary class to handle RR type field in a DNS packet.
5
5
  class Types
6
6
  TYPES = {
7
- 'SIGZERO' => 0, # RFC2931 consider this a pseudo type
8
- 'A' => 1, # RFC 1035, Section 3.4.1
9
- 'NS' => 2, # RFC 1035, Section 3.3.11
10
- 'MD' => 3, # RFC 1035, Section 3.3.4 (obsolete)
11
- 'MF' => 4, # RFC 1035, Section 3.3.5 (obsolete)
12
- 'CNAME' => 5, # RFC 1035, Section 3.3.1
13
- 'SOA' => 6, # RFC 1035, Section 3.3.13
14
- 'MB' => 7, # RFC 1035, Section 3.3.3
15
- 'MG' => 8, # RFC 1035, Section 3.3.6
16
- 'MR' => 9, # RFC 1035, Section 3.3.8
17
- 'NULL' => 10, # RFC 1035, Section 3.3.10
18
- 'WKS' => 11, # RFC 1035, Section 3.4.2 (deprecated)
19
- 'PTR' => 12, # RFC 1035, Section 3.3.12
7
+ 'SIGZERO' => 0, # RFC2931 consider this a pseudo type
8
+ 'A' => 1, # RFC 1035, Section 3.4.1
9
+ 'NS' => 2, # RFC 1035, Section 3.3.11
10
+ 'MD' => 3, # RFC 1035, Section 3.3.4 (obsolete)
11
+ 'MF' => 4, # RFC 1035, Section 3.3.5 (obsolete)
12
+ 'CNAME' => 5, # RFC 1035, Section 3.3.1
13
+ 'SOA' => 6, # RFC 1035, Section 3.3.13
14
+ 'MB' => 7, # RFC 1035, Section 3.3.3 (obsolete)
15
+ 'MG' => 8, # RFC 1035, Section 3.3.6 (obsolete)
16
+ 'MR' => 9, # RFC 1035, Section 3.3.8 (obsolete)
17
+ 'NULL' => 10, # RFC 1035, Section 3.3.10 (obsolete)
18
+ 'WKS' => 11, # RFC 1035, Section 3.4.2 (obsolete)
19
+ 'PTR' => 12, # RFC 1035, Section 3.3.12
20
20
  'HINFO' => 13, # RFC 1035, Section 3.3.2
21
- 'MINFO' => 14, # RFC 1035, Section 3.3.7
22
- 'MX' => 15, # RFC 1035, Section 3.3.9
23
- 'TXT' => 16, # RFC 1035, Section 3.3.14
24
- 'RP' => 17, # RFC 1183, Section 2.2
25
- 'AFSDB' => 18, # RFC 1183, Section 1
26
- 'X25' => 19, # RFC 1183, Section 3.1
27
- 'ISDN' => 20, # RFC 1183, Section 3.2
28
- 'RT' => 21, # RFC 1183, Section 3.3
29
- 'NSAP' => 22, # RFC 1706, Section 5
30
- 'NSAP_PTR' => 23, # RFC 1348 (obsolete)
31
- # The following 2 RRs are impemented in Net::DNS::SEC, TODO
32
- 'SIG' => 24, # RFC 2535, Section 4.1
33
- 'KEY' => 25, # RFC 2535, Section 3.1
34
- 'PX' => 26, # RFC 2163,
35
- 'GPOS' => 27, # RFC 1712 (obsolete)
36
- 'AAAA' => 28, # RFC 1886, Section 2.1
37
- 'LOC' => 29, # RFC 1876
38
- # The following RR is implemented in Net::DNS::SEC, TODO
39
- 'NXT' => 30, # RFC 2535, Section 5.2
40
- 'EID' => 31, # draft-ietf-nimrod-dns-xx.txt
41
- 'NIMLOC' => 32, # draft-ietf-nimrod-dns-xx.txt
42
- 'SRV' => 33, # RFC 2052
43
- 'ATMA' => 34, # ???
44
- 'NAPTR' => 35, # RFC 2168
45
- 'KX' => 36, # RFC 2230
46
- 'CERT' => 37, # RFC 2538
47
- 'DNAME' => 39, # RFC 2672
48
- 'OPT' => 41, # RFC 2671
49
- # The following 4 RRs are implemented in Net::DNS::SEC TODO
50
- 'DS' => 43, # draft-ietf-dnsext-delegation-signer
51
- 'SSHFP' => 44, # draft-ietf-secsh-dns (No RFC # yet at time of coding)
52
- 'RRSIG' => 46, # draft-ietf-dnsext-dnssec-2535typecode-change
53
- 'NSEC' => 47, # draft-ietf-dnsext-dnssec-2535typecode-change
54
- 'DNSKEY' => 48, # draft-ietf-dnsext-dnssec-2535typecode-change
55
- 'UINFO' => 100, # non-standard
56
- 'UID' => 101, # non-standard
57
- 'GID' => 102, # non-standard
58
- 'UNSPEC' => 103, # non-standard
59
- 'TKEY' => 249, # RFC 2930
60
- 'TSIG' => 250, # RFC 2931
61
- 'IXFR' => 251, # RFC 1995
62
- 'AXFR' => 252, # RFC 1035
63
- 'MAILB' => 253, # RFC 1035 (MB, MG, MR)
21
+ 'MINFO' => 14, # RFC 1035, Section 3.3.7 (obsolete)
22
+ 'MX' => 15, # RFC 1035, Section 3.3.9
23
+ 'TXT' => 16, # RFC 1035, Section 3.3.14
24
+ 'RP' => 17, # RFC 1183, Section 2.2 (obsolete)
25
+ 'AFSDB' => 18, # RFC 1183, Section 1
26
+ 'X25' => 19, # RFC 1183, Section 3.1 (obsolete)
27
+ 'ISDN' => 20, # RFC 1183, Section 3.2 (obsolete)
28
+ 'RT' => 21, # RFC 1183, Section 3.3 (obsolete)
29
+ 'NSAP' => 22, # RFC 1706, Section 5 (obsolete)
30
+ 'NSAP_PTR' => 23, # RFC 1348 (obsolete) (obsolete)
31
+ 'SIG' => 24, # RFC 2535, Section 4.1 (obsolete)
32
+ 'KEY' => 25, # RFC 2535, Section 3.1 (obsolete)
33
+ 'PX' => 26, # RFC 2163, (obsolete)
34
+ 'GPOS' => 27, # RFC 1712 (obsolete)
35
+ 'AAAA' => 28, # RFC 1886, Section 2.1
36
+ 'LOC' => 29, # RFC 1876
37
+ 'NXT' => 30, # RFC 2535, Section 5.2 (obsolete)
38
+ 'EID' => 31, # draft-ietf-nimrod-dns-xx.txt (obsolete)
39
+ 'NIMLOC' => 32, # draft-ietf-nimrod-dns-xx.txt (obsolete)
40
+ 'SRV' => 33, # RFC 2052
41
+ 'ATMA' => 34, # ??? (obsolete)
42
+ 'NAPTR' => 35, # RFC 2168
43
+ 'KX' => 36, # RFC 2230
44
+ 'CERT' => 37, # RFC 2538
45
+ 'DNAME' => 39, # RFC 2672
46
+ 'OPT' => 41, # RFC 2671
47
+ 'APL' => 42, # RFC 3123 (obsolete)
48
+ 'DS' => 43, # RFC 4034
49
+ 'SSHFP' => 44, # RFC 4255
50
+ 'IPSECKEY' => 45, # RFC 4025
51
+ 'RRSIG' => 46, # RFC 4034
52
+ 'NSEC' => 47, # RFC 4034
53
+ 'DNSKEY' => 48, # RFC 4034
54
+ 'DHCID' => 49, # RFC 4701
55
+ 'NSEC3' => 50, # RFC 5155
56
+ 'NSEC3PARAM' => 51, # RFC 5155
57
+ 'TLSA' => 52, # RFC 6698
58
+ 'SMIMEA' => 53, # RFC 8162
59
+ 'HIP' => 55, # RFC 8005
60
+ 'CDS' => 59, # RFC 7344
61
+ 'CDNSKEY' => 60, # RFC 7344
62
+ 'OPENPGPKEY' => 61, # RFC 7929
63
+ 'CSYNC' => 62, # RFC 7477
64
+ 'ZONEMD' => 63, # RFC 8976
65
+ 'SVCB' => 64, # RFC 9460
66
+ 'HTTPS' => 65, # RFC 9460
67
+ 'SPF' => 99, # RFC 4408 (obsolete)
68
+ 'UINFO' => 100, # non-standard (obsolete)
69
+ 'UID' => 101, # non-standard (obsolete)
70
+ 'GID' => 102, # non-standard (obsolete)
71
+ 'UNSPEC' => 103, # non-standard (obsolete)
72
+ 'EUI48' => 108, # RFC 7043
73
+ 'EUI64' => 109, # RFC 7043
74
+ 'TKEY' => 249, # RFC 2930
75
+ 'TSIG' => 250, # RFC 2931
76
+ 'IXFR' => 251, # RFC 1995
77
+ 'AXFR' => 252, # RFC 1035
78
+ 'MAILB' => 253, # RFC 1035 (MB, MG, MR) (obsolete)
64
79
  'MAILA' => 254, # RFC 1035 (obsolete - see MX)
65
- 'ANY' => 255, # RFC 1035
80
+ 'ANY' => 255, # RFC 1035
81
+ 'URI' => 256, # RFC 7553
82
+ 'CAA' => 257, # RFC 6844
66
83
  }.freeze
67
84
 
68
85
  # The default value when type is nil in Resource Records
@@ -75,11 +92,9 @@ module Net # :nodoc:
75
92
  # Be able to control the default type to assign when
76
93
  # type is +nil+. Default to +A+
77
94
  def self.default=(str)
78
- if TYPES.key? str
79
- @@default = TYPES[str]
80
- else
81
- raise ArgumentError, "Unknown type #{str}"
82
- end
95
+ raise ArgumentError, "Unknown type #{str}" unless TYPES.key? str
96
+
97
+ @@default = TYPES[str]
83
98
  end
84
99
 
85
100
  # Checks whether +type+ is a valid RR type.
@@ -99,11 +114,10 @@ module Net # :nodoc:
99
114
  def self.to_str(type)
100
115
  case type
101
116
  when Integer
102
- if TYPES.invert.key? type
103
- TYPES.invert[type]
104
- else
105
- raise ArgumentError, "Unknown type number #{type}"
106
- end
117
+ raise ArgumentError, "Unknown type number #{type}" unless TYPES.invert.key? type
118
+
119
+ TYPES.invert[type]
120
+
107
121
  else
108
122
  raise ArgumentError, "Wrong type class: #{type.class}"
109
123
  end
@@ -167,23 +181,20 @@ module Net # :nodoc:
167
181
  # TODO!!!
168
182
  else
169
183
  # String with name of type
170
- if TYPES.key? type
171
- @str = type
172
- @num = TYPES[type]
173
- else
174
- raise ArgumentError, "Unknown type #{type}"
175
- end
184
+ raise ArgumentError, "Unknown type #{type}" unless TYPES.key? type
185
+
186
+ @str = type
187
+ @num = TYPES[type]
188
+
176
189
  end
177
190
  end
178
191
 
179
192
  # Contructor for numeric data type.
180
193
  def new_from_num(type)
181
- if TYPES.invert.key? type
182
- @num = type
183
- @str = TYPES.invert[type]
184
- else
185
- raise ArgumentError, "Unkown type number #{type}"
186
- end
194
+ raise ArgumentError, "Unkown type number #{type}" unless TYPES.invert.key? type
195
+
196
+ @num = type
197
+ @str = TYPES.invert[type]
187
198
  end
188
199
  end
189
200
  end
data/lib/net/dns/rr.rb CHANGED
@@ -284,7 +284,7 @@ module Net
284
284
  if self.class == Net::DNS::RR
285
285
  Net::DNS::RR.const_get(@type.to_s).new(args)
286
286
  else
287
- hash = args - %i[name ttl type cls]
287
+ hash = args.delete_if { |k, _| %i[name ttl type cls].include?(k) }
288
288
  if hash.key? :rdata
289
289
  subclass_new_from_string(hash[:rdata])
290
290
  else
@@ -297,7 +297,7 @@ module Net
297
297
  def new_from_binary(data, offset)
298
298
  if self.class == Net::DNS::RR
299
299
  temp = dn_expand(data, offset)[1]
300
- type = Net::DNS::RR::Types.new data.unpack("@#{temp} n")[0]
300
+ type = Net::DNS::RR::Types.new data.unpack1("@#{temp} n")
301
301
  (eval "Net::DNS::RR::#{type}").parse_packet(data, offset)
302
302
  else
303
303
  @name, offset = dn_expand(data, offset)
@@ -3,6 +3,6 @@
3
3
  module Net
4
4
  module DNS
5
5
  # The current library version.
6
- VERSION = "0.9.0".freeze
6
+ VERSION = "0.20.0"
7
7
  end
8
8
  end
data/lib/net/dns.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require_relative 'dns/version'
2
- require_relative 'dns/core_ext'
3
2
  require_relative 'dns/resolver'
4
3
  require_relative 'dns/rr'
5
4
 
@@ -69,6 +68,7 @@ module Net
69
68
  RRSIG = 46
70
69
  NSEC = 47
71
70
  DNSKEY = 48
71
+ SPF = 99
72
72
  UINFO = 100
73
73
  UID = 101
74
74
  GID = 102
@@ -80,6 +80,8 @@ module Net
80
80
  MAILB = 253
81
81
  MAILA = 254
82
82
  ANY = 255
83
+ URI = 256
84
+ CAA = 257
83
85
  end
84
86
 
85
87
  module QueryClasses
metadata CHANGED
@@ -1,58 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-dns
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marco Ceresa
8
8
  - Simone Carletti
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-10-29 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: mocha
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: '0'
21
- type: :development
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: '0'
28
- - !ruby/object:Gem::Dependency
29
- name: rake
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: '0'
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- version: '0'
42
- - !ruby/object:Gem::Dependency
43
- name: yard
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: '0'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: '0'
12
+ date: 2023-12-18 00:00:00.000000000 Z
13
+ dependencies: []
56
14
  description: Net::DNS is a pure Ruby DNS library, with a clean OO interface and an
57
15
  extensible API.
58
16
  email:
@@ -63,23 +21,15 @@ extensions: []
63
21
  extra_rdoc_files:
64
22
  - LICENSE.txt
65
23
  files:
66
- - ".gitignore"
67
24
  - ".rspec"
68
- - ".rubocop.yml"
69
- - ".rubocop_defaults.yml"
70
- - ".rubocop_todo.yml"
71
25
  - ".travis.yml"
72
26
  - CHANGELOG.md
73
- - Gemfile
74
27
  - LICENSE.txt
75
28
  - README.md
76
- - Rakefile
77
29
  - THANKS.rdoc
78
- - bin/console
79
30
  - demo/check_soa.rb
80
31
  - demo/threads.rb
81
32
  - lib/net/dns.rb
82
- - lib/net/dns/core_ext.rb
83
33
  - lib/net/dns/header.rb
84
34
  - lib/net/dns/names.rb
85
35
  - lib/net/dns/packet.rb
@@ -103,32 +53,11 @@ files:
103
53
  - lib/net/dns/rr/txt.rb
104
54
  - lib/net/dns/rr/types.rb
105
55
  - lib/net/dns/version.rb
106
- - net-dns.gemspec
107
- - spec/fixtures/resolv.conf
108
- - spec/spec_helper.rb
109
- - spec/unit/resolver/dns_timeout_spec.rb
110
- - spec/unit/resolver/tcp_timeout_spec.rb
111
- - spec/unit/resolver/udp_timeout_spec.rb
112
- - test/test_helper.rb
113
- - test/unit/header_test.rb
114
- - test/unit/names_test.rb
115
- - test/unit/packet_test.rb
116
- - test/unit/question_test.rb
117
- - test/unit/resolver_test.rb
118
- - test/unit/rr/a_test.rb
119
- - test/unit/rr/aaaa_test.rb
120
- - test/unit/rr/classes_test.rb
121
- - test/unit/rr/cname_test.rb
122
- - test/unit/rr/hinfo_test.rb
123
- - test/unit/rr/mr_test.rb
124
- - test/unit/rr/mx_test.rb
125
- - test/unit/rr/ns_test.rb
126
- - test/unit/rr/types_test.rb
127
- - test/unit/rr_test.rb
128
56
  homepage: http://github.com/bluemonk/net-dns
129
- licenses: []
57
+ licenses:
58
+ - Ruby
130
59
  metadata: {}
131
- post_install_message:
60
+ post_install_message:
132
61
  rdoc_options: []
133
62
  require_paths:
134
63
  - lib
@@ -136,37 +65,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
136
65
  requirements:
137
66
  - - ">="
138
67
  - !ruby/object:Gem::Version
139
- version: '2.1'
68
+ version: '2.6'
140
69
  required_rubygems_version: !ruby/object:Gem::Requirement
141
70
  requirements:
142
71
  - - ">="
143
72
  - !ruby/object:Gem::Version
144
73
  version: '0'
145
74
  requirements: []
146
- rubyforge_project:
147
- rubygems_version: 2.7.3
148
- signing_key:
75
+ rubygems_version: 3.4.21
76
+ signing_key:
149
77
  specification_version: 4
150
78
  summary: Pure Ruby DNS library.
151
- test_files:
152
- - spec/fixtures/resolv.conf
153
- - spec/spec_helper.rb
154
- - spec/unit/resolver/dns_timeout_spec.rb
155
- - spec/unit/resolver/tcp_timeout_spec.rb
156
- - spec/unit/resolver/udp_timeout_spec.rb
157
- - test/test_helper.rb
158
- - test/unit/header_test.rb
159
- - test/unit/names_test.rb
160
- - test/unit/packet_test.rb
161
- - test/unit/question_test.rb
162
- - test/unit/resolver_test.rb
163
- - test/unit/rr/a_test.rb
164
- - test/unit/rr/aaaa_test.rb
165
- - test/unit/rr/classes_test.rb
166
- - test/unit/rr/cname_test.rb
167
- - test/unit/rr/hinfo_test.rb
168
- - test/unit/rr/mr_test.rb
169
- - test/unit/rr/mx_test.rb
170
- - test/unit/rr/ns_test.rb
171
- - test/unit/rr/types_test.rb
172
- - test/unit/rr_test.rb
79
+ test_files: []
data/.gitignore DELETED
@@ -1,8 +0,0 @@
1
- # Bundler
2
- .bundle
3
- pkg/*
4
- Gemfile.lock
5
-
6
- # YARD
7
- .yardoc
8
- yardoc/
data/.rubocop.yml DELETED
@@ -1,3 +0,0 @@
1
- inherit_from:
2
- - .rubocop_defaults.yml
3
- - .rubocop_todo.yml