From 59082661cad7444c60852c49f0cfaf0beb3dc799 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Fri, 13 Mar 2020 15:29:14 +0100 Subject: [PATCH] remove the requirement that everything that looks like a placeholder is substituted While maybe not common, `$` is a valid option in config fields Signed-off-by: Robin Appelman --- apps/files_external/lib/config.php | 28 ----------- .../Config/PlaceholderSubstituteTest.php | 49 ------------------- 2 files changed, 77 deletions(-) delete mode 100644 apps/files_external/tests/Config/PlaceholderSubstituteTest.php diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php index 9040f40e66b..f799fd25f57 100644 --- a/apps/files_external/lib/config.php +++ b/apps/files_external/lib/config.php @@ -252,20 +252,6 @@ class OC_Mount_Config { continue; } $option = self::substitutePlaceholdersInConfig($option); - if(!self::arePlaceholdersSubstituted($option)) { - \OC::$server->getLogger()->error( - 'A placeholder was not substituted: {option} for mount type {class}', - [ - 'app' => 'files_external', - 'option' => $option, - 'class' => $class, - ] - ); - throw new StorageNotAvailableException( - 'Mount configuration incomplete', - StorageNotAvailableException::STATUS_INCOMPLETE_CONF - ); - } } if (class_exists($class)) { try { @@ -290,20 +276,6 @@ class OC_Mount_Config { return StorageNotAvailableException::STATUS_ERROR; } - public static function arePlaceholdersSubstituted($option):bool { - $result = true; - if(is_array($option)) { - foreach ($option as $optionItem) { - $result = $result && self::arePlaceholdersSubstituted($optionItem); - } - } else if (is_string($option)) { - if (strpos(rtrim($option, '$'), '$') !== false) { - $result = false; - } - } - return $result; - } - /** * Read the mount points in the config file into an array * diff --git a/apps/files_external/tests/Config/PlaceholderSubstituteTest.php b/apps/files_external/tests/Config/PlaceholderSubstituteTest.php deleted file mode 100644 index 3cc19bfd85d..00000000000 --- a/apps/files_external/tests/Config/PlaceholderSubstituteTest.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * @author Daniel Kesselberg - * - * @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_external\tests\Config; - -use OC_Mount_Config; -use Test\TestCase; - -class PlaceholderSubstituteTest extends TestCase { - - public function dataArePlaceholdersSubstituted(): array { - return [ - ['smb_$user', false], - ['hidden_share$', true], - [['smb_$user', 'hidden_share$'], false], - [['smb_hello', 'hidden_share$'], true] - ]; - } - - /** - * @dataProvider dataArePlaceholdersSubstituted - * @param string|array $option - * @param bool $expected - */ - public function testArePlaceholdersSubstituted($option, $expected): void { - $this->assertSame($expected, OC_Mount_Config::arePlaceholdersSubstituted($option)); - } - -} -- 2.39.5