aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Heidecke <felix@heidecke.me>2017-02-13 16:51:23 +0100
committerMorris Jobke <hey@morrisjobke.de>2017-03-20 01:17:12 -0600
commit11f838f9e4302154ebbcf5bad51faca4a0e28607 (patch)
tree72a13b9d43c94114ee2765cd630df00ee825bb7d
parent528a903a7b23ea628e6ec2fc9a221821297c0bec (diff)
downloadnextcloud-server-11f838f9e4302154ebbcf5bad51faca4a0e28607.tar.gz
nextcloud-server-11f838f9e4302154ebbcf5bad51faca4a0e28607.zip
Add ignore_files to config,
test files against ignore_files list on upload fix typo and indentation Move blacklist declaration to lib/public/Files/FileInfo.php, Rename *ignored to *blacklisted Mocked blacklist_files for testing Mocked blacklist_files for testing Signed-off-by: Morris Jobke <hey@morrisjobke.de>
-rw-r--r--apps/files/js/files.js3
-rw-r--r--apps/files/tests/js/filesSpec.js4
-rw-r--r--core/js/js.js8
-rw-r--r--core/js/tests/specHelper.js3
-rw-r--r--lib/private/Template/JSConfigHelper.php1
-rw-r--r--lib/public/Files/FileInfo.php6
6 files changed, 23 insertions, 2 deletions
diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index 99f888ce0f7..38a08d4888c 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -101,7 +101,10 @@
throw t('files', '"{name}" is an invalid file name.', {name: name});
} else if (trimmedName.length === 0) {
throw t('files', 'File name cannot be empty.');
+ } else if (OC.fileIsBlacklisted(trimmedName)) {
+ throw t('files', '"{name}" is not an allow filetype', {name: name});
}
+
return true;
},
displayStorageWarnings: function() {
diff --git a/apps/files/tests/js/filesSpec.js b/apps/files/tests/js/filesSpec.js
index b7627d59fdf..5c3f68b2ba4 100644
--- a/apps/files/tests/js/filesSpec.js
+++ b/apps/files/tests/js/filesSpec.js
@@ -58,7 +58,9 @@ describe('OCA.Files.Files tests', function() {
' ..',
'.. ',
'. ',
- ' .'
+ ' .',
+ 'foo.part',
+ 'bar.filepart'
];
for ( var i = 0; i < fileNames.length; i++ ) {
var threwException = false;
diff --git a/core/js/js.js b/core/js/js.js
index 5c737d41793..8c6fc0d9c07 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -225,6 +225,14 @@ var OCP = {},
},
/**
+ * Check if a user file is allowed to be handled.
+ * @param {string} file to check
+ */
+ fileIsBlacklisted: function(file) {
+ return !!(file.match(oc_config.blacklist_files_regex));
+ },
+
+ /**
* Redirect to the target URL, can also be used for downloads.
* @param {string} targetURL URL to redirect to
*/
diff --git a/core/js/tests/specHelper.js b/core/js/tests/specHelper.js
index f9bdeae0d64..d940cf068f9 100644
--- a/core/js/tests/specHelper.js
+++ b/core/js/tests/specHelper.js
@@ -94,7 +94,8 @@ window.oc_appswebroots = {
};
window.oc_config = {
session_lifetime: 600 * 1000,
- session_keepalive: false
+ session_keepalive: false,
+ blacklist_files_regex: '\.(part|filepart)$',
};
window.oc_appconfig = {
core: {}
diff --git a/lib/private/Template/JSConfigHelper.php b/lib/private/Template/JSConfigHelper.php
index 6bf08dcdada..ca45bbee9c6 100644
--- a/lib/private/Template/JSConfigHelper.php
+++ b/lib/private/Template/JSConfigHelper.php
@@ -209,6 +209,7 @@ class JSConfigHelper {
'modRewriteWorking' => ($this->config->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true'),
'sharing.maxAutocompleteResults' => intval($this->config->getSystemValue('sharing.maxAutocompleteResults', 0)),
'sharing.minSearchStringLength' => intval($this->config->getSystemValue('sharing.minSearchStringLength', 0)),
+ 'blacklist_files_regex' => \OCP\Files\FileInfo::BLACKLIST_FILES_REGEX,
]),
"oc_appconfig" => json_encode([
'core' => [
diff --git a/lib/public/Files/FileInfo.php b/lib/public/Files/FileInfo.php
index b6718efba34..8eeb8df08ce 100644
--- a/lib/public/Files/FileInfo.php
+++ b/lib/public/Files/FileInfo.php
@@ -64,6 +64,12 @@ interface FileInfo {
const MIMETYPE_FOLDER = 'httpd/unix-directory';
/**
+ * @const \OCP\Files\FileInfo::BLACKLIST_FILES_REGEX Return regular expression to test filenames against (blacklisting)
+ * @since 12.0.0
+ */
+ const BLACKLIST_FILES_REGEX = '\.(part|filepart)$';
+
+ /**
* Get the Etag of the file or folder
*
* @return string