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 @@