import os class Zone: def __init__(self, entries, program): self.entries = entries self.program = program if not os.path.exists('{0}/zones'.format(self.program)): os.makedirs('{0}/zones'.format(self.program)) def zones(self): for entry in self.entries: with open('{0}/zones/{z.domain}'.format(self.program, z=entry), 'w') as f: f.write('$ORIGIN {z.domain}.\n'.format(z=entry)) f.write('$TTL 86400\n') f.write('@\t\tIN\t\tSOA\t\tdns.master.test.\t\thost.master.test. (\n') f.write('\t\t\t\t\t\t20200327\n') f.write('\t\t\t\t\t\t21600\n') f.write('\t\t\t\t\t\t3600\n') f.write('\t\t\t\t\t\t604800\n') f.write('\t\t\t\t\t\t86400 )\n') f.write('\n') f.write('\t\tIN\t\tNS\t\tdns.master.test.\n') f.write('\t\tIN\t\tA\t\t{z.content}\n'.format(z=entry)) for record in entry.subdomains: if record.type == 'A': f.write('{z.domain}\tIN\t\tA\t\t{z.content}\n'.format(z=record)) def named(self, dnssec): with open('{0}/named.conf.local'.format(self.program), 'w') as f: for entry in self.entries: f.write('zone\t \"{z.domain}\"\t{{\n'.format(z=entry)) f.write('\t\ttype master;\n') if dnssec: f.write('\t\tfile\t\"/etc/{0}/zones/{z.domain}.signed\";\n'.format(self.program, z=entry)) else: f.write('\t\tfile\t\"/etc/{0}/zones/{z.domain}\";\n'.format(self.program, z=entry)) f.write('};\n') f.write('\n')