Parent

Class Index [+]

Quicksearch

Dnsruby::ZoneTransfer

This class performs zone transfers as per RFC1034 (AXFR) and RFC1995 (IXFR).

Attributes

server[RW]

The nameserver to use for the zone transfer - defaults to system config

transfer_type[RW]

What type of transfer to do (IXFR or AXFR) - defaults to AXFR

klass[RW]

The class - defaults to IN

port[RW]

The port to connect to - defaults to 53

serial[RW]

If using IXFR, this is the SOA serial number to start the incrementals from

tsig[R]

The TSIG record used to sign the transfer

last_tsigstate[R]

Returns the tsigstate of the last transfer (nil if no TSIG signed transfer has occurred)

Public Class Methods

new() click to toggle source
    # File lib/Dnsruby/zone_transfer.rb, line 46
46:     def initialize
47:       @server=Config.new.nameserver[0]
48:       @transfer_type = Types.AXFR
49:       @klass=Classes.IN
50:       @port=53
51:       @serial=0
52:       @tsig = nil
53:       @axfr = nil
54:     end

Public Instance Methods

transfer(zone) click to toggle source

Perform a zone transfer (RFC1995) If an IXFR query is unsuccessful, then AXFR is tried (and @transfer_type is set to AXFR) TCP is used as the only transport

If AXFR is performed, then the zone will be returned as a set of records :

      zt = Dnsruby::ZoneTransfer.new
      zt.transfer_type = Dnsruby::Types.AXFR
      zt.server = "ns0.validation-test-servers.nominet.org.uk"
      zone = zt.transfer("validation-test-servers.nominet.org.uk")
      soa = zone[0]
      rec1 = zone[1]
      print zone.to_s

If IXFR is performed, then the incrementals will be returned as a set of Deltas. Each Delta contains the start and end SOA serial number, as well as an array of adds and deletes that occurred between the start and end.

       zt = Dnsruby::ZoneTransfer.new
       zt.transfer_type = Dnsruby::Types.IXFR
       zt.server = "ns0.validation-test-servers.nominet.org.uk"
       zt.serial = 2007090401
       deltas = zt.transfer("validation-test-servers.nominet.org.uk")
       assert_equal("Should show up in transfer", deltas[0].adds[1].data)
     # File lib/Dnsruby/zone_transfer.rb, line 82
 82:     def transfer(zone)      
 83:       servers = @server
 84:       if (servers.class == String)
 85:         servers=[servers]
 86:       end
 87:       xfr = nil
 88:       exception = nil
 89:       servers.each do |server|
 90:         begin
 91:           server=Config.resolve_server(server)
 92:           xfr = do_transfer(zone, server)
 93:           break
 94:         rescue Exception => exception
 95:         end
 96:       end
 97:       if (xfr == nil && exception != nil)
 98:         raise exception
 99:       end
100:       return xfr
101:     end
tsig=(*args) click to toggle source

Sets the TSIG to sign the zone transfer with. Pass in either a Dnsruby::RR::TSIG, or a key_name and key (or just a key) Pass in nil to stop tsig signing.

  • res.tsig=(tsig_rr)

  • res.tsig=(key_name, key)

  • res.tsig=nil # Don’t sign the transfer

    # File lib/Dnsruby/zone_transfer.rb, line 41
41:     def tsig=(*args)
42:       @tsig = SingleResolver.get_tsig(args)
43:     end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.