certalert-bot/certstream_consumer.py

44 lines
863 B
Python
Raw Normal View History

2020-04-22 01:36:22 +02:00
import redis
import json
r = redis.Redis()
count = 0
rules = {}
while True:
if count % 1000 == 0:
count = 0
todel = 1
while (toadd := r.lpop('toadd')) is not None:
toadd = json.loads(toadd.decode('ascii'))
rules[toadd['id']] = toadd['value']
while (todel := r.lpop('todel')) is not None:
try:
del rules[todel.decode('ascii')]
except:
pass
domain = r.blpop('certstream')[1].decode('ascii')
for rule in rules.values():
notify = False
if rule['t'] == 0:
if rule['v'] in domain:
notify = True
elif rule['t'] == 1:
if domain.startswith(rule['v']):
notify = True
elif rule['t'] == 2:
if domain.endswith(rule['v']):
notify = True
if notify:
print(domain)
r.rpush('notifications', json.dumps({"domain": domain, "chats": rule['c']}))
count += 1