dnsruby 1.70.0 → 1.74.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.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +3 -0
- data/.github/dependabot.yml +11 -0
- data/.github/workflows/ci.yml +10 -7
- data/RELEASE_NOTES.md +50 -0
- data/cache_delay.rb +20 -0
- data/demo/rubydig.rb +2 -0
- data/dnsruby.gemspec +10 -8
- data/fd.ruby +33 -0
- data/lib/dnsruby/bit_mapping.rb +2 -2
- data/lib/dnsruby/cache.rb +0 -2
- data/lib/dnsruby/code_mappers.rb +3 -2
- data/lib/dnsruby/config.rb +2 -5
- data/lib/dnsruby/hosts.rb +0 -7
- data/lib/dnsruby/ipv6.rb +5 -5
- data/lib/dnsruby/message/encoder.rb +1 -1
- data/lib/dnsruby/message/message.rb +2 -2
- data/lib/dnsruby/packet_sender.rb +19 -4
- data/lib/dnsruby/recursor.rb +7 -6
- data/lib/dnsruby/resolver.rb +40 -17
- data/lib/dnsruby/resource/CAA.rb +5 -2
- data/lib/dnsruby/resource/DNSKEY.rb +15 -8
- data/lib/dnsruby/resource/GPOS.rb +1 -1
- data/lib/dnsruby/resource/IN.rb +2 -2
- data/lib/dnsruby/resource/NSEC.rb +2 -2
- data/lib/dnsruby/resource/NXT.rb +1 -1
- data/lib/dnsruby/resource/OPT.rb +2 -3
- data/lib/dnsruby/resource/TXT.rb +1 -1
- data/lib/dnsruby/select_thread.rb +43 -27
- data/lib/dnsruby/single_verifier.rb +1 -1
- data/lib/dnsruby/version.rb +1 -1
- data/test/spec_helper.rb +22 -3
- data/test/tc_caa.rb +13 -0
- data/test/tc_dns.rb +13 -13
- data/test/tc_ecdsa.rb +27 -0
- data/test/tc_escapedchars.rb +8 -9
- data/test/tc_gpos.rb +1 -1
- data/test/tc_hs.rb +0 -5
- data/test/tc_message.rb +2 -2
- data/test/tc_name.rb +2 -2
- data/test/tc_nxt.rb +0 -1
- data/test/tc_recur.rb +4 -7
- data/test/tc_res_config.rb +29 -0
- data/test/tc_resolv.rb +11 -4
- data/test/tc_resolver.rb +93 -3
- data/test/tc_rr-unknown.rb +1 -1
- data/test/tc_rr.rb +4 -4
- data/test/tc_single_resolver.rb +9 -17
- data/test/tc_tcp_pipelining.rb +3 -3
- data/test/tc_tkey.rb +1 -7
- data/test/tc_update.rb +0 -1
- metadata +60 -9
data/test/tc_resolver.rb
CHANGED
|
@@ -74,13 +74,25 @@ class TestResolver < Minitest::Test
|
|
|
74
74
|
|
|
75
75
|
def test_send_plain_message
|
|
76
76
|
resolver = Resolver.new('1.1.1.1')
|
|
77
|
-
|
|
77
|
+
|
|
78
|
+
response, error = with_retries(success_check: ->((res, err)) { err.nil? || ! [Dnsruby::ServFail, Dnsruby::ResolvTimeout].include?(err.class) }) do
|
|
79
|
+
res, err = resolver.send_plain_message(Message.new("example.com", Types.A))
|
|
80
|
+
raise err if [Dnsruby::ServFail, Dnsruby::ResolvTimeout].include?(err.class)
|
|
81
|
+
[res, err]
|
|
82
|
+
end
|
|
83
|
+
|
|
78
84
|
assert_nil_error(error)
|
|
79
85
|
assert_valid_response(response)
|
|
80
86
|
|
|
81
87
|
m = Message.new(BAD_DOMAIN_NAME)
|
|
82
88
|
m.header.rd = true
|
|
83
|
-
|
|
89
|
+
|
|
90
|
+
response, error = with_retries(success_check: ->((res, err)) { err.class == Dnsruby::NXDomain || ! [Dnsruby::ServFail, Dnsruby::ResolvTimeout].include?(err.class) }) do
|
|
91
|
+
res, err = resolver.send_plain_message(m)
|
|
92
|
+
raise err if [Dnsruby::ServFail, Dnsruby::ResolvTimeout].include?(err.class)
|
|
93
|
+
[res, err]
|
|
94
|
+
end
|
|
95
|
+
|
|
84
96
|
assert_valid_response(response)
|
|
85
97
|
assert_error_is_exception(error, NXDomain)
|
|
86
98
|
end
|
|
@@ -284,8 +296,73 @@ class TestResolver < Minitest::Test
|
|
|
284
296
|
def test_eventtype_api
|
|
285
297
|
# @TODO@ TEST THE Resolver::EventType interface!
|
|
286
298
|
end
|
|
287
|
-
end
|
|
288
299
|
|
|
300
|
+
def capture_sent_message(res, domain, pre_opt=nil)
|
|
301
|
+
q = Queue.new
|
|
302
|
+
res.send_async(Dnsruby::Message.new("test.invalid"), q)
|
|
303
|
+
q.pop
|
|
304
|
+
resolver_ruby = res.instance_variable_get("@resolver_ruby")
|
|
305
|
+
class << resolver_ruby
|
|
306
|
+
attr_accessor :message
|
|
307
|
+
alias_method :original_send_async, :send_async
|
|
308
|
+
def send_async(msg, client_queue, client_query_id=nil)
|
|
309
|
+
@message = msg
|
|
310
|
+
original_send_async(msg, client_queue, client_query_id)
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
msg = Dnsruby::Message.new(domain)
|
|
314
|
+
msg.add_additional(pre_opt) if pre_opt
|
|
315
|
+
res.send_async(msg, q)
|
|
316
|
+
_id, _response, _error = q.pop
|
|
317
|
+
resolver_ruby.message
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
def test_custom_udp_size
|
|
321
|
+
[false, true].each do |dnssec_setting|
|
|
322
|
+
[512, 513].each do |udp_size_setting|
|
|
323
|
+
res = Dnsruby::Resolver.new(:udp_size => udp_size_setting, :dnssec => dnssec_setting)
|
|
324
|
+
sent_msg = capture_sent_message(res, "example.com")
|
|
325
|
+
|
|
326
|
+
# The OPT RR is only present if the udp_size is > 512
|
|
327
|
+
opt = sent_msg.get_opt
|
|
328
|
+
if dnssec_setting
|
|
329
|
+
# DNSSEC overrides udp_size to 4096
|
|
330
|
+
assert(opt)
|
|
331
|
+
assert_equal(4096, opt.klass.code)
|
|
332
|
+
else
|
|
333
|
+
if udp_size_setting <= 512
|
|
334
|
+
assert_nil(opt)
|
|
335
|
+
else
|
|
336
|
+
assert(opt)
|
|
337
|
+
assert_equal(udp_size_setting, opt.klass.code)
|
|
338
|
+
end
|
|
339
|
+
end
|
|
340
|
+
if opt
|
|
341
|
+
assert_equal(0, opt.version)
|
|
342
|
+
assert_equal(0, opt.flags)
|
|
343
|
+
end
|
|
344
|
+
end
|
|
345
|
+
end
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
def test_no_duplicate_opt_when_pre_existing
|
|
349
|
+
[false, true].each do |dnssec_setting|
|
|
350
|
+
[512, 513].each do |udp_size_setting|
|
|
351
|
+
res = Dnsruby::Resolver.new(:udp_size => udp_size_setting, :dnssec => dnssec_setting)
|
|
352
|
+
pre_size = dnssec_setting ? 4096 : 1024
|
|
353
|
+
pre_opt = Dnsruby::RR::OPT.new(pre_size)
|
|
354
|
+
sent_msg = capture_sent_message(res, "example.com", pre_opt)
|
|
355
|
+
|
|
356
|
+
opt = sent_msg.get_opt
|
|
357
|
+
assert(opt)
|
|
358
|
+
assert_equal(1, sent_msg.additional.length) # No duplicate added
|
|
359
|
+
assert_equal(pre_size, opt.klass.code) # Original payload size unchanged
|
|
360
|
+
assert_equal(0, opt.version)
|
|
361
|
+
assert_equal(0, opt.flags) # Flags unchanged (code doesn't modify existing OPT)
|
|
362
|
+
end
|
|
363
|
+
end
|
|
364
|
+
end
|
|
365
|
+
end
|
|
289
366
|
|
|
290
367
|
# Tests to see that query_raw handles send_plain_message's return values correctly.
|
|
291
368
|
class TestRawQuery < Minitest::Test
|
|
@@ -400,5 +477,18 @@ class TestRawQuery < Minitest::Test
|
|
|
400
477
|
# Dnsruby::Cache.delete("googlöe.com", "MX")
|
|
401
478
|
|
|
402
479
|
end
|
|
480
|
+
|
|
481
|
+
def test_config_info
|
|
482
|
+
res = Dnsruby::Resolver.new(
|
|
483
|
+
config_info: {
|
|
484
|
+
# contents here doesn't matter; even setting to {} is enough to cause ResolvTimeout
|
|
485
|
+
apply_domain: false,
|
|
486
|
+
apply_search_list: false,
|
|
487
|
+
},
|
|
488
|
+
query_timeout: 3, # make the timeout faster
|
|
489
|
+
)
|
|
490
|
+
res.do_caching = false
|
|
491
|
+
res.query("a.root-servers.net.", "A")
|
|
492
|
+
end
|
|
403
493
|
end
|
|
404
494
|
|
data/test/tc_rr-unknown.rb
CHANGED
|
@@ -58,7 +58,7 @@ class TestRrUnknown < Minitest::Test
|
|
|
58
58
|
assert_equal('10.0.0.1', rr.address.to_s,'Unknown RR representation for A parsed OK')
|
|
59
59
|
|
|
60
60
|
begin
|
|
61
|
-
|
|
61
|
+
RR.new_from_string('e.example IN A \# 4 0A0000 01 11 ')
|
|
62
62
|
flunk "Should fail on inconsistent length and hex presentation"
|
|
63
63
|
rescue Exception
|
|
64
64
|
# like($@, '/\\\# 4 0A0000 01 11 assert_equal inconsistent\ length does not match content/', 'Fails on inconsassert_equaltent length and hex presentation')
|
data/test/tc_rr.rb
CHANGED
|
@@ -319,10 +319,10 @@ class TestRR < Minitest::Test
|
|
|
319
319
|
end
|
|
320
320
|
|
|
321
321
|
def test_cert
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
#
|
|
325
|
-
|
|
322
|
+
RR.create("test.kht.se. 60 IN CERT PGP 0 0 mQGiBDnY2vERBAD3cOxqoAYHYzS+xttvuyN9wZS8CrgwLIlT8Ewo/CCFI11PEO+gJyNPvWPRQsyt1SE60reaIsie2bQTg3DYIg0PmH+ZOlNkpKesPULzdlw4Rx3dD/M3Lkrm977h4Y70ZKC+tbvoYKCCOIkUVevny1PVZ+mB94rb0mMgawSTrct03QCg/w6aHNJFQV7O9ZQ1Fir85M3RS8cEAOo4/1ASVudz3qKZQEhU2Z9O2ydXqpEanHfGirjWYi5RelVsQ9IfBSPFaPAWzQ24nvQ18NU7TgdDQhP4meZXiVXcLBR5Mee2kByf2KAnBUF9aah5s8wZbSrC6u8xEZLuiauvWmCUIWe0Ylc1/L37XeDjrBI2pT+k183X119d6Fr1BACGfZVGsot5rxBUEFPPSrBqYXG/0hRYv9Eq8a4rJAHK2IUWYfivZgL4DtrJnHlha+H5EPQVYkIAN3nGjXoHmosY+J3Sk+GyR+dCBHEwCkoHMKph3igczCEfxAWgqKeYd5mf+QQq2JKrkn2jceiIO7s3CrepeEFAjDSGuxhZjPJVm7QoRGFuaWVsIFAuIE1haG9uZXkgPGRhbm1AcHJpbWUuZ3VzaGkub3JnPohOBBARAgAOBQI52NrxBAsDAQICGQEACgkQ+75aMGJLskn6LgCbBXUD7UmGla5e1zyhuY667hP3F+UAoJIeDZJyRFkQAmb+u8KekRyLD1MLtDJEYW5pZWwgTWFob25leSAoU2Vjb25kYXJ5IEVtYWlsKSA8Z3VzaGlAZ3VzaGkub3JnPohgBBMRAgAgBQJF1J/XAhsjBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ+75aMGJLskkVhACggsivQ9qLhfdA1rGm6f8LRJBSC4wAoI930h+/hshClj6AkNwGRtHdf5XJuQINBDnY2vQQCAD2Qle3CH8IF3KiutapQvMF6PlTETlPtvFuuUs4INoBp1ajFOmPQFXz0AfGy0OplK33TGSGSfgMg71l6RfUodNQ+PVZX9x2Uk89PY3bzpnhV5JZzf24rnRPxfx2vIPFRzBhznzJZv8V+bv9kV7HAarTW56NoKVyOtQa8L9GAFgr5fSI/VhOSdvNILSd5JEHNmszbDgNRR0PfIizHHxbLY7288kjwEPwpVsYjY67VYy4XTjTNP18F1dDox0YbN4zISy1Kv884bEpQBgRjXyEpwpy1obEAxnIByl6ypUM2Zafq9AKUJsCRtMIPWakXUGfnHy9iUsiGSa6q6Jew1XpMgs7AAICB/9eGjzF2gDh6U7I72x/6bSdlExx2LvIF92OZKc0S55IOS4Lgzs7Hbfm1aOL4oJt7wBg94xkF4cerxz7y8R9J+k3GNl14KOjbYaMAh1rdxdAzikYMH1p1hS78GMtwxky6jE5en87BGGMmnbC84JlxwN+MD7diu8D0Gkgjj/pxOp32D5jEe02wBPVjFTpFLJjpFniLUY6AohRDEdSuZwWPuoKVWhpeWkasNn5qgwGyDREbXpyPsU02BkwE4JiGs+JMMdOn9KMh5dxiuwsMM9gHiQZS3mSNBBKPWI5ZXsdStVFvapjf2FUFDXLUbTROPv1Xhqf0u7YYORFnWeVtvzKIxVaiEYEGBECAAYFAjnY2vQACgkQ+75aMGJLsklBWgCeN7z9xk52y/aoaCuF6hYb0d+3k98AoMRxvHuXI1Nc2FXY/x65PwHiUbaY")
|
|
323
|
+
RR.create("all.rr.org. IN CERT 6 0 0 FFsAyW1dVK7hIGuvhN56r26UwJx/")
|
|
324
|
+
# RR.create("all.rr.org. IN WKS 128.32.0.10 UDP who route timed domain")
|
|
325
|
+
RR.create('selector._domainkey.all.rr.org. IN TXT "v=DKIM1; n=Use=20DKIM; p=AwEAAZfbYw8SffZwsbrCLbC+JLErREIF6Yfe9aqsa1Pz6tpGWiLxm9rSL6/YoBvNP3UWX91YDF0JMo6lhu3UIZjITvIwDhx+RJYko9vLzaaJKXGf3ygy6z+deWoZJAV1lTY0Ltx9genboe88CSCHw9aSLkh0obN9Ck8R6zAMYR19ciM/; t=s"')
|
|
326
326
|
end
|
|
327
327
|
|
|
328
328
|
def test_dhcid
|
data/test/tc_single_resolver.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# --
|
|
2
2
|
# Copyright 2007 Nominet UK
|
|
3
|
-
#
|
|
3
|
+
#
|
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
# you may not use this file except in compliance with the License.
|
|
6
6
|
# You may obtain a copy of the License at
|
|
7
|
-
#
|
|
7
|
+
#
|
|
8
8
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
#
|
|
9
|
+
#
|
|
10
10
|
# Unless required by applicable law or agreed to in writing, software
|
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
12
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
@@ -53,7 +53,7 @@ class TestSingleResolver < Minitest::Test
|
|
|
53
53
|
|
|
54
54
|
def test_simple
|
|
55
55
|
res = SingleResolver.new()
|
|
56
|
-
|
|
56
|
+
res.query("ns1.google.com.")
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
def test_timeout
|
|
@@ -71,7 +71,7 @@ class TestSingleResolver < Minitest::Test
|
|
|
71
71
|
res.port = port
|
|
72
72
|
res.packet_timeout=1
|
|
73
73
|
start_time = Time.now.to_i
|
|
74
|
-
|
|
74
|
+
res.query("a.t.net-dns.org")
|
|
75
75
|
fail "Got response when should have got none"
|
|
76
76
|
rescue ResolvTimeout
|
|
77
77
|
stop_time = Time.now.to_i
|
|
@@ -87,7 +87,7 @@ class TestSingleResolver < Minitest::Test
|
|
|
87
87
|
res.packet_timeout=1
|
|
88
88
|
start_time = Time.now.to_i
|
|
89
89
|
# TheLog.level = Logger::DEBUG
|
|
90
|
-
|
|
90
|
+
res.query("a.t.net-dns.org")
|
|
91
91
|
fail "TCP timeouts"
|
|
92
92
|
rescue ResolvTimeout
|
|
93
93
|
# print "Got Timeout for TCP\n"
|
|
@@ -131,15 +131,7 @@ class TestSingleResolver < Minitest::Test
|
|
|
131
131
|
res = SingleResolver.new
|
|
132
132
|
|
|
133
133
|
Rrs.each do |data|
|
|
134
|
-
packet=
|
|
135
|
-
2.times do
|
|
136
|
-
begin
|
|
137
|
-
packet = res.query(data[:name], data[:type])
|
|
138
|
-
rescue ResolvTimeout
|
|
139
|
-
end
|
|
140
|
-
break if packet
|
|
141
|
-
end
|
|
142
|
-
assert(packet)
|
|
134
|
+
packet = with_retries { res.query(data[:name], data[:type]) }
|
|
143
135
|
assert_equal(packet.question[0].qclass, 'IN', 'Class correct')
|
|
144
136
|
|
|
145
137
|
assert(packet, "Got an answer for #{data[:name]} IN #{data[:type]}")
|
|
@@ -189,11 +181,11 @@ class TestSingleResolver < Minitest::Test
|
|
|
189
181
|
def test_res_config
|
|
190
182
|
res = Dnsruby::SingleResolver.new
|
|
191
183
|
|
|
192
|
-
res.server=('a.t.net-dns.org')
|
|
184
|
+
with_retries(exceptions: [ArgumentError], success_check: ->(_) { true }) { res.server=('a.t.net-dns.org') }
|
|
193
185
|
ip = res.server
|
|
194
186
|
assert_equal('10.0.1.128', ip.to_s, 'nameserver() looks up IP.')
|
|
195
187
|
|
|
196
|
-
res.server=('cname.t.net-dns.org')
|
|
188
|
+
with_retries(exceptions: [ArgumentError], success_check: ->(_) { true }) { res.server=('cname.t.net-dns.org') }
|
|
197
189
|
ip = res.server
|
|
198
190
|
assert_equal('10.0.1.128', ip.to_s, 'nameserver() looks up cname.')
|
|
199
191
|
end
|
data/test/tc_tcp_pipelining.rb
CHANGED
|
@@ -67,9 +67,9 @@ class TestTCPPipelining < Minitest::Test
|
|
|
67
67
|
|
|
68
68
|
# Instantiate a new server that uses our tcp pipelining handler
|
|
69
69
|
# For each query the server sends the query upstream (193.0.14.129)
|
|
70
|
-
options = {
|
|
71
|
-
|
|
72
|
-
}
|
|
70
|
+
# options = {
|
|
71
|
+
# server_class: TCPPipeliningServer,
|
|
72
|
+
# }
|
|
73
73
|
|
|
74
74
|
#RubyDNS::run_server(options) || true
|
|
75
75
|
if !@@server
|
data/test/tc_tkey.rb
CHANGED
|
@@ -29,12 +29,7 @@ class TestTKey < Minitest::Test
|
|
|
29
29
|
# Canned data.
|
|
30
30
|
# ------------------------------------------------------------------------------
|
|
31
31
|
|
|
32
|
-
zone = "example.com"
|
|
33
|
-
name = "123456789-test"
|
|
34
|
-
klass = "IN"
|
|
35
|
-
type = Dnsruby::Types.TKEY
|
|
36
32
|
algorithm = "fake.algorithm.example.com"
|
|
37
|
-
key = "fake key"
|
|
38
33
|
inception = 100000 # use a strange fixed inception time to give a fixed
|
|
39
34
|
# checksum
|
|
40
35
|
expiration = inception + 24*60*60
|
|
@@ -72,5 +67,4 @@ class TestTKey < Minitest::Test
|
|
|
72
67
|
# @TODO@ Test TKEY against server!
|
|
73
68
|
|
|
74
69
|
end
|
|
75
|
-
|
|
76
|
-
end
|
|
70
|
+
end
|
data/test/tc_update.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dnsruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.74.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alex Dalitz
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: rake
|
|
@@ -30,14 +29,14 @@ dependencies:
|
|
|
30
29
|
requirements:
|
|
31
30
|
- - "~>"
|
|
32
31
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 5.
|
|
32
|
+
version: '5.25'
|
|
34
33
|
type: :development
|
|
35
34
|
prerelease: false
|
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
36
|
requirements:
|
|
38
37
|
- - "~>"
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 5.
|
|
39
|
+
version: '5.25'
|
|
41
40
|
- !ruby/object:Gem::Dependency
|
|
42
41
|
name: rubydns
|
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -80,6 +79,26 @@ dependencies:
|
|
|
80
79
|
- - ">="
|
|
81
80
|
- !ruby/object:Gem::Version
|
|
82
81
|
version: 0.3.1
|
|
82
|
+
- !ruby/object:Gem::Dependency
|
|
83
|
+
name: rdoc
|
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '6.5'
|
|
89
|
+
- - "<"
|
|
90
|
+
- !ruby/object:Gem::Version
|
|
91
|
+
version: '8.0'
|
|
92
|
+
type: :development
|
|
93
|
+
prerelease: false
|
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
95
|
+
requirements:
|
|
96
|
+
- - ">="
|
|
97
|
+
- !ruby/object:Gem::Version
|
|
98
|
+
version: '6.5'
|
|
99
|
+
- - "<"
|
|
100
|
+
- !ruby/object:Gem::Version
|
|
101
|
+
version: '8.0'
|
|
83
102
|
- !ruby/object:Gem::Dependency
|
|
84
103
|
name: yard
|
|
85
104
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -108,6 +127,34 @@ dependencies:
|
|
|
108
127
|
- - "~>"
|
|
109
128
|
- !ruby/object:Gem::Version
|
|
110
129
|
version: 0.8.23
|
|
130
|
+
- !ruby/object:Gem::Dependency
|
|
131
|
+
name: base64
|
|
132
|
+
requirement: !ruby/object:Gem::Requirement
|
|
133
|
+
requirements:
|
|
134
|
+
- - ">="
|
|
135
|
+
- !ruby/object:Gem::Version
|
|
136
|
+
version: '0.2'
|
|
137
|
+
type: :runtime
|
|
138
|
+
prerelease: false
|
|
139
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
140
|
+
requirements:
|
|
141
|
+
- - ">="
|
|
142
|
+
- !ruby/object:Gem::Version
|
|
143
|
+
version: '0.2'
|
|
144
|
+
- !ruby/object:Gem::Dependency
|
|
145
|
+
name: logger
|
|
146
|
+
requirement: !ruby/object:Gem::Requirement
|
|
147
|
+
requirements:
|
|
148
|
+
- - "~>"
|
|
149
|
+
- !ruby/object:Gem::Version
|
|
150
|
+
version: '1.6'
|
|
151
|
+
type: :runtime
|
|
152
|
+
prerelease: false
|
|
153
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
154
|
+
requirements:
|
|
155
|
+
- - "~>"
|
|
156
|
+
- !ruby/object:Gem::Version
|
|
157
|
+
version: '1.6'
|
|
111
158
|
- !ruby/object:Gem::Dependency
|
|
112
159
|
name: simpleidn
|
|
113
160
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -131,11 +178,13 @@ executables: []
|
|
|
131
178
|
extensions: []
|
|
132
179
|
extra_rdoc_files:
|
|
133
180
|
- DNSSEC
|
|
181
|
+
- EVENTMACHINE
|
|
134
182
|
- EXAMPLES
|
|
135
183
|
- README.md
|
|
136
|
-
- EVENTMACHINE
|
|
137
184
|
files:
|
|
138
185
|
- ".coveralls.yml"
|
|
186
|
+
- ".github/FUNDING.yml"
|
|
187
|
+
- ".github/dependabot.yml"
|
|
139
188
|
- ".github/workflows/ci.yml"
|
|
140
189
|
- ".gitignore"
|
|
141
190
|
- ".yardopts"
|
|
@@ -148,6 +197,7 @@ files:
|
|
|
148
197
|
- RELEASE_NOTES.md
|
|
149
198
|
- Rakefile
|
|
150
199
|
- SIGNED_UPDATES
|
|
200
|
+
- cache_delay.rb
|
|
151
201
|
- demo/axfr.rb
|
|
152
202
|
- demo/check_soa.rb
|
|
153
203
|
- demo/check_zone.rb
|
|
@@ -160,6 +210,7 @@ files:
|
|
|
160
210
|
- demo/to_resolve.txt
|
|
161
211
|
- demo/trace_dns.rb
|
|
162
212
|
- dnsruby.gemspec
|
|
213
|
+
- fd.ruby
|
|
163
214
|
- lib/dnsruby.rb
|
|
164
215
|
- lib/dnsruby/DNS.rb
|
|
165
216
|
- lib/dnsruby/bit_mapping.rb
|
|
@@ -254,6 +305,7 @@ files:
|
|
|
254
305
|
- test/tc_dns.rb
|
|
255
306
|
- test/tc_dnskey.rb
|
|
256
307
|
- test/tc_ds.rb
|
|
308
|
+
- test/tc_ecdsa.rb
|
|
257
309
|
- test/tc_encoding.rb
|
|
258
310
|
- test/tc_escapedchars.rb
|
|
259
311
|
- test/tc_gpos.rb
|
|
@@ -328,15 +380,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
328
380
|
requirements:
|
|
329
381
|
- - ">="
|
|
330
382
|
- !ruby/object:Gem::Version
|
|
331
|
-
version:
|
|
383
|
+
version: 2.8.0
|
|
332
384
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
333
385
|
requirements:
|
|
334
386
|
- - ">="
|
|
335
387
|
- !ruby/object:Gem::Version
|
|
336
388
|
version: '0'
|
|
337
389
|
requirements: []
|
|
338
|
-
rubygems_version: 3.
|
|
339
|
-
signing_key:
|
|
390
|
+
rubygems_version: 3.7.2
|
|
340
391
|
specification_version: 4
|
|
341
392
|
summary: Ruby DNS(SEC) implementation
|
|
342
393
|
test_files:
|