From 94042a198e8c9141ac681ec4b417244744142940 Mon Sep 17 00:00:00 2001 From: Alexandre Dulaunoy Date: Mon, 1 Apr 2019 20:31:40 +0200 Subject: [PATCH] chg: [pdns] expiration of specific record type added --- bin/pdns-ingestion.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/bin/pdns-ingestion.py b/bin/pdns-ingestion.py index 52a474a..8e70ed6 100644 --- a/bin/pdns-ingestion.py +++ b/bin/pdns-ingestion.py @@ -105,31 +105,46 @@ while (True): if rdns['q'] and rdns['type']: for y in expirations: if y[0] == rdns['type']: - expiration=y[1] - else: - expiration=None + expiration=y[1] if rdns['type'] == '16': rdns['v'] = rdns['v'].replace("\"", "", 1) query = "r:{}:{}".format(rdns['q'],rdns['type']) logger.debug('redis sadd: {} -> {}'.format(query,rdns['v'])) r.sadd(query, rdns['v']) if expiration: + logger.debug("Expiration {} {}".format(expiration, query)) r.expire(query, expiration) res = "v:{}:{}".format(rdns['v'], rdns['type']) logger.debug('redis sadd: {} -> {}'.format(res,rdns['q'])) r.sadd(res, rdns['q']) + if expiration: + logger.debug("Expiration {} {}".format(expiration, query)) + r.expire(res, expiration) firstseen = "s:{}:{}:{}".format(rdns['q'], rdns['v'], rdns['type']) if not r.exists(firstseen): r.set(firstseen, rdns['timestamp']) logger.debug('redis set: {} -> {}'.format(firstseen, rdns['timestamp'])) + + if expiration: + logger.debug("Expiration {} {}".format(expiration, query)) + r.expire(firstseen, expiration) + lastseen = "l:{}:{}:{}".format(rdns['q'], rdns['v'], rdns['type']) last = r.get(lastseen) if last is None or int(last) < int(rdns['timestamp']): r.set(lastseen, rdns['timestamp']) logger.debug('redis set: {} -> {}'.format(lastseen, rdns['timestamp'])) + if expiration: + logger.debug("Expiration {} {}".format(expiration, query)) + r.expire(query, expiration) + occ = "o:{}:{}:{}".format(rdns['q'], rdns['v'], rdns['type']) r.incr(occ, amount=1) + if expiration: + logger.debug("Expiration {} {}".format(expiration, query)) + r.expire(occ, expiration) + # TTL, Class, DNS Type distribution stats