diff --git a/lib/Froxlor/Validate/Validate.php b/lib/Froxlor/Validate/Validate.php index d2b7f849..c43b367f 100644 --- a/lib/Froxlor/Validate/Validate.php +++ b/lib/Froxlor/Validate/Validate.php @@ -217,9 +217,9 @@ class Validate public static function validateDomain($domainname, $allow_underscore = false) { if (is_string($domainname)) { - $char_validation = '([a-z\d](-*[a-z\d])*)(\.?([a-z\d](-*[a-z\d])*))*\.([a-z\d])+'; + $char_validation = '([a-z\d](-*[a-z\d])*)(\.?([a-z\d](-*[a-z\d])*))*\.(xn\-\-)?([a-z\d])+'; if ($allow_underscore) { - $char_validation = '([a-z\d\_](-*[a-z\d\_])*)(\.([a-z\d\_](-*[a-z\d])*))*(\.?([a-z\d](-*[a-z\d])*))+\.([a-z\d])+'; + $char_validation = '([a-z\d\_](-*[a-z\d\_])*)(\.([a-z\d\_](-*[a-z\d])*))*(\.?([a-z\d](-*[a-z\d])*))+\.(xn\-\-)?([a-z\d])+'; } // valid chars check && overall length check && length of each label diff --git a/tests/Certificates/CertificatesTest.php b/tests/Certificates/CertificatesTest.php index b1430bbc..16e0c45e 100644 --- a/tests/Certificates/CertificatesTest.php +++ b/tests/Certificates/CertificatesTest.php @@ -64,7 +64,7 @@ class CertificatesTest extends TestCase 'ssl_key_file' => $certdata['key'] ))->add(); $result = json_decode($json_result, true)['data']; - $this->assertEquals(6, $result['domainid']); + $this->assertEquals(7, $result['domainid']); } public function testAdminCertificatesList() @@ -148,7 +148,7 @@ class CertificatesTest extends TestCase 'ssl_key_file' => $certdata['key'] ))->update(); $result = json_decode($json_result, true)['data']; - $this->assertEquals(6, $result['domainid']); + $this->assertEquals(7, $result['domainid']); $this->assertEquals(str_replace("\n", "", $certdata['cert']), str_replace("\n", "", $result['ssl_cert_file'])); } diff --git a/tests/Domains/DomainsTest.php b/tests/Domains/DomainsTest.php index d1793fde..88ffb94b 100644 --- a/tests/Domains/DomainsTest.php +++ b/tests/Domains/DomainsTest.php @@ -395,4 +395,30 @@ class DomainsTest extends TestCase 'domainname' => 'täst.local' ])->delete(); } + + /** + * @refs https://github.com/Froxlor/Froxlor/issues/899 + */ + public function testAdminIdn2DomainsAdd() + { + global $admin_userdata; + // get customer + $json_result = Customers::getLocal($admin_userdata, array( + 'loginname' => 'test1' + ))->get(); + $customer_userdata = json_decode($json_result, true)['data']; + $data = [ + 'domain' => 'उदाहरण.भारत', + 'customerid' => $customer_userdata['customerid'] + ]; + $json_result = Domains::getLocal($admin_userdata, $data)->add(); + $result = json_decode($json_result, true)['data']; + $this->assertEquals($customer_userdata['documentroot'] . 'xn--p1b6ci4b4b3a.xn--h2brj9c/', $result['documentroot']); + $this->assertEquals('xn--p1b6ci4b4b3a.xn--h2brj9c', $result['domain']); + $this->assertEquals('उदाहरण.भारत', $result['domain_ace']); + + Domains::getLocal($admin_userdata, [ + 'domainname' => 'उदाहरण.भारत' + ])->delete(); + } }