class AcmeNsupdate::Nsupdate
Public Class Methods
new(logger)
click to toggle source
# File lib/acme_nsupdate/nsupdate.rb, line 8 def initialize(logger) @logger = logger @commands = [] end
Public Instance Methods
add(label, type, data, ttl)
click to toggle source
# File lib/acme_nsupdate/nsupdate.rb, line 21 def add label, type, data, ttl @commands << "update add #{label} #{ttl} #{type} #{data}" end
del(label, type=nil, data=nil)
click to toggle source
# File lib/acme_nsupdate/nsupdate.rb, line 25 def del label, type=nil, data=nil @commands << "update del #{label}#{" #{type}" if type}#{" #{data}" if data}" end
send()
click to toggle source
# File lib/acme_nsupdate/nsupdate.rb, line 29 def send @logger.debug("Starting nsupdate:") Open3.popen3("nsupdate") do |stdin, stdout, stderr, wait_thr| @commands.each do |command| @logger.debug " #{command}" stdin.puts command end @logger.debug(" send") stdin.puts "send" stdin.close errors = stdout.readlines.map {|line| line[/^>\s*(.*)$/, 1].strip }.reject(&:empty?) errors.concat stderr.readlines.map(&:strip).reject(&:empty?) stdout.close stderr.close unless errors.empty? errors = errors.join(" ") @logger.error "DNS update transaction failed: #{errors}" @logger.info "Transaction:" @commands.each do |command| @logger.info " #{command}" end raise Error.new errors end end end
server(server)
click to toggle source
# File lib/acme_nsupdate/nsupdate.rb, line 13 def server server @commands << "server #{server}" end
tsig(name, key)
click to toggle source
# File lib/acme_nsupdate/nsupdate.rb, line 17 def tsig name, key @commands << "key #{name} #{key}" end