Skip to content

Commit 99ce84d

Browse files
authored
Improve domain validator
1 parent e432558 commit 99ce84d

2 files changed

Lines changed: 16 additions & 1 deletion

File tree

src/Http/Validator/Domain.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,11 @@ public function isValid($value): bool
4545
return false;
4646
}
4747

48-
if (\filter_var($value, FILTER_VALIDATE_DOMAIN) === false) {
48+
if (\filter_var($value, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME) === false) {
49+
return false;
50+
}
51+
52+
if(\str_ends_with($value, '.')) {
4953
return false;
5054
}
5155

tests/Validator/DomainTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,17 @@ public function testIsValid()
2727
$this->assertEquals(true, $this->domain->isValid('example.org'));
2828
$this->assertEquals(true, $this->domain->isValid('example.org'));
2929
$this->assertEquals(false, $this->domain->isValid(false));
30+
$this->assertEquals(false, $this->domain->isValid('api.appwrite.io.'));
31+
$this->assertEquals(false, $this->domain->isValid('.api.appwrite.io'));
32+
$this->assertEquals(false, $this->domain->isValid('.api.appwrite.io'));
33+
$this->assertEquals(false, $this->domain->isValid('api..appwrite.io'));
34+
$this->assertEquals(false, $this->domain->isValid('api-.appwrite.io'));
35+
$this->assertEquals(false, $this->domain->isValid('api.-appwrite.io'));
36+
$this->assertEquals(false, $this->domain->isValid('app write.io'));
37+
$this->assertEquals(false, $this->domain->isValid(' appwrite.io'));
38+
$this->assertEquals(false, $this->domain->isValid('appwrite.io '));
39+
$this->assertEquals(false, $this->domain->isValid('-appwrite.io'));
40+
$this->assertEquals(false, $this->domain->isValid('appwrite.io-'));
3041
$this->assertEquals(false, $this->domain->isValid('.'));
3142
$this->assertEquals(false, $this->domain->isValid('..'));
3243
$this->assertEquals(false, $this->domain->isValid(''));

0 commit comments

Comments
 (0)