From b3f3f34dbc5af41cfcee261539c65ee362b2e6dc Mon Sep 17 00:00:00 2001 From: Waqar Ahmed Date: Sat, 21 Dec 2024 18:20:18 +0500 Subject: [PATCH] Cleanup validation txt entry --- .../authenticators/truenas_connect.py | 14 +++++++++++--- .../middlewared/plugins/truenas_connect/urls.py | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/middlewared/middlewared/plugins/acme_protocol_/authenticators/truenas_connect.py b/src/middlewared/middlewared/plugins/acme_protocol_/authenticators/truenas_connect.py index be41119e78144..51b8507d45346 100644 --- a/src/middlewared/middlewared/plugins/acme_protocol_/authenticators/truenas_connect.py +++ b/src/middlewared/middlewared/plugins/acme_protocol_/authenticators/truenas_connect.py @@ -4,7 +4,7 @@ from middlewared.api.current import TrueNASConnectSchemaArgs from middlewared.plugins.truenas_connect.mixin import auth_headers -from middlewared.plugins.truenas_connect.urls import LECA_DNS_URL +from middlewared.plugins.truenas_connect.urls import LECA_DNS_URL, LECA_CLEANUP_URL from middlewared.service import CallError from .base import Authenticator @@ -50,5 +50,13 @@ def _perform_internal(self, domain, validation_name, validation_content): logger.debug('Successfully performed %r challenge for %r domain', self.NAME, domain) def _cleanup(self, domain, validation_name, validation_content): - # We don't have any API in place to clean existing TXT records for TNC yet - pass + logger.debug('Cleaning up %r challenge for %r domain', self.NAME, domain) + try: + requests.delete( + LECA_CLEANUP_URL, headers=auth_headers(self.attributes), timeout=30, data=json.dumps({ + 'hostnames': [validation_name], # We use validation name here instead of domain as Zack advised + }) + ) + except Exception: + # We do not make this fatal as it does not matter if we fail to clean-up + logger.debug('Failed to cleanup %r challenge for %r domain', self.NAME, domain, exc_info=True) diff --git a/src/middlewared/middlewared/plugins/truenas_connect/urls.py b/src/middlewared/middlewared/plugins/truenas_connect/urls.py index e78e8aba17304..f84497bdd06b3 100644 --- a/src/middlewared/middlewared/plugins/truenas_connect/urls.py +++ b/src/middlewared/middlewared/plugins/truenas_connect/urls.py @@ -7,5 +7,6 @@ ACCOUNT_SERVICE_URL = urllib.parse.urljoin(ACCOUNT_SERVICE_BASE_URL, 'v1/accounts/{account_id}/systems/{system_id}/') HOSTNAME_URL = urllib.parse.urljoin(ACCOUNT_SERVICE_URL, 'hostnames/') LECA_DNS_URL = 'https://leca-server.dev.ixsystems.net/v1/dns-challenge' +LECA_CLEANUP_URL = 'https://leca-server.dev.ixsystems.net/v1/hostnames' REGISTRATION_URI = urllib.parse.urljoin(BASE_URL, 'system/register') REGISTRATION_FINALIZATION_URI = urllib.parse.urljoin(ACCOUNT_SERVICE_BASE_URL, 'v1/systems/finalize')