zone.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import os
  2. class Zone:
  3. def __init__(self, entries, program):
  4. self.entries = entries
  5. self.program = program
  6. if not os.path.exists('{0}/zones'.format(self.program)):
  7. os.makedirs('{0}/zones'.format(self.program))
  8. def zones(self):
  9. for entry in self.entries:
  10. with open('{0}/zones/{z.domain}'.format(self.program, z=entry), 'w') as f:
  11. f.write('$ORIGIN {z.domain}.\n'.format(z=entry))
  12. f.write('$TTL 86400\n')
  13. f.write('@\t\tIN\t\tSOA\t\tdns.master.test.\t\thost.master.test. (\n')
  14. f.write('\t\t\t\t\t\t20200327\n')
  15. f.write('\t\t\t\t\t\t21600\n')
  16. f.write('\t\t\t\t\t\t3600\n')
  17. f.write('\t\t\t\t\t\t604800\n')
  18. f.write('\t\t\t\t\t\t86400 )\n')
  19. f.write('\n')
  20. f.write('\t\tIN\t\tNS\t\tdns.master.test.\n')
  21. f.write('\t\tIN\t\tA\t\t{z.content}\n'.format(z=entry))
  22. for record in entry.subdomains:
  23. if record.type == 'A':
  24. f.write('{z.domain}\tIN\t\tA\t\t{z.content}\n'.format(z=record))
  25. def named(self, dnssec):
  26. with open('{0}/named.conf.local'.format(self.program), 'w') as f:
  27. for entry in self.entries:
  28. f.write('zone\t \"{z.domain}\"\t{{\n'.format(z=entry))
  29. f.write('\t\ttype master;\n')
  30. if dnssec:
  31. f.write('\t\tfile\t\"/etc/{0}/zones/{z.domain}.signed\";\n'.format(self.program, z=entry))
  32. else:
  33. f.write('\t\tfile\t\"/etc/{0}/zones/{z.domain}\";\n'.format(self.program, z=entry))
  34. f.write('};\n')
  35. f.write('\n')