summaryrefslogtreecommitdiffstats
path: root/debian/get_kaspdb
blob: 5562c1d03550b95c00f820cb3a631b4fcf54c670 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/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)