summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2016-04-29 10:43:07 +0200
committerVincent Petry <pvince81@owncloud.com>2016-04-29 16:18:59 +0200
commit61203eee0422bbb839356bfbfe196ef794fd91b3 (patch)
treeb6a31475da14eea21810c8031193eb6726cba8c6 /apps
parentdaf5f793a472b03e67e7f96b29367b544694645d (diff)
downloadnextcloud-server-61203eee0422bbb839356bfbfe196ef794fd91b3.tar.gz
nextcloud-server-61203eee0422bbb839356bfbfe196ef794fd91b3.zip
Add files:scan warning when NFD or incompatible encoding found
Diffstat (limited to 'apps')
-rw-r--r--apps/files/command/scan.php19
1 files changed, 18 insertions, 1 deletions
diff --git a/apps/files/command/scan.php b/apps/files/command/scan.php
index f607b3e1af1..1ae04c585bb 100644
--- a/apps/files/command/scan.php
+++ b/apps/files/command/scan.php
@@ -89,6 +89,15 @@ class Scan extends Base {
);
}
+ public function checkScanWarning($fullPath, OutputInterface $output) {
+ $normalizedPath = basename(\OC\Files\Filesystem::normalizePath($fullPath));
+ $path = basename($fullPath);
+
+ if ($normalizedPath !== $path) {
+ $output->writeln("\t<error>Entry \"" . $fullPath . '" will not be accessible due to incompatible encoding</error>');
+ }
+ }
+
protected function scanFiles($user, $path, $verbose, OutputInterface $output) {
$scanner = new \OC\Files\Utils\Scanner($user, \OC::$server->getDatabaseConnection(), \OC::$server->getLogger());
# check on each file/folder if there was a user interrupt (ctrl-c) and throw an exception
@@ -126,6 +135,12 @@ class Scan extends Base {
}
});
}
+ $scanner->listen('\OC\Files\Utils\Scanner', 'scanFile', function($path) use ($output) {
+ $this->checkScanWarning($path, $output);
+ });
+ $scanner->listen('\OC\Files\Utils\Scanner', 'scanFolder', function($path) use ($output) {
+ $this->checkScanWarning($path, $output);
+ });
try {
$scanner->scan($path);
@@ -133,7 +148,9 @@ class Scan extends Base {
$output->writeln("<error>Home storage for user $user not writable</error>");
$output->writeln("Make sure you're running the scan command only as the user the web server runs as");
} catch (\Exception $e) {
- # exit the function if ctrl-c has been pressed
+ if ($e->getMessage() !== 'ctrl-c') {
+ $output->writeln('<error>Exception while scanning: ' . $e->getMessage() . "\n" . $e->getTraceAsString() . '</error>');
+ }
return;
}
}