35 lines
928 B
Python
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)
|