Browse Source
Clean up single user mode
Clean up single user mode
Single user mode basically disables WebDAV, OCS and cron execution. Since we heavily rely on WebDAV and OCS also in the web UI it's basically useless. An admin only sees a broken interface and can't even change any settings nor sees any files. Also sharing is not possible. As this is at least the case since Nextcloud 9 and we haven't received any reports for this it seems that this feature is not used at all so I removed it. The encryption commands now rely on the well tested maintenance mode. Signed-off-by: Morris Jobke <hey@morrisjobke.de>pull/3605/head
No known key found for this signature in database
GPG Key ID: 9CE5ED29E7FCD38A
16 changed files with 37 additions and 310 deletions
-
3apps/dav/lib/Connector/Sabre/MaintenancePlugin.php
-
18apps/dav/tests/unit/Connector/Sabre/MaintenancePluginTest.php
-
8config/config.sample.php
-
22core/Command/Encryption/DecryptAll.php
-
22core/Command/Encryption/EncryptAll.php
-
79core/Command/Maintenance/SingleUser.php
-
1core/register_command.php
-
5cron.php
-
27lib/base.php
-
1lib/composer/composer/autoload_classmap.php
-
1lib/composer/composer/autoload_static.php
-
3ocs/v1.php
-
1public.php
-
14tests/Core/Command/Encryption/DecryptAllTest.php
-
10tests/Core/Command/Encryption/EncryptAllTest.php
-
132tests/Core/Command/Maintenance/SingleUserTest.php
@ -1,79 +0,0 @@ |
|||
<?php |
|||
/** |
|||
* @copyright Copyright (c) 2016, ownCloud, Inc. |
|||
* |
|||
* @author Morris Jobke <hey@morrisjobke.de> |
|||
* @author Robin Appelman <robin@icewind.nl> |
|||
* |
|||
* @license AGPL-3.0 |
|||
* |
|||
* This code is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License, version 3, |
|||
* as published by the Free Software Foundation. |
|||
* |
|||
* 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, version 3, |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
|||
* |
|||
*/ |
|||
|
|||
namespace OC\Core\Command\Maintenance; |
|||
|
|||
use Symfony\Component\Console\Command\Command; |
|||
use Symfony\Component\Console\Input\InputInterface; |
|||
use Symfony\Component\Console\Input\InputOption; |
|||
use Symfony\Component\Console\Output\OutputInterface; |
|||
|
|||
use OCP\IConfig; |
|||
|
|||
class SingleUser extends Command { |
|||
|
|||
/** @var IConfig */ |
|||
protected $config; |
|||
|
|||
/** |
|||
* @param IConfig $config |
|||
*/ |
|||
public function __construct(IConfig $config) { |
|||
$this->config = $config; |
|||
parent::__construct(); |
|||
} |
|||
|
|||
protected function configure() { |
|||
$this |
|||
->setName('maintenance:singleuser') |
|||
->setDescription('set single user mode') |
|||
->addOption( |
|||
'on', |
|||
null, |
|||
InputOption::VALUE_NONE, |
|||
'enable single user mode' |
|||
) |
|||
->addOption( |
|||
'off', |
|||
null, |
|||
InputOption::VALUE_NONE, |
|||
'disable single user mode' |
|||
); |
|||
} |
|||
|
|||
protected function execute(InputInterface $input, OutputInterface $output) { |
|||
if ($input->getOption('on')) { |
|||
$this->config->setSystemValue('singleuser', true); |
|||
$output->writeln('Single user mode enabled'); |
|||
} elseif ($input->getOption('off')) { |
|||
$this->config->setSystemValue('singleuser', false); |
|||
$output->writeln('Single user mode disabled'); |
|||
} else { |
|||
if ($this->config->getSystemValue('singleuser', false)) { |
|||
$output->writeln('Single user mode is currently enabled'); |
|||
} else { |
|||
$output->writeln('Single user mode is currently disabled'); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -1,132 +0,0 @@ |
|||
<?php |
|||
/** |
|||
* @author Morris Jobke <hey@morrisjobke.de> |
|||
* |
|||
* @copyright Copyright (c) 2015, ownCloud, Inc. |
|||
* @license AGPL-3.0 |
|||
* |
|||
* This code is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License, version 3, |
|||
* as published by the Free Software Foundation. |
|||
* |
|||
* 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, version 3, |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
|||
* |
|||
*/ |
|||
|
|||
namespace Tests\Core\Command\Maintenance; |
|||
|
|||
|
|||
use OC\Core\Command\Maintenance\SingleUser; |
|||
use OCP\IConfig; |
|||
use Symfony\Component\Console\Input\InputInterface; |
|||
use Symfony\Component\Console\Output\OutputInterface; |
|||
use Test\TestCase; |
|||
|
|||
class SingleUserTest extends TestCase { |
|||
/** @var \PHPUnit_Framework_MockObject_MockObject */ |
|||
protected $config; |
|||
/** @var \PHPUnit_Framework_MockObject_MockObject */ |
|||
protected $consoleInput; |
|||
/** @var \PHPUnit_Framework_MockObject_MockObject */ |
|||
protected $consoleOutput; |
|||
|
|||
/** @var \Symfony\Component\Console\Command\Command */ |
|||
protected $command; |
|||
|
|||
protected function setUp() { |
|||
parent::setUp(); |
|||
|
|||
$config = $this->config = $this->getMockBuilder(IConfig::class) |
|||
->disableOriginalConstructor() |
|||
->getMock(); |
|||
$this->consoleInput = $this->getMockBuilder(InputInterface::class)->getMock(); |
|||
$this->consoleOutput = $this->getMockBuilder(OutputInterface::class)->getMock(); |
|||
|
|||
/** @var \OCP\IConfig $config */ |
|||
$this->command = new SingleUser($config); |
|||
} |
|||
|
|||
public function testChangeStateToOn() { |
|||
|
|||
$this->consoleInput->expects($this->once()) |
|||
->method('getOption') |
|||
->with('on') |
|||
->willReturn(true); |
|||
|
|||
$this->config->expects($this->once()) |
|||
->method('setSystemValue') |
|||
->with('singleuser', true); |
|||
|
|||
$this->consoleOutput->expects($this->once()) |
|||
->method('writeln') |
|||
->with('Single user mode enabled'); |
|||
|
|||
self::invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]); |
|||
} |
|||
|
|||
public function testChangeStateToOff() { |
|||
|
|||
$this->consoleInput->expects($this->at(0)) |
|||
->method('getOption') |
|||
->with('on') |
|||
->willReturn(false); |
|||
|
|||
$this->consoleInput->expects($this->at(1)) |
|||
->method('getOption') |
|||
->with('off') |
|||
->willReturn(true); |
|||
|
|||
$this->config->expects($this->once()) |
|||
->method('setSystemValue') |
|||
->with('singleuser', false); |
|||
|
|||
$this->consoleOutput->expects($this->once()) |
|||
->method('writeln') |
|||
->with('Single user mode disabled'); |
|||
|
|||
self::invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]); |
|||
} |
|||
|
|||
public function stateData() { |
|||
return [ |
|||
[ true, 'Single user mode is currently enabled' ], |
|||
[ false, 'Single user mode is currently disabled' ], |
|||
]; |
|||
} |
|||
|
|||
/** |
|||
* @dataProvider stateData |
|||
* |
|||
* @param $state |
|||
* @param $expectedOutput |
|||
*/ |
|||
public function testState($state, $expectedOutput) { |
|||
|
|||
$this->consoleInput->expects($this->at(0)) |
|||
->method('getOption') |
|||
->with('on') |
|||
->willReturn(false); |
|||
|
|||
$this->consoleInput->expects($this->at(1)) |
|||
->method('getOption') |
|||
->with('off') |
|||
->willReturn(false); |
|||
|
|||
$this->config->expects($this->once()) |
|||
->method('getSystemValue') |
|||
->with('singleuser', false) |
|||
->willReturn($state); |
|||
|
|||
$this->consoleOutput->expects($this->once()) |
|||
->method('writeln') |
|||
->with($expectedOutput); |
|||
|
|||
self::invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]); |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue