40 lines
		
	
	
	
		
			973 B
		
	
	
	
		
			Crystal
		
	
	
	
	
	
			
		
		
	
	
			40 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)
 |