class CertStreamThread(Thread): def __init__(self, q, *args, **kwargs): self.q = q self.c = CertStreamClient( self.process, skip_heartbeats=True, on_open=None, on_error=None) super().__init__(*args, **kwargs) def run(self): global THREAD_EVENT while not THREAD_EVENT.is_set(): cprint("Waiting for Certstream events - this could take a few minutes to queue up...", "yellow", attrs=["bold"]) self.c.run_forever() THREAD_EVENT.wait(10) def process(self, message, context): if message["message_type"] == "heartbeat": return if message["message_type"] == "certificate_update": all_domains = message["data"]["leaf_cert"]["all_domains"] if ARGS.skip_lets_encrypt and "Let's Encrypt" in message["data"]["chain"][0]["subject"]["aggregated"]: return for domain in set(all_domains): # cut the crap if not domain.startswith("*.")\ and "cloudflaressl" not in domain\ and "xn--" not in domain\ and domain.count("-") < 4\ and domain.count(".") < 4: for permutation in get_permutations(tldextract.extract(domain)): self.q.put(BUCKET_HOST % permutation)
class CertStreamThread(Thread): def __init__(self, q, *args, **kwargs): self.q = q self.c = CertStreamClient(self.process, skip_heartbeats=True, on_open=None, on_error=None) super().__init__(*args, **kwargs) def run(self): while True: cprint( "Waiting for Certstream events - this could take a few minutes to queue up...", "yellow", attrs=["bold"]) self.c.run_forever() time.sleep(10) def process(self, message, context): if message["message_type"] == "heartbeat": return if message["message_type"] == "certificate_update": all_domains = message["data"]["leaf_cert"]["all_domains"] if ARGS.skip_lets_encrypt and "Let's Encrypt" in message["data"][ "chain"][0]["subject"]["aggregated"]: return for domain in set(all_domains): # All the domains being extracted # Just put the domain in the list so we can process it later self.q.put(domain)
def __init__(self, q, *args, **kwargs): self.q = q self.c = CertStreamClient(self.process, skip_heartbeats=True, on_open=None, on_error=None) super().__init__(*args, **kwargs)
def process(self): c = CertStreamClient(self.callback, skip_heartbeats=True, on_open=None, on_error=None) c.run_forever()