From 439995baafa6749b3a5bd7709ad3d45d9d512c8c Mon Sep 17 00:00:00 2001 From: Pinga <121483313+getpinga@users.noreply.github.com> Date: Sat, 23 Nov 2024 15:42:47 +0200 Subject: [PATCH] More bugfixes --- cp/app/Controllers/ApplicationsController.php | 10 ++++---- cp/app/Controllers/DomainsController.php | 24 +++++++++---------- cp/bootstrap/helper.php | 3 +++ epp/src/epp-create.php | 8 +++---- epp/src/helpers.php | 3 +++ 5 files changed, 27 insertions(+), 21 deletions(-) diff --git a/cp/app/Controllers/ApplicationsController.php b/cp/app/Controllers/ApplicationsController.php index 6207e19..0d4f185 100644 --- a/cp/app/Controllers/ApplicationsController.php +++ b/cp/app/Controllers/ApplicationsController.php @@ -69,18 +69,18 @@ class ApplicationsController extends Controller $nameservers = !empty($data['nameserver']) ? $data['nameserver'] : null; $nameserver_ipv4 = !empty($data['nameserver_ipv4']) ? $data['nameserver_ipv4'] : null; $nameserver_ipv6 = !empty($data['nameserver_ipv6']) ? $data['nameserver_ipv6'] : null; - + $authInfo = $data['authInfo'] ?? null; - - $parts = extractDomainAndTLD($domainName); - $label = $parts['domain']; - $domain_extension = $parts['tld']; $invalid_domain = validate_label($domainName, $db); if ($invalid_domain) { $this->container->get('flash')->addMessage('error', 'Error creating application: Invalid domain name'); return $response->withHeader('Location', '/application/create')->withStatus(302); } + + $parts = extractDomainAndTLD($domainName); + $label = $parts['domain']; + $domain_extension = $parts['tld']; $valid_tld = false; $result = $db->select('SELECT id, tld FROM domain_tld'); diff --git a/cp/app/Controllers/DomainsController.php b/cp/app/Controllers/DomainsController.php index baa46bc..88ca09f 100644 --- a/cp/app/Controllers/DomainsController.php +++ b/cp/app/Controllers/DomainsController.php @@ -157,19 +157,25 @@ class DomainsController extends Controller $nameservers = !empty($data['nameserver']) ? $data['nameserver'] : null; $nameserver_ipv4 = !empty($data['nameserver_ipv4']) ? $data['nameserver_ipv4'] : null; $nameserver_ipv6 = !empty($data['nameserver_ipv6']) ? $data['nameserver_ipv6'] : null; - + $dsKeyTag = isset($data['dsKeyTag']) ? (int)$data['dsKeyTag'] : null; $dsAlg = $data['dsAlg'] ?? null; $dsDigestType = isset($data['dsDigestType']) ? (int)$data['dsDigestType'] : null; $dsDigest = $data['dsDigest'] ?? null; - + $dnskeyFlags = $data['dnskeyFlags'] ?? null; $dnskeyProtocol = $data['dnskeyProtocol'] ?? null; $dnskeyAlg = $data['dnskeyAlg'] ?? null; $dnskeyPubKey = $data['dnskeyPubKey'] ?? null; - + $authInfo = $data['authInfo'] ?? null; - + $invalid_domain = validate_label($domainName, $db); + + if ($invalid_domain) { + $this->container->get('flash')->addMessage('error', 'Error creating domain: Invalid domain name'); + return $response->withHeader('Location', '/domain/create')->withStatus(302); + } + try { $parts = extractDomainAndTLD($domainName); } catch (\Exception $e) { @@ -179,12 +185,6 @@ class DomainsController extends Controller } $label = $parts['domain']; $domain_extension = $parts['tld']; - $invalid_domain = validate_label($domainName, $db); - - if ($invalid_domain) { - $this->container->get('flash')->addMessage('error', 'Error creating domain: Invalid domain name'); - return $response->withHeader('Location', '/domain/create')->withStatus(302); - } $valid_tld = false; $result = $db->select('SELECT id, tld FROM domain_tld'); @@ -759,9 +759,9 @@ class DomainsController extends Controller } else { $currentDateTime = new \DateTime(); $host_date = $currentDateTime->format('Y-m-d H:i:s.v'); - + if ($internal_host) { - if (strpos(strtolower($nameserver), strtolower($domainName)) !== false) { + if (str_ends_with(strtolower(trim($nameserver)), strtolower(trim($domainName)))) { $db->insert( 'host', [ diff --git a/cp/bootstrap/helper.php b/cp/bootstrap/helper.php index 0478770..602ff00 100644 --- a/cp/bootstrap/helper.php +++ b/cp/bootstrap/helper.php @@ -209,6 +209,9 @@ function validate_label($label, $db) { if (strlen($label) < 2) { return 'Total lenght of your domain must be greater then 2 characters'; } + if (strpos($label, '.') === false) { + return 'Invalid domain name format, must contain at least one dot (.)'; + } if (strpos($label, 'xn--') === false && preg_match("/(^-|^\.|-\.|\.-|--|\.\.|-$|\.$)/", $label)) { return 'Invalid domain name format, cannot begin or end with a hyphen (-)'; } diff --git a/epp/src/epp-create.php b/epp/src/epp-create.php index b5e608c..1cee527 100644 --- a/epp/src/epp-create.php +++ b/epp/src/epp-create.php @@ -640,10 +640,6 @@ function processDomainCreate($conn, $db, $xml, $clid, $database_type, $trans, $m } } - $parts = extractDomainAndTLD($domainName); - $label = $parts['domain']; - $domain_extension = $parts['tld']; - $invalid_domain = validate_label($domainName, $db); if ($invalid_domain) { @@ -651,6 +647,10 @@ function processDomainCreate($conn, $db, $xml, $clid, $database_type, $trans, $m return; } + $parts = extractDomainAndTLD($domainName); + $label = $parts['domain']; + $domain_extension = $parts['tld']; + $valid_tld = false; $stmt = $db->prepare("SELECT id, tld FROM domain_tld"); $stmt->execute(); diff --git a/epp/src/helpers.php b/epp/src/helpers.php index 53d35fb..0212b4e 100644 --- a/epp/src/helpers.php +++ b/epp/src/helpers.php @@ -191,6 +191,9 @@ function validate_label($label, $pdo) { if (strlen($label) < 2) { return 'Total length of your domain must be greater then 2 characters'; } + if (strpos($label, '.') === false) { + return 'Invalid domain name format, must contain at least one dot (.)'; + } if (strpos($label, 'xn--') === false && preg_match("/(^-|^\.|-\.|\.-|--|\.\.|-$|\.$)/", $label)) { return 'Invalid domain name format, cannot begin or end with a hyphen (-)'; }