12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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
-
|