net-dns 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
data/InstalledFiles ADDED
@@ -0,0 +1 @@
1
+ /usr/local/lib/site_ruby/1.8/net/dns/resolver.rb
data/Rakefile CHANGED
@@ -6,6 +6,8 @@ require 'rake/gempackagetask'
6
6
 
7
7
  require 'rubygems'
8
8
 
9
+ $VERSION = 0.2
10
+
9
11
  desc "Run the tests"
10
12
  Rake::TestTask.new do |t|
11
13
  t.libs << "test"
@@ -29,7 +31,7 @@ end
29
31
  #
30
32
  SPEC = Gem::Specification.new do |s|
31
33
  s.name = "net-dns"
32
- s.version = "0.1"
34
+ s.version = "#$VERSION"
33
35
  s.author = "Marco Ceresa"
34
36
  s.email = "ceresa@gmail.com"
35
37
  s.homepage = "http://net-dns.rubyforge.org/"
@@ -243,70 +243,6 @@ module Net # :nodoc:
243
243
  end
244
244
  end
245
245
 
246
- def Resolver.cname_addr(names,packet)
247
- addr = []
248
- oct2 = RegExp.new('(?:2[0-4]\d|25[0-5]|[0-1]?\d\d|\d)')
249
-
250
- packet.answer.each do |rr|
251
- next unless begin
252
- ret = false
253
- names.each {|x| ret = true if rr.name.include? x}
254
- ret
255
- end
256
- if rr.type == Net::DNS::CNAME
257
- names.push(rr.cname)
258
- elsif rr.type == Net::DNS::A
259
- next unless rr.address =~ /^(#{oct2}\.#{oct2}\.#{oct2}\.#{oct2})$/
260
- addr.push($1)
261
- end
262
- end
263
- addr
264
- end
265
-
266
- def _packetsz
267
- if @udppacketsize > Net::DNS::PACKETSZ
268
- @udppacketsize
269
- else
270
- Net::DNS::PACKETSZ
271
- end
272
- end
273
-
274
- def send_tcp(packet, packet_data)
275
- if @nameservers.size == 0
276
- @errorstring = "no nameservers"
277
- puts ";; ERROR: send_tcp: no nameservers\n" if $DEBUG
278
- return nil # ?
279
- end
280
-
281
- self._reset_errorstring
282
-
283
- timeout = @tcp_timeout
284
-
285
- @nameservers.each do |ns|
286
- srcport = @srcport
287
- srcaddr = @srcaddr
288
- dstport = @port
289
-
290
- puts ";; send_tcp(#{ns}:#{dstport}) (src port = #{srcport})" if $DEBUG
291
-
292
- sock = TCPSocket.new(ns,dstport)
293
-
294
- # TODO !!!
295
- end
296
- end
297
-
298
- end
299
- end
300
- end
301
-
302
-
303
-
304
-
305
-
306
- module Net
307
- module DNS
308
- class Resolver
309
-
310
246
  # Get the resolver searchlist, returned as an array of entries
311
247
  #
312
248
  # res.searchlist
@@ -353,7 +289,7 @@ module Net
353
289
  @config[:nameservers].each do |x|
354
290
  arr << x.to_s
355
291
  end
356
- arr.inspect
292
+ arr
357
293
  end
358
294
  alias_method :nameserver, :nameservers
359
295
 
@@ -818,7 +754,7 @@ module Net
818
754
  @logger.close
819
755
  @config[:log_file] = log
820
756
  @logger = Logger.new(@config[:log_file])
821
- @logger.level = $DEBUG ? Logger::Debug : Logger::WARN
757
+ @logger.level = $DEBUG ? Logger::DEBUG : Logger::WARN
822
758
  end
823
759
 
824
760
  # This one permits to have a personal logger facility to handle
@@ -1019,16 +955,23 @@ module Net
1019
955
  # Parse a configuration file specified as the argument.
1020
956
  #
1021
957
  def parse_config_file
1022
- IO.foreach(@config[:config_file]) do |line|
1023
- line.gsub!(/\s*[;#].*/,"")
1024
- next unless line =~ /\S/
1025
- case line
1026
- when /^\s*domain\s+(\S+)/
1027
- self.domain = $1
1028
- when /^\s*search\s+(.*)/
1029
- self.searchlist = $1.split(" ")
1030
- when /^\s*nameserver\s+(.*)/
1031
- self.nameservers = $1.split(" ")
958
+ if RUBY_PLATFORM =~ /win/
959
+ require 'win32/resolv'
960
+ arr = Win32::Resolv.get_resolv_info
961
+ self.domain = arr[0]
962
+ self.nameservers = arr[1]
963
+ else
964
+ IO.foreach(@config[:config_file]) do |line|
965
+ line.gsub!(/\s*[;#].*/,"")
966
+ next unless line =~ /\S/
967
+ case line
968
+ when /^\s*domain\s+(\S+)/
969
+ self.domain = $1
970
+ when /^\s*search\s+(.*)/
971
+ self.searchlist = $1.split(" ")
972
+ when /^\s*nameserver\s+(.*)/
973
+ self.nameservers = $1.split(" ")
974
+ end
1032
975
  end
1033
976
  end
1034
977
  end
@@ -1142,17 +1085,24 @@ module Net
1142
1085
  @@udp_socket = socket if @config[:persistent_udp]
1143
1086
  end
1144
1087
 
1145
- ans = ""
1088
+ ans = nil
1146
1089
  response = ""
1147
1090
  @config[:nameservers].each do |ns|
1148
- @config[:udp_timeout].timeout do
1149
- socket.send(packet_data,0,ns.to_s,@config[:port])
1150
- ans = socket.recvfrom(@config[:packet_size])
1151
- @logger.info "Received #{ans[0].size} bytes from #{ans[1][2]+":"+ans[1][1].to_s}"
1091
+ begin
1092
+ @config[:udp_timeout].timeout do
1093
+ socket.send(packet_data,0,ns.to_s,@config[:port])
1094
+ ans = socket.recvfrom(@config[:packet_size])
1095
+ end
1096
+ if ans
1097
+ @logger.info "Received #{ans[0].size} bytes from #{ans[1][2]+":"+ans[1][1].to_s}"
1098
+ break
1099
+ end
1100
+ rescue TimeoutError
1101
+ @logger.warn "Nameserver #{ns} not responding within UDP timeout, trying next one"
1102
+ next
1152
1103
  end
1153
- response = Net::DNS::Packet.parse(ans[0],ans[1])
1154
1104
  end
1155
- return response
1105
+ return Net::DNS::Packet.parse(ans[0],ans[1])
1156
1106
  end
1157
1107
 
1158
1108
  def valid?(name)
@@ -1170,7 +1120,7 @@ end # module Net
1170
1120
  class ResolverArgumentError < ArgumentError # :nodoc:
1171
1121
  end
1172
1122
 
1173
- class Hash # :nodoc:
1123
+ module ExtendHash # :nodoc:
1174
1124
  # Returns an hash with all the
1175
1125
  # keys turned into downcase
1176
1126
  #
@@ -1186,6 +1136,11 @@ class Hash # :nodoc:
1186
1136
  self.replace(hsh)
1187
1137
  end
1188
1138
  end
1139
+
1140
+ class Hash # :nodoc:
1141
+ include ExtendHash
1142
+ end
1143
+
1189
1144
 
1190
1145
 
1191
1146
 
data/lib/net/dns/rr.rb CHANGED
@@ -364,7 +364,7 @@ end
364
364
  class RRDataError < StandardError # :nodoc:
365
365
  end
366
366
 
367
- class Hash # :nodoc:
367
+ module ExtendHash # :nodoc:
368
368
 
369
369
  # Performs a sort of group difference
370
370
  # operation on hashes or arrays
@@ -384,3 +384,8 @@ class Hash # :nodoc:
384
384
  end
385
385
  end
386
386
  end
387
+
388
+ class Hash # :nodoc:
389
+ include ExtendHash
390
+ end
391
+
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: net-dns
5
5
  version: !ruby/object:Gem::Version
6
- version: "0.1"
7
- date: 2007-01-23 00:00:00 +00:00
6
+ version: "0.2"
7
+ date: 2007-01-29 00:00:00 +00:00
8
8
  summary: Pure Ruby DNS library
9
9
  require_paths:
10
10
  - lib
@@ -39,6 +39,7 @@ files:
39
39
  - gemspec
40
40
  - test
41
41
  - Rakefile
42
+ - InstalledFiles
42
43
  - demo/check_soa.rb
43
44
  - demo/threads.rb
44
45
  - lib/net