Add tool to write zone file (in JSON).

This commit is contained in:
Philippe Pittoli 2023-05-07 04:11:19 +02:00
parent 41828a3f91
commit ad83a34437

35
tools/write-zone-file.cr Normal file
View File

@ -0,0 +1,35 @@
require "json"
require "../src/storage/zone.cr"
alias DSZ = DNSManager::Storage::Zone
#
# Create a zone file.
#
if ARGV.size < 1
puts "usage: domain"
exit 0
end
domain = ARGV[0]
zone = DSZ.new domain
#
# Add some values.
#
zone.resources << DSZ::A.new "www", 600.to_u32, "10.0.0.1"
zone.resources << DSZ::A.new "www2", 600.to_u32, "10.0.0.2"
zone.resources << DSZ::SOA.new "#{domain}.", # name
60.to_u32, # TTL
"IN", # target (??)
"ns0.some-example.com.", # Master Name Server for the zone
"john\.doe.#{domain}" # admin email address
zone.resources << DSZ::NS.new "#{domain}.", 3600.to_u32, "ns1.some-example.com."
zone.resources << DSZ::NS.new "#{domain}.", 3600.to_u32, "ns0.some-example.com."
File.write("#{domain}.json", zone.to_json)