dnsruby 1.55 → 1.56.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +96 -0
  3. data/Rakefile +30 -29
  4. data/demo/axfr.rb +93 -93
  5. data/demo/check_soa.rb +99 -99
  6. data/demo/check_zone.rb +59 -59
  7. data/demo/digdlv.rb +43 -43
  8. data/demo/digroot.rb +34 -34
  9. data/demo/example_recurse.rb +14 -14
  10. data/demo/mresolv.rb +30 -30
  11. data/demo/mx.rb +31 -31
  12. data/demo/rubydig.rb +37 -37
  13. data/demo/to_resolve.txt +3088 -3088
  14. data/demo/trace_dns.rb +46 -46
  15. data/lib/dnsruby.rb +161 -526
  16. data/lib/dnsruby/DNS.rb +305 -0
  17. data/lib/{Dnsruby/Cache.rb → dnsruby/cache.rb} +152 -152
  18. data/lib/{Dnsruby → dnsruby}/code_mapper.rb +48 -52
  19. data/lib/dnsruby/code_mappers.rb +295 -0
  20. data/lib/{Dnsruby/Config.rb → dnsruby/config.rb} +454 -454
  21. data/lib/{Dnsruby → dnsruby}/dnssec.rb +91 -91
  22. data/lib/{Dnsruby/Hosts.rb → dnsruby/hosts.rb} +125 -125
  23. data/lib/{Dnsruby → dnsruby}/ipv4.rb +26 -26
  24. data/lib/{Dnsruby → dnsruby}/ipv6.rb +42 -42
  25. data/lib/{Dnsruby → dnsruby}/key_cache.rb +29 -29
  26. data/lib/dnsruby/message/decoder.rb +164 -0
  27. data/lib/dnsruby/message/encoder.rb +75 -0
  28. data/lib/dnsruby/message/header.rb +249 -0
  29. data/lib/dnsruby/message/message.rb +629 -0
  30. data/lib/dnsruby/message/question.rb +86 -0
  31. data/lib/dnsruby/message/section.rb +96 -0
  32. data/lib/{Dnsruby → dnsruby}/name.rb +141 -141
  33. data/lib/dnsruby/packet_sender.rb +661 -0
  34. data/lib/{Dnsruby/Recursor.rb → dnsruby/recursor.rb} +235 -233
  35. data/lib/dnsruby/resolv.rb +113 -0
  36. data/lib/dnsruby/resolver.rb +1192 -0
  37. data/lib/dnsruby/resource/A.rb +56 -0
  38. data/lib/dnsruby/resource/AAAA.rb +54 -0
  39. data/lib/{Dnsruby → dnsruby}/resource/AFSDB.rb +68 -68
  40. data/lib/{Dnsruby → dnsruby}/resource/CERT.rb +105 -105
  41. data/lib/{Dnsruby → dnsruby}/resource/DHCID.rb +54 -54
  42. data/lib/dnsruby/resource/DLV.rb +27 -0
  43. data/lib/{Dnsruby → dnsruby}/resource/DNSKEY.rb +372 -372
  44. data/lib/{Dnsruby → dnsruby}/resource/DS.rb +255 -255
  45. data/lib/{Dnsruby → dnsruby}/resource/HINFO.rb +71 -71
  46. data/lib/{Dnsruby → dnsruby}/resource/HIP.rb +29 -29
  47. data/lib/{Dnsruby → dnsruby}/resource/IN.rb +30 -30
  48. data/lib/{Dnsruby → dnsruby}/resource/IPSECKEY.rb +31 -31
  49. data/lib/{Dnsruby → dnsruby}/resource/ISDN.rb +62 -62
  50. data/lib/{Dnsruby → dnsruby}/resource/KX.rb +65 -65
  51. data/lib/{Dnsruby → dnsruby}/resource/LOC.rb +263 -263
  52. data/lib/{Dnsruby → dnsruby}/resource/MINFO.rb +69 -69
  53. data/lib/{Dnsruby → dnsruby}/resource/MX.rb +65 -65
  54. data/lib/{Dnsruby → dnsruby}/resource/NAPTR.rb +98 -98
  55. data/lib/{Dnsruby → dnsruby}/resource/NSAP.rb +171 -171
  56. data/lib/dnsruby/resource/NSEC.rb +275 -0
  57. data/lib/dnsruby/resource/NSEC3.rb +332 -0
  58. data/lib/dnsruby/resource/NSEC3PARAM.rb +135 -0
  59. data/lib/dnsruby/resource/OPT.rb +272 -0
  60. data/lib/{Dnsruby → dnsruby}/resource/PX.rb +70 -70
  61. data/lib/{Dnsruby → dnsruby}/resource/RP.rb +75 -75
  62. data/lib/dnsruby/resource/RR.rb +421 -0
  63. data/lib/dnsruby/resource/RRSIG.rb +275 -0
  64. data/lib/dnsruby/resource/RRSet.rb +190 -0
  65. data/lib/{Dnsruby → dnsruby}/resource/RT.rb +67 -67
  66. data/lib/{Dnsruby → dnsruby}/resource/SOA.rb +94 -94
  67. data/lib/dnsruby/resource/SPF.rb +29 -0
  68. data/lib/dnsruby/resource/SRV.rb +112 -0
  69. data/lib/{Dnsruby → dnsruby}/resource/SSHFP.rb +14 -14
  70. data/lib/dnsruby/resource/TKEY.rb +163 -0
  71. data/lib/dnsruby/resource/TSIG.rb +593 -0
  72. data/lib/{Dnsruby → dnsruby}/resource/TXT.rb +191 -191
  73. data/lib/dnsruby/resource/X25.rb +55 -0
  74. data/lib/{Dnsruby → dnsruby}/resource/domain_name.rb +25 -25
  75. data/lib/{Dnsruby → dnsruby}/resource/generic.rb +80 -80
  76. data/lib/dnsruby/resource/resource.rb +25 -0
  77. data/lib/{Dnsruby → dnsruby}/select_thread.rb +148 -148
  78. data/lib/{Dnsruby/SingleResolver.rb → dnsruby/single_resolver.rb} +60 -60
  79. data/lib/{Dnsruby → dnsruby}/single_verifier.rb +344 -344
  80. data/lib/dnsruby/the_log.rb +44 -0
  81. data/lib/dnsruby/update.rb +278 -0
  82. data/lib/dnsruby/validator_thread.rb +124 -0
  83. data/lib/dnsruby/version.rb +3 -0
  84. data/lib/{Dnsruby → dnsruby}/zone_reader.rb +93 -93
  85. data/lib/{Dnsruby → dnsruby}/zone_transfer.rb +377 -377
  86. data/test/spec_helper.rb +16 -0
  87. data/test/tc_axfr.rb +31 -34
  88. data/test/tc_cache.rb +32 -32
  89. data/test/tc_dlv.rb +28 -28
  90. data/test/tc_dns.rb +73 -76
  91. data/test/tc_dnskey.rb +31 -32
  92. data/test/tc_dnsruby.rb +50 -44
  93. data/test/tc_ds.rb +36 -36
  94. data/test/tc_escapedchars.rb +252 -255
  95. data/test/tc_hash.rb +17 -21
  96. data/test/tc_header.rb +48 -57
  97. data/test/tc_hip.rb +19 -22
  98. data/test/tc_ipseckey.rb +18 -21
  99. data/test/tc_keith.rb +300 -0
  100. data/test/tc_message.rb +87 -0
  101. data/test/tc_misc.rb +83 -87
  102. data/test/tc_name.rb +81 -84
  103. data/test/tc_naptr.rb +18 -21
  104. data/test/tc_nsec.rb +55 -55
  105. data/test/tc_nsec3.rb +23 -24
  106. data/test/tc_nsec3param.rb +20 -21
  107. data/test/tc_packet.rb +90 -93
  108. data/test/tc_packet_unique_push.rb +48 -51
  109. data/test/tc_question.rb +30 -33
  110. data/test/tc_queue.rb +16 -17
  111. data/test/tc_recur.rb +16 -17
  112. data/test/tc_res_config.rb +38 -41
  113. data/test/tc_res_env.rb +29 -32
  114. data/test/tc_res_file.rb +26 -29
  115. data/test/tc_res_opt.rb +62 -65
  116. data/test/tc_resolver.rb +287 -242
  117. data/test/tc_rr-opt.rb +70 -63
  118. data/test/tc_rr-txt.rb +68 -71
  119. data/test/tc_rr-unknown.rb +45 -48
  120. data/test/tc_rr.rb +76 -70
  121. data/test/tc_rrset.rb +21 -22
  122. data/test/tc_rrsig.rb +19 -20
  123. data/test/tc_single_resolver.rb +294 -297
  124. data/test/tc_soak.rb +199 -202
  125. data/test/tc_soak_base.rb +29 -34
  126. data/test/tc_sshfp.rb +20 -23
  127. data/test/tc_tcp.rb +32 -35
  128. data/test/tc_tkey.rb +41 -44
  129. data/test/tc_tsig.rb +81 -84
  130. data/test/tc_update.rb +108 -111
  131. data/test/tc_validator.rb +29 -29
  132. data/test/tc_verifier.rb +81 -82
  133. data/test/ts_dnsruby.rb +16 -15
  134. data/test/ts_offline.rb +62 -63
  135. data/test/ts_online.rb +115 -115
  136. metadata +155 -90
  137. data/README +0 -59
  138. data/lib/Dnsruby/DNS.rb +0 -305
  139. data/lib/Dnsruby/PacketSender.rb +0 -656
  140. data/lib/Dnsruby/Resolver.rb +0 -1189
  141. data/lib/Dnsruby/TheLog.rb +0 -44
  142. data/lib/Dnsruby/message.rb +0 -1230
  143. data/lib/Dnsruby/resource/A.rb +0 -56
  144. data/lib/Dnsruby/resource/AAAA.rb +0 -54
  145. data/lib/Dnsruby/resource/DLV.rb +0 -27
  146. data/lib/Dnsruby/resource/NSEC.rb +0 -298
  147. data/lib/Dnsruby/resource/NSEC3.rb +0 -340
  148. data/lib/Dnsruby/resource/NSEC3PARAM.rb +0 -135
  149. data/lib/Dnsruby/resource/OPT.rb +0 -213
  150. data/lib/Dnsruby/resource/RRSIG.rb +0 -275
  151. data/lib/Dnsruby/resource/SPF.rb +0 -29
  152. data/lib/Dnsruby/resource/SRV.rb +0 -112
  153. data/lib/Dnsruby/resource/TKEY.rb +0 -163
  154. data/lib/Dnsruby/resource/TSIG.rb +0 -593
  155. data/lib/Dnsruby/resource/X25.rb +0 -55
  156. data/lib/Dnsruby/resource/resource.rb +0 -678
  157. data/lib/Dnsruby/update.rb +0 -278
  158. data/lib/Dnsruby/validator_thread.rb +0 -124
@@ -1,192 +1,192 @@
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
- begin
17
- require 'jcode'
18
- rescue LoadError => e
19
- end
20
- module Dnsruby
21
- class RR
22
- #Class for DNS Text (TXT) resource records.
23
- #RFC 1035 Section 3.3.14
24
- class TXT < RR
25
- ClassValue = nil #:nodoc: all
26
- TypeValue = Types::TXT #:nodoc: all
27
-
28
- #List of the individual elements
29
- attr_accessor :strings
30
-
31
- def data
32
- @strings[0]
33
- end
34
-
35
- def from_data(data)
36
- @strings = data
37
- end
38
-
39
- def from_hash(hash)
40
- if (hash.has_key?:strings)
41
- from_string(hash[:strings])
42
- end
43
- end
44
-
45
- ESCAPE_CHARS = {"b" => 8, "t" => 9, "n" => 10, "v" => 11, "f" => 12, "r" => 13}
46
- ESCAPE_CODES = ESCAPE_CHARS.invert
47
-
48
- def from_string(input)
49
- @strings = TXT.parse(input)
50
- end
51
-
52
- def TXT.parse(input)
53
- # Need to look out for special characters.
54
- # Need to split the input up into strings (which are defined by non-escaped " characters)
55
- # Then need to fix up any \ escape characters (should just be " and ; and binary?)
56
- # Sadly, it's going to be easiest just to scan through this character by character...
57
- in_escaped = false
58
- in_string = false
59
- count = -1
60
- strings = []
61
- current_binary = ""
62
- current_quote_char = '"'
63
- unquoted = false
64
- seen_strings = false
65
- pos = 0
66
- input.sub!(/^\s*\(\s*/, "")
67
- input.sub!(/\s*\)\s*$/, "")
68
- input.each_char {|c|
69
- if (((c == "'") || (c == '"')) && (!in_escaped) && (!unquoted))
70
- if (!in_string)
71
- seen_strings = true
72
- current_quote_char = c
73
- in_string = true
74
- count+=1
75
- strings[count] = ""
76
- else
77
- if (c == current_quote_char)
78
- in_string = false
79
- else
80
- strings[count]+=c
81
- end
82
- end
83
- else
84
- if (seen_strings && !in_string)
85
- next
86
- end
87
- if (pos == 0)
88
- unquoted = true
89
- count+=1
90
- strings[count] = ""
91
- elsif (unquoted)
92
- if (c == " ")
93
- count+=1
94
- strings[count] = ""
95
- pos += 1
96
- next
97
- end
98
- end
99
-
100
- if (c == "\\")
101
- if (in_escaped)
102
- in_escaped = false
103
- strings[count]+=(c)
104
- else
105
- in_escaped = true
106
- end
107
- else
108
- if (in_escaped)
109
- # Build up the binary
110
- if (c == ";") || (c == '"')
111
- strings[count]+=c
112
- in_escaped = false
113
- elsif (ESCAPE_CHARS[c])
114
- in_escaped=false
115
- strings[count]+=ESCAPE_CHARS[c].chr
116
- elsif (c<"0" || c>"9")
117
- in_escaped = false
118
- strings[count]+=c
119
- else
120
- # Must be building up three digit string to identify binary value?
121
- # if (c >= "0" && c <= "9")
122
- current_binary += c
123
- # end
124
- if ((current_binary.length == 3) ) # || (c < "0" || c > "9"))
125
- strings[count]+=current_binary.to_i.chr
126
- in_escaped = false
127
- current_binary = ""
128
- end
129
- end
130
- else
131
- strings[count]+=(c)
132
- end
133
- end
134
- end
135
- pos += 1
136
- }
137
- return strings
138
- end
139
-
140
- def TXT.display(str, do_escapes = true)
141
- output = ""
142
- # Probably need to scan through each string manually
143
- # Make sure to remember to escape binary characters.
144
- # Go through copying to output, and adding "\" characters as necessary?
145
- str.each_byte {|c|
146
- if (c == 34) || (c == 92) # || (c == 59)
147
- if (do_escapes)
148
- output+='\\'
149
- end
150
- output+=c.chr
151
- elsif (c < 32) # c is binary
152
- if (ESCAPE_CODES[c])
153
- output += c.chr
154
- else
155
- output+= '\\'
156
- num = c.to_i.to_s
157
- (3-num.length).times {|i|
158
- num="0"+num
159
- }
160
- output+= num # Need a 3 digit number here.
161
- end
162
-
163
- else
164
- output += c.chr
165
- end
166
- }
167
- return output
168
- end
169
-
170
- def rdata_to_string
171
- if (defined?@strings)
172
- temp = []
173
- @strings.each {|str|
174
- output = TXT.display(str)
175
- temp.push("\"#{output}\"")
176
- }
177
- return temp.join(' ')
178
- end
179
- return ''
180
- end
181
-
182
- def encode_rdata(msg, canonical=false) #:nodoc: all
183
- msg.put_string_list(@strings)
184
- end
185
-
186
- def self.decode_rdata(msg) #:nodoc: all
187
- strings = msg.get_string_list
188
- return self.new(strings)
189
- end
190
- end
191
- end
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
+ begin
17
+ require 'jcode'
18
+ rescue LoadError => e
19
+ end
20
+ module Dnsruby
21
+ class RR
22
+ # Class for DNS Text (TXT) resource records.
23
+ # RFC 1035 Section 3.3.14
24
+ class TXT < RR
25
+ ClassValue = nil #:nodoc: all
26
+ TypeValue = Types::TXT #:nodoc: all
27
+
28
+ # List of the individual elements
29
+ attr_accessor :strings
30
+
31
+ def data
32
+ @strings[0]
33
+ end
34
+
35
+ def from_data(data)
36
+ @strings = data
37
+ end
38
+
39
+ def from_hash(hash)
40
+ if (hash.has_key?:strings)
41
+ from_string(hash[:strings])
42
+ end
43
+ end
44
+
45
+ ESCAPE_CHARS = {"b" => 8, "t" => 9, "n" => 10, "v" => 11, "f" => 12, "r" => 13}
46
+ ESCAPE_CODES = ESCAPE_CHARS.invert
47
+
48
+ def from_string(input)
49
+ @strings = TXT.parse(input)
50
+ end
51
+
52
+ def TXT.parse(input)
53
+ # Need to look out for special characters.
54
+ # Need to split the input up into strings (which are defined by non-escaped " characters)
55
+ # Then need to fix up any \ escape characters (should just be " and ; and binary?)
56
+ # Sadly, it's going to be easiest just to scan through this character by character...
57
+ in_escaped = false
58
+ in_string = false
59
+ count = -1
60
+ strings = []
61
+ current_binary = ""
62
+ current_quote_char = '"'
63
+ unquoted = false
64
+ seen_strings = false
65
+ pos = 0
66
+ input.sub!(/^\s*\(\s*/, "")
67
+ input.sub!(/\s*\)\s*$/, "")
68
+ input.each_char {|c|
69
+ if (((c == "'") || (c == '"')) && (!in_escaped) && (!unquoted))
70
+ if (!in_string)
71
+ seen_strings = true
72
+ current_quote_char = c
73
+ in_string = true
74
+ count+=1
75
+ strings[count] = ""
76
+ else
77
+ if (c == current_quote_char)
78
+ in_string = false
79
+ else
80
+ strings[count]+=c
81
+ end
82
+ end
83
+ else
84
+ if (seen_strings && !in_string)
85
+ next
86
+ end
87
+ if (pos == 0)
88
+ unquoted = true
89
+ count+=1
90
+ strings[count] = ""
91
+ elsif (unquoted)
92
+ if (c == " ")
93
+ count+=1
94
+ strings[count] = ""
95
+ pos += 1
96
+ next
97
+ end
98
+ end
99
+
100
+ if (c == "\\")
101
+ if (in_escaped)
102
+ in_escaped = false
103
+ strings[count]+=(c)
104
+ else
105
+ in_escaped = true
106
+ end
107
+ else
108
+ if (in_escaped)
109
+ # Build up the binary
110
+ if (c == ";") || (c == '"')
111
+ strings[count]+=c
112
+ in_escaped = false
113
+ elsif (ESCAPE_CHARS[c])
114
+ in_escaped=false
115
+ strings[count]+=ESCAPE_CHARS[c].chr
116
+ elsif (c<"0" || c>"9")
117
+ in_escaped = false
118
+ strings[count]+=c
119
+ else
120
+ # Must be building up three digit string to identify binary value?
121
+ # if (c >= "0" && c <= "9")
122
+ current_binary += c
123
+ # end
124
+ if ((current_binary.length == 3) ) # || (c < "0" || c > "9"))
125
+ strings[count]+=current_binary.to_i.chr
126
+ in_escaped = false
127
+ current_binary = ""
128
+ end
129
+ end
130
+ else
131
+ strings[count]+=(c)
132
+ end
133
+ end
134
+ end
135
+ pos += 1
136
+ }
137
+ return strings
138
+ end
139
+
140
+ def TXT.display(str, do_escapes = true)
141
+ output = ""
142
+ # Probably need to scan through each string manually
143
+ # Make sure to remember to escape binary characters.
144
+ # Go through copying to output, and adding "\" characters as necessary?
145
+ str.each_byte {|c|
146
+ if (c == 34) || (c == 92) # || (c == 59)
147
+ if (do_escapes)
148
+ output+='\\'
149
+ end
150
+ output+=c.chr
151
+ elsif (c < 32) # c is binary
152
+ if (ESCAPE_CODES[c])
153
+ output += c.chr
154
+ else
155
+ output+= '\\'
156
+ num = c.to_i.to_s
157
+ (3-num.length).times {|i|
158
+ num="0"+num
159
+ }
160
+ output+= num # Need a 3 digit number here.
161
+ end
162
+
163
+ else
164
+ output += c.chr
165
+ end
166
+ }
167
+ return output
168
+ end
169
+
170
+ def rdata_to_string
171
+ if (defined?@strings)
172
+ temp = []
173
+ @strings.each {|str|
174
+ output = TXT.display(str)
175
+ temp.push("\"#{output}\"")
176
+ }
177
+ return temp.join(' ')
178
+ end
179
+ return ''
180
+ end
181
+
182
+ def encode_rdata(msg, canonical=false) #:nodoc: all
183
+ msg.put_string_list(@strings)
184
+ end
185
+
186
+ def self.decode_rdata(msg) #:nodoc: all
187
+ strings = msg.get_string_list
188
+ return self.new(strings)
189
+ end
190
+ end
191
+ end
192
192
  end
@@ -0,0 +1,55 @@
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 for DNS X25 resource records.
19
+ # RFC 1183 Section 3.1
20
+ class X25 < RR
21
+ ClassValue = nil #:nodoc: all
22
+ TypeValue = Types::X25 #:nodoc: all
23
+
24
+ # The PSDN address
25
+ attr_accessor :address
26
+
27
+ def from_data(data)
28
+ @address = data
29
+ end
30
+
31
+ def from_string(input)
32
+ address = input
33
+ address.sub!(/^\"/, "")
34
+ @address = address.sub(/\"$/, "")
35
+ end
36
+
37
+ def rdata_to_string
38
+ if (@address!=nil)
39
+ return @address
40
+ else
41
+ return ""
42
+ end
43
+ end
44
+
45
+ def encode_rdata(msg, canonical=false) #:nodoc: all
46
+ msg.put_string(@address)
47
+ end
48
+
49
+ def self.decode_rdata(msg) #:nodoc: all
50
+ address = msg.get_string
51
+ return self.new(*address)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -1,51 +1,51 @@
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
- #++
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
16
  module Dnsruby
17
17
  class RR
18
- # Abstract superclass for RR's which have a domain name in the data section.
18
+ # Abstract superclass for RR's which have a domain name in the data section.
19
19
  class DomainName < RR
20
- # The domain name in the RR data section.
20
+ # The domain name in the RR data section.
21
21
  attr_reader :domainname
22
-
22
+
23
23
  def set_domain_name(newname)
24
24
  @domainname=Name.create(newname)
25
25
  end
26
-
26
+
27
27
  alias domainname= set_domain_name
28
-
28
+
29
29
  def from_hash(hash) #:nodoc: all
30
30
  set_domain_name(hash[:domainname])
31
31
  end
32
-
32
+
33
33
  def from_data(data) #:nodoc: all
34
34
  @domainname = data
35
35
  end
36
-
36
+
37
37
  def from_string(input) #:nodoc: all
38
38
  set_domain_name(input)
39
39
  end
40
-
40
+
41
41
  def rdata_to_string #:nodoc: all
42
42
  return @domainname.to_s(true)
43
43
  end
44
-
44
+
45
45
  def encode_rdata(msg, canonical=false) #:nodoc: all
46
46
  msg.put_name(@domainname, canonical)
47
47
  end
48
-
48
+
49
49
  def self.decode_rdata(msg) #:nodoc: all
50
50
  return self.new(msg.get_name)
51
51
  end