Files
nixos-config/nixos/server/dyndns/dyndns.py
T

35 lines
928 B
Python

from nc_dnsapi import Client
from dotenv import dotenv_values
import sys, urllib3
if len(sys.argv) != 2:
raise Exception("Something funky is going on with argv")
dotenv_path = sys.argv[1]
secrets = dotenv_values(dotenv_path)
CUSTOMER = secrets["NC_CUSTOMER"]
API_PASSWORD = secrets["NC_API_PASSWORD"]
API_KEY = secrets["NC_API_KEY"]
DOMAIN = secrets["NC_DOMAIN"]
ip = urllib3.request("GET", "https://api.ipify.org").data.decode()
with Client(CUSTOMER, API_KEY, API_PASSWORD) as api:
to_be_updated = []
records = api.dns_records(DOMAIN)
for record in records:
if record.type in ["A", "AAAA"] and record.destination != ip:
record.destination = ip
to_be_updated.append(record)
if to_be_updated:
api.update_dns_records(DOMAIN, to_be_updated)
zone = api.dns_zone(DOMAIN)
if zone.ttl != 300:
zone.ttl = 300
api.update_dns_zone(DOMAIN, zone)