mirror of
https://github.com/nextcloud/server.git
synced 2026-02-27 18:37:17 +01:00
feat: Warn about maintenance in EncryptAll command
Signed-off-by: Louis Chemineau <louis@chmn.me>
This commit is contained in:
@@ -17,7 +17,6 @@ use Symfony\Component\Console\Question\ConfirmationQuestion;
|
||||
|
||||
class EncryptAll extends Command {
|
||||
protected bool $wasTrashbinEnabled = false;
|
||||
protected bool $wasMaintenanceModeEnabled = false;
|
||||
|
||||
public function __construct(
|
||||
protected IManager $encryptionManager,
|
||||
@@ -33,7 +32,6 @@ class EncryptAll extends Command {
|
||||
*/
|
||||
protected function forceMaintenanceAndTrashbin(): void {
|
||||
$this->wasTrashbinEnabled = (bool)$this->appManager->isEnabledForUser('files_trashbin');
|
||||
$this->wasMaintenanceModeEnabled = $this->config->getSystemValueBool('maintenance');
|
||||
$this->config->setSystemValue('maintenance', true);
|
||||
$this->appManager->disableApp('files_trashbin');
|
||||
}
|
||||
@@ -42,7 +40,7 @@ class EncryptAll extends Command {
|
||||
* Reset the maintenance mode and re-enable the trashbin app
|
||||
*/
|
||||
protected function resetMaintenanceAndTrashbin(): void {
|
||||
$this->config->setSystemValue('maintenance', $this->wasMaintenanceModeEnabled);
|
||||
$this->config->setSystemValue('maintenance', false);
|
||||
if ($this->wasTrashbinEnabled) {
|
||||
$this->appManager->enableApp('files_trashbin');
|
||||
}
|
||||
@@ -73,6 +71,11 @@ class EncryptAll extends Command {
|
||||
throw new \Exception('Server side encryption is not enabled');
|
||||
}
|
||||
|
||||
if ($this->config->getSystemValueBool('maintenance')) {
|
||||
$output->writeln('<error>This command cannot be run with maintenance mode enabled.</error>');
|
||||
return self::FAILURE;
|
||||
}
|
||||
|
||||
$output->writeln("\n");
|
||||
$output->writeln('You are about to encrypt all files stored in your Nextcloud installation.');
|
||||
$output->writeln('Depending on the number of available files, and their size, this may take quite some time.');
|
||||
@@ -92,9 +95,9 @@ class EncryptAll extends Command {
|
||||
}
|
||||
|
||||
$this->resetMaintenanceAndTrashbin();
|
||||
return 0;
|
||||
return self::SUCCESS;
|
||||
}
|
||||
$output->writeln('aborted');
|
||||
return 1;
|
||||
return self::FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,15 +71,6 @@ class EncryptAllTest extends TestCase {
|
||||
// trash bin needs to be disabled in order to avoid adding dummy files to the users
|
||||
// trash bin which gets deleted during the encryption process
|
||||
$this->appManager->expects($this->once())->method('disableApp')->with('files_trashbin');
|
||||
// enable single user mode to avoid that other user login during encryption
|
||||
// destructor should disable the single user mode again
|
||||
$this->config->expects($this->once())->method('getSystemValueBool')->with('maintenance', false)->willReturn(false);
|
||||
$this->config->expects($this->exactly(2))
|
||||
->method('setSystemValue')
|
||||
->withConsecutive(
|
||||
['maintenance', true],
|
||||
['maintenance', false],
|
||||
);
|
||||
|
||||
$instance = new EncryptAll($this->encryptionManager, $this->appManager, $this->config, $this->questionHelper);
|
||||
$this->invokePrivate($instance, 'forceMaintenanceAndTrashbin');
|
||||
|
||||
Reference in New Issue
Block a user