corrected validation of idn-tld's, fixes #899
Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
@@ -217,9 +217,9 @@ class Validate
|
|||||||
public static function validateDomain($domainname, $allow_underscore = false)
|
public static function validateDomain($domainname, $allow_underscore = false)
|
||||||
{
|
{
|
||||||
if (is_string($domainname)) {
|
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) {
|
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
|
// valid chars check && overall length check && length of each label
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ class CertificatesTest extends TestCase
|
|||||||
'ssl_key_file' => $certdata['key']
|
'ssl_key_file' => $certdata['key']
|
||||||
))->add();
|
))->add();
|
||||||
$result = json_decode($json_result, true)['data'];
|
$result = json_decode($json_result, true)['data'];
|
||||||
$this->assertEquals(6, $result['domainid']);
|
$this->assertEquals(7, $result['domainid']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAdminCertificatesList()
|
public function testAdminCertificatesList()
|
||||||
@@ -148,7 +148,7 @@ class CertificatesTest extends TestCase
|
|||||||
'ssl_key_file' => $certdata['key']
|
'ssl_key_file' => $certdata['key']
|
||||||
))->update();
|
))->update();
|
||||||
$result = json_decode($json_result, true)['data'];
|
$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']));
|
$this->assertEquals(str_replace("\n", "", $certdata['cert']), str_replace("\n", "", $result['ssl_cert_file']));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -395,4 +395,30 @@ class DomainsTest extends TestCase
|
|||||||
'domainname' => 'täst.local'
|
'domainname' => 'täst.local'
|
||||||
])->delete();
|
])->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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user