Class: Zonesync::Zonefile::Zone

Inherits:
Object
  • Object
show all
Defined in:
lib/zonesync/zonefile.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(entries, alternate_origin = nil) ⇒ Zone

Returns a new instance of Zone.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/zonesync/zonefile.rb', line 25

def initialize(entries, alternate_origin = nil)
  alternate_origin ||= "."
  @records = []
  @vars = {"origin" => alternate_origin, :last_host => "."}
  entries.each do |e|
    case e.parse_type
    when :variable
      key = e.name.text_value.downcase
      @vars[key] = case key
      when "ttl"
        e.value.text_value.to_i
      else
        e.value.text_value
      end
    when :soa
      @records << SOA.new(@vars, e)
    when :record
      case e.record_type
      when "A" then @records << A.new(@vars, e)
      when "AAAA" then @records << AAAA.new(@vars, e)
      when "CAA" then @records << CAA.new(@vars, e)
      when "CNAME" then @records << CNAME.new(@vars, e)
      when "MX" then @records << MX.new(@vars, e)
      when "NAPTR" then @records << NAPTR.new(@vars, e)
      when "NS" then @records << NS.new(@vars, e)
      when "PTR" then @records << PTR.new(@vars, e)
      when "SRV" then @records << SRV.new(@vars, e)
      when "SPF" then @records << SPF.new(@vars, e)
      when "SSHFP" then @records << SSHFP.new(@vars, e)
      when "TXT" then @records << TXT.new(@vars, e)
      when "SOA" then
        # No-op
      else
        raise UnknownRecordType, "Unknown record type: #{e.record_type}"
      end
    end
  end
end

Instance Attribute Details

#originObject (readonly)

Returns the value of attribute origin.



22
23
24
# File 'lib/zonesync/zonefile.rb', line 22

def origin
  @origin
end

#recordsObject (readonly)

Returns the value of attribute records.



23
24
25
# File 'lib/zonesync/zonefile.rb', line 23

def records
  @records
end

Instance Method Details

#records_of(kl) ⇒ Object



68
69
70
# File 'lib/zonesync/zonefile.rb', line 68

def records_of(kl)
  @records.select { |r| r.instance_of? kl }
end

#soaObject



64
65
66
# File 'lib/zonesync/zonefile.rb', line 64

def soa
  records_of(SOA).first
end