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 3600.to_u32, # TTL "ns0.#{domain}.", # Master Name Server for the zone "dnsmaster.#{domain}.", # admin email address 2024112500.to_u64, # serial 3600.to_u64, # refresh 600.to_u64, # retry 2419200.to_u64, # expire 600.to_u64 # minimum TTL # NS: name ttl target zone << DSZ::NS.new "#{domain}.", 3600.to_u32, "ns0.karchnu.fr." zone << DSZ::NS.new "#{domain}.", 3600.to_u32, "ns1.karchnu.fr." # All default values are read-only (by default). # Still, some dedicated messages can change some of these values, but the default behavior is to protect my SANITY. # DO NOT ALLOW USERS TO MESS WITH IMPORTANT VALUES UNLESS YOU CHECK IT INTENSIVELY. zone.resources.each do |rr| rr.readonly = true end File.write("#{domain}.json", zone.to_json)