chg: [pdns] expiration of specific record type added
parent
4a0b2c81c5
commit
94042a198e
|
@ -105,31 +105,46 @@ while (True):
|
||||||
if rdns['q'] and rdns['type']:
|
if rdns['q'] and rdns['type']:
|
||||||
for y in expirations:
|
for y in expirations:
|
||||||
if y[0] == rdns['type']:
|
if y[0] == rdns['type']:
|
||||||
expiration=y[1]
|
expiration=y[1]
|
||||||
else:
|
|
||||||
expiration=None
|
|
||||||
if rdns['type'] == '16':
|
if rdns['type'] == '16':
|
||||||
rdns['v'] = rdns['v'].replace("\"", "", 1)
|
rdns['v'] = rdns['v'].replace("\"", "", 1)
|
||||||
query = "r:{}:{}".format(rdns['q'],rdns['type'])
|
query = "r:{}:{}".format(rdns['q'],rdns['type'])
|
||||||
logger.debug('redis sadd: {} -> {}'.format(query,rdns['v']))
|
logger.debug('redis sadd: {} -> {}'.format(query,rdns['v']))
|
||||||
r.sadd(query, rdns['v'])
|
r.sadd(query, rdns['v'])
|
||||||
if expiration:
|
if expiration:
|
||||||
|
logger.debug("Expiration {} {}".format(expiration, query))
|
||||||
r.expire(query, expiration)
|
r.expire(query, expiration)
|
||||||
res = "v:{}:{}".format(rdns['v'], rdns['type'])
|
res = "v:{}:{}".format(rdns['v'], rdns['type'])
|
||||||
logger.debug('redis sadd: {} -> {}'.format(res,rdns['q']))
|
logger.debug('redis sadd: {} -> {}'.format(res,rdns['q']))
|
||||||
r.sadd(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'])
|
firstseen = "s:{}:{}:{}".format(rdns['q'], rdns['v'], rdns['type'])
|
||||||
if not r.exists(firstseen):
|
if not r.exists(firstseen):
|
||||||
r.set(firstseen, rdns['timestamp'])
|
r.set(firstseen, rdns['timestamp'])
|
||||||
logger.debug('redis set: {} -> {}'.format(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'])
|
lastseen = "l:{}:{}:{}".format(rdns['q'], rdns['v'], rdns['type'])
|
||||||
last = r.get(lastseen)
|
last = r.get(lastseen)
|
||||||
if last is None or int(last) < int(rdns['timestamp']):
|
if last is None or int(last) < int(rdns['timestamp']):
|
||||||
r.set(lastseen, rdns['timestamp'])
|
r.set(lastseen, rdns['timestamp'])
|
||||||
logger.debug('redis set: {} -> {}'.format(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'])
|
occ = "o:{}:{}:{}".format(rdns['q'], rdns['v'], rdns['type'])
|
||||||
r.incr(occ, amount=1)
|
r.incr(occ, amount=1)
|
||||||
|
if expiration:
|
||||||
|
logger.debug("Expiration {} {}".format(expiration, query))
|
||||||
|
r.expire(occ, expiration)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# TTL, Class, DNS Type distribution stats
|
# TTL, Class, DNS Type distribution stats
|
||||||
|
|
Loading…
Reference in New Issue