#!/usr/bin/python3 import yaml, os.path, sys conf_file = '/etc/knot/knot.conf' if len(sys.argv) < 2 else sys.argv[1] ip_fields = ['listen', 'address', 'via', 'whitelist', 'network'] try: conf = yaml.load(open(conf_file, 'r')) except (yaml.scanner.ScannerError, yaml.parser.ParserError): conf = False if not conf: import io conf_io = io.StringIO() with open(conf_file) as f: for line in f: if line.split(':')[0].strip() not in ip_fields: conf_io.write(line) conf_io.seek(0) try: conf = yaml.load(conf_io) except (yaml.scanner.ScannerError, yaml.parser.ParserError): sys.exit(1) dirs = set() # if we have valid yaml use it if "template" in conf and conf["template"]: for template in conf["template"]: if "kasp-db" in template: kasp_db = template["kasp-db"] else: continue if not os.path.isabs(kasp_db): if "storage" in template: kasp_db = os.path.join(template["storage"], kasp_db) else: continue dirs.add(kasp_db) if "zone" in conf and conf["zone"]: for domain in conf["zone"]: if "kasp-db" in domain: kasp_db = domain["kasp-db"] else: continue if not os.path.isabs(kasp_db): if "storage" in kaspdomain: kasp_db = os.path.join(domain["storage"], kasp_db) else: continue dirs.add(kasp_db) for dir in dirs: print(dir)