From 0af3338cab6992ef1b1df52700f0d318b24944a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Wed, 17 Sep 2025 13:15:50 +0200 Subject: [PATCH] Improve extensibility of DNS validation --- src/Appwrite/Platform/Modules/Proxy/Action.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/Appwrite/Platform/Modules/Proxy/Action.php b/src/Appwrite/Platform/Modules/Proxy/Action.php index 49e0e55146..daef09b5f0 100644 --- a/src/Appwrite/Platform/Modules/Proxy/Action.php +++ b/src/Appwrite/Platform/Modules/Proxy/Action.php @@ -14,6 +14,11 @@ use Utopia\Validator\IP; class Action extends PlatformAction { + protected function getDNSValidator(): string + { + return DNS::class; + } + /** * Verify or re-verify a rule * @@ -25,6 +30,8 @@ class Action extends PlatformAction */ public static function verifyRule(Document $rule, ?Log $log = null, ?string $verificationDomainAPI = null, ?string $verificationDomainFunction = null): void { + $dnsValidatorClass = $this->getDNSValidator(); + $domain = new Domain($rule->getAttribute('domain', '')); if (empty($domain->get())) { @@ -38,7 +45,7 @@ class Action extends PlatformAction // Ensure CAA won't block certificate issuance if (!empty(System::getEnv('_APP_DOMAIN_TARGET_CAA', ''))) { $validationStart = \microtime(true); - $validator = new DNS(System::getEnv('_APP_DOMAIN_TARGET_CAA', ''), DNS::RECORD_CAA); + $validator = new $dnsValidatorClass(System::getEnv('_APP_DOMAIN_TARGET_CAA', ''), DNS::RECORD_CAA); if (!$validator->isValid($domain->get())) { if (!\is_null($log)) { $log->addExtra('dnsTimingCaa', \strval(\microtime(true) - $validationStart)); @@ -84,7 +91,7 @@ class Action extends PlatformAction $mainValidator = null; // Validator to use for error description if (!is_null($targetCNAME)) { - $validator = new DNS($targetCNAME->get(), DNS::RECORD_CNAME); + $validator = new $dnsValidatorClass($targetCNAME->get(), DNS::RECORD_CNAME); $validators[] = $validator; if (\is_null($mainValidator)) { @@ -93,7 +100,7 @@ class Action extends PlatformAction } if ((new IP(IP::V4))->isValid(System::getEnv('_APP_DOMAIN_TARGET_A', ''))) { - $validator = new DNS(System::getEnv('_APP_DOMAIN_TARGET_A', ''), DNS::RECORD_A); + $validator = new $dnsValidatorClass(System::getEnv('_APP_DOMAIN_TARGET_A', ''), DNS::RECORD_A); $validators[] = $validator; if (\is_null($mainValidator)) { @@ -102,7 +109,7 @@ class Action extends PlatformAction } if ((new IP(IP::V6))->isValid(System::getEnv('_APP_DOMAIN_TARGET_AAAA', ''))) { - $validator = new DNS(System::getEnv('_APP_DOMAIN_TARGET_AAAA', ''), DNS::RECORD_AAAA); + $validator = new $dnsValidatorClass(System::getEnv('_APP_DOMAIN_TARGET_AAAA', ''), DNS::RECORD_AAAA); $validators[] = $validator; if (\is_null($mainValidator)) {