gitlab-net-dns 0.10.0 → 0.12.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 04ce28e53e3b0986fb5a2dcde807ac07bc15ceb3bdd127abe31d125e4ae9e054
4
- data.tar.gz: 119fcc2767ae448912fbadb013a82fdeff83fd68c06937fafdefecabbfea0d58
3
+ metadata.gz: 626fddeccebd199f0753f59a1f0da00bf17c923ab59863f6dcf4f1712e565aa9
4
+ data.tar.gz: 266c1c5e8b273c3b09305cca8a96127b4d46bfe9396ceb103ef3278edef54101
5
5
  SHA512:
6
- metadata.gz: 0546f72172a83589a710a70cb8ff1e3caabab249cbd49a1ecf8751a802433d6ef6ff9b1667843772598248e7c0b155fd7836cf2aa1131da1be7fa1541bcf0a91
7
- data.tar.gz: 469360aa30e2681543719347ce2a1dd488615df7f22eb7a6482bf2c58ce3e4b9d54fceab14de3de9b0a88e7394a3b2f76320877742c533f6a10e62a9fbb0660a
6
+ metadata.gz: f17432960ab586b0e2d74dc9d3d8cdad69a477c050f20139038155825b4dcd116d41fa8b423203310fd88cd8510f49086db89d2fee372219eb72fe5d39a56cf1
7
+ data.tar.gz: b357ac43e0927bccd981530f026f4af77f3a1da4d2263966621a9744a62781bf44f7438f383b404d3194f5a9f1f0f16ea490ac8116ad1299683aa5a408405af9
data/.gitlab-ci.yml CHANGED
@@ -20,4 +20,4 @@ rspec:
20
20
  - bundle exec rake
21
21
  parallel:
22
22
  matrix:
23
- - RUBY_VERSION: [ "2.7", "3.0", "3.1", "3.2" ]
23
+ - RUBY_VERSION: [ "3.0", "3.1", "3.2", "3.3", "3.4" ]
data/Gemfile CHANGED
@@ -2,6 +2,7 @@ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
+ gem "base64"
5
6
  gem "minitest"
6
7
  gem "minitest-reporters"
7
8
  gem "rspec"
@@ -11,12 +11,13 @@ Gem::Specification.new do |s|
11
11
  s.description = "Net::DNS is a pure Ruby DNS library, with a clean OO interface and an extensible API."
12
12
  s.licenses = ["Ruby"]
13
13
 
14
- s.required_ruby_version = ">= 2.1"
14
+ s.required_ruby_version = ">= 3.0"
15
15
 
16
16
  s.require_paths = ["lib"]
17
17
  s.files = `git ls-files`.split("\n")
18
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
19
  s.extra_rdoc_files = %w[LICENSE.txt]
20
+ s.add_dependency "logger"
20
21
 
21
22
  s.add_development_dependency "mocha"
22
23
  s.add_development_dependency "rake"
@@ -84,6 +84,9 @@ module Net # :nodoc:
84
84
  'CAA' => 257, # RFC 6844
85
85
  }.freeze
86
86
 
87
+ # Pre-initialize the inverted hash to avoid runtime inversion
88
+ TYPES_BY_NUMBER = TYPES.invert.freeze
89
+
87
90
  # The default value when type is nil in Resource Records
88
91
  @@default = TYPES["A"]
89
92
 
@@ -107,7 +110,7 @@ module Net # :nodoc:
107
110
  when String
108
111
  TYPES.key?(type)
109
112
  when Integer
110
- TYPES.invert.key?(type)
113
+ TYPES_BY_NUMBER.key?(type)
111
114
  else
112
115
  raise ArgumentError, "Wrong type class: #{type.class}"
113
116
  end
@@ -118,8 +121,8 @@ module Net # :nodoc:
118
121
  def self.to_str(type)
119
122
  case type
120
123
  when Integer
121
- if TYPES.invert.key? type
122
- TYPES.invert[type]
124
+ if TYPES_BY_NUMBER.key? type
125
+ TYPES_BY_NUMBER[type]
123
126
  else
124
127
  raise ArgumentError, "Unknown type number #{type}"
125
128
  end
@@ -148,7 +151,7 @@ module Net # :nodoc:
148
151
  new_from_num(type)
149
152
  when nil
150
153
  # default type, control with Types.default=
151
- @str = TYPES.invert[@@default]
154
+ @str = TYPES_BY_NUMBER[@@default]
152
155
  @num = @@default
153
156
  else
154
157
  raise ArgumentError, "Wrong type class: #{type.class}"
@@ -197,11 +200,11 @@ module Net # :nodoc:
197
200
 
198
201
  # Contructor for numeric data type.
199
202
  def new_from_num(type)
200
- if TYPES.invert.key? type
203
+ if TYPES_BY_NUMBER.key? type
201
204
  @num = type
202
- @str = TYPES.invert[type]
205
+ @str = TYPES_BY_NUMBER[type]
203
206
  else
204
- raise ArgumentError, "Unkown type number #{type}"
207
+ raise ArgumentError, "Unknown type number #{type}"
205
208
  end
206
209
  end
207
210
  end
data/lib/net/dns/rr.rb CHANGED
@@ -298,7 +298,8 @@ module Net
298
298
  if self.class == Net::DNS::RR
299
299
  temp = dn_expand(data, offset)[1]
300
300
  type = Net::DNS::RR::Types.new data.unpack("@#{temp} n")[0]
301
- (eval "Net::DNS::RR::#{type}").parse_packet(data, offset)
301
+ rr_class = Net::DNS::RR.const_get(type.to_s)
302
+ rr_class.parse_packet(data, offset)
302
303
  else
303
304
  @name, offset = dn_expand(data, offset)
304
305
  rrtype, cls, @ttl, @rdlength = data.unpack("@#{offset} n2 N n")
@@ -3,6 +3,6 @@
3
3
  module Net
4
4
  module DNS
5
5
  # The current library version.
6
- VERSION = "0.10.0"
6
+ VERSION = "0.12.0"
7
7
  end
8
8
  end
data/test/unit/rr_test.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'test_helper'
2
+ require 'base64'
2
3
  require 'net/dns/rr'
3
4
 
4
5
  class RRTest < Minitest::Test
@@ -124,4 +125,45 @@ class RRTest < Minitest::Test
124
125
  Net::DNS::RR.new("google.com. 10800 IM A")
125
126
  end
126
127
  end
128
+
129
+ def test_bad_type
130
+ assert_raises(ArgumentError) do
131
+ Net::DNS::RR.new(name: @rr_name,
132
+ ttl: @ttl,
133
+ cls: @cls,
134
+ type: "BOGUS",
135
+ address: @rdata)
136
+ end
137
+ end
138
+
139
+ def test_parse_packet_with_unsupported_type
140
+ # Create a mock binary packet with an unsupported RR type
141
+
142
+ # Start with a normal A record to get valid binary data
143
+ record = Net::DNS::RR.new("example.com. 3600 IN A 192.168.1.1")
144
+ binary_data = record.data
145
+
146
+ # Find where the name ends by looking for a null byte
147
+ name_end = binary_data.index("\x00") + 1
148
+
149
+ # Replace the type value (2 bytes) with 0xFACE (an undefined type)
150
+ modified_data = binary_data.dup
151
+ modified_data[name_end, 2] = [0xFACE].pack("n")
152
+
153
+ # The parse_packet should raise an error for unknown types
154
+ error = assert_raises(ArgumentError) do
155
+ Net::DNS::RR.parse(modified_data)
156
+ end
157
+
158
+ # Verify the error message mentions the unknown type
159
+ assert_match(/Unknown type number/, error.message)
160
+ end
161
+
162
+ def test_aaaa_packet
163
+ # A response of `dig google.com AAAA` query
164
+ encoded_payload = "PA+BgAABAAEADQAbBmdvb2dsZQNjb20AABwAAcAMABwAAQAAASwAECoAFFBA\nDggKAAAAAAAAIA7AEwACAAEAAAFMABQBYgxndGxkLXNlcnZlcnMDbmV0AMAT\nAAIAAQAAAUwABAFtwEbAEwACAAEAAAFMAAQBY8BGwBMAAgABAAABTAAEAWbA\nRsATAAIAAQAAAUwABAFnwEbAEwACAAEAAAFMAAQBa8BGwBMAAgABAAABTAAE\nAWXARsATAAIAAQAAAUwABAFqwEbAEwACAAEAAAFMAAQBZMBGwBMAAgABAAAB\nTAAEAWnARsATAAIAAQAAAUwABAFhwEbAEwACAAEAAAFMAAQBbMBGwBMAAgAB\nAAABTAAEAWjARsD0AAEAAQAAAUwABMAFBh7A9AAcAAEAAAFMABAgAQUDqD4A\nAAAAAAAAAgAwwEQAAQABAAABTAAEwCEOHsBEABwAAQAAAUwAECABBQMjHQAA\nAAAAAAACADDAdAABAAEAAAFMAATAGlwewHQAHAABAAABTAAQIAEFA4PrAAAA\nAAAAAAAAMMDUAAEAAQAAAUwABMAfUB7A1AAcAAEAAAFMABAgAQUAhW4AAAAA\nAAAAAAAwwLQAAQABAAABTAAEwAxeHsC0ABwAAQAAAUwAECABBQIcoQAAAAAA\nAAAAADDAhAABAAEAAAFMAATAIzMewIQAHAABAAABTAAQIAEFA9QUAAAAAAAA\nAAAAMMCUAAEAAQAAAUwABMAqXR7AlAAcAAEAAAFMABAgAQUD7qMAAAAAAAAA\nAAAwwRQAAQABAAABTAAEwDZwHsEUABwAAQAAAUwAECABBQIIzAAAAAAAAAAA\nADDA5AABAAEAAAFMAATAK6wewOQAHAABAAABTAAQIAEFAznBAAAAAAAAAAAA\nMMDEAAEAAQAAAUwABMAwTx7AxAAcAAEAAAFMABAgAQUCcJQAAAAAAAAAAAAw\nwKQAAQABAAABTAAEwDSyHsCkABwAAQAAAUwAECABBQMNLQAAAAAAAAAAADDB\nBAABAAEAAAFMAATAKaIewQQAHAABAAABTAAQIAEFANk3AAAAAAAAAAAAMMBk\nAAEAAQAAAUwABMA3Ux7AZAAcAAEAAAFMABAgAQUBsfkAAAAAAAAAAAAwAAAp\nEAAAAAAAAAA=\n"
165
+ payload = Base64.decode64(encoded_payload)
166
+
167
+ Net::DNS::Packet.parse(payload)
168
+ end
127
169
  end
metadata CHANGED
@@ -1,16 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-net-dns
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marco Ceresa
8
8
  - Simone Carletti
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2023-12-16 00:00:00.000000000 Z
11
+ date: 2025-05-03 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: logger
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
14
27
  - !ruby/object:Gem::Dependency
15
28
  name: mocha
16
29
  requirement: !ruby/object:Gem::Requirement
@@ -129,7 +142,6 @@ homepage: https://gitlab.com/gitlab-org/gitlab-net-dns
129
142
  licenses:
130
143
  - Ruby
131
144
  metadata: {}
132
- post_install_message:
133
145
  rdoc_options: []
134
146
  require_paths:
135
147
  - lib
@@ -137,15 +149,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
149
  requirements:
138
150
  - - ">="
139
151
  - !ruby/object:Gem::Version
140
- version: '2.1'
152
+ version: '3.0'
141
153
  required_rubygems_version: !ruby/object:Gem::Requirement
142
154
  requirements:
143
155
  - - ">="
144
156
  - !ruby/object:Gem::Version
145
157
  version: '0'
146
158
  requirements: []
147
- rubygems_version: 3.4.22
148
- signing_key:
159
+ rubygems_version: 3.6.2
149
160
  specification_version: 4
150
161
  summary: Pure Ruby DNS library.
151
162
  test_files: