diff --git a/powerdnsadmin/lib/utils.py b/powerdnsadmin/lib/utils.py index 9a528dd..769587e 100644 --- a/powerdnsadmin/lib/utils.py +++ b/powerdnsadmin/lib/utils.py @@ -238,24 +238,22 @@ class customBoxes: } order = ["reverse", "ip6arpa", "inaddrarpa"] -def pretty_domain_name(value): - """ - Display domain name in original format. - If it is IDN domain (Punycode starts with xn--), do the - idna decoding. - Note that any part of the domain name can be individually punycoded - """ - if isinstance(value, str): - if value.startswith('xn--') \ - or value.find('.xn--') != -1: - try: - return to_idna(value, 'decode') - except: - raise Exception('Cannot decode IDN domain') - else: - return value - else: - raise Exception('Require the Punycode in string format') +def pretty_domain_name(domain_name): + # Add a debugging statement to print out the domain name + print("Received domain name:", domain_name) + + # Check if the domain name is encoded using Punycode + if domain_name.endswith('.xn--'): + try: + # Decode the domain name using the idna library + domain_name = idna.decode(domain_name) + except Exception as e: + # If the decoding fails, raise an exception with more information + raise Exception('Cannot decode IDN domain: {}'.format(e)) + + # Return the "pretty" version of the domain name + return domain_name + def to_idna(value, action): splits = value.split('.')