Merge pull request #4396 from nextcloud/scan-non-existing
show error when trying to scan non existing path
This commit is contained in:
commit
867b3ee234
|
@ -32,6 +32,7 @@ use Doctrine\DBAL\Connection;
|
|||
use OC\Core\Command\Base;
|
||||
use OC\Core\Command\InterruptedException;
|
||||
use OC\ForbiddenException;
|
||||
use OCP\Files\NotFoundException;
|
||||
use OCP\Files\StorageNotAvailableException;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\IUserManager;
|
||||
|
@ -131,7 +132,7 @@ class Scan extends Base {
|
|||
$scanner->listen('\OC\Files\Utils\Scanner', 'StorageNotAvailable', function (StorageNotAvailableException $e) use ($output) {
|
||||
$output->writeln("Error while scanning, storage not available (" . $e->getMessage() . ")");
|
||||
});
|
||||
# count only
|
||||
# count only
|
||||
} else {
|
||||
$scanner->listen('\OC\Files\Utils\Scanner', 'scanFile', function () use ($output) {
|
||||
$this->filesCounter += 1;
|
||||
|
@ -146,17 +147,17 @@ class Scan extends Base {
|
|||
}
|
||||
});
|
||||
}
|
||||
$scanner->listen('\OC\Files\Utils\Scanner', 'scanFile', function($path) use ($output) {
|
||||
$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) {
|
||||
$scanner->listen('\OC\Files\Utils\Scanner', 'scanFolder', function ($path) use ($output) {
|
||||
$this->checkScanWarning($path, $output);
|
||||
});
|
||||
|
||||
try {
|
||||
if ($backgroundScan) {
|
||||
$scanner->backgroundScan($path);
|
||||
}else {
|
||||
} else {
|
||||
$scanner->scan($path);
|
||||
}
|
||||
} catch (ForbiddenException $e) {
|
||||
|
@ -165,6 +166,8 @@ class Scan extends Base {
|
|||
} catch (InterruptedException $e) {
|
||||
# exit the function if ctrl-c has been pressed
|
||||
$output->writeln('Interrupted by user');
|
||||
} catch (NotFoundException $e) {
|
||||
$output->writeln('<error>Path not found: ' . $e->getMessage() . '</error>');
|
||||
} catch (\Exception $e) {
|
||||
$output->writeln('<error>Exception during scan: ' . $e->getMessage() . '</error>');
|
||||
$output->writeln('<error>' . $e->getTraceAsString() . '</error>');
|
||||
|
@ -194,7 +197,7 @@ class Scan extends Base {
|
|||
$verbose = $input->getOption('verbose');
|
||||
$quiet = $input->getOption('quiet');
|
||||
# restrict the verbosity level to VERBOSITY_VERBOSE
|
||||
if ($output->getVerbosity()>OutputInterface::VERBOSITY_VERBOSE) {
|
||||
if ($output->getVerbosity() > OutputInterface::VERBOSITY_VERBOSE) {
|
||||
$output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE);
|
||||
}
|
||||
if ($quiet) {
|
||||
|
@ -223,7 +226,9 @@ class Scan extends Base {
|
|||
$user_count += 1;
|
||||
if ($this->userManager->userExists($user)) {
|
||||
# add an extra line when verbose is set to optical separate users
|
||||
if ($verbose) {$output->writeln(""); }
|
||||
if ($verbose) {
|
||||
$output->writeln("");
|
||||
}
|
||||
$output->writeln("Starting scan for user $user_count out of $users_total ($user)");
|
||||
# full: printout data if $verbose was set
|
||||
$this->scanFiles($user, $path, $verbose, $output, $input->getOption('unscanned'));
|
||||
|
@ -327,7 +332,7 @@ class Scan extends Base {
|
|||
* @return \OCP\IDBConnection
|
||||
*/
|
||||
protected function reconnectToDatabase(OutputInterface $output) {
|
||||
/** @var Connection | IDBConnection $connection*/
|
||||
/** @var Connection | IDBConnection $connection */
|
||||
$connection = \OC::$server->getDatabaseConnection();
|
||||
try {
|
||||
$connection->close();
|
||||
|
|
|
@ -128,6 +128,8 @@ class ScanAppData extends Base {
|
|||
} catch (InterruptedException $e) {
|
||||
# exit the function if ctrl-c has been pressed
|
||||
$output->writeln('Interrupted by user');
|
||||
} catch (NotFoundException $e) {
|
||||
$output->writeln('<error>Path not found: ' . $e->getMessage() . '</error>');
|
||||
} catch (\Exception $e) {
|
||||
$output->writeln('<error>Exception during scan: ' . $e->getMessage() . '</error>');
|
||||
$output->writeln('<error>' . $e->getTraceAsString() . '</error>');
|
||||
|
|
|
@ -32,6 +32,7 @@ use OC\ForbiddenException;
|
|||
use OC\Hooks\PublicEmitter;
|
||||
use OC\Lock\DBLockingProvider;
|
||||
use OCA\Files_Sharing\SharedStorage;
|
||||
use OCP\Files\NotFoundException;
|
||||
use OCP\Files\Storage\IStorage;
|
||||
use OCP\Files\StorageNotAvailableException;
|
||||
use OCP\ILogger;
|
||||
|
@ -161,6 +162,7 @@ class Scanner extends PublicEmitter {
|
|||
/**
|
||||
* @param string $dir
|
||||
* @throws \OC\ForbiddenException
|
||||
* @throws \OCP\Files\NotFoundException
|
||||
*/
|
||||
public function scan($dir = '') {
|
||||
if (!Filesystem::isValidPath($dir)) {
|
||||
|
@ -210,6 +212,9 @@ class Scanner extends PublicEmitter {
|
|||
$this->triggerPropagator($storage, $path);
|
||||
});
|
||||
|
||||
if (!$storage->file_exists($relativePath)) {
|
||||
throw new NotFoundException($dir);
|
||||
}
|
||||
if (!$isDbLocking) {
|
||||
$this->db->beginTransaction();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue