#!/usr/bin/python3
# (C) 2021 Peter Varkoly <pvarkoly@cephalix.eu> Nuremberg, Germany All rights reserved
#

import os
import re
import cranixconfig
import socket

regex = re.compile('^[a-zA-Z0-9\.\-]+$')
lists = cranixconfig.CRANIX_UNBOUND_LISTS.split()
proxy = cranixconfig.CRANIX_PROXY

white = []

with open('/var/lib/squidGuard/db/custom/good/domains') as f:
    for line in f.readlines():
        white.append(line.strip())

with open('/var/lib/squidGuard/db/custom/cephalix/domains') as f:
    for line in f.readlines():
        white.append(line.strip())

with open('/etc/unbound/local.d/bad.conf','w') as out:
    for l in lists:
        try:
            with open('/var/lib/squidGuard/db/BL/{0}/domains'.format(l.replace('-','/'))) as f:
                for line in f.readlines():
                    lin = line.strip()
                    try:
                        socket.inet_aton(lin)
                    except:
                        if regex.match(lin) and lin not in white:
                            out.write("local-zone: \"{0}\" redirect\n".format(lin))
                            out.write("local-data: \"{0} A {1}\"\n".format(lin,proxy))
        except FileNotFoundError:
            next

    try:
        with open('/var/lib/squidGuard/db/custom/bad/domains') as f:
            for line in f.readlines():
                lin = line.strip()
                if regex.match(lin):
                    out.write("local-zone: \"{0}\" redirect\n".format(lin))
                    out.write("local-data: \"{0} A {1}\"\n".format(lin,proxy))
    except FileNotFoundError:
        pass

os.system('/usr/bin/systemctl restart unbound')

