diff options
Diffstat (limited to 'settings')
-rw-r--r-- | settings/application.php | 9 | ||||
-rw-r--r-- | settings/controller/checksetupcontroller.php | 81 | ||||
-rw-r--r-- | settings/routes.php | 2 |
3 files changed, 89 insertions, 3 deletions
diff --git a/settings/application.php b/settings/application.php index c876065fffa..f9ee0121db0 100644 --- a/settings/application.php +++ b/settings/application.php @@ -40,6 +40,7 @@ use OC\Settings\Middleware\SubadminMiddleware; use \OCP\AppFramework\App; use OCP\IContainer; use \OCP\Util; +use OC\Server; /** * @package OC\Settings @@ -154,7 +155,8 @@ class Application extends App { $c->query('ClientService'), $c->query('URLGenerator'), $c->query('Util'), - $c->query('L10N') + $c->query('L10N'), + $c->query('Checker') ); }); @@ -240,5 +242,10 @@ class Application extends App { $container->registerService('CertificateManager', function(IContainer $c){ return $c->query('ServerContainer')->getCertificateManager(); }); + $container->registerService('Checker', function(IContainer $c) { + /** @var Server $server */ + $server = $c->query('ServerContainer'); + return $server->getIntegrityCodeChecker(); + }); } } diff --git a/settings/controller/checksetupcontroller.php b/settings/controller/checksetupcontroller.php index 491821b44c5..5a77049479d 100644 --- a/settings/controller/checksetupcontroller.php +++ b/settings/controller/checksetupcontroller.php @@ -26,8 +26,12 @@ namespace OC\Settings\Controller; use GuzzleHttp\Exception\ClientException; +use OC\AppFramework\Http; +use OC\IntegrityCheck\Checker; use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\DataDisplayResponse; use OCP\AppFramework\Http\DataResponse; +use OCP\AppFramework\Http\RedirectResponse; use OCP\Http\Client\IClientService; use OCP\IConfig; use OCP\IL10N; @@ -49,6 +53,8 @@ class CheckSetupController extends Controller { private $urlGenerator; /** @var IL10N */ private $l10n; + /** @var Checker */ + private $checker; /** * @param string $AppName @@ -58,6 +64,7 @@ class CheckSetupController extends Controller { * @param IURLGenerator $urlGenerator * @param \OC_Util $util * @param IL10N $l10n + * @param Checker $checker */ public function __construct($AppName, IRequest $request, @@ -65,13 +72,15 @@ class CheckSetupController extends Controller { IClientService $clientService, IURLGenerator $urlGenerator, \OC_Util $util, - IL10N $l10n) { + IL10N $l10n, + Checker $checker) { parent::__construct($AppName, $request); $this->config = $config; $this->clientService = $clientService; $this->util = $util; $this->urlGenerator = $urlGenerator; $this->l10n = $l10n; + $this->checker = $checker; } /** @@ -248,6 +257,72 @@ class CheckSetupController extends Controller { } /** + * @return RedirectResponse + */ + public function rescanFailedIntegrityCheck() { + $this->checker->runInstanceVerification(); + return new RedirectResponse( + $this->urlGenerator->linkToRoute('settings_admin') + ); + } + + /** + * @NoCSRFRequired + * @return DataResponse + */ + public function getFailedIntegrityCheckFiles() { + $completeResults = $this->checker->getResults(); + + if(!empty($completeResults)) { + $formattedTextResponse = 'Technical information +===================== +The following list covers which files have failed the integrity check. Please read +the previous linked documentation to learn more about the errors and how to fix +them. + +Results +======= +'; + foreach($completeResults as $context => $contextResult) { + $formattedTextResponse .= "- $context\n"; + + foreach($contextResult as $category => $result) { + $formattedTextResponse .= "\t- $category\n"; + if($category !== 'EXCEPTION') { + foreach ($result as $key => $results) { + $formattedTextResponse .= "\t\t- $key\n"; + } + } else { + foreach ($result as $key => $results) { + $formattedTextResponse .= "\t\t- $results\n"; + } + } + + } + } + + $formattedTextResponse .= ' +Raw output +========== +'; + $formattedTextResponse .= print_r($completeResults, true); + } else { + $formattedTextResponse = 'No errors have been found.'; + } + + + $response = new DataDisplayResponse( + $formattedTextResponse, + Http::STATUS_OK, + [ + 'Content-Type' => 'text/plain', + ] + ); + + return $response; + } + + /** * @return DataResponse */ public function check() { @@ -263,7 +338,9 @@ class CheckSetupController extends Controller { 'phpSupported' => $this->isPhpSupported(), 'forwardedForHeadersWorking' => $this->forwardedForHeadersWorking(), 'reverseProxyDocs' => $this->urlGenerator->linkToDocs('admin-reverse-proxy'), - 'isCorrectMemcachedPHPModuleInstalled' => $this->isCorrectMemcachedPHPModuleInstalled() + 'isCorrectMemcachedPHPModuleInstalled' => $this->isCorrectMemcachedPHPModuleInstalled(), + 'hasPassedCodeIntegrityCheck' => $this->checker->hasPassedCheck(), + 'codeIntegrityCheckerDocumentation' => $this->urlGenerator->linkToDocs('admin-code-integrity'), ] ); } diff --git a/settings/routes.php b/settings/routes.php index 95ad234c699..6b6b0150168 100644 --- a/settings/routes.php +++ b/settings/routes.php @@ -53,6 +53,8 @@ $application->registerRoutes($this, [ ['name' => 'LogSettings#getEntries', 'url' => '/settings/admin/log/entries', 'verb' => 'GET'], ['name' => 'LogSettings#download', 'url' => '/settings/admin/log/download', 'verb' => 'GET'], ['name' => 'CheckSetup#check', 'url' => '/settings/ajax/checksetup', 'verb' => 'GET'], + ['name' => 'CheckSetup#getFailedIntegrityCheckFiles', 'url' => '/settings/integrity/failed', 'verb' => 'GET'], + ['name' => 'CheckSetup#rescanFailedIntegrityCheck', 'url' => '/settings/integrity/rescan', 'verb' => 'GET'], ['name' => 'Certificate#addPersonalRootCertificate', 'url' => '/settings/personal/certificate', 'verb' => 'POST'], ['name' => 'Certificate#removePersonalRootCertificate', 'url' => '/settings/personal/certificate/{certificateIdentifier}', 'verb' => 'DELETE'], ] |