root/lib/cyborghood-mapmaker/interface/_zone/0_base.rb @ 6780cf13
4761cd13 | Marc Dequènes (Duck) | zone = Services::DNS::Zone.new(node_name)
|
|
on_request do |request|
|
|||
request.reply.results = {
|
|||
:master => zone.master?,
|
|||
:signed => zone.signed?,
|
|||
:serial => zone.serial_in_dns
|
|||
}
|
|||
if zone.master?
|
|||
request.reply.results.merge!({
|
|||
:serial_in_zone_file => zone.serial_in_zone_file,
|
|||
:serial_in_signed_zone_file => zone.serial_in_signed_zone_file
|
|||
})
|
|||
end
|
|||
end
|
|||
node "content" do
|
|||
on_request do |request|
|
|||
request.reply.results = {:content => zone.content}
|
|||
end
|
|||
end
|
|||
node "content=" do
|
|||
on_request do |request|
|
|||
content = request.args.shift
|
|||
if content.empty?
|
|||
request.errors << "Zone content missing"
|
|||
return
|
|||
end
|
|||
zone.content = content
|
|||
if zone.changed?
|
|||
check_result = zone.check
|
|||
if check_result[:ok]
|
|||
request.reply.warnings = check_result[:warnings]
|
|||
# zone signer automatically handles serial bump
|
|||
if check_result[:serial] > zone.serial or zone.signed?
|
|||
zone.save
|
|||
zone.activate
|
|||
else
|
|||
request.reply.errors << _("Zone serial is not superior to current serial.")
|
|||
end
|
|||
else
|
|||
request.reply.errors = check_result[:errors]
|
|||
zone.cancel_changes
|
|||
end
|
|||
else
|
|||
request.reply.warnings << _("Zone is unmodified (same content)")
|
|||
zone.cancel_changes
|
|||
end
|
|||
end
|
|||
end
|