From c6a69ba92514587814d0f03b51e1d1f026a49350 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Thu, 28 Feb 2019 11:05:28 +0100 Subject: [PATCH] Remove the upload and memory setting * Remove unneeded private method phpFileSize() * Bump autoloader * Remove setUploadLimit tests * Remove integrity check hacks for upload limit Signed-off-by: Joas Schilling Signed-off-by: Morris Jobke --- .htaccess | 3 - .user.ini | 3 - apps/files/appinfo/info.xml | 4 - apps/files/appinfo/routes.php | 5 - .../composer/composer/autoload_classmap.php | 2 - .../composer/composer/autoload_static.php | 2 - apps/files/js/admin.js | 70 --------- .../lib/Controller/SettingsController.php | 51 ------- apps/files/lib/Settings/Admin.php | 87 ----------- apps/files/templates/admin.php | 20 --- apps/files/tests/Settings/AdminTest.php | 84 ----------- lib/private/IntegrityCheck/Checker.php | 34 +---- lib/private/legacy/files.php | 82 ----------- lib/private/legacy/helper.php | 26 ---- .../.htaccess | 3 - .../.user.ini | 7 - tests/lib/FilesTest.php | 137 ------------------ tests/lib/IntegrityCheck/CheckerTest.php | 14 +- tests/lib/LegacyHelperTest.php | 22 --- 19 files changed, 7 insertions(+), 649 deletions(-) delete mode 100644 apps/files/js/admin.js delete mode 100644 apps/files/lib/Controller/SettingsController.php delete mode 100644 apps/files/lib/Settings/Admin.php delete mode 100644 apps/files/templates/admin.php delete mode 100644 apps/files/tests/Settings/AdminTest.php delete mode 100644 tests/data/integritycheck/htaccessWithValidModifiedContent/.user.ini delete mode 100644 tests/lib/FilesTest.php diff --git a/.htaccess b/.htaccess index 2b0caed274..cc2e0c95eb 100644 --- a/.htaccess +++ b/.htaccess @@ -31,9 +31,6 @@ - php_value upload_max_filesize 511M - php_value post_max_size 511M - php_value memory_limit 512M php_value mbstring.func_overload 0 php_value default_charset 'UTF-8' php_value output_buffering 0 diff --git a/.user.ini b/.user.ini index fe14834b2e..ff8f6b0b17 100644 --- a/.user.ini +++ b/.user.ini @@ -1,6 +1,3 @@ -upload_max_filesize=511M -post_max_size=511M -memory_limit=512M mbstring.func_overload=0 always_populate_raw_post_data=-1 default_charset='UTF-8' diff --git a/apps/files/appinfo/info.xml b/apps/files/appinfo/info.xml index d6a0959eeb..79926afe83 100644 --- a/apps/files/appinfo/info.xml +++ b/apps/files/appinfo/info.xml @@ -35,10 +35,6 @@ OCA\Files\Command\ScanAppData - - OCA\Files\Settings\Admin - - OCA\Files\Activity\Settings\FavoriteAction diff --git a/apps/files/appinfo/routes.php b/apps/files/appinfo/routes.php index 06806309ca..b085d79b8c 100644 --- a/apps/files/appinfo/routes.php +++ b/apps/files/appinfo/routes.php @@ -76,11 +76,6 @@ $application->registerRoutes( 'url' => '/', 'verb' => 'GET', ], - [ - 'name' => 'settings#setMaxUploadSize', - 'url' => '/settings/maxUpload', - 'verb' => 'POST', - ], [ 'name' => 'ajax#getStorageStats', 'url' => '/ajax/getstoragestats.php', diff --git a/apps/files/composer/composer/autoload_classmap.php b/apps/files/composer/composer/autoload_classmap.php index b664b3fa22..dd0bea2564 100644 --- a/apps/files/composer/composer/autoload_classmap.php +++ b/apps/files/composer/composer/autoload_classmap.php @@ -31,9 +31,7 @@ return array( 'OCA\\Files\\Command\\TransferOwnership' => $baseDir . '/../lib/Command/TransferOwnership.php', 'OCA\\Files\\Controller\\AjaxController' => $baseDir . '/../lib/Controller/AjaxController.php', 'OCA\\Files\\Controller\\ApiController' => $baseDir . '/../lib/Controller/ApiController.php', - 'OCA\\Files\\Controller\\SettingsController' => $baseDir . '/../lib/Controller/SettingsController.php', 'OCA\\Files\\Controller\\ViewController' => $baseDir . '/../lib/Controller/ViewController.php', 'OCA\\Files\\Helper' => $baseDir . '/../lib/Helper.php', 'OCA\\Files\\Service\\TagService' => $baseDir . '/../lib/Service/TagService.php', - 'OCA\\Files\\Settings\\Admin' => $baseDir . '/../lib/Settings/Admin.php', ); diff --git a/apps/files/composer/composer/autoload_static.php b/apps/files/composer/composer/autoload_static.php index ef1ecdcc0c..ae748b5d4d 100644 --- a/apps/files/composer/composer/autoload_static.php +++ b/apps/files/composer/composer/autoload_static.php @@ -46,11 +46,9 @@ class ComposerStaticInitFiles 'OCA\\Files\\Command\\TransferOwnership' => __DIR__ . '/..' . '/../lib/Command/TransferOwnership.php', 'OCA\\Files\\Controller\\AjaxController' => __DIR__ . '/..' . '/../lib/Controller/AjaxController.php', 'OCA\\Files\\Controller\\ApiController' => __DIR__ . '/..' . '/../lib/Controller/ApiController.php', - 'OCA\\Files\\Controller\\SettingsController' => __DIR__ . '/..' . '/../lib/Controller/SettingsController.php', 'OCA\\Files\\Controller\\ViewController' => __DIR__ . '/..' . '/../lib/Controller/ViewController.php', 'OCA\\Files\\Helper' => __DIR__ . '/..' . '/../lib/Helper.php', 'OCA\\Files\\Service\\TagService' => __DIR__ . '/..' . '/../lib/Service/TagService.php', - 'OCA\\Files\\Settings\\Admin' => __DIR__ . '/..' . '/../lib/Settings/Admin.php', ); public static function getInitializer(ClassLoader $loader) diff --git a/apps/files/js/admin.js b/apps/files/js/admin.js deleted file mode 100644 index 6afd77eb03..0000000000 --- a/apps/files/js/admin.js +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2014 - * - * This file is licensed under the Affero General Public License version 3 - * or later. - * - * See the COPYING-README file. - * - */ - -(function() { - if (!OCA.Files) { - /** - * Namespace for the files app - * @namespace OCA.Files - */ - OCA.Files = {}; - } - - /** - * @namespace OCA.Files.Admin - */ - OCA.Files.Admin = { - initialize: function() { - $('#submitMaxUpload').on('click', _.bind(this._onClickSubmitMaxUpload, this)); - }, - - _onClickSubmitMaxUpload: function () { - OC.msg.startSaving('#maxUploadSizeSettingsMsg'); - - var request = $.ajax({ - url: OC.generateUrl('/apps/files/settings/maxUpload'), - type: 'POST', - data: { - maxUploadSize: $('#maxUploadSize').val() - } - }); - - request.done(function (data) { - $('#maxUploadSize').val(data.maxUploadSize); - OC.msg.finishedSuccess('#maxUploadSizeSettingsMsg', 'Saved'); - }); - - request.fail(function () { - OC.msg.finishedError('#maxUploadSizeSettingsMsg', 'Error'); - }); - } - } -})(); - -function switchPublicFolder() { - var publicEnable = $('#publicEnable').is(':checked'); - // find all radiobuttons of that group - var sharingaimGroup = $('input:radio[name=sharingaim]'); - $.each(sharingaimGroup, function(index, sharingaimItem) { - // set all buttons to the correct state - sharingaimItem.disabled = !publicEnable; - }); -} - -$(document).ready(function() { - OCA.Files.Admin.initialize(); - - // Execute the function after loading DOM tree - switchPublicFolder(); - $('#publicEnable').click(function() { - // To get rid of onClick() - switchPublicFolder(); - }); -}); diff --git a/apps/files/lib/Controller/SettingsController.php b/apps/files/lib/Controller/SettingsController.php deleted file mode 100644 index 0b2dc9c2dd..0000000000 --- a/apps/files/lib/Controller/SettingsController.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ -namespace OCA\Files\Controller; - -use OCP\AppFramework\Controller; -use OCP\AppFramework\Http; -use OCP\AppFramework\Http\JSONResponse; -use OCP\IRequest; -use OCP\Util; - -class SettingsController extends Controller { - public function __construct($appName, IRequest $request) { - parent::__construct($appName, $request); - } - - /** - * @param string $maxUploadSize - * @return JSONResponse - */ - public function setMaxUploadSize($maxUploadSize) { - $setMaxSize = \OC_Files::setUploadLimit(Util::computerFileSize($maxUploadSize)); - - if ($setMaxSize === false) { - return new JSONResponse([], Http::STATUS_BAD_REQUEST); - } else { - return new JSONResponse([ - 'maxUploadSize' => Util::humanFileSize($setMaxSize) - ]); - } - } -} diff --git a/apps/files/lib/Settings/Admin.php b/apps/files/lib/Settings/Admin.php deleted file mode 100644 index 11b66dab84..0000000000 --- a/apps/files/lib/Settings/Admin.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * @author Arthur Schiwon - * @author Joas Schilling - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -namespace OCA\Files\Settings; - -use bantu\IniGetWrapper\IniGetWrapper; -use OCP\AppFramework\Http\TemplateResponse; -use OCP\IRequest; -use OCP\Settings\ISettings; -use OCP\Util; - -class Admin implements ISettings { - - /** @var IniGetWrapper */ - private $iniWrapper; - - /** @var IRequest */ - private $request; - - public function __construct(IniGetWrapper $iniWrapper, IRequest $request) { - $this->iniWrapper = $iniWrapper; - $this->request = $request; - } - - /** - * @return TemplateResponse - */ - public function getForm() { - $htaccessWorking = (getenv('htaccessWorking') === 'true'); - $htaccessWritable = is_writable(\OC::$SERVERROOT.'/.htaccess'); - $userIniWritable = is_writable(\OC::$SERVERROOT.'/.user.ini'); - - $upload_max_filesize = $this->iniWrapper->getBytes('upload_max_filesize'); - $post_max_size = $this->iniWrapper->getBytes('post_max_size'); - $maxUploadFilesize = Util::humanFileSize(min($upload_max_filesize, $post_max_size)); - - $parameters = [ - 'uploadChangable' => ($htaccessWorking and $htaccessWritable) or $userIniWritable, - 'uploadMaxFilesize' => $maxUploadFilesize, - // max possible makes only sense on a 32 bit system - 'displayMaxPossibleUploadSize' => PHP_INT_SIZE === 4, - 'maxPossibleUploadSize' => Util::humanFileSize(PHP_INT_MAX), - ]; - - return new TemplateResponse('files', 'admin', $parameters, ''); - } - - /** - * @return string the section ID, e.g. 'sharing' - */ - public function getSection() { - return 'server'; - } - - /** - * @return int whether the form should be rather on the top or bottom of - * the admin section. The forms are arranged in ascending order of the - * priority values. It is required to return a value between 0 and 100. - * - * E.g.: 70 - */ - public function getPriority() { - return 5; - } - -} diff --git a/apps/files/templates/admin.php b/apps/files/templates/admin.php deleted file mode 100644 index 1cbb339fee..0000000000 --- a/apps/files/templates/admin.php +++ /dev/null @@ -1,20 +0,0 @@ - - -
-

t('File handling')); ?>

- - -
- ' /> - - (t('max. possible: ')); p($_['maxPossibleUploadSize']) ?>) - - - - -

t('With PHP-FPM it might take 5 minutes for changes to be applied.')); ?>

- -

t('Missing permissions to edit from here.')); ?>

- -
diff --git a/apps/files/tests/Settings/AdminTest.php b/apps/files/tests/Settings/AdminTest.php deleted file mode 100644 index 027a37d7b2..0000000000 --- a/apps/files/tests/Settings/AdminTest.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * @author Lukas Reschke - * @author Morris Jobke - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -namespace OCA\Files\Tests\Settings; - -use bantu\IniGetWrapper\IniGetWrapper; -use OCA\Files\Settings\Admin; -use OCP\AppFramework\Http\TemplateResponse; -use OCP\IRequest; -use OCP\Util; -use Test\TestCase; - -class AdminTest extends TestCase { - /** @var Admin */ - private $admin; - /** @var IniGetWrapper */ - private $iniGetWrapper; - /** @var IRequest */ - private $request; - - public function setUp() { - parent::setUp(); - $this->iniGetWrapper = $this->getMockBuilder('\bantu\IniGetWrapper\IniGetWrapper')->disableOriginalConstructor()->getMock(); - $this->request = $this->getMockBuilder(IRequest::class)->getMock(); - $this->admin = new Admin( - $this->iniGetWrapper, - $this->request - ); - } - - public function testGetForm() { - $htaccessWorking = (getenv('htaccessWorking') == 'true'); - $htaccessWritable = is_writable(\OC::$SERVERROOT.'/.htaccess'); - $userIniWritable = is_writable(\OC::$SERVERROOT.'/.user.ini'); - - $this->iniGetWrapper - ->expects($this->at(0)) - ->method('getBytes') - ->with('upload_max_filesize') - ->willReturn(1234); - $this->iniGetWrapper - ->expects($this->at(1)) - ->method('getBytes') - ->with('post_max_size') - ->willReturn(1234); - $params = [ - 'uploadChangable' => (($htaccessWorking and $htaccessWritable) or $userIniWritable ), - 'uploadMaxFilesize' => '1 KB', - 'displayMaxPossibleUploadSize' => PHP_INT_SIZE === 4, - 'maxPossibleUploadSize' => Util::humanFileSize(PHP_INT_MAX), - ]; - $expected = new TemplateResponse('files', 'admin', $params, ''); - $this->assertEquals($expected, $this->admin->getForm()); - } - - public function testGetSection() { - $this->assertSame('server', $this->admin->getSection()); - } - - public function testGetPriority() { - $this->assertSame(5, $this->admin->getPriority()); - } -} diff --git a/lib/private/IntegrityCheck/Checker.php b/lib/private/IntegrityCheck/Checker.php index 44544b6770..0a8876381f 100644 --- a/lib/private/IntegrityCheck/Checker.php +++ b/lib/private/IntegrityCheck/Checker.php @@ -158,8 +158,6 @@ class Checker { private function generateHashes(\RecursiveIteratorIterator $iterator, string $path): array { $hashes = []; - $copiedWebserverSettingFiles = false; - $tmpFolder = ''; $baseDirectoryLength = \strlen($path); foreach($iterator as $filename => $data) { @@ -180,36 +178,6 @@ class Checker { continue; } - // The .user.ini and the .htaccess file of ownCloud can contain some - // custom modifications such as for example the maximum upload size - // to ensure that this will not lead to false positives this will - // copy the file to a temporary folder and reset it to the default - // values. - if($filename === $this->environmentHelper->getServerRoot() . '/.htaccess' - || $filename === $this->environmentHelper->getServerRoot() . '/.user.ini') { - - if(!$copiedWebserverSettingFiles) { - $tmpFolder = rtrim($this->tempManager->getTemporaryFolder(), '/'); - copy($this->environmentHelper->getServerRoot() . '/.htaccess', $tmpFolder . '/.htaccess'); - copy($this->environmentHelper->getServerRoot() . '/.user.ini', $tmpFolder . '/.user.ini'); - \OC_Files::setUploadLimit( - \OCP\Util::computerFileSize('511MB'), - [ - '.htaccess' => $tmpFolder . '/.htaccess', - '.user.ini' => $tmpFolder . '/.user.ini', - ] - ); - } - } - - // The .user.ini file can contain custom modifications to the file size - // as well. - if($filename === $this->environmentHelper->getServerRoot() . '/.user.ini') { - $fileContent = file_get_contents($tmpFolder . '/.user.ini'); - $hashes[$relativeFileName] = hash('sha512', $fileContent); - continue; - } - // The .htaccess file in the root folder of ownCloud can contain // custom content after the installation due to the fact that dynamic // content is written into it at installation time as well. This @@ -218,7 +186,7 @@ class Checker { // "#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####" and have the // hash generated based on this. if($filename === $this->environmentHelper->getServerRoot() . '/.htaccess') { - $fileContent = file_get_contents($tmpFolder . '/.htaccess'); + $fileContent = file_get_contents($filename); $explodedArray = explode('#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####', $fileContent); if(\count($explodedArray) === 2) { $hashes[$relativeFileName] = hash('sha512', $explodedArray[0]); diff --git a/lib/private/legacy/files.php b/lib/private/legacy/files.php index 159e18c775..577392f1ed 100644 --- a/lib/private/legacy/files.php +++ b/lib/private/legacy/files.php @@ -378,88 +378,6 @@ class OC_Files { } } - /** - * set the maximum upload size limit for apache hosts using .htaccess - * - * @param int $size file size in bytes - * @param array $files override '.htaccess' and '.user.ini' locations - * @return bool|int false on failure, size on success - */ - public static function setUploadLimit($size, $files = []) { - //don't allow user to break his config - $size = (int)$size; - if ($size < self::UPLOAD_MIN_LIMIT_BYTES) { - return false; - } - $size = OC_Helper::phpFileSize($size); - - $phpValueKeys = array( - 'upload_max_filesize', - 'post_max_size' - ); - - // default locations if not overridden by $files - $files = array_merge([ - '.htaccess' => OC::$SERVERROOT . '/.htaccess', - '.user.ini' => OC::$SERVERROOT . '/.user.ini' - ], $files); - - $updateFiles = [ - $files['.htaccess'] => [ - 'pattern' => '/php_value %1$s (\S)*/', - 'setting' => 'php_value %1$s %2$s' - ], - $files['.user.ini'] => [ - 'pattern' => '/%1$s=(\S)*/', - 'setting' => '%1$s=%2$s' - ] - ]; - - $success = true; - - foreach ($updateFiles as $filename => $patternMap) { - // suppress warnings from fopen() - $handle = @fopen($filename, 'r+'); - if (!$handle) { - \OCP\Util::writeLog('files', - 'Can\'t write upload limit to ' . $filename . '. Please check the file permissions', - ILogger::WARN); - $success = false; - continue; // try to update as many files as possible - } - - $content = ''; - while (!feof($handle)) { - $content .= fread($handle, 1000); - } - - foreach ($phpValueKeys as $key) { - $pattern = vsprintf($patternMap['pattern'], [$key]); - $setting = vsprintf($patternMap['setting'], [$key, $size]); - $hasReplaced = 0; - $newContent = preg_replace($pattern, $setting, $content, 2, $hasReplaced); - if ($newContent !== null) { - $content = $newContent; - } - if ($hasReplaced === 0) { - $content .= "\n" . $setting; - } - } - - // write file back - ftruncate($handle, 0); - rewind($handle); - fwrite($handle, $content); - - fclose($handle); - } - - if ($success) { - return OC_Helper::computerFileSize($size); - } - return false; - } - /** * @param string $dir * @param $files diff --git a/lib/private/legacy/helper.php b/lib/private/legacy/helper.php index d9aa22e293..a5ed3a3e24 100644 --- a/lib/private/legacy/helper.php +++ b/lib/private/legacy/helper.php @@ -86,32 +86,6 @@ class OC_Helper { return "$bytes PB"; } - /** - * Make a php file size - * @param int $bytes file size in bytes - * @return string a php parseable file size - * - * Makes 2048 to 2k and 2^41 to 2048G - */ - public static function phpFileSize($bytes) { - if ($bytes < 0) { - return "?"; - } - if ($bytes < 1024) { - return $bytes . "B"; - } - $bytes = round($bytes / 1024, 1); - if ($bytes < 1024) { - return $bytes . "K"; - } - $bytes = round($bytes / 1024, 1); - if ($bytes < 1024) { - return $bytes . "M"; - } - $bytes = round($bytes / 1024, 1); - return $bytes . "G"; - } - /** * Make a computer file size * @param string $str file size in human readable format diff --git a/tests/data/integritycheck/htaccessWithValidModifiedContent/.htaccess b/tests/data/integritycheck/htaccessWithValidModifiedContent/.htaccess index e42d92da67..1b5eb98b7f 100644 --- a/tests/data/integritycheck/htaccessWithValidModifiedContent/.htaccess +++ b/tests/data/integritycheck/htaccessWithValidModifiedContent/.htaccess @@ -1,8 +1,5 @@ # Start of valid file - php_value upload_max_filesize 519M - php_value post_max_size 519M - php_value memory_limit 512M php_value mbstring.func_overload 0 php_value always_populate_raw_post_data -1 php_value default_charset 'UTF-8' diff --git a/tests/data/integritycheck/htaccessWithValidModifiedContent/.user.ini b/tests/data/integritycheck/htaccessWithValidModifiedContent/.user.ini deleted file mode 100644 index 90959b1e64..0000000000 --- a/tests/data/integritycheck/htaccessWithValidModifiedContent/.user.ini +++ /dev/null @@ -1,7 +0,0 @@ -upload_max_filesize=519M -post_max_size=519M -memory_limit=512M -mbstring.func_overload=0 -always_populate_raw_post_data=-1 -default_charset='UTF-8' -output_buffering=0 diff --git a/tests/lib/FilesTest.php b/tests/lib/FilesTest.php deleted file mode 100644 index 1d26984ee7..0000000000 --- a/tests/lib/FilesTest.php +++ /dev/null @@ -1,137 +0,0 @@ - - * - * @copyright Copyright (c) 2015, ownCloud, Inc. - * @license AGPL-3.0 - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see . - * - */ - -namespace Test; - -class FilesTest extends \Test\TestCase { - - const UPLOAD_LIMIT_DEFAULT_STR = '511M'; - const UPLOAD_LIMIT_SETTING_STR = '2M'; - const UPLOAD_LIMIT_SETTING_BYTES = 2097152; - - /** @var array $tmpDirs */ - private $tmpDirs = []; - - /** - * @return array - */ - private function getUploadLimitTestFiles() { - $dir = \OC::$server->getTempManager()->getTemporaryFolder(); - $this->tmpDirs[] = $dir; - $result = [ - '.htaccess' => $dir . '/htaccess', - '.user.ini' => $dir . '/user.ini' - ]; - copy(\OC::$SERVERROOT . '/tests/data/setUploadLimit/htaccess', $result['.htaccess']); - copy(\OC::$SERVERROOT . '/tests/data/setUploadLimit/user.ini', $result['.user.ini']); - return $result; - } - - protected function tearDown() { - foreach ($this->tmpDirs as $dir) { - \OC_Helper::rmdirr($dir); - } - parent::tearDown(); - } - - public function testSetUploadLimitSizeSanity() { - $this->assertFalse(\OC_Files::setUploadLimit(PHP_INT_MAX + 10)); - $this->assertFalse(\OC_Files::setUploadLimit(\OC_Files::UPLOAD_MIN_LIMIT_BYTES - 10)); - $this->assertFalse(\OC_Files::setUploadLimit('foobar')); - } - - public function setUploadLimitWriteProvider() { - return [ - [ - // both files writable - true, true, - self::UPLOAD_LIMIT_SETTING_BYTES, self::UPLOAD_LIMIT_SETTING_BYTES, - self::UPLOAD_LIMIT_SETTING_STR, self::UPLOAD_LIMIT_SETTING_STR - ], - [ - // neither file writable - false, false, - self::UPLOAD_LIMIT_SETTING_BYTES, false, - self::UPLOAD_LIMIT_DEFAULT_STR, self::UPLOAD_LIMIT_DEFAULT_STR - ], - [ - // only .htaccess writable - true, false, - self::UPLOAD_LIMIT_SETTING_BYTES, false, - self::UPLOAD_LIMIT_SETTING_STR, self::UPLOAD_LIMIT_DEFAULT_STR - ], - [ - // only .user.ini writable - false, true, - self::UPLOAD_LIMIT_SETTING_BYTES, false, - self::UPLOAD_LIMIT_DEFAULT_STR, self::UPLOAD_LIMIT_SETTING_STR - ], - [ - // test rounding of values - true, true, - self::UPLOAD_LIMIT_SETTING_BYTES + 20, self::UPLOAD_LIMIT_SETTING_BYTES, - self::UPLOAD_LIMIT_SETTING_STR, self::UPLOAD_LIMIT_SETTING_STR - ] - ]; - } - - /** - * @dataProvider setUploadLimitWriteProvider - */ - public function testSetUploadLimitWrite( - $htaccessWritable, $userIniWritable, - $setSize, $expectedSize, - $htaccessStr, $userIniStr - ) { - $this->markTestSkipped('TODO: Disable because fails on drone'); - - $files = $this->getUploadLimitTestFiles(); - chmod($files['.htaccess'], ($htaccessWritable ? 0644 : 0444)); - chmod($files['.user.ini'], ($userIniWritable ? 0644 : 0444)); - - $htaccessSize = filesize($files['.htaccess']); - $userIniSize = filesize($files['.user.ini']); - $htaccessSizeMod = 2*(strlen($htaccessStr) - strlen(self::UPLOAD_LIMIT_DEFAULT_STR)); - $userIniSizeMod = 2*(strlen($userIniStr) - strlen(self::UPLOAD_LIMIT_DEFAULT_STR)); - - $this->assertEquals($expectedSize, \OC_Files::setUploadLimit($setSize, $files)); - - // check file contents - $htaccess = file_get_contents($files['.htaccess']); - $this->assertEquals(1, - preg_match('/php_value upload_max_filesize '.$htaccessStr.'/', $htaccess) - ); - $this->assertEquals(1, - preg_match('/php_value post_max_size '.$htaccessStr.'/', $htaccess) - ); - $this->assertEquals($htaccessSize + $htaccessSizeMod, filesize($files['.htaccess'])); - - $userIni = file_get_contents($files['.user.ini']); - $this->assertEquals(1, - preg_match('/upload_max_filesize='.$userIniStr.'/', $userIni) - ); - $this->assertEquals(1, - preg_match('/post_max_size='.$userIniStr.'/', $userIni) - ); - $this->assertEquals($userIniSize + $userIniSizeMod, filesize($files['.user.ini'])); - } -} diff --git a/tests/lib/IntegrityCheck/CheckerTest.php b/tests/lib/IntegrityCheck/CheckerTest.php index d0a40a7ad9..91d1fa3675 100644 --- a/tests/lib/IntegrityCheck/CheckerTest.php +++ b/tests/lib/IntegrityCheck/CheckerTest.php @@ -624,14 +624,13 @@ class CheckerTest extends TestCase { $this->checker->writeCoreSignature($x509, $rsa, \OC::$SERVERROOT . '/tests/data/integritycheck/htaccessWithInvalidModifiedContent/'); } - public function testWriteCoreSignatureWithValidModifiedHtaccessAndUserIni() { + public function testWriteCoreSignatureWithValidModifiedHtaccess() { $expectedSignatureFileData = '{ "hashes": { - ".htaccess": "04d8d8eaa5893d2c30df955ff25d8f75e4ee7eb7d24f7f28b47e7b1d0cce2c339db47debf8de8c80b3d25b5da4da50128720564a30ad1af8d7106d48e6f07ae8", - ".user.ini": "467d4f028c447895716a2b7859ed6e569f8ee34b87b51d73dab2e6a9ca4fbe63172c7be3e365ae864a60408286afcce852dd38ee544b61685ed4ee5e021fecb0", + ".htaccess": "7e6a7a4d8ee4f3fbc45dd579407c643471575a9d127d1c75f6d0a49e80766c3c587104b2139ef76d2a4bffce3f45777900605aaa49519c9532909b71e5030227", "subfolder\/.htaccess": "2c57b1e25050e11dc3ae975832f378c452159f7b69f818e47eeeafadd6ba568517461dcb4d843b90b906cd7c89d161bc1b89dff8e3ae0eb6f5088508c47befd1" }, - "signature": "HpDOx2nLrquRkez2BINtfAOyStlzxWKrE8NJtNdj9ZkSA4iV9GVhgnw6e38jH5Ql+mf+d+r5xM0WRgByTul3Z+9gvtv7huAYLSumwxF4g8u42Q3zC+iB6H8nurea7TQy6WOkDl9XSxXv79DqpDsd3kvLTQi4JpYt\/bI8UXo9jcfB13Yp6s4tQLbCLwLcPxGCAifviB+cHsCGvu01ewyVIFSbLeOaIgAxujXZyodDPJCKPLd5ctKfy4t9YHrCG3HYTh\/HdT3N1gJ62tCJDj+EjwpnIdxSl3aAR8wXyxCvhoGxUNe8pvT8Q9TiI5t+eSjZ8wh+4AavA9lFLipukRO\/ZElSj55nsuRPS8PhszN6Ph57mNX1pIKhgaCp6ERhmD3PGsPQAK9Ymj4j6RCJZ06Cj6+ck4Vs+FJSmvVfz2FLleGBM6tfXgHDvbSPebq9zFukCSID7K1p0p07qu4Z1uuZI9JycghrWoVchQYjx1GndizTSaa55JtVY\/c1yLSHXBXlxt7M8Dc26vvGW+Dpn2aVtoG2N0eigyY7KMukgsBy9jUqEI7094kxtdIaCew7lLf0lRqpKEc+RweR+ielfpP+2r3hmVLYHQ+6Cbroht8clfbkEYpRBOGwf9Bg+uqdDqS6EIhKtFE0wp7QzRSiqGT3\/wiS\/UqM5MV1BM3R5JWRH54=", + "signature": "YVwQvl9Dh8UebCumfgzFxfz3NiZJLmYG8oJVTfEBhulI4KXBnTG1jZTprf4XxG2XIriEYAZXsoXpu9xWsUFe9QfdncwoEpqJtGq7l6aVDTofX5Be5b03MQFJr4cflgllqW77QZ84D9O9qWF\/vNDAofXcwrzT04CxLDhyQgTCgYUnRjG9pnuP\/gtbDKbTjRvxhTyfg3T0Phv1+XAvpTPnH2q5A+1+LmiqziUJ1sMipsKo+jQP614eCi9qjmqhHIgLRgcuOBvsi4g5WUcdcAIZ6qLt5gm2Y3r6rKNVchosU9ZydMUTfjuejDbVwE2fNH5UUnV57fQBxwg9CfX7iFHqKv1bfv5Zviu12paShgWCB12uR3iH\/3lmTJn8K5Xqit3G4eymFaJ5IChdUThBp\/jhQSI2r8sPcZDYSJ\/UZKuFnezFdKhEBd5hMXe8aKAd6ijGDjLARksFuqpi1sS8llC5K1Q+DzktSL\/o64TY4Vuvykiwe\/BAk2SkL9voOtrvU7vfDBcuCPbDJnSBBC0ESpcXeClTBIn6xZ9WaxqoS7sinE\/kUwtWsRd04I7d79\/ouotyNb+mBhTuRsZT12p\/gn4JHXXNUAIpTwchYzGxbfNJ4kxnYBFZWVmvsSqOLFZu1yi5BP3ktA9yhFyWIa5659azRFEKRdXpVHtQVa4IgdhxEqA=", "certificate": "-----BEGIN CERTIFICATE-----\r\nMIIEvjCCAqagAwIBAgIUc\/0FxYrsgSs9rDxp03EJmbjN0NwwDQYJKoZIhvcNAQEF\r\nBQAwIzEhMB8GA1UECgwYb3duQ2xvdWQgQ29kZSBTaWduaW5nIENBMB4XDTE1MTEw\r\nMzIxMDMzM1oXDTE2MTEwMzIxMDMzM1owDzENMAsGA1UEAwwEY29yZTCCAiIwDQYJ\r\nKoZIhvcNAQEBBQADggIPADCCAgoCggIBALb6EgHpkAqZbO5vRO8XSh7G7XGWHw5s\r\niOf4RwPXR6SE9bWZEm\/b72SfWk\/\/J6AbrD8WiOzBuT\/ODy6k5T1arEdHO+Pux0W1\r\nMxYJJI4kH74KKgMpC0SB0Rt+8WrMqV1r3hhJ46df6Xr\/xolP3oD+eLbShPcblhdS\r\nVtkZEkoev8Sh6L2wDCeHDyPxzvj1w2dTdGVO9Kztn0xIlyfEBakqvBWtcxyi3Ln0\r\nklnxlMx3tPDUE4kqvpia9qNiB1AN2PV93eNr5\/2riAzIssMFSCarWCx0AKYb54+d\r\nxLpcYFyqPJ0ydBCkF78DD45RCZet6PNYkdzgbqlUWEGGomkuDoJbBg4wzgzO0D77\r\nH87KFhYW8tKFFvF1V3AHl\/sFQ9tDHaxM9Y0pZ2jPp\/ccdiqnmdkBxBDqsiRvHvVB\r\nCn6qpb4vWGFC7vHOBfYspmEL1zLlKXZv3ezMZEZw7O9ZvUP3VO\/wAtd2vUW8UFiq\r\ns2v1QnNLN6jNh51obcwmrBvWhJy9vQIdtIjQbDxqWTHh1zUSrw9wrlklCBZ\/zrM0\r\ni8nfCFwTxWRxp3H9KoECzO\/zS5R5KIS7s3\/wq\/w9T2Ie4rcecgXwDizwnn0C\/aKc\r\nbDIjujpL1s9HO05pcD\/V3wKcPZ1izymBkmMyIbL52iRVN5FTVHeZdXPpFuq+CTQJ\r\nQ238lC+A\/KOVAgMBAAEwDQYJKoZIhvcNAQEFBQADggIBAGoKTnh8RfJV4sQItVC2\r\nAvfJagkrIqZ3iiQTUBQGTKBsTnAqE1H7QgUSV9vSd+8rgvHkyZsRjmtyR1e3A6Ji\r\noNCXUbExC\/0iCPUqdHZIVb+Lc\/vWuv4ByFMybGPydgtLoEUX2ZrKFWmcgZFDUSRd\r\n9Uj26vtUhCC4bU4jgu6hIrR9IuxOBLQUxGTRZyAcXvj7obqRAEZwFAKQgFpfpqTb\r\nH+kjcbZSaAlLVSF7vBc1syyI8RGYbqpwvtREqJtl5IEIwe6huEqJ3zPnlP2th\/55\r\ncf3Fovj6JJgbb9XFxrdnsOsDOu\/tpnaRWlvv5ib4+SzG5wWFT5UUEo4Wg2STQiiX\r\nuVSRQxK1LE1yg84bs3NZk9FSQh4B8vZVuRr5FaJsZZkwlFlhRO\/\/+TJtXRbyNgsf\r\noMRZGi8DLGU2SGEAHcRH\/QZHq\/XDUWVzdxrSBYcy7GSpT7UDVzGv1rEJUrn5veP1\r\n0KmauAqtiIaYRm4f6YBsn0INcZxzIPZ0p8qFtVZBPeHhvQtvOt0iXI\/XUxEWOa2F\r\nK2EqhErgMK\/N07U1JJJay5tYZRtvkGq46oP\/5kQG8hYST0MDK6VihJoPpvCmAm4E\r\npEYKQ96x6A4EH9Y9mZlYozH\/eqmxPbTK8n89\/p7Ydun4rI+B2iiLnY8REWWy6+UQ\r\nV204fGUkJqW5CrKy3P3XvY9X\r\n-----END CERTIFICATE-----" }'; $this->environmentHelper @@ -721,7 +720,7 @@ class CheckerTest extends TestCase { $this->assertSame([], $this->checker->verifyCoreSignature()); } - public function testVerifyCoreSignatureWithValidModifiedHtaccessAndUserIniSignatureData() { + public function testVerifyCoreSignatureWithValidModifiedHtaccessSignatureData() { $this->environmentHelper ->expects($this->once()) ->method('getChannel') @@ -738,11 +737,10 @@ class CheckerTest extends TestCase { ->will($this->returnValue(\OC::$SERVERROOT . '/tests/data/integritycheck/htaccessWithValidModifiedContent')); $signatureDataFile = '{ "hashes": { - ".htaccess": "04d8d8eaa5893d2c30df955ff25d8f75e4ee7eb7d24f7f28b47e7b1d0cce2c339db47debf8de8c80b3d25b5da4da50128720564a30ad1af8d7106d48e6f07ae8", - ".user.ini": "467d4f028c447895716a2b7859ed6e569f8ee34b87b51d73dab2e6a9ca4fbe63172c7be3e365ae864a60408286afcce852dd38ee544b61685ed4ee5e021fecb0", + ".htaccess": "7e6a7a4d8ee4f3fbc45dd579407c643471575a9d127d1c75f6d0a49e80766c3c587104b2139ef76d2a4bffce3f45777900605aaa49519c9532909b71e5030227", "subfolder\/.htaccess": "2c57b1e25050e11dc3ae975832f378c452159f7b69f818e47eeeafadd6ba568517461dcb4d843b90b906cd7c89d161bc1b89dff8e3ae0eb6f5088508c47befd1" }, - "signature": "HpDOx2nLrquRkez2BINtfAOyStlzxWKrE8NJtNdj9ZkSA4iV9GVhgnw6e38jH5Ql+mf+d+r5xM0WRgByTul3Z+9gvtv7huAYLSumwxF4g8u42Q3zC+iB6H8nurea7TQy6WOkDl9XSxXv79DqpDsd3kvLTQi4JpYt\/bI8UXo9jcfB13Yp6s4tQLbCLwLcPxGCAifviB+cHsCGvu01ewyVIFSbLeOaIgAxujXZyodDPJCKPLd5ctKfy4t9YHrCG3HYTh\/HdT3N1gJ62tCJDj+EjwpnIdxSl3aAR8wXyxCvhoGxUNe8pvT8Q9TiI5t+eSjZ8wh+4AavA9lFLipukRO\/ZElSj55nsuRPS8PhszN6Ph57mNX1pIKhgaCp6ERhmD3PGsPQAK9Ymj4j6RCJZ06Cj6+ck4Vs+FJSmvVfz2FLleGBM6tfXgHDvbSPebq9zFukCSID7K1p0p07qu4Z1uuZI9JycghrWoVchQYjx1GndizTSaa55JtVY\/c1yLSHXBXlxt7M8Dc26vvGW+Dpn2aVtoG2N0eigyY7KMukgsBy9jUqEI7094kxtdIaCew7lLf0lRqpKEc+RweR+ielfpP+2r3hmVLYHQ+6Cbroht8clfbkEYpRBOGwf9Bg+uqdDqS6EIhKtFE0wp7QzRSiqGT3\/wiS\/UqM5MV1BM3R5JWRH54=", + "signature": "YVwQvl9Dh8UebCumfgzFxfz3NiZJLmYG8oJVTfEBhulI4KXBnTG1jZTprf4XxG2XIriEYAZXsoXpu9xWsUFe9QfdncwoEpqJtGq7l6aVDTofX5Be5b03MQFJr4cflgllqW77QZ84D9O9qWF\/vNDAofXcwrzT04CxLDhyQgTCgYUnRjG9pnuP\/gtbDKbTjRvxhTyfg3T0Phv1+XAvpTPnH2q5A+1+LmiqziUJ1sMipsKo+jQP614eCi9qjmqhHIgLRgcuOBvsi4g5WUcdcAIZ6qLt5gm2Y3r6rKNVchosU9ZydMUTfjuejDbVwE2fNH5UUnV57fQBxwg9CfX7iFHqKv1bfv5Zviu12paShgWCB12uR3iH\/3lmTJn8K5Xqit3G4eymFaJ5IChdUThBp\/jhQSI2r8sPcZDYSJ\/UZKuFnezFdKhEBd5hMXe8aKAd6ijGDjLARksFuqpi1sS8llC5K1Q+DzktSL\/o64TY4Vuvykiwe\/BAk2SkL9voOtrvU7vfDBcuCPbDJnSBBC0ESpcXeClTBIn6xZ9WaxqoS7sinE\/kUwtWsRd04I7d79\/ouotyNb+mBhTuRsZT12p\/gn4JHXXNUAIpTwchYzGxbfNJ4kxnYBFZWVmvsSqOLFZu1yi5BP3ktA9yhFyWIa5659azRFEKRdXpVHtQVa4IgdhxEqA=", "certificate": "-----BEGIN CERTIFICATE-----\r\nMIIEvjCCAqagAwIBAgIUc\/0FxYrsgSs9rDxp03EJmbjN0NwwDQYJKoZIhvcNAQEF\r\nBQAwIzEhMB8GA1UECgwYb3duQ2xvdWQgQ29kZSBTaWduaW5nIENBMB4XDTE1MTEw\r\nMzIxMDMzM1oXDTE2MTEwMzIxMDMzM1owDzENMAsGA1UEAwwEY29yZTCCAiIwDQYJ\r\nKoZIhvcNAQEBBQADggIPADCCAgoCggIBALb6EgHpkAqZbO5vRO8XSh7G7XGWHw5s\r\niOf4RwPXR6SE9bWZEm\/b72SfWk\/\/J6AbrD8WiOzBuT\/ODy6k5T1arEdHO+Pux0W1\r\nMxYJJI4kH74KKgMpC0SB0Rt+8WrMqV1r3hhJ46df6Xr\/xolP3oD+eLbShPcblhdS\r\nVtkZEkoev8Sh6L2wDCeHDyPxzvj1w2dTdGVO9Kztn0xIlyfEBakqvBWtcxyi3Ln0\r\nklnxlMx3tPDUE4kqvpia9qNiB1AN2PV93eNr5\/2riAzIssMFSCarWCx0AKYb54+d\r\nxLpcYFyqPJ0ydBCkF78DD45RCZet6PNYkdzgbqlUWEGGomkuDoJbBg4wzgzO0D77\r\nH87KFhYW8tKFFvF1V3AHl\/sFQ9tDHaxM9Y0pZ2jPp\/ccdiqnmdkBxBDqsiRvHvVB\r\nCn6qpb4vWGFC7vHOBfYspmEL1zLlKXZv3ezMZEZw7O9ZvUP3VO\/wAtd2vUW8UFiq\r\ns2v1QnNLN6jNh51obcwmrBvWhJy9vQIdtIjQbDxqWTHh1zUSrw9wrlklCBZ\/zrM0\r\ni8nfCFwTxWRxp3H9KoECzO\/zS5R5KIS7s3\/wq\/w9T2Ie4rcecgXwDizwnn0C\/aKc\r\nbDIjujpL1s9HO05pcD\/V3wKcPZ1izymBkmMyIbL52iRVN5FTVHeZdXPpFuq+CTQJ\r\nQ238lC+A\/KOVAgMBAAEwDQYJKoZIhvcNAQEFBQADggIBAGoKTnh8RfJV4sQItVC2\r\nAvfJagkrIqZ3iiQTUBQGTKBsTnAqE1H7QgUSV9vSd+8rgvHkyZsRjmtyR1e3A6Ji\r\noNCXUbExC\/0iCPUqdHZIVb+Lc\/vWuv4ByFMybGPydgtLoEUX2ZrKFWmcgZFDUSRd\r\n9Uj26vtUhCC4bU4jgu6hIrR9IuxOBLQUxGTRZyAcXvj7obqRAEZwFAKQgFpfpqTb\r\nH+kjcbZSaAlLVSF7vBc1syyI8RGYbqpwvtREqJtl5IEIwe6huEqJ3zPnlP2th\/55\r\ncf3Fovj6JJgbb9XFxrdnsOsDOu\/tpnaRWlvv5ib4+SzG5wWFT5UUEo4Wg2STQiiX\r\nuVSRQxK1LE1yg84bs3NZk9FSQh4B8vZVuRr5FaJsZZkwlFlhRO\/\/+TJtXRbyNgsf\r\noMRZGi8DLGU2SGEAHcRH\/QZHq\/XDUWVzdxrSBYcy7GSpT7UDVzGv1rEJUrn5veP1\r\n0KmauAqtiIaYRm4f6YBsn0INcZxzIPZ0p8qFtVZBPeHhvQtvOt0iXI\/XUxEWOa2F\r\nK2EqhErgMK\/N07U1JJJay5tYZRtvkGq46oP\/5kQG8hYST0MDK6VihJoPpvCmAm4E\r\npEYKQ96x6A4EH9Y9mZlYozH\/eqmxPbTK8n89\/p7Ydun4rI+B2iiLnY8REWWy6+UQ\r\nV204fGUkJqW5CrKy3P3XvY9X\r\n-----END CERTIFICATE-----" }'; $this->fileAccessHelper diff --git a/tests/lib/LegacyHelperTest.php b/tests/lib/LegacyHelperTest.php index 76f38706b4..96cd190fd6 100644 --- a/tests/lib/LegacyHelperTest.php +++ b/tests/lib/LegacyHelperTest.php @@ -46,28 +46,6 @@ class LegacyHelperTest extends \Test\TestCase { ); } - /** - * @dataProvider phpFileSizeProvider - */ - public function testPhpFileSize($expected, $input) - { - $result = OC_Helper::phpFileSize($input); - $this->assertEquals($expected, $result); - } - - public function phpFileSizeProvider() - { - return array( - array('0B', 0), - array('1K', 1024), - array('9.5M', 10000000), - array('1.3G', 1395864371), - array('465.7G', 500000000000), - array('465661.3G', 500000000000000), - array('465661287.3G', 500000000000000000), - ); - } - /** * @dataProvider providesComputerFileSize */