import datetime import logging import MySQLdb as m import dns.resolver def read_config(): return (['example.com'],'localhost',3306,'test','testpass','pdns','wile') def main(): (zones, host, port, username, password, database, myname) = read_config() db = m.connect(host, username, password, database) for zone in zones: logging.debug(f"checking zone {zone}") # try to resolve dnskey.{zone} on all nameservers # dammit, my testserver is running on a weird port r = dns.resolver.Resolver() nsarr = ['127.0.0.1:10053'] expected = None for ns in nsarr: # r.nameservers = [ns] answer = r.resolve(qname=zone, rdtype='DNSKEY', tcp=False, search=ns) print(f"{answer=}") if not expected: expected = answer.rrset.to_text() print(f"set {expected=}") else: if answer.rrset.to_text() != expected: print(f"{answer.rrset.to_text()=} differs from {expected=}") # I'm very confident this is more complicated than it needs to be... db.query(f"""SELECT id,content FROM records WHERE type='SOA' AND name='{zone}'""") result = db.store_result() row = result.fetch_row() (id,content) = row[0] carr = content.split() newdatestr = datetime.datetime.today().strftime("%Y%m%d01") if newdatestr[:8] == carr[2][:8]: count = int(carr[2][8:]) newcount = count + 1 newdatestr = f"{newdatestr[:8]}{newcount:02d}" carr[2] = newdatestr db.query(f"""UPDATE records SET content = '{' '.join(carr)}' WHERE id={id}""") db.commit() if __name__ == "__main__": main()