From 702cb85df8798954737c93a4bd978d9a711ed343 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Thu, 11 Apr 2024 11:17:58 -0600 Subject: add acme script --- main.py | 47 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 8 deletions(-) mode change 100644 => 100755 main.py (limited to 'main.py') diff --git a/main.py b/main.py old mode 100644 new mode 100755 index 98cf488..8693c9d --- a/main.py +++ b/main.py @@ -1,14 +1,37 @@ +#!/usr/bin/env python3 + +import os import json import logging +import time from updater.adapter import HatecomputersDNSAdapter +from updater.utils import record_transformer from args import get_args -def sync_records(adapter, records_path): - records_file = open(records_path, "r") - dns_records = json.load(records_file) - adapter.post_records(dns_records) +def certbot_mode(args, dns_api_adapter, record_transformer): + domain = args.certbot_domain + if domain.startswith("*."): + domain = domain[2:] + logging.info(f"processing domain {domain}") + + record = { + "ttl": 60, + "name": "_acme-challenge." + domain, + "type": "TXT", + "content": args.certbot_validation, + } + record = record_transformer(record) + logging.info(f"creating record {record}") + dns_api_adapter.post_record(record) + + logging.info( + f"eeping out for {args.dns_propogate_time}s, to allow DNS propogation. look at this cute little guy 🐢 until then!!" + ) + time.sleep(args.dns_propogate_time) + + logging.info(f"updating record for {domain} with {args.certbot_validation}") if __name__ == "__main__": @@ -17,10 +40,18 @@ if __name__ == "__main__": logging.root.setLevel(args.log_level) api_key = open(args.api_key_file, "r").read().strip() - adapter = HatecomputersDNSAdapter(args.endpoint, api_key) + dns_api_adapter = HatecomputersDNSAdapter(args.endpoint, api_key) - if args.sync: - sync_records(adapter, args.records_file) + if args.create: + records_file = open(args.records_file, "r") + dns_records = json.load(records_file) + dns_api_adapter.post_records(dns_records) if args.certbot: - logging.info("certbot mode") + certbot_mode( + args, + dns_api_adapter, + record_transformer(args.public_suffixes), + ) + + logging.info("done") -- cgit v1.3