dnsruby 1.38 → 1.39

Sign up to get free protection for your applications and to get access to all the features.
data/demo/digdlv.rb CHANGED
@@ -71,7 +71,7 @@ if (type.upcase == "AXFR")
71
71
 
72
72
  else
73
73
 
74
- # Dnsruby::TheLog.level=Logger::DEBUG
74
+ Dnsruby::TheLog.level=Logger::DEBUG
75
75
  begin
76
76
  answer = nil
77
77
  answer = res.query(name, type, klass)
@@ -19,7 +19,7 @@ module Dnsruby
19
19
  NS, CNAME, DNAME, DNSKEY, SOA, PTR, HINFO, MINFO, MX, TXT,
20
20
  ISDN, MB, MG, MR, NAPTR, NSAP, OPT, RP, RT, X25,
21
21
  SPF, CERT, LOC, TSIG, TKEY, ANY, RRSIG, NSEC, DS, NSEC3,
22
- NSEC3PARAM, DLV
22
+ NSEC3PARAM, DLV, SSHFP
23
23
  ] #:nodoc: all
24
24
 
25
25
  # module IN contains ARPA Internet specific RRs
@@ -52,16 +52,16 @@ module Dnsruby
52
52
  values = input.split(" ")
53
53
  @order = values [0].to_i
54
54
  @preference = values [1].to_i
55
- @flags = values [2]
56
- @service = values [3]
57
- @regexp = values [4]
55
+ @flags = values [2].gsub!("\"", "")
56
+ @service = values [3].gsub!("\"", "")
57
+ @regexp = values [4].gsub!("\"", "")
58
58
  @replacement = Name.create(values[5])
59
59
  end
60
60
  end
61
61
 
62
62
  def rdata_to_string #:nodoc: all
63
63
  if (@order!=nil)
64
- return "#{@order} #{@preference} #{@flags} #{@service} #{@regexp} #{@replacement}"
64
+ return "#{@order} #{@preference} \"#{@flags}\" \"#{@service}\" \"#{@regexp}\" #{@replacement}"
65
65
  else
66
66
  return ""
67
67
  end
@@ -79,9 +79,9 @@ module Dnsruby
79
79
  def self.decode_rdata(msg) #:nodoc: all
80
80
  order, = msg.get_unpack('n')
81
81
  preference, = msg.get_unpack('n')
82
- flags, = msg.get_string
83
- service, = msg.get_string
84
- regexp, = msg.get_string
82
+ flags = msg.get_string
83
+ service = msg.get_string
84
+ regexp = msg.get_string
85
85
  replacement = msg.get_name
86
86
  return self.new([order, preference, flags, service, regexp, replacement])
87
87
  end
@@ -66,7 +66,11 @@ module Dnsruby
66
66
  end
67
67
 
68
68
  def types=(t)
69
+ if (t && t.length > 0)
69
70
  @types = NSEC.get_types(t)
71
+ else
72
+ @types = []
73
+ end
70
74
  end
71
75
 
72
76
  def self.get_types(t)
@@ -164,7 +164,11 @@ module Dnsruby
164
164
  end
165
165
 
166
166
  def types=(t)
167
+ if (t && t.length > 0)
167
168
  @types = NSEC.get_types(t)
169
+ else
170
+ @types = []
171
+ end
168
172
  end
169
173
 
170
174
  def add_type(t)
@@ -256,7 +260,7 @@ module Dnsruby
256
260
 
257
261
  def from_string(input)
258
262
  if (input.length > 0)
259
- data = input.split(" ")
263
+ data = input.split
260
264
  self.hash_alg=(data[0]).to_i
261
265
  self.flags=(data[1]).to_i
262
266
  self.iterations=(data[2]).to_i
@@ -0,0 +1,91 @@
1
+ #--
2
+ #Copyright 2007 Nominet UK
3
+ #
4
+ #Licensed under the Apache License, Version 2.0 (the "License");
5
+ #you may not use this file except in compliance with the License.
6
+ #You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ #Unless required by applicable law or agreed to in writing, software
11
+ #distributed under the License is distributed on an "AS IS" BASIS,
12
+ #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ #See the License for the specific language governing permissions and
14
+ #limitations under the License.
15
+ #++
16
+ module Dnsruby
17
+ class RR
18
+ class SSHFP < RR
19
+ ClassValue = nil #:nodoc: all
20
+ TypeValue = Types::SSHFP #:nodoc: all
21
+
22
+ attr_accessor :alg
23
+ attr_accessor :fptype
24
+ attr_accessor :fp
25
+
26
+ class Algorithms < CodeMapper
27
+ RSA = 1
28
+ DSS = 2
29
+ update()
30
+ end
31
+
32
+ class FpTypes < CodeMapper
33
+ SHA1 = 1
34
+ update()
35
+ end
36
+
37
+ def from_data(data) #:nodoc: all
38
+ alg, fptype, @fp = data
39
+ @alg = Algorithms.new(alg)
40
+ @fptype = FpTypes.new(fptype)
41
+ end
42
+
43
+ def from_hash(hash)
44
+ if hash[:alg]
45
+ @alg = Algorithms.new(hash[:alg])
46
+ end
47
+ if hash[:fptype]
48
+ @fptype = FpTypes.new(hash[:fptype])
49
+ end
50
+ if hash[:fp]
51
+ @fp = hash[:fp]
52
+ end
53
+ end
54
+
55
+ def from_string(input)
56
+ if (input.length > 0)
57
+ names = input.split(" ")
58
+ begin
59
+ @alg = Algorithms.new(names[0].to_i)
60
+ rescue ArgumentError
61
+ @alg = Algorithms.new(names[0])
62
+ end
63
+ begin
64
+ @fptype = FpTypes.new(names[1].to_i)
65
+ rescue ArgumentError
66
+ @fptype = FpTypes.new(names[1])
67
+ end
68
+ @fp = [names[2]].pack("H*")
69
+ end
70
+ end
71
+
72
+ def rdata_to_string
73
+ ret = "#{@alg.code} #{@fptype.code} "
74
+ ret += @fp.unpack("H*")[0]
75
+ return ret
76
+ end
77
+
78
+ def encode_rdata(msg, canonical=false) #:nodoc: all
79
+ msg.put_pack("c", @alg.code)
80
+ msg.put_pack("c", @fptype.code)
81
+ msg.put_bytes(@fp)
82
+ end
83
+
84
+ def self.decode_rdata(msg) #:nodoc: all
85
+ alg, fptype = msg.get_unpack("cc")
86
+ fp = msg.get_bytes
87
+ return self.new([alg, fptype, fp])
88
+ end
89
+ end
90
+ end
91
+ end
@@ -149,4 +149,5 @@ require 'Dnsruby/resource/NSEC'
149
149
  require 'Dnsruby/resource/DS'
150
150
  require 'Dnsruby/resource/NSEC3'
151
151
  require 'Dnsruby/resource/NSEC3PARAM'
152
- require 'Dnsruby/resource/DLV'
152
+ require 'Dnsruby/resource/DLV'
153
+ require 'Dnsruby/resource/SSHFP'
data/test/tc_nsec3.rb CHANGED
@@ -20,6 +20,8 @@ require 'dnsruby'
20
20
  class Nsec3Test < Test::Unit::TestCase
21
21
  INPUT = "2t7b4g4vsa5smi47k61mv5bv1a22bojr.example. 3600 IN NSEC3 1 1 12 aabbccdd ( " +
22
22
  "2vptu5timamqttgl4luu9kg21e0aor3s A RRSIG )"
23
+ INPUT2 = "2t7b4g4vsa5smi47k61mv5bv1a22bojr.example. 3600 IN NSEC3 1 1 12 aabbccdd " +
24
+ "2vptu5timamqttgl4luu9kg21e0aor3s"
23
25
  include Dnsruby
24
26
  def test_nsec_from_string
25
27
  nsec = Dnsruby::RR.create(INPUT)
@@ -32,6 +34,16 @@ class Nsec3Test < Test::Unit::TestCase
32
34
 
33
35
  nsec2 = Dnsruby::RR.create(nsec.to_s)
34
36
  assert(nsec2.to_s == nsec.to_s)
37
+
38
+ nsec = Dnsruby::RR.create(INPUT2)
39
+ assert_equal([], nsec.types)
40
+ assert(nsec.opt_out?)
41
+ assert_equal(12, nsec.iterations)
42
+ assert_equal("aabbccdd", nsec.salt)
43
+ assert_equal(Dnsruby::Nsec3HashAlgorithms.SHA_1, nsec.hash_alg)
44
+
45
+ nsec2 = Dnsruby::RR.create(nsec.to_s)
46
+ assert(nsec2.to_s == nsec.to_s)
35
47
  end
36
48
 
37
49
  def test_base32
data/test/tc_sshfp.rb ADDED
@@ -0,0 +1,41 @@
1
+
2
+ #--
3
+ #Copyright 2007 Nominet UK
4
+ #
5
+ #Licensed under the Apache License, Version 2.0 (the "License");
6
+ #you may not use this file except in compliance with the License.
7
+ #You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ #Unless required by applicable law or agreed to in writing, software
12
+ #distributed under the License is distributed on an "AS IS" BASIS,
13
+ #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ #See the License for the specific language governing permissions and
15
+ #limitations under the License.
16
+ #++
17
+ require 'rubygems'
18
+ require 'test/unit'
19
+ require 'dnsruby'
20
+ include Dnsruby
21
+ class TestSSHFP < Test::Unit::TestCase
22
+ def test_sshfp
23
+ txt = "apt-blade6.nominet.org.uk. 85826 IN SSHFP 1 1 6D4CF7C68E3A959990855099E15D6E0D4DEA4FFF"
24
+ sshfp = RR.create(txt)
25
+ assert(sshfp.type == Types.SSHFP)
26
+ assert(sshfp.alg == RR::SSHFP::Algorithms.RSA)
27
+ assert(sshfp.fptype == RR::SSHFP::FpTypes.SHA1)
28
+ assert(sshfp.fp.unpack("H*")[0].upcase == "6D4CF7C68E3A959990855099E15D6E0D4DEA4FFF")
29
+
30
+ m = Dnsruby::Message.new
31
+ m.add_additional(sshfp)
32
+ data = m.encode
33
+ m2 = Dnsruby::Message.decode(data)
34
+ sshfp2 = m2.additional()[0]
35
+ assert(sshfp.fptype == sshfp2.fptype)
36
+ assert(sshfp.alg == sshfp2.alg)
37
+ assert(sshfp.fp == sshfp2.fp)
38
+ assert(sshfp == sshfp2)
39
+ end
40
+
41
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dnsruby
3
3
  version: !ruby/object:Gem::Version
4
- version: "1.38"
4
+ version: "1.39"
5
5
  platform: ruby
6
6
  authors:
7
7
  - AlexD
@@ -9,7 +9,7 @@ autorequire: dnsruby
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-12 00:00:00 +01:00
12
+ date: 2009-10-16 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -61,6 +61,7 @@ files:
61
61
  - test/tc_single_resolver.rb
62
62
  - test/tc_soak.rb
63
63
  - test/tc_soak_base.rb
64
+ - test/tc_sshfp.rb
64
65
  - test/tc_tcp.rb
65
66
  - test/tc_tkey.rb
66
67
  - test/tc_tsig.rb
@@ -116,6 +117,7 @@ files:
116
117
  - lib/Dnsruby/resource/SOA.rb
117
118
  - lib/Dnsruby/resource/SPF.rb
118
119
  - lib/Dnsruby/resource/SRV.rb
120
+ - lib/Dnsruby/resource/SSHFP.rb
119
121
  - lib/Dnsruby/resource/TKEY.rb
120
122
  - lib/Dnsruby/resource/TSIG.rb
121
123
  - lib/Dnsruby/resource/TXT.rb