dnsruby 1.61.5 → 1.61.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd2234e013517b2d62083f327de9a28e3d8f5f7c49e5204301f576d01e681809
4
- data.tar.gz: 5695978850e06ebf1579fc80a7b10aba8e4296dfd210a548fb066cf9762e266d
3
+ metadata.gz: d267eba6aca51b53799b98294feea8a6394293e86d27b0054daf81f5da532f8e
4
+ data.tar.gz: 5ed7a4a3c9c91407c79e7a2470546430ab13df880a22a8ed0d002d4bafb3cc3b
5
5
  SHA512:
6
- metadata.gz: b2575fc3c3d7677fecfcb0479d5d5e77fc941ac57b7b171287ae552ef62d8b5ecb050b42774f996754d2a6a7b1b71b83021d0702446cca8856907120851c4665
7
- data.tar.gz: ddaaf6bbb40bf8ce10f8180be766b4a7218b952673fec5cccc3726bf4bd01aceb01f03c5bdb4b1b86df6c30d14016eaff38e7cea69e979ad25d7bdfa1398a5af
6
+ metadata.gz: 910c119b759313510f8fb2397ce48b9ac652a6d9c9e176d5eae93148a77664d7fe4b0b40a1c1c447beefcfe652807f6b1a7493314dd8dd71032e7ec2a56e7e99
7
+ data.tar.gz: 539eec74d5805ac121cb9b23d881ddb4bc98c755f90d88b07eedf864fef376ccceca076bf0d3c3bb8bdc858ff629133862253bad48a00ca205c6ad819b8cc97f
@@ -0,0 +1,23 @@
1
+ name: CI
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+ strategy:
9
+ matrix:
10
+ ruby: [ '2.5', '2.6', '2.7', '3.0' ]
11
+ name: Ruby ${{ matrix.ruby }} tests
12
+ steps:
13
+ - uses: actions/checkout@v2
14
+ - name: Setup Ruby
15
+ uses: ruby/setup-ruby@v1
16
+ with:
17
+ ruby-version: ${{ matrix.ruby }}
18
+ - name: Bundle install
19
+ run: |
20
+ gem install bundler
21
+ bundle install --jobs 4 --retry 3
22
+ - name: Run tests
23
+ run: bundle exec rake test
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Build Status](https://travis-ci.org/alexdalitz/dnsruby.svg?branch=master)](https://travis-ci.org/alexdalitz/dnsruby)
1
+ [![Build Status](https://github.com/alexdalitz/dnsruby/actions/workflows/ci.yml/badge.svg)]
2
2
  [![Coverage Status](https://img.shields.io/coveralls/alexdalitz/dnsruby.svg)](https://coveralls.io/r/alexdalitz/dnsruby?branch=master)
3
3
 
4
4
  <img src="http://caerkettontech.com/dnsruby/DNSRuby-colour-mid.png" width="200" height="200" />
data/RELEASE_NOTES.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Release Notes
2
2
 
3
+ ## v1.61.7
4
+
5
+ * Fix namespace issue from v1.61.6
6
+
7
+ ## v1.61.6
8
+
9
+ * RD bit not set on Recursor queries (thanks Sean Dilda!)
10
+ * Handle quoted strings followed by unquoted strings in TXT records
11
+ * do not worry about rogue repeated Ids - just log an error and get on with life
12
+ * Clear Ruby warnings
13
+ * Use GitHub Actions rather than Travis
14
+
3
15
  ## v1.61.5
4
16
 
5
17
  * CAA record fixes - add contactphone and contactemail
data/Rakefile CHANGED
@@ -33,3 +33,4 @@ create_task(:soak, 'test/tc_soak.rb')
33
33
  create_task(:message, 'test/tc_message.rb')
34
34
  create_task(:cache, 'test/tc_cache.rb')
35
35
  create_task(:pipe, 'test/tc_tcp_pipelining.rb')
36
+ create_task(:resolv, 'test/tc_resolv.rb')
data/demo/rubydig.rb CHANGED
@@ -50,7 +50,6 @@ require 'dnsruby'
50
50
 
51
51
 
52
52
  resolver = Dnsruby::Resolver.new
53
- Dnsruby::TheLog.level = Logger::DEBUG
54
53
  zone_transfer = Dnsruby::ZoneTransfer.new
55
54
 
56
55
 
data/lib/dnsruby.rb CHANGED
@@ -25,10 +25,6 @@ require 'dnsruby/DNS'
25
25
  require 'dnsruby/hosts'
26
26
  require 'dnsruby/update'
27
27
  require 'dnsruby/zone_transfer'
28
- require 'dnsruby/dnssec'
29
- require 'dnsruby/zone_reader'
30
- require 'dnsruby/resolv'
31
-
32
28
 
33
29
  # = Dnsruby library
34
30
  # Dnsruby is a thread-aware DNS stub resolver library written in Ruby.
@@ -239,3 +235,7 @@ module Dnsruby
239
235
  class ZoneSerialError < ResolvError
240
236
  end
241
237
  end
238
+
239
+ require 'dnsruby/dnssec'
240
+ require 'dnsruby/zone_reader'
241
+ require 'dnsruby/resolv'
data/lib/dnsruby/DNS.rb CHANGED
@@ -290,7 +290,7 @@ module Dnsruby
290
290
  msg.do_caching = do_caching
291
291
  @resolver.do_validation = false
292
292
  @resolver.send_async(msg, q)
293
- id, ret, exception = q.pop
293
+ _id, ret, exception = q.pop
294
294
  if (exception == nil && ret && ret.rcode == RCode.NOERROR)
295
295
  return ret, ret.question[0].qname
296
296
  end
@@ -85,13 +85,10 @@ module Dnsruby
85
85
  def initialize()
86
86
  @mutex = Mutex.new
87
87
  @configured = false
88
- # parse_config
89
88
  end
90
89
  # Reset the config to default values
91
90
  def Config.reset
92
- c = Config.new
93
91
  @configured = false
94
- # c.parse_config
95
92
  end
96
93
 
97
94
  def parse_config(config_info=nil) #:nodoc: all
@@ -207,13 +204,13 @@ module Dnsruby
207
204
  if (String ===n)
208
205
  # Make sure we can make a Name or an address from it
209
206
  begin
210
- a = IPv4.create(n)
207
+ IPv4.create(n)
211
208
  rescue ArgumentError
212
209
  begin
213
- a = IPv6.create(n)
210
+ IPv6.create(n)
214
211
  rescue ArgumentError
215
212
  begin
216
- a = Name.create(n)
213
+ Name.create(n)
217
214
  rescue ArgumentError
218
215
  raise ArgumentError.new("Can't interpret #{n} as IPv4, IPv6 or Name")
219
216
  end
@@ -17,7 +17,7 @@ class MessageEncoder #:nodoc: all
17
17
  def put_pack(template, *d)
18
18
  begin
19
19
  @data << d.pack(template)
20
- rescue Encoding::CompatibilityError => e
20
+ rescue Encoding::CompatibilityError
21
21
  raise Dnsruby::EncodeError.new("IDN support currently requires punycode string")
22
22
  end
23
23
  end
@@ -35,7 +35,7 @@ class MessageEncoder #:nodoc: all
35
35
  begin
36
36
  self.put_pack("C", d.length)
37
37
  @data << d
38
- rescue Encoding::CompatibilityError => e
38
+ rescue Encoding::CompatibilityError
39
39
  raise Dnsruby::EncodeError.new("IDN support currently requires punycode string")
40
40
  end
41
41
  end
@@ -31,9 +31,6 @@ class Header
31
31
  # and is allowed to set the bit by policy.)
32
32
  attr_accessor :ad
33
33
 
34
- # The query response flag
35
- attr_accessor :qr
36
-
37
34
  # Recursion available flag
38
35
  attr_accessor :ra
39
36
 
data/lib/dnsruby/name.rb CHANGED
@@ -259,7 +259,7 @@ module Dnsruby
259
259
  # in: dName a string with a domain name in presentation format (1035
260
260
  # sect 5.1)
261
261
  # out: an array of labels in wire format.
262
- def self.name2encodedlabels (dName) #:nodoc: all
262
+ def self.name2encodedlabels(dName) #:nodoc: all
263
263
  # Check for "\" in the name : If there, then decode properly - otherwise, cheat and split on "."
264
264
  if (dName.index("\\"))
265
265
  names=[]
@@ -204,26 +204,22 @@ module Dnsruby
204
204
  @tcp_pipelining_max_queries = :infinite
205
205
  @use_counts = {}
206
206
 
207
- if (arg==nil)
208
- # Get default config
209
- config = Config.new
210
- # @server = config.nameserver[0]
211
- elsif (arg.kind_of? String)
212
- @server=arg
213
- elsif (arg.kind_of? Name)
214
- @server=arg
215
- elsif (arg.kind_of? Hash)
207
+ if arg.nil?
208
+ elsif arg.kind_of? String
209
+ @server = arg
210
+ elsif arg.kind_of? Name
211
+ @server = arg
212
+ elsif arg.kind_of? Hash
216
213
  arg.keys.each do |attr|
217
214
  begin
218
- if (((attr.to_s == "src_address")||(attr.to_s == "src_address6")) &&
219
- ((arg[attr] == nil) || (arg[attr] == "")))
215
+ if ((attr.to_s == "src_address" || attr.to_s == "src_address6") &&
216
+ (arg[attr] == nil || arg[attr] == ""))
220
217
  else
221
- send(attr.to_s+"=", arg[attr])
218
+ send(attr.to_s + "=", arg[attr])
222
219
  end
223
220
  rescue Exception => e
224
221
  Dnsruby.log.error { "PacketSender : Argument #{attr}, #{arg[attr]} not valid : #{e}\n" }
225
222
  end
226
- # end
227
223
  end
228
224
  end
229
225
  # Check server is IP
@@ -235,12 +231,12 @@ module Dnsruby
235
231
 
236
232
  def check_ipv6
237
233
  begin
238
- i = IPv4.create(@server)
234
+ IPv4.create(@server)
239
235
  # @src_address = '0.0.0.0'
240
236
  @ipv6=false
241
237
  rescue Exception
242
238
  begin
243
- i = IPv6.create(@server)
239
+ IPv6.create(@server)
244
240
  # @src_address6 = '::'
245
241
  @ipv6=true
246
242
  rescue Exception
@@ -227,7 +227,7 @@ module Dnsruby
227
227
  # Nice idea.
228
228
 
229
229
  # if (!@@hints || @@hints.length == 0)
230
- resolver.recurse=(1)
230
+ resolver.recurse = true
231
231
  packet=resolver.query_no_validation_or_recursion(".", "NS", "IN")
232
232
  hints = Hash.new
233
233
  if (packet)
@@ -264,7 +264,7 @@ module Dnsruby
264
264
  }
265
265
  }
266
266
  (hints.length * 2).times {
267
- id, result, error = q.pop
267
+ _id, result, _error = q.pop
268
268
  if (result)
269
269
  result.answer.each {|rr|
270
270
  TheLog.debug(";; NS address: " + rr.inspect+"\n")
@@ -303,7 +303,7 @@ module Dnsruby
303
303
  end
304
304
 
305
305
  # Disable recursion flag.
306
- resolver.recurse=(0)
306
+ resolver.recurse = false
307
307
  # end
308
308
 
309
309
  # return $self->nameservers( map { @{ $_ } } values %{ $self->{'hints'} } );
@@ -406,7 +406,7 @@ module Dnsruby
406
406
  @@mutex.synchronize {
407
407
  self.hints=(Hash.new) unless @@hints
408
408
  }
409
- @resolver.recurse=(0)
409
+ @resolver.recurse = false
410
410
  # Make sure the authority cache is clean.
411
411
  # It is only used to store A and AAAA records of
412
412
  # the suposedly authoritative name servers.
@@ -622,6 +622,7 @@ module Dnsruby
622
622
  end
623
623
  resolver = Resolver.new({:nameserver=>nameservers})
624
624
  resolver.dnssec = @dnssec
625
+ resolver.recurse = false
625
626
  servers = []
626
627
  resolver.single_resolvers.each {|s|
627
628
  servers.push(s.server)
@@ -638,7 +639,7 @@ module Dnsruby
638
639
  packet = resolver.send_message(query)
639
640
  # @TODO@ Now prune unrelated RRSets (RFC 5452 section 6)
640
641
  prune_rrsets_to_rfc5452(packet, known_zone)
641
- rescue ResolvTimeout, IOError => e
642
+ rescue ResolvTimeout, IOError
642
643
  # TheLog.debug(";; nameserver #{levelns.to_s} didn't respond")
643
644
  # next
644
645
  TheLog.debug("No response!")
@@ -128,7 +128,9 @@ module Dnsruby
128
128
  # The current Config
129
129
  attr_reader :config
130
130
 
131
- # Does this Resolver cache answers, and attempt to retrieve answer from the cache?
131
+ # Defines whether we will cache responses, or pass every request to the
132
+ # upstream resolver. This is only really useful when querying authoritative
133
+ # servers (as the upstream recursive resolver is likely to cache)
132
134
  attr_reader :do_caching
133
135
 
134
136
  # The array of SingleResolvers used for sending query messages
@@ -171,11 +173,6 @@ module Dnsruby
171
173
  # requirements.
172
174
  attr_accessor :do_validation
173
175
 
174
- # Defines whether we will cache responses, or pass every request to the
175
- # upstream resolver. This is only really useful when querying authoritative
176
- # servers (as the upstream recursive resolver is likely to cache)
177
- attr_accessor :do_caching
178
-
179
176
  # --
180
177
  # @TODO@ add load_balance? i.e. Target nameservers in a random, rather than pre-determined, order?
181
178
  # This is best done when configuring the Resolver, as it will re-order servers based on their response times.
@@ -568,7 +565,7 @@ module Dnsruby
568
565
  def add_server(server)# :nodoc:
569
566
  @configured = true
570
567
  res = PacketSender.new(server)
571
- log_and_raise("Can't create server #{server}", ArgumentError) unless res
568
+ Dnsruby.log_and_raise("Can't create server #{server}", ArgumentError) unless res
572
569
  update_internal_res(res)
573
570
  @single_res_mutex.synchronize { @single_resolvers.push(res) }
574
571
  end
@@ -644,7 +641,7 @@ module Dnsruby
644
641
  a = Resolver.get_ports_from(p)
645
642
  a.each do |x|
646
643
  if (@src_port.length > 0) && (x == 0)
647
- log_and_raise("src_port of 0 only allowed as only src_port value (currently #{@src_port.length} values",
644
+ Dnsruby.log_and_raise("src_port of 0 only allowed as only src_port value (currently #{@src_port.length} values",
648
645
  ArgumentError)
649
646
  end
650
647
  @src_port.push(x)
@@ -668,7 +665,7 @@ module Dnsruby
668
665
  return ! ((p == 0) && (src_port.length > 0))
669
666
  else
670
667
  Dnsruby.log.error("Illegal port (#{p})")
671
- log_and_raise("Illegal port #{p}", ArgumentError)
668
+ Dnsruby.log_and_raise("Illegal port #{p}", ArgumentError)
672
669
  end
673
670
  end
674
671
 
@@ -837,7 +834,7 @@ module Dnsruby
837
834
  timeouts[base + offset]=[res, retry_count]
838
835
  else
839
836
  if timeouts.has_key?(base + retry_delay + offset)
840
- log_and_raise('Duplicate timeout key!')
837
+ Dnsruby.log_and_raise('Duplicate timeout key!')
841
838
  end
842
839
  timeouts[base + retry_delay + offset]=[res, retry_count]
843
840
  end
@@ -878,7 +875,7 @@ module Dnsruby
878
875
  end
879
876
 
880
877
  unless client_queue.kind_of?(Queue)
881
- log_and_raise('Wrong type for client_queue in Resolver# send_async')
878
+ Dnsruby.log_and_raise('Wrong type for client_queue in Resolver# send_async')
882
879
  # @TODO@ Handle different queue tuples - push this to generic send_error method
883
880
  client_queue.push([client_query_id, ArgumentError.new('Wrong type of client_queue passed to Dnsruby::Resolver# send_async - should have been Queue, was #{client_queue.class}')])
884
881
  return
@@ -1059,13 +1056,13 @@ module Dnsruby
1059
1056
  # @TODO@ Also, should have option to speak only to configured resolvers (not follow authoritative chain)
1060
1057
  #
1061
1058
  if queue.empty?
1062
- log_and_raise('Severe internal error - Queue empty in handle_queue_event')
1059
+ Dnsruby.log_and_raise('Severe internal error - Queue empty in handle_queue_event')
1063
1060
  end
1064
1061
  event_id, event_type, response, error = queue.pop
1065
1062
  # We should remove this packet from the list of outstanding packets for this query
1066
1063
  _resolver, _msg, client_query_id, _retry_count = id
1067
1064
  if id != event_id
1068
- log_and_raise("Serious internal error!! #{id} expected, #{event_id} received")
1065
+ Dnsruby.log_and_raise("Serious internal error!! #{id} expected, #{event_id} received")
1069
1066
  end
1070
1067
  # @mutex.synchronize{
1071
1068
  @parent.single_res_mutex.synchronize {
@@ -1078,7 +1075,7 @@ module Dnsruby
1078
1075
  if event_type == Resolver::EventType::RECEIVED ||
1079
1076
  event_type == Resolver::EventType::ERROR
1080
1077
  unless outstanding.include?(id)
1081
- log_and_raise("Query id not on outstanding list! #{outstanding.length} items. #{id} not on #{outstanding}")
1078
+ Dnsruby.log.error("Query id not on outstanding list! #{outstanding.length} items. #{id} not on #{outstanding}")
1082
1079
  end
1083
1080
  outstanding.delete(id)
1084
1081
  end
@@ -1208,7 +1205,7 @@ module Dnsruby
1208
1205
  # @mutex.synchronize{
1209
1206
  _query, _client_queue, s_queue, _outstanding = @query_list[client_query_id]
1210
1207
  if s_queue != select_queue
1211
- log_and_raise("Serious internal error : expected select queue #{s_queue}, got #{select_queue}")
1208
+ Dnsruby.log_and_raise("Serious internal error : expected select queue #{s_queue}, got #{select_queue}")
1212
1209
  end
1213
1210
  stop_querying(client_query_id)
1214
1211
  # @TODO@ Does the client want notified at this point?
@@ -1221,7 +1218,7 @@ module Dnsruby
1221
1218
  # @mutex.synchronize {
1222
1219
  _query, client_queue, s_queue, _outstanding = @query_list[client_query_id]
1223
1220
  if s_queue != select_queue
1224
- log_and_raise("Serious internal error : expected select queue #{s_queue}, got #{select_queue}")
1221
+ Dnsruby.log_and_raise("Serious internal error : expected select queue #{s_queue}, got #{select_queue}")
1225
1222
  end
1226
1223
  if response.rcode == RCode.NXDOMAIN
1227
1224
  send_result(client_queue, client_query_id, select_queue, response, NXDomain.new)
@@ -1237,7 +1234,7 @@ module Dnsruby
1237
1234
  _resolver, _msg, client_query_id, _retry_count = query_id
1238
1235
  _query, client_queue, s_queue, _outstanding = @query_list[client_query_id]
1239
1236
  if s_queue != select_queue
1240
- log_and_raise("Serious internal error : expected select queue #{s_queue}, got #{select_queue}")
1237
+ Dnsruby.log_and_raise("Serious internal error : expected select queue #{s_queue}, got #{select_queue}")
1241
1238
  end
1242
1239
  # For some errors, we immediately send result. For others, should we retry?
1243
1240
  # Either :
@@ -26,7 +26,7 @@ module Dnsruby
26
26
  # The value for the property_tag
27
27
  attr_accessor :property_value
28
28
  # The value for the flag
29
- attr_accessor :flag
29
+ attr_writer :flag
30
30
 
31
31
  def from_hash(hash) #:nodoc: all
32
32
  @property_tag = hash[:property_tag]
@@ -85,7 +85,7 @@ module Dnsruby
85
85
  # end
86
86
  #
87
87
  def from_data(data) #:nodoc: all
88
- hash_alg, flags, iterations, salt_length, salt = data
88
+ hash_alg, flags, iterations, _salt_length, salt = data
89
89
  self.hash_alg=(hash_alg)
90
90
  self.flags=(flags)
91
91
  self.iterations=(iterations)
@@ -33,8 +33,8 @@ module Dnsruby
33
33
  # 255 Private use
34
34
  attr_accessor :matching_type
35
35
  # sec 2.1.4
36
- attr_accessor :data
37
- attr_accessor :databin
36
+ attr_reader :data
37
+ attr_reader :databin
38
38
 
39
39
  def verify
40
40
  raise ArgumentError, "usage with invalid value: #{@usage}" if @usage < 0 || @usage > 255
@@ -71,7 +71,7 @@ module Dnsruby
71
71
  if @matching_type == 0 && @selector == 0 && @databin
72
72
  begin
73
73
  cert = OpenSSL::X509::Certificate.new(@databin)
74
- rescue => e
74
+ rescue
75
75
  raise ArgumentError, 'data is invalid cert '
76
76
  end
77
77
  end
@@ -82,7 +82,17 @@ module Dnsruby
82
82
  end
83
83
  else
84
84
  if (seen_strings && !in_string)
85
- next
85
+ if (c == ";")
86
+ # Comment in zone file!
87
+ return strings
88
+ end
89
+ if (c != " " && c != "\t")
90
+ in_string = true
91
+ count+=1
92
+ strings[count] = ""
93
+ else
94
+ next
95
+ end
86
96
  end
87
97
  if (pos == 0)
88
98
  unquoted = true
@@ -140,7 +140,7 @@ module Dnsruby
140
140
  }
141
141
  begin
142
142
  @@wakeup_sockets[0].send("wakeup!", 0)
143
- rescue Exception => e
143
+ rescue Exception
144
144
  # do nothing
145
145
  end
146
146
  end
@@ -190,12 +190,11 @@ module Dnsruby
190
190
  end
191
191
  # next if (timeout < 0)
192
192
  begin
193
- ready, write, errors = IO.select(sockets, nil, nil, timeout)
193
+ ready, _write, _errors = IO.select(sockets, nil, nil, timeout)
194
194
  rescue SelectWakeup
195
195
  # If SelectWakeup, then just restart this loop - the select call will be made with the new data
196
196
  next
197
- rescue IOError, EncodeError => e
198
- # print "IO Error =: #{e}\n"
197
+ rescue IOError, EncodeError
199
198
  exceptions = clean_up_closed_sockets
200
199
  exceptions.each { |exception| send_exception_to_client(*exception) }
201
200
 
@@ -248,7 +247,7 @@ module Dnsruby
248
247
  # Removes closed sockets from @@sockets, and returns an array containing 1
249
248
  # exception for each closed socket contained in @@socket_hash.
250
249
  def clean_up_closed_sockets
251
- exceptions = @@mutex.synchronize do
250
+ @@mutex.synchronize do
252
251
  closed_sockets_in_hash = @@sockets.select(&:closed?).select { |s| @@socket_hash[s] }
253
252
  @@sockets.delete_if { | socket | socket.closed? }
254
253
  closed_sockets_in_hash.each_with_object([]) do |socket, exceptions|
@@ -257,6 +256,7 @@ module Dnsruby
257
256
  end
258
257
  end
259
258
  end
259
+ exceptions
260
260
  end
261
261
 
262
262
  def process_error(errors)
@@ -295,7 +295,6 @@ module Dnsruby
295
295
  @@mutex.synchronize do
296
296
  ids = get_active_ids(@@query_hash, msg.header.id)
297
297
  return if ids.empty? # should be only one
298
- query_settings = @@query_hash[ids[0]].clone
299
298
  end
300
299
 
301
300
  answerip = msg.answerip.downcase
@@ -732,7 +731,7 @@ module Dnsruby
732
731
  }
733
732
 
734
733
  responses.each do |item|
735
- client_id, client_queue, msg, err, query, res = item
734
+ client_id, client_queue, msg, err, _query, _res = item
736
735
  # push_to_client(client_id, client_queue, msg, err)
737
736
  client_queue.push([client_id, Resolver::EventType::VALIDATED, msg, err])
738
737
  notify_queue_observers(client_queue, client_id)
@@ -462,7 +462,6 @@ module Dnsruby
462
462
  def check_no_wildcard_expansion(msg) # :nodoc:
463
463
  # @TODO@ Do this for NSEC3 records!!!
464
464
  proven_no_wildcards = false
465
- name = msg.question()[0].qname
466
465
  [msg.authority.rrsets('NSEC'), msg.authority.rrsets('NSEC3')].each {|nsec_rrsets|
467
466
  nsec_rrsets.each {|nsecs|
468
467
  nsecs.rrs.each {|nsec|
@@ -1329,8 +1328,7 @@ module Dnsruby
1329
1328
  msg.security_level = Message::SecurityLevel.SECURE
1330
1329
  return true
1331
1330
  end
1332
- rescue VerifyError => e
1333
- # print "Verify failed : #{e}\n"
1331
+ rescue VerifyError
1334
1332
  end
1335
1333
  end
1336
1334
  if (error)
@@ -1,3 +1,3 @@
1
1
  module Dnsruby
2
- VERSION = '1.61.5'
2
+ VERSION = '1.61.7'
3
3
  end
@@ -68,7 +68,7 @@ module Dnsruby
68
68
  end
69
69
  zone.push(rr)
70
70
  end
71
- rescue Exception => e
71
+ rescue Exception
72
72
  raise ParseException.new("Error reading line #{io.lineno} of #{io.inspect} : [#{line}]")
73
73
  end
74
74
  end
@@ -303,7 +303,7 @@ module Dnsruby
303
303
  (split.length - 2).times {|i| line += "#{split[i+2]} "}
304
304
  line += "\n"
305
305
  split = line.split
306
- rescue Error => e
306
+ rescue Error
307
307
  end
308
308
 
309
309
  # Add the type so we can load the zone one RRSet at a time.
@@ -244,7 +244,6 @@ module Dnsruby
244
244
  end
245
245
 
246
246
  def parseRR(rec) #:nodoc: all
247
- name = rec.name
248
247
  type = rec.type
249
248
  delta = Delta.new
250
249
 
data/test/spec_helper.rb CHANGED
@@ -1,3 +1,9 @@
1
+ $VERBOSE = true
2
+
3
+ if Warning.respond_to?(:[]=)
4
+ Warning[:deprecated] = true
5
+ end
6
+
1
7
  if ENV['RUN_EXTRA_TASK'] == 'TRUE'
2
8
  require 'coveralls'
3
9
  Coveralls.wear!
data/test/tc_resolv.rb CHANGED
@@ -20,7 +20,7 @@ require_relative '../lib/dnsruby/resolv'
20
20
  class TestResolv < Minitest::Test
21
21
 
22
22
  RELATIVE_NAME = 'google-public-dns-a.google.com'
23
- SHORT_RELATIVE_NAME = 'dns.google'
23
+ SHORT_ABSOLUTE_NAME = 'dns.google.'
24
24
  ABSOLUTE_NAME = RELATIVE_NAME + '.'
25
25
  IPV4_ADDR = '8.8.8.8'
26
26
  IPV6_ADDR = '2001:4860:4860::8888'
@@ -54,16 +54,16 @@ class TestResolv < Minitest::Test
54
54
 
55
55
  def test_resolv_address_to_name
56
56
 
57
- assert_equal(SHORT_RELATIVE_NAME, Dnsruby::Resolv.getname(IPV4_ADDR).to_s)
57
+ assert_equal(SHORT_ABSOLUTE_NAME, Dnsruby::Resolv.getname(IPV4_ADDR).to_s(true))
58
58
 
59
59
  assert_raises(Dnsruby::ResolvError) do
60
- Dnsruby::Resolv.getname(SHORT_RELATIVE_NAME)
60
+ Dnsruby::Resolv.getname(SHORT_ABSOLUTE_NAME)
61
61
  end
62
62
 
63
63
  names = Dnsruby::Resolv.getnames(IPV4_ADDR)
64
64
  assert_equal(1, names.size)
65
- assert_equal(SHORT_RELATIVE_NAME, names.first.to_s)
66
- Dnsruby::Resolv.each_name(IPV4_ADDR) { |name| assert_equal(SHORT_RELATIVE_NAME, name.to_s)}
65
+ assert_equal(SHORT_ABSOLUTE_NAME, names.first.to_s(true))
66
+ Dnsruby::Resolv.each_name(IPV4_ADDR) { |name| assert_equal(SHORT_ABSOLUTE_NAME, name.to_s(true))}
67
67
  end
68
68
 
69
69
  def test_resolv_address_to_address
data/test/tc_resolver.rb CHANGED
@@ -73,8 +73,8 @@ class TestResolver < Minitest::Test
73
73
  end
74
74
 
75
75
  def test_send_plain_message
76
- resolver = Resolver.new
77
- response, error = resolver.send_plain_message(Message.new("cnn.com"))
76
+ resolver = Resolver.new('1.1.1.1')
77
+ response, error = resolver.send_plain_message(Message.new("example.com", Types.A))
78
78
  assert_nil_error(error)
79
79
  assert_valid_response(response)
80
80
 
@@ -132,7 +132,7 @@ class TestResolver < Minitest::Test
132
132
  r = Resolver.new
133
133
  q=Queue.new
134
134
  r.send_async(m,q,q)
135
- id,ret, error=q.pop
135
+ _id, ret, _error=q.pop
136
136
  assert(ret.kind_of?(Message))
137
137
  no_pointer=true
138
138
  ret.each_answer do |answer|
@@ -185,14 +185,14 @@ class TestResolver < Minitest::Test
185
185
  res.retry_times=retry_times
186
186
  res.retry_delay=retry_delay
187
187
  start=Time.now
188
- m = res.send_message(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A))
188
+ res.send_message(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A))
189
189
  fail
190
190
  rescue ResolvTimeout
191
191
  stop=Time.now
192
192
  time = stop-start
193
193
  assert(time <= expected * 1.3 && time >= expected * 0.9, "Wrong time take, expected #{expected}, took #{time}")
194
194
  end
195
- end
195
+ end
196
196
  end
197
197
 
198
198
  def test_packet_timeout
@@ -209,7 +209,7 @@ class TestResolver < Minitest::Test
209
209
  # Work out what time should be, then time it to check
210
210
  expected = query_timeout
211
211
  start=Time.now
212
- m = res.send_message(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A))
212
+ res.send_message(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A))
213
213
  fail
214
214
  rescue Dnsruby::ResolvTimeout
215
215
  stop=Time.now
@@ -227,7 +227,7 @@ class TestResolver < Minitest::Test
227
227
  res.query_timeout=expected
228
228
  q = Queue.new
229
229
  start = Time.now
230
- m = res.send_async(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A), q, q)
230
+ res.send_async(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A), q, q)
231
231
  id,ret,err = q.pop
232
232
  stop = Time.now
233
233
  assert(id=q)
@@ -382,19 +382,19 @@ class TestRawQuery < Minitest::Test
382
382
  resolver.query("google.com", "MX")
383
383
  begin
384
384
  resolver.query("googlöe.com", "MX")
385
- rescue Dnsruby::ResolvError => e
385
+ rescue Dnsruby::ResolvError
386
386
  # fine
387
387
  end
388
388
  resolver.query("google.com", "MX")
389
389
  resolver.query("google.com", "MX")
390
390
  begin
391
391
  resolver.query("googlöe.com", "MX")
392
- rescue Dnsruby::ResolvError => e
392
+ rescue Dnsruby::ResolvError
393
393
  # fine
394
394
  end
395
395
  begin
396
396
  resolver.query("googlöe.com", "MX")
397
- rescue Dnsruby::ResolvError => e
397
+ rescue Dnsruby::ResolvError
398
398
  # fine
399
399
  end
400
400
  # Dnsruby::Cache.delete("googlöe.com", "MX")
data/test/tc_rr-opt.rb CHANGED
@@ -28,15 +28,14 @@ class TestRrOpt < Minitest::Test
28
28
  # This works only with send_plain_message, not send_message, query, etc.
29
29
  def test_plain_respects_bufsize
30
30
 
31
-
32
- resolver = Resolver.new(['a.gtld-servers.net', 'b.gtld-servers.net', 'c.gtld-servers.net'])
31
+ resolver = Resolver.new('a.gtld-servers.net')
33
32
  resolver.query_timeout=20
34
33
 
35
34
  run_test = ->(bufsize) do
36
35
 
37
36
 
38
37
  create_test_query = ->(bufsize) do
39
- message = Message.new('com', Types.ANY, Classes.IN)
38
+ message = Message.new('com', Types.RRSIG, Classes.IN)
40
39
  message.add_additional(RR::OPT.new(bufsize))
41
40
  message
42
41
  end
@@ -46,14 +45,12 @@ class TestRrOpt < Minitest::Test
46
45
  if (_error != nil) then
47
46
  print "Error at #{bufsize} : #{_error}"
48
47
  end
49
- # puts "\nBufsize is #{bufsize}, binary message size is #{response.encode.size}"
48
+ # puts "\nBufsize is #{bufsize}, binary message size is #{response.encode.size}"
50
49
  assert_equal(true, response.header.tc)
51
50
  assert(response.encode.size <= bufsize)
52
51
  end
53
52
 
54
- #run_test.(512)
55
- #run_test.(612)
56
- run_test.(4096)
53
+ run_test.(612)
57
54
  end
58
55
 
59
56
 
data/test/tc_rr-txt.rb CHANGED
@@ -143,7 +143,13 @@ class TestRrTest < Minitest::Test
143
143
 
144
144
  r1 = RR.create("auto._domainkey.cacert.org. 43200 IN TXT \"v=DKIM1\;g=*\;k=rsa\;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDNFxiNr+NHJwih3OPhGr4iwLE+BBDu72YrMSzUnU1FF50CW7iOtuhg796UZ6xrZ5VuhAix6YmmzcvF2UxYzoD/XpfZ4MzBu0ND4/nkt9/YOTyIBzwQqn9uMNve0Y76Zsel89dIJtOI+y+lfnFExV0jKwe53gzmxMVpMSSCcZPGwIDAQAB\" ; ----- DKIM auto for cacert.org")
145
145
  r2 = RR.create("auto._domainkey.cacert.org. 43200 IN TXT \"v=DKIM1;g=*;k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDNFxiNr+NHJwih3OPhGr4iwLE+BBDu72YrMSzUnU1FF50CW7iOtuhg796UZ6xrZ5VuhAix6YmmzcvF2UxYzoD/XpfZ4MzBu0ND4/nkt9/YOTyIBzwQqn9uMNve0Y76Zsel89dIJtOI+y+lfnFExV0jKwe53gzmxMVpMSSCcZPGwIDAQAB\"")
146
- assert(r1.to_s == r2.to_s)
146
+ assert_equal(r1.to_s, r2.to_s)
147
+ end
148
+
149
+ def test_quote_and_unquoted
150
+ t = Dnsruby::RR::TXT.parse '"a" b'
151
+ assert_equal("a", t[0])
152
+ assert_equal("b", t[1])
147
153
  end
148
154
 
149
155
  end
data/test/tc_tcp.rb CHANGED
@@ -142,14 +142,14 @@ class TestTcp < Minitest::Test
142
142
  ans = HackMessage.decode(received_query)
143
143
  ans.wipe_additional
144
144
  100.times {|i|
145
- ans.add_additional(Dnsruby::RR.create("example.com 3600 IN A 1.2.3.#{i}"))
145
+ ans.add_additional(Dnsruby::RR.create("example.com 3600 IN A 1.2.3.#{i}"))
146
146
  }
147
147
  ans.header.arcount = 110
148
148
  ans.header.tc = true
149
149
  socket.send(ans.encode,0)
150
150
  }
151
151
 
152
- server_thread = Thread.new {
152
+ _server_thread = Thread.new {
153
153
  ts = TCPServer.new(port)
154
154
  t = ts.accept
155
155
  packet = t.recvfrom(2)[0]
data/test/test_utils.rb CHANGED
@@ -1,5 +1,3 @@
1
- require_relative 'spec_helper'
2
-
3
1
  # Use this in tests in the tests directory with:
4
2
  # require_relative 'test_utils'
5
3
  # include TestUtils
data/test/ts_offline.rb CHANGED
@@ -62,14 +62,14 @@ TESTS.each { |test| require_relative "tc_#{test}.rb" }
62
62
 
63
63
  def have_open_ssl?
64
64
  have_open_ssl = true
65
- begin
66
- require "openssl"
67
- OpenSSL::HMAC.digest(OpenSSL::Digest::MD5.new, "key", "data")
68
- key = OpenSSL::PKey::RSA.new
69
- key.e = 111
70
- rescue
71
- have_open_ssl = false
72
- end
65
+ # begin
66
+ # require "openssl"
67
+ # OpenSSL::HMAC.digest(OpenSSL::Digest::MD5.new, "key", "data")
68
+ # key = OpenSSL::PKey::RSA.new
69
+ # key.e = 111
70
+ # rescue
71
+ # have_open_ssl = false
72
+ # end
73
73
  have_open_ssl
74
74
  end
75
75
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dnsruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.61.5
4
+ version: 1.61.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Dalitz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-29 00:00:00.000000000 Z
11
+ date: 2021-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -136,8 +136,8 @@ extra_rdoc_files:
136
136
  - EVENTMACHINE
137
137
  files:
138
138
  - ".coveralls.yml"
139
+ - ".github/workflows/ci.yml"
139
140
  - ".gitignore"
140
- - ".travis.yml"
141
141
  - ".yardopts"
142
142
  - DNSSEC
143
143
  - EVENTMACHINE
@@ -335,7 +335,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
335
335
  - !ruby/object:Gem::Version
336
336
  version: '0'
337
337
  requirements: []
338
- rubygems_version: 3.1.2
338
+ rubygems_version: 3.2.3
339
339
  signing_key:
340
340
  specification_version: 4
341
341
  summary: Ruby DNS(SEC) implementation
data/.travis.yml DELETED
@@ -1,17 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
- sudo: false
4
-
5
- before_install: gem install bundler
6
-
7
- script: "bundle exec rake test"
8
-
9
- rvm:
10
- - 2.6.6
11
- - 2.5.8
12
- - 2.7.1
13
- - ruby-head
14
-
15
- matrix:
16
- allow_failures:
17
- - rvm: ruby-head