dnsmanager/tools/write-zone-file.cr

41 lines
973 B
Crystal

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 << DSZ::SOA.new "#{domain}.", # name
60.to_u32, # TTL
"ns0.some-example.com.", # Master Name Server for the zone
"john\.doe.#{domain}" # admin email address
zone << DSZ::NS.new "#{domain}.", 3600.to_u32, "ns1.some-example.com."
zone << DSZ::NS.new "#{domain}.", 3600.to_u32, "ns0.some-example.com."
zone << DSZ::A.new "www", 600.to_u32, "10.0.0.1"
zone << DSZ::A.new "www2", 600.to_u32, "10.0.0.2"
zone << DSZ::A.new "mail", 300.to_u32, "10.0.0.10"
zone << DSZ::CNAME.new "mail2", 600.to_u32, "www"
zone << DSZ::MX.new "mail", 300.to_u32, "mail", 10
zone << DSZ::MX.new "mail", 300.to_u32, "mail2", 5
File.write("#{domain}.json", zone.to_json)