Initial Source code version

This commit is contained in:
Frank Agerholm 2025-12-11 12:07:17 +01:00
commit d979374cbc
23 changed files with 2628 additions and 0 deletions

View file

@ -0,0 +1,37 @@
from app.workers.base_worker import BaseWorker
from app.job_registry import routing_key
from app.workers.utils import resolve_txt
class TLSRPTWorker(BaseWorker):
async def process(self, payload: dict, **meta) -> dict:
domain = payload.get('domain')
if not domain:
raise ValueError('payload.domain is required')
name = f"_smtp._tls.{domain}"
txts = await resolve_txt(name)
record = None
rua = []
for t in txts:
tl = t.lower()
if tl.startswith('v=tlsrptv1'):
record = t
# parse rua=mailto:... , mailto:...
parts = [p.strip() for p in t.split(';')]
for p in parts:
if p.strip().lower().startswith('rua='):
v = p.split('=',1)[1]
rua = [x.strip() for x in v.split(',') if x.strip()]
break
return {
'txt_record': record,
'rua': rua,
'enabled': record is not None,
}
async def main():
worker = TLSRPTWorker(routing_key("MailCheck", "TLSRPTCheck"), worker_id="tlsrpt-worker-1")
await worker.run()
if __name__ == '__main__':
import asyncio as _a
_a.run(main())