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)
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
def destructo(file)
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
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
newdata - rrdata
end
@ -124,7 +136,7 @@ module PuppetBind
:ttl => linearray[1],
:rrclass => linearray[2],
:type => linearray[3],
:rrdata => linearray[4]
:rrdata => maybe_unquote(linearray[3], linearray[4])
}
end.select do |record|
record[:name] == "#{name}."