Fixed #1285 to support newer top level domain names (TLD) as well

Signed-off-by: Janos SUTO <sj@acts.hu>
This commit is contained in:
Janos SUTO 2023-03-18 16:32:14 +01:00
parent 81ffefbc65
commit 129f640421
3 changed files with 52 additions and 6 deletions

View File

@ -34,6 +34,8 @@ $config['TITLE_PREFIX'] = '';
$config['CUSTOM_PRE_AUTH_FUNCTION'] = '';
$config['CUSTOM_EMAIL_QUERY_FUNCTION'] = '';
$config['DOMAIN_REGEX'] = '/^[a-zA-Z0-9]+[a-zA-Z0-9-_\.]{0,}\.[a-zA-Z0-9]{2,20}$/';
$config['BOOTSTRAP_THEME'] = '-cosmo';
$config['DEFAULT_LANG'] = 'en';

View File

@ -145,13 +145,12 @@ function checkemail($email, $domains) {
function validemail($email = '') {
if($email == '') { return 0; }
if($email == '' || !strchr($email, '@')) { return 0; }
if(preg_match("/@local$/", $email)) { return 1; }
$arr = explode("@", $email);
if(preg_match('/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,10})$/', $email)) {
return 1;
}
// This is a pretty relaxed formula making sure we have something as the local part
if(count($arr) == 2 && strlen($arr[0]) >= 1 && validdomain($arr[1])) { return 1; }
return 0;
}
@ -173,7 +172,7 @@ function checkdomain($domain, $domains) {
function validdomain($domain = '') {
if(preg_match("/@?local$/", $domain) || preg_match('/^[a-zA-Z0-9]+[a-zA-Z0-9-_\.]{0,}\.[a-zA-Z0-9]{2,10}$/', $domain)) {
if(preg_match("/@?local$/", $domain) || preg_match(DOMAIN_REGEX, $domain)) {
return 1;
}

45
webui/tests/MiscTest.php Normal file
View File

@ -0,0 +1,45 @@
<?php
use PHPUnit\Framework\TestCase;
require_once dirname(dirname(__FILE__)) . '/config.php';
require_once dirname(dirname(__FILE__)) . '/system/model.php';
require_once dirname(dirname(__FILE__)) . '/system/loader.php';
require_once dirname(dirname(__FILE__)) . '/system/language.php';
require_once dirname(dirname(__FILE__)) . '/system/misc.php';
final class MiscTest extends TestCase
{
public function providerTestValiddomain() {
return [
['', 0],
['local', 1],
['@local', 1],
['aaa.fu', 1],
['@aaa.fu', 0],
['AAa.fu', 1],
['.aaa.fu', 0],
['-aaa.fu', 0],
['_aaa.fu', 0],
['2aaa.fu', 1],
['aaafu', 0],
['a.com.', 0],
['a.co.uk', 1],
['a.co.u2k', 1],
['a.com', 1],
['ccc.com', 1],
['aaa.bbb.ccc.com', 1],
['aaa.photography', 1],
];
}
/**
* @dataProvider providerTestValiddomain
*/
public function test_validdomain($data, $expected_result) {
$result = validdomain($data);
$this->assertEquals($result, $expected_result);
}
}