diff --git a/ddns_updater.py b/ddns_updater.py index 9240419..52a5e9f 100644 --- a/ddns_updater.py +++ b/ddns_updater.py @@ -38,14 +38,20 @@ def main(hostname, url, username, password): click.echo('Updating DNS for ' + hostname) (directadmin_zone, directadmin_name) = get_zone_and_name(hostname) - da_client = get_directadmin_client(url, username, password) + da_client = "" + try: + da_client = get_directadmin_client(url, username, password) + except DirectAdminClientException as e: + click.echo(e) + exit(1) current_ip = requests.get('https://icanhazip.com').text.strip() hostname_resolves_to = socket.gethostbyname(hostname).strip() - click.echo(current_ip) - click.echo(hostname_resolves_to) + click.echo("Current External IP: {}".format(current_ip)) + click.echo("Hostname resolves to: {}".format(hostname_resolves_to)) if current_ip != hostname_resolves_to: + click.echo("Current IP has changed, updating...") try: response = da_client.update_dns_record(directadmin_zone, "A", diff --git a/lib/directadmin.py b/lib/directadmin.py index 8efe3e1..b971ee4 100644 --- a/lib/directadmin.py +++ b/lib/directadmin.py @@ -30,9 +30,6 @@ class DirectAdminClient: response = self.login_test() except DirectAdminClientException as e: raise e - - - def make_request(self, endpoint, data=None): response = None # Empty response variable @@ -69,11 +66,9 @@ class DirectAdminClient: def login_test(self): r = self.make_request('CMD_API_LOGIN_TEST') - response = parse_qs(r.read().decode('utf8'), - keep_blank_values=0, - strict_parsing=1) - - return self.__process_response__(response) + if "" in r.read().decode('utf8'): + raise DirectAdminClientException('Not Logged in! Check Username and Password/Login Key') + return r.getheaders()[0][1] def get_domain_list(self): r = self.make_request('CMD_API_SHOW_DOMAINS')