svcb_rr_patch 0.0.2 → 0.0.3
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/README.md +19 -5
- data/lib/svcb_rr_patch/https.rb +1 -1
- data/lib/svcb_rr_patch/svc_params/ech/echconfig_contents.rb +4 -9
- data/lib/svcb_rr_patch/svcb.rb +1 -1
- data/lib/svcb_rr_patch/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 503344cf96161251cbd1d4757b83f88c801cc2dd759a65c565d6ced4ee5c7821
|
4
|
+
data.tar.gz: a7c0ed560ab69ce745d24488c0a9d9cf05cafb022daa4bda9ac02e0aa3f9bc23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65d4ae23c0a139f3572330d4b7965209c25c1842fd0af6ea9fd404748359ab3f24f632ca873e63469728bf7d3c6ade8b21dbf57a2c3387fdb69ef85157d73965
|
7
|
+
data.tar.gz: 127393d4ceb5f7afc7e1ec48baefb850c6cad8eca6c26f7baef1818ba1dcfdb01c8dd6fdc7f23f3aefb7ca1aa5edfb3b7ae5b2d11674785051d8c189dc4b611f
|
data/README.md
CHANGED
@@ -8,16 +8,16 @@
|
|
8
8
|
|
9
9
|
- https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-06
|
10
10
|
|
11
|
-
`svcb_rr_patch` supports "ech" SvcParamKey that ECHConfig.version is
|
11
|
+
`svcb_rr_patch` supports "ech" SvcParamKey that ECHConfig.version is `0xfe0d`.
|
12
12
|
|
13
|
-
- https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-
|
13
|
+
- https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-13#section-4
|
14
14
|
|
15
15
|
|
16
16
|
## Installation
|
17
17
|
|
18
18
|
he gem is available at [rubygems.org](https://rubygems.org/gems/svcb_rr_patch). You can install it the following.
|
19
19
|
|
20
|
-
```
|
20
|
+
```sh-session
|
21
21
|
$ gem install svcb_rr_patch
|
22
22
|
```
|
23
23
|
|
@@ -26,7 +26,7 @@ $ gem install svcb_rr_patch
|
|
26
26
|
|
27
27
|
You can resolve HTTPS resources.
|
28
28
|
|
29
|
-
```
|
29
|
+
```sh-session
|
30
30
|
$ irb
|
31
31
|
irb(main):001:0> require 'svcb_rr_patch'
|
32
32
|
=> true
|
@@ -34,7 +34,21 @@ irb(main):002:1* Resolv::DNS.new.getresources(
|
|
34
34
|
irb(main):003:1* "blog.cloudflare.com",
|
35
35
|
irb(main):004:1* Resolv::DNS::Resource::IN::HTTPS
|
36
36
|
irb(main):005:0> )
|
37
|
-
=>
|
37
|
+
=>
|
38
|
+
[#<Resolv::DNS::Resource::IN::HTTPS:0x0000000000000001
|
39
|
+
@svc_params=
|
40
|
+
{"alpn"=>
|
41
|
+
#<SvcbRrPatch::SvcParams::Alpn:0x0000000000000002
|
42
|
+
@protocols=["h3", "h3-29", "h3-28", "h3-27", "h2"]>,
|
43
|
+
"ipv4hint"=>
|
44
|
+
#<SvcbRrPatch::SvcParams::Ipv4hint:0x0000000000000003
|
45
|
+
@addresses=[#<Resolv::IPv4 104.18.26.46>, #<Resolv::IPv4 104.18.27.46>]>,
|
46
|
+
"ipv6hint"=>
|
47
|
+
#<SvcbRrPatch::SvcParams::Ipv6hint:0x0000000000000004
|
48
|
+
@addresses=[#<Resolv::IPv6 2606:4700::6812:1a2e>, #<Resolv::IPv6 2606:4700::6812:1b2e>]>},
|
49
|
+
@svc_priority=1,
|
50
|
+
@target_name="",
|
51
|
+
@ttl=300>]
|
38
52
|
```
|
39
53
|
|
40
54
|
|
data/lib/svcb_rr_patch/https.rb
CHANGED
@@ -9,7 +9,7 @@ class Resolv::DNS::Resource::IN::HTTPS < Resolv::DNS::Resource::IN::SVCB
|
|
9
9
|
ClassHash[[TypeValue, ClassValue]] = self
|
10
10
|
|
11
11
|
def initialize(svc_priority, target_name, svc_params)
|
12
|
-
# https://
|
12
|
+
# https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-06
|
13
13
|
super(svc_priority, target_name, svc_params)
|
14
14
|
end
|
15
15
|
|
@@ -30,24 +30,20 @@ class SvcbRrPatch::SvcParams::Ech::ECHConfigContents
|
|
30
30
|
# @return [String]
|
31
31
|
def encode
|
32
32
|
@key_config.encode \
|
33
|
-
+ [@maximum_name_length].pack('
|
34
|
-
+ @public_name.then { |s| [s.length].pack('
|
33
|
+
+ [@maximum_name_length].pack('C') \
|
34
|
+
+ @public_name.then { |s| [s.length].pack('C') + s } \
|
35
35
|
+ @extensions.map(&:encode).join.then { |s| [s.length].pack('n') + s }
|
36
36
|
end
|
37
37
|
|
38
38
|
# :nodoc
|
39
39
|
# rubocop:disable Metrics/AbcSize
|
40
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
41
40
|
def self.decode(octet)
|
42
41
|
key_config, octet = HpkeKeyConfig.decode(octet)
|
43
42
|
raise ::Resolv::DNS::DecodeError if octet.length < 2
|
44
43
|
|
45
|
-
maximum_name_length = octet.slice(0,
|
44
|
+
maximum_name_length = octet.slice(0, 1).unpack1('C')
|
45
|
+
pn_len = octet.slice(1, 1).unpack1('C')
|
46
46
|
i = 2
|
47
|
-
raise ::Resolv::DNS::DecodeError if i + 2 > octet.length
|
48
|
-
|
49
|
-
pn_len = octet.slice(i, 2).unpack1('n')
|
50
|
-
i += 2
|
51
47
|
raise ::Resolv::DNS::DecodeError if i + pn_len > octet.length
|
52
48
|
|
53
49
|
public_name = octet.slice(i, pn_len)
|
@@ -70,5 +66,4 @@ class SvcbRrPatch::SvcParams::Ech::ECHConfigContents
|
|
70
66
|
)
|
71
67
|
end
|
72
68
|
# rubocop:enable Metrics/AbcSize
|
73
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
74
69
|
end
|
data/lib/svcb_rr_patch/svcb.rb
CHANGED
@@ -12,7 +12,7 @@ class Resolv::DNS::Resource::IN::SVCB < Resolv::DNS::Resource
|
|
12
12
|
# @param target_name [String]
|
13
13
|
# @param svc_params [Map]
|
14
14
|
def initialize(svc_priority, target_name, svc_params)
|
15
|
-
# https://
|
15
|
+
# https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-06
|
16
16
|
@svc_priority = svc_priority
|
17
17
|
@target_name = target_name
|
18
18
|
@svc_params = svc_params
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: svcb_rr_patch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thekuwayama
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
86
86
|
- !ruby/object:Gem::Version
|
87
87
|
version: '0'
|
88
88
|
requirements: []
|
89
|
-
rubygems_version: 3.2.
|
89
|
+
rubygems_version: 3.2.22
|
90
90
|
signing_key:
|
91
91
|
specification_version: 4
|
92
92
|
summary: the patch that adds SVCB Resource Record and HTTPS Resource Record
|