diff --git a/modules/registrars/openprovider/OpenProvider/API/ApiHelper.php b/modules/registrars/openprovider/OpenProvider/API/ApiHelper.php index ea11526a..5571f6b0 100644 --- a/modules/registrars/openprovider/OpenProvider/API/ApiHelper.php +++ b/modules/registrars/openprovider/OpenProvider/API/ApiHelper.php @@ -417,10 +417,13 @@ public function getDns(Domain $domain): array { $args = [ 'name' => $domain->getFullName(), + 'provider' => $this->getActiveDnsProvider($domain), 'withHistory' => false, ]; - return $this->buildResponse($this->apiClient->call('retrieveZoneDnsRequest', $args)); + return $this->buildResponse( + $this->apiClient->call('retrieveZoneDnsRequest', $args) + ); } /** @@ -433,6 +436,7 @@ public function updateDnsRecords(Domain $domain, array $records): array { $args = [ 'name' => $domain->getFullName(), + 'provider' => $this->getActiveDnsProvider($domain), 'type' => 'master', 'records' => [ 'replace' => $records, @@ -471,8 +475,9 @@ public function removeDnsRecord(Domain $domain, array $record): array } $args = [ - 'name' => $zoneName, - 'type' => 'master', + 'name' => $zoneName, + 'provider' => $this->getActiveDnsProvider($domain), + 'type' => 'master', 'records' => [ 'remove' => [$payload], ], @@ -506,6 +511,7 @@ public function deleteDnsRecords(Domain $domain): array { $args = [ 'name' => $domain->getFullName(), + 'provider' => $this->getActiveDnsProvider($domain), ]; try { @@ -717,6 +723,31 @@ public function supportsDnssec(string $tld): bool } } + /** + * @param Domain $domain + * @return string + */ + private function getActiveDnsProvider(Domain $domain): string + { + try { + $domainData = $this->getDomain($domain); + + $nsGroup = strtolower((string) ($domainData['nsGroup'] ?? '')); + + if ( + filter_var($domainData['hasActiveSectigoZone'] ?? false, FILTER_VALIDATE_BOOLEAN) || + filter_var($domainData['isSectigoDnsEnabled'] ?? false, FILTER_VALIDATE_BOOLEAN) || + str_contains($nsGroup, 'sectigo') + ) { + return 'sectigo'; + } + + return 'openprovider'; + } catch (\Throwable $e) { + return 'openprovider'; // fallback + } + } + /** * @param ResponseInterface $response * @return array