From bce2412b70a69e2e800baf98172fc537816f5b0b Mon Sep 17 00:00:00 2001 From: Eldad Fux Date: Wed, 8 Jul 2020 01:11:02 +0300 Subject: [PATCH 1/2] Custom domain validation regex is invalid Fixes #470 --- app/controllers/api/projects.php | 2 +- app/views/console/settings/index.phtml | 2 +- src/Appwrite/Network/Validator/Domain.php | 54 ++++++++++++++++++++ tests/unit/Network/Validators/DomianTest.php | 46 +++++++++++++++++ 4 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 src/Appwrite/Network/Validator/Domain.php create mode 100644 tests/unit/Network/Validators/DomianTest.php diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index bd49422398..cf81df66ba 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -6,7 +6,6 @@ use Utopia\Exception; use Utopia\Response; use Utopia\Validator\ArrayList; use Utopia\Validator\Boolean; -use Utopia\Validator\Domain as DomainValidator; use Utopia\Validator\Text; use Utopia\Validator\WhiteList; use Utopia\Validator\URL; @@ -19,6 +18,7 @@ use Appwrite\Database\Document; use Appwrite\Database\Validator\UID; use Appwrite\OpenSSL\OpenSSL; use Appwrite\Network\Validator\CNAME; +use Appwrite\Network\Validator\Domain as DomainValidator; use Cron\CronExpression; $scopes = include __DIR__.'/../../../app/config/scopes.php'; diff --git a/app/views/console/settings/index.phtml b/app/views/console/settings/index.phtml index a16812a63e..332f8faf6c 100644 --- a/app/views/console/settings/index.phtml +++ b/app/views/console/settings/index.phtml @@ -361,7 +361,7 @@ $customDomainsTarget = $this->getParam('customDomainsTarget', false); - +
diff --git a/src/Appwrite/Network/Validator/Domain.php b/src/Appwrite/Network/Validator/Domain.php new file mode 100644 index 0000000000..848e338d60 --- /dev/null +++ b/src/Appwrite/Network/Validator/Domain.php @@ -0,0 +1,54 @@ +domain = new Domain(); + } + + public function tearDown() + { + $this->domain = null; + } + + public function testIsValid() + { + // Assertions + $this->assertEquals(true, $this->domain->isValid('example.com')); + $this->assertEquals(true, $this->domain->isValid('subdomain.example.com')); + $this->assertEquals(true, $this->domain->isValid('subdomain.example-app.com')); + $this->assertEquals(true, $this->domain->isValid('subdomain.example_app.com')); + $this->assertEquals(true, $this->domain->isValid('subdomain-new.example.com')); + $this->assertEquals(true, $this->domain->isValid('subdomain_new.example.com')); + $this->assertEquals(true, $this->domain->isValid('localhost')); + $this->assertEquals(true, $this->domain->isValid('appwrite.io')); + $this->assertEquals(true, $this->domain->isValid('appwrite.org')); + $this->assertEquals(true, $this->domain->isValid('appwrite.org')); + $this->assertEquals(false, $this->domain->isValid(false)); + $this->assertEquals(false, $this->domain->isValid('.')); + $this->assertEquals(false, $this->domain->isValid('..')); + $this->assertEquals(false, $this->domain->isValid('')); + $this->assertEquals(false, $this->domain->isValid(['string', 'string'])); + $this->assertEquals(false, $this->domain->isValid(1)); + $this->assertEquals(false, $this->domain->isValid(1.2)); + } +} \ No newline at end of file From b8948d8e184c052227e82cf1cead4569cb97b5b7 Mon Sep 17 00:00:00 2001 From: Eldad Fux Date: Wed, 8 Jul 2020 01:12:45 +0300 Subject: [PATCH 2/2] Fixed regex syntax --- app/views/console/settings/index.phtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/console/settings/index.phtml b/app/views/console/settings/index.phtml index 332f8faf6c..d4c2c359fe 100644 --- a/app/views/console/settings/index.phtml +++ b/app/views/console/settings/index.phtml @@ -361,7 +361,7 @@ $customDomainsTarget = $this->getParam('customDomainsTarget', false); - +