aboutsummaryrefslogtreecommitdiff
path: root/main.py
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2024-04-11 11:17:58 -0600
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2024-04-11 11:17:58 -0600
commit702cb85df8798954737c93a4bd978d9a711ed343 (patch)
treeeaf970cd180518501b09926884b25f3f7a7ceea9 /main.py
parent06926fd7865196816c04b21a368ab8595b30228f (diff)
downloadhatecomputers-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.py47
1 files changed, 39 insertions, 8 deletions
diff --git a/main.py b/main.py
index 98cf488..8693c9d 100644..100755
--- 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")