From 98aa103a69c069a6bda9d94014ac2dc0e45e5f5d Mon Sep 17 00:00:00 2001 From: Alexandr Date: Fri, 27 Nov 2020 01:17:36 +0700 Subject: [PATCH] added _get_second_level_domain allows to supply a 3-leveled domain to certbot --- certbot_dns_godaddy/dns_godaddy.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/certbot_dns_godaddy/dns_godaddy.py b/certbot_dns_godaddy/dns_godaddy.py index 063d43d..3a15776 100644 --- a/certbot_dns_godaddy/dns_godaddy.py +++ b/certbot_dns_godaddy/dns_godaddy.py @@ -47,15 +47,17 @@ def _setup_credentials(self): ) def _perform(self, domain, validation_name, validation): - self._get_client().add_record(domain, { + second_level_domain = self._get_second_level_domain(domain) + self._get_client().add_record(second_level_domain, { 'type': 'TXT', - 'name': self._unsuffix(validation_name, f'.{domain}'), + 'name': self._unsuffix(validation_name, f'.{second_level_domain}'), 'data': validation, 'ttl': self.ttl }) def _cleanup(self, domain, validation_name, validation): - self._get_client().delete_records(domain, self._unsuffix(validation_name, f'.{domain}'), record_type='TXT') + second_level_domain = self._get_second_level_domain(domain) + self._get_client().delete_records(second_level_domain, self._unsuffix(validation_name, f'.{second_level_domain}'), record_type='TXT') def _get_client(self) -> Client: if not self._client: @@ -63,6 +65,13 @@ def _get_client(self) -> Client: self._client = Client(account) return self._client + def _get_second_level_domain(self, domain): + """ + In case of a certificate for subdomain (a.b.com), GoDaddy would not find it - we have to change 2nd level domain (b.com) + This method returns only 2 top levels of given domain for godadddypy to work on. + """ + return '.'.join(domain.split('.')[-2:]) + def _unsuffix(self, record: str, suffix: str): """ GoDaddy wants to have only the first part of the domain record (so for a.b.com, for domain b.com, only 'a'. """