From c737147aae9e513a7fd44d48464a53d0b2158f4b Mon Sep 17 00:00:00 2001 From: Pinga <121483313+getpinga@users.noreply.github.com> Date: Thu, 25 Jan 2024 10:26:30 +0200 Subject: [PATCH] Fixed couple of IDN related bugs --- cp/app/Controllers/DomainsController.php | 1 + cp/app/Controllers/HostsController.php | 5 +++-- cp/resources/views/admin/domains/updateDomain.twig | 2 +- cp/resources/views/admin/hosts/updateHost.twig | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/cp/app/Controllers/DomainsController.php b/cp/app/Controllers/DomainsController.php index 31baef5..49b401a 100644 --- a/cp/app/Controllers/DomainsController.php +++ b/cp/app/Controllers/DomainsController.php @@ -1068,6 +1068,7 @@ class DomainsController extends Controller $csrfTokenValue = $this->container->get('csrf')->getTokenValue(); if (strpos($domain['name'], 'xn--') === 0) { + $domain['punycode'] = $domain['name']; $domain['name'] = idn_to_utf8($domain['name'], IDNA_NONTRANSITIONAL_TO_ASCII, INTL_IDNA_VARIANT_UTS46); } return view($response,'admin/domains/updateDomain.twig', [ diff --git a/cp/app/Controllers/HostsController.php b/cp/app/Controllers/HostsController.php index b390ca2..3db7dbb 100644 --- a/cp/app/Controllers/HostsController.php +++ b/cp/app/Controllers/HostsController.php @@ -386,6 +386,7 @@ class HostsController extends Controller [ $host['id'] ]); if (strpos($host['name'], 'xn--') === 0) { + $host['punycode'] = $host['name']; $host['name'] = idn_to_utf8($host['name'], IDNA_NONTRANSITIONAL_TO_ASCII, INTL_IDNA_VARIANT_UTS46); } return view($response,'admin/hosts/updateHost.twig', [ @@ -529,8 +530,8 @@ class HostsController extends Controller $hostname = idn_to_ascii($hostname, 0, INTL_IDNA_VARIANT_UTS46); } - // Regular expression for validating a hostname (simplified version) - $pattern = '/^([a-zA-Z0-9-]{1,63}\.){1,}[a-zA-Z]{2,63}$/'; + // Regular expression for validating a hostname + $pattern = '/^((xn--[a-zA-Z0-9-]{1,63}|[a-zA-Z0-9-]{1,63})\.){2,}(xn--[a-zA-Z0-9-]{2,63}|[a-zA-Z]{2,63})$/'; return preg_match($pattern, $hostname); } diff --git a/cp/resources/views/admin/domains/updateDomain.twig b/cp/resources/views/admin/domains/updateDomain.twig index 2a601fc..f4ccd60 100644 --- a/cp/resources/views/admin/domains/updateDomain.twig +++ b/cp/resources/views/admin/domains/updateDomain.twig @@ -30,7 +30,7 @@