Automatic quote and unquote TXT and SPF

TXT and SPF record values have to be quoted in the nsupdate script in order to
preserve the integrity of the string.
This commit is contained in:
Nate Riffe 2015-05-19 14:29:33 -05:00
parent beaf69c2e5
commit f2593601e8

View File

@ -60,16 +60,28 @@ module PuppetBind
def accio(file) def accio(file)
rrdata_adds.each do |datum| rrdata_adds.each do |datum|
file.write "update add #{name}. #{resource[:ttl]} #{rrclass} #{type} #{datum}\n" file.write "update add #{name}. #{resource[:ttl]} #{rrclass} #{type} #{maybe_quote(type, datum)}\n"
end end
end end
def destructo(file) def destructo(file)
rrdata_deletes.each do |datum| rrdata_deletes.each do |datum|
file.write "update delete #{name}. #{ttl} #{rrclass} #{type} #{datum}\n" file.write "update delete #{name}. #{ttl} #{rrclass} #{type} #{maybe_quote(type, datum)}\n"
end end
end end
def quoted_type?(type)
%(TXT SPF).include?(type)
end
def maybe_quote(type, datum)
quoted_type?(type) ? "\"#{datum}\"" : datum
end
def maybe_unquote(type, datum)
quoted_type?(type) ? datum.gsub(/^\"(.*)\"$/, '\1') : datum
end
def rrdata_adds def rrdata_adds
newdata - rrdata newdata - rrdata
end end
@ -124,7 +136,7 @@ module PuppetBind
:ttl => linearray[1], :ttl => linearray[1],
:rrclass => linearray[2], :rrclass => linearray[2],
:type => linearray[3], :type => linearray[3],
:rrdata => linearray[4] :rrdata => maybe_unquote(linearray[3], linearray[4])
} }
end.select do |record| end.select do |record|
record[:name] == "#{name}." record[:name] == "#{name}."