From b519db2f777d8a873798dda03b3f3ee1b7a05e61 Mon Sep 17 00:00:00 2001 From: Jonathan Chun Date: Tue, 27 Dec 2016 19:53:23 -0500 Subject: [PATCH] Parse IPv6 correctly Added ipaddress module to parse the IP addresses received from DNS to RFC1924 compliant strings. --- management/ssl_certificates.py | 2 ++ management/status_checks.py | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/management/ssl_certificates.py b/management/ssl_certificates.py index d7317aea..b5fbef36 100755 --- a/management/ssl_certificates.py +++ b/management/ssl_certificates.py @@ -6,6 +6,7 @@ import os, os.path, re, shutil from utils import shell, safe_domain_name, sort_domains import idna +import ipaddress # SELECTING SSL CERTIFICATES FOR USE IN WEB @@ -249,6 +250,7 @@ def get_certificates_to_provision(env, show_extended_problems=True, force_domain s = r.to_text() if isinstance(s, bytes): s = s.decode('utf-8') + s = str(ipaddress.ip_address(s)) return s # END HOTFIX diff --git a/management/status_checks.py b/management/status_checks.py index 06e1f6d6..2eb25071 100755 --- a/management/status_checks.py +++ b/management/status_checks.py @@ -10,6 +10,7 @@ import dns.reversename, dns.resolver import dateutil.parser, dateutil.tz import idna import psutil +import ipaddress from dns_update import get_dns_zones, build_tlsa_record, get_custom_dns_config, get_secondary_dns, get_custom_dns_records from web_update import get_web_domains, get_domains_with_a_records @@ -700,10 +701,11 @@ def query_dns(qname, rtype, nxdomain='[Not Set]', at=None): # BEGIN HOTFIX response_new = [] for r in response: - if isinstance(r.to_text(), bytes): - response_new.append(r.to_text().decode('utf-8')) - else: - response_new.append(r) + s = r.to_text() + if isinstance(s, bytes): + s = s.decode('utf-8') + s = str(ipaddress.ip_address(s)) + response_new.append(s) response = response_new # END HOTFIX