diff --git a/epp/src/epp-create.php b/epp/src/epp-create.php index 7224569..21c3d08 100644 --- a/epp/src/epp-create.php +++ b/epp/src/epp-create.php @@ -470,11 +470,10 @@ function processHostCreate($conn, $db, $xml, $clid, $database_type, $trans) { $nsArr[$addr_type][$addr] = $addr; } + $tlds = $db->query("SELECT tld FROM domain_tld")->fetchAll(PDO::FETCH_COLUMN); $internal_host = false; - - $query = "SELECT tld FROM domain_tld"; - foreach ($db->query($query) as $row) { - if (preg_match("/" . preg_quote(strtoupper($row['tld']), '/') . "$/i", $hostName)) { + foreach ($tlds as $tld) { + if (str_ends_with($hostName, strtolower($tld))) { $internal_host = true; break; } @@ -1031,18 +1030,14 @@ function processDomainCreate($conn, $db, $xml, $clid, $database_type, $trans, $m } // Check if the host is internal or external + $tlds = $db->query("SELECT tld FROM domain_tld")->fetchAll(PDO::FETCH_COLUMN); $internal_host = false; - $stmt = $db->prepare("SELECT tld FROM domain_tld"); - $stmt->execute(); - while ($tld = $stmt->fetchColumn()) { - $tld = strtoupper($tld); - $escapedTld = preg_quote($tld, '/'); - if (preg_match("/$escapedTld$/i", $hostName)) { + foreach ($tlds as $tld) { + if (str_ends_with($hostName, strtolower($tld))) { $internal_host = true; break; } } - $stmt->closeCursor(); if ($internal_host) { if (preg_match('/\.' . preg_quote($domainName, '/') . '$/i', $hostName)) { diff --git a/epp/src/epp-update.php b/epp/src/epp-update.php index edf92bf..d042a41 100644 --- a/epp/src/epp-update.php +++ b/epp/src/epp-update.php @@ -928,17 +928,14 @@ function processHostUpdate($conn, $db, $xml, $clid, $database_type, $trans) { return; } } else { + $tlds = $db->query("SELECT tld FROM domain_tld")->fetchAll(PDO::FETCH_COLUMN); $internal_host = false; - $stmt = $db->prepare("SELECT tld FROM domain_tld"); - $stmt->execute(); - while ($row = $stmt->fetch()) { - $tld = preg_quote(strtolower($row['tld']), '/'); - if (preg_match("/$tld\$/i", strtolower($chg_name))) { + foreach ($tlds as $tld) { + if (str_ends_with(strtolower($chg_name), strtolower($tld))) { $internal_host = true; break; } } - $stmt->closeCursor(); if ($internal_host) { sendEppError($conn, $db, 2005, 'Out-of-bailiwick change not allowed: host must be external to registry-managed domains', $clTRID, $trans);