From 09c2f90bf528a297572b11d7305bcd774d5c4f6a Mon Sep 17 00:00:00 2001 From: Anthony Wang Date: Thu, 21 Jul 2022 14:26:39 -0500 Subject: [PATCH] Don't update data['name'] if root domain --- porkbun-ddns.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/porkbun-ddns.py b/porkbun-ddns.py index 40b7a26..2f18f44 100755 --- a/porkbun-ddns.py +++ b/porkbun-ddns.py @@ -15,30 +15,32 @@ endpoint_ipv4 = 'https://api-ipv4.porkbun.com/api/json/v3/' parser = ArgumentParser() parser.add_argument('config', help='path to config file') args = parser.parse_args() -config = load(open(args.config)) -if 'name' not in config: - config['name'] = config['domain'] +data = load(open(args.config)) +if 'name' in data: + domain = data['name'] + '.' + data['domain'] +else: + domain = data['domain'] def api(url): """Make a request to the Porkbun API""" - return loads(post(url, dumps(config)).text) + return loads(post(url, dumps(data)).text) def edit_record(id, ip): """Edit a A or AAAA record to point to a new IP address""" - print('Updating ' + config['domain'] + ' to ' + str(ip)) + print('Updating ' + data['domain'] + ' to ' + str(ip)) - config['type'] = 'A' if ip.version == 4 else 'AAAA' - config['content'] = str(ip) - return api(endpoint + 'dns/edit/' + config['domain'] + '/' + id) + data['type'] = 'A' if ip.version == 4 else 'AAAA' + data['content'] = str(ip) + return api(endpoint + 'dns/edit/' + data['domain'] + '/' + id) # Update records -for record in api(endpoint + 'dns/retrieve/' + config['domain'])['records']: - if record['name'] == config['name'] and record['type'] in 'AAAA': +for record in api(endpoint + 'dns/retrieve/' + data['domain'])['records']: + if record['name'] == domain and record['type'] in 'AAAA': ip = ip_address(api((endpoint_ipv4 if record['type'] == 'A' else endpoint) + 'ping')['yourIp']) if not str(ip) == record['content']: print(edit_record(record['id'], ip))