diff options
| author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2024-04-11 11:17:58 -0600 |
|---|---|---|
| committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2024-04-11 11:17:58 -0600 |
| commit | 702cb85df8798954737c93a4bd978d9a711ed343 (patch) | |
| tree | eaf970cd180518501b09926884b25f3f7a7ceea9 /main.py | |
| parent | 06926fd7865196816c04b21a368ab8595b30228f (diff) | |
| download | hatecomputers-dns-updater-702cb85df8798954737c93a4bd978d9a711ed343.tar.gz hatecomputers-dns-updater-702cb85df8798954737c93a4bd978d9a711ed343.zip | |
add acme script
Diffstat (limited to 'main.py')
| -rwxr-xr-x[-rw-r--r--] | main.py | 47 |
1 files changed, 39 insertions, 8 deletions
@@ -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") |
