From: Bjoern Schiessle Date: Thu, 2 Oct 2014 10:55:46 +0000 (+0200) Subject: we also encrypt/decrypt files in the versions folder for previews and if encryption... X-Git-Tag: v8.0.0alpha1~571^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=9147219377d6fec5666a03943be1892253750871;p=nextcloud-server.git we also encrypt/decrypt files in the versions folder for previews and if encryption is enabled/disabled --- diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index b406404a688..3b9dcbe7767 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -49,12 +49,17 @@ class Proxy extends \OC_FileProxy { * @param string $uid user * @return boolean */ - private function isExcludedPath($path, $uid) { + protected function isExcludedPath($path, $uid) { $view = new \OC\Files\View(); - // files outside of the files-folder are excluded - if(strpos($path, '/' . $uid . '/files/') !== 0) { + $path = \OC\Files\Filesystem::normalizePath($path); + + // we only encrypt/decrypt files in the files and files_versions folder + if( + strpos($path, '/' . $uid . '/files/') !== 0 && + strpos($path, '/' . $uid . '/files_versions/') !== 0) { + return true; } diff --git a/apps/files_encryption/tests/proxy.php b/apps/files_encryption/tests/proxy.php index 9ec1f940edd..42637a52e04 100644 --- a/apps/files_encryption/tests/proxy.php +++ b/apps/files_encryption/tests/proxy.php @@ -136,4 +136,42 @@ class Test_Encryption_Proxy extends \PHPUnit_Framework_TestCase { } + /** + * @dataProvider isExcludedPathProvider + */ + function testIsExcludedPath($path, $expected) { + $this->view->mkdir(dirname($path)); + $this->view->file_put_contents($path, "test"); + + $testClass = new DummyProxy(); + + $result = $testClass->isExcludedPathTesting($path, $this->userId); + $this->assertSame($expected, $result); + + $this->view->deleteAll(dirname($path)); + + } + + public function isExcludedPathProvider() { + return array( + array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files/test.txt', false), + array (\Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files/test.txt', false), + array ('/files/test.txt', true), + array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files/versions/test.txt', false), + array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files_versions/test.txt', false), + array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/files_trashbin/test.txt', true), + array ('/' . \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1 . '/file/test.txt', true), + ); + } + +} + + +/** + * Dummy class to make protected methods available for testing + */ +class DummyProxy extends \OCA\Encryption\Proxy { + public function isExcludedPathTesting($path, $uid) { + return $this->isExcludedPath($path, $uid); + } }