| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- import argparse
- import string
- import itertools
- from entry import entry
- from namebench import namebench
- from bind import Bind
- from pdns import Pdns
- from nsd import Nsd
- from knot import Knot
- from yadifa import Yadifa
- if __name__ == '__main__':
- parser = argparse.ArgumentParser(description='Generate fake DNS zonefiles and corresponding namebench file')
- parser.add_argument('--subdomains', type=bool, default=True, help='Generate subdomains too')
- parser.add_argument('--postfix', type=str, default='.test', help='Domain postfix eg .test or .com')
- parser.add_argument('--no-namebench', type=bool, default=False, help='Skip generation of namebench file')
- parser.add_argument('--no-zonefile', type=bool, default=False, help='Skip generation of zonefiles')
- parser.add_argument('--dnssec', type=bool, default=False, help='Prepare generation for DNSSEC')
- parser.add_argument('program', metavar='P', type=str, help='Program to generate (BIND, PDNS, NSD, KNOT, YADIFA, *ALL*)')
- parser.add_argument('domains', metavar='N', type=int, help='Number of domains to generate')
- args = parser.parse_args()
- if args.dnssec is not False:
- args.dnssec = True
- else:
- args.dnssec = False
- print(args)
- chars = list(string.ascii_lowercase)
- names = list(itertools.product(chars, repeat=4))
- entries = list()
- for i in range(0, args.domains):
- domain = ''.join(names[i]) + args.postfix
- record = entry(domain)
- if(args.subdomains):
- record.add_subdomain(entry('www', 'A', '127.0.0.1'))
- record.add_subdomain(entry('sub', 'A', '127.0.0.2'))
- entries.append(record)
- print('Generated {0} DNS domains'.format(len(entries)))
- if not args.no_namebench:
- print('Creating namebench file \'namebench.txt\'')
- nb = namebench()
- for record in entries:
- nb.generate_to_buffer(record)
- nb.write_buffer()
- if not args.no_zonefile:
- programs = {
- 'BIND': Bind(entries),
- 'PDNS': Pdns(entries),
- 'NSD': Nsd(entries),
- 'KNOT': Knot(entries),
- 'YADIFA': Yadifa(entries),
- }
- if args.program == 'ALL':
- for i in programs:
- print('Creating zones for {0}'.format(i))
- programs[i].named(args.dnssec)
- programs[i].zones()
- else:
- p = programs.get(args.program, 'UNKNOWN')
- if p != 'UNKNOWN':
- p.named(args.dnssec)
- p.zones()
- else:
- print('Unknown program {0}'.format(args.program))
- print('Done')
|