From 816874872d1e623a1ea01cad4aaf3cca0a1b137f Mon Sep 17 00:00:00 2001 From: Michael Kaufmann Date: Wed, 14 Oct 2020 16:58:19 +0200 Subject: [PATCH] make given documentroot of domain relative to customerroot of no absolute path if given; fixes #892 Signed-off-by: Michael Kaufmann --- lib/Froxlor/Api/Commands/Domains.php | 7 ++++++- tests/Domains/DomainsTest.php | 25 ++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/lib/Froxlor/Api/Commands/Domains.php b/lib/Froxlor/Api/Commands/Domains.php index c0f9c0dd..e01e6ea4 100644 --- a/lib/Froxlor/Api/Commands/Domains.php +++ b/lib/Froxlor/Api/Commands/Domains.php @@ -1329,7 +1329,12 @@ class Domains extends \Froxlor\Api\ApiCommand implements \Froxlor\Api\ResourceEn } if (! preg_match('/^https?\:\/\//', $documentroot)) { - $documentroot = \Froxlor\FileDir::makeCorrectDir($documentroot); + if ($documentroot != $result['documentroot']) { + if (substr($documentroot, 0, 1) != "/") { + $documentroot = $customer['documentroot'] . '/' . $documentroot; + } + $documentroot = \Froxlor\FileDir::makeCorrectDir($documentroot); + } } if ($email_only == '1') { diff --git a/tests/Domains/DomainsTest.php b/tests/Domains/DomainsTest.php index 36018ef5..d1793fde 100644 --- a/tests/Domains/DomainsTest.php +++ b/tests/Domains/DomainsTest.php @@ -198,16 +198,39 @@ class DomainsTest extends TestCase public function testAdminDomainsUpdate() { global $admin_userdata; + // get customer + $json_result = Customers::getLocal($admin_userdata, array( + 'loginname' => 'test1' + ))->get(); + $customer_userdata = json_decode($json_result, true)['data']; $data = [ 'domainname' => 'test.local', 'email_only' => 1, - 'override_tls' => 0 + 'override_tls' => 0, + 'documentroot' => 'web' ]; $json_result = Domains::getLocal($admin_userdata, $data)->update(); $result = json_decode($json_result, true)['data']; $this->assertEquals(1, $result['email_only']); $this->assertFalse(in_array('TLSv1.3', explode(",", $result['ssl_protocols']))); $this->assertEquals('test.local', $result['domain']); + $this->assertEquals($customer_userdata['documentroot'] . 'web/', $result['documentroot']); + } + + /** + * + * @depends testAdminDomainsAdd + */ + public function testAdminDomainsUpdateAbsolutePath() + { + global $admin_userdata; + $data = [ + 'domainname' => 'test.local', + 'documentroot' => '/web' + ]; + $json_result = Domains::getLocal($admin_userdata, $data)->update(); + $result = json_decode($json_result, true)['data']; + $this->assertEquals('/web/', $result['documentroot']); } /**