From 3ce6d87aa1e8d772fb727413346f8e7426c38706 Mon Sep 17 00:00:00 2001 From: Matthieu Aubry Date: Tue, 27 Dec 2016 22:05:21 +1300 Subject: File integrity checker now reports files found in the filesystem but not expected to be there (#11096) * File integrity checker now reports files found in the filesystem but not expected to be there fixes #11087 * Move file integrity logic to own class * Fix bug in logic so that third party plugins are not listed * fix up some comments * Also report any hidden files not expected to be there * Issue a warning when file integrity didn't run for any reason. Safer choice * Ui tests --- plugins/CoreUpdater/Controller.php | 19 ++++++++++--------- plugins/Diagnostics/Diagnostic/FileIntegrityCheck.php | 16 +++++----------- .../Diagnostic/RecommendedFunctionsCheck.php | 1 + 3 files changed, 16 insertions(+), 20 deletions(-) (limited to 'plugins') diff --git a/plugins/CoreUpdater/Controller.php b/plugins/CoreUpdater/Controller.php index 143c9c04b9..cae8ec124c 100644 --- a/plugins/CoreUpdater/Controller.php +++ b/plugins/CoreUpdater/Controller.php @@ -12,22 +12,22 @@ use Exception; use Piwik\AssetManager; use Piwik\Common; use Piwik\Config; -use Piwik\Container\StaticContainer; use Piwik\DbHelper; use Piwik\Filechecks; +use Piwik\FileIntegrity; use Piwik\Filesystem; use Piwik\Http; use Piwik\Option; use Piwik\Piwik; -use Piwik\Plugin\Manager as PluginManager; use Piwik\Plugin; +use Piwik\Plugin\Manager as PluginManager; use Piwik\Plugins\LanguagesManager\LanguagesManager; use Piwik\Plugins\Marketplace\Plugins; use Piwik\SettingsServer; use Piwik\Updater as DbUpdater; use Piwik\Version; -use Piwik\View\OneClickDone; use Piwik\View; +use Piwik\View\OneClickDone; class Controller extends \Piwik\Plugin\Controller { @@ -306,12 +306,13 @@ class Controller extends \Piwik\Plugin\Controller } // check file integrity - $integrityInfo = Filechecks::getFileIntegrityInformation(); - if (isset($integrityInfo[1])) { - if ($integrityInfo[0] == false) { - $this->warningMessages[] = Piwik::translate('General_FileIntegrityWarningExplanation'); - } - $this->warningMessages = array_merge($this->warningMessages, array_slice($integrityInfo, 1)); + list($success, $messages) = FileIntegrity::getFileIntegrityInformation(); + + if (!$success) { + $this->warningMessages[] = Piwik::translate('General_FileIntegrityWarning'); + } + if (count($messages) > 0) { + $this->warningMessages = array_merge($this->warningMessages, $messages); } Filesystem::deleteAllCacheOnUpdate(); diff --git a/plugins/Diagnostics/Diagnostic/FileIntegrityCheck.php b/plugins/Diagnostics/Diagnostic/FileIntegrityCheck.php index 7393877175..e9e58fdd8b 100644 --- a/plugins/Diagnostics/Diagnostic/FileIntegrityCheck.php +++ b/plugins/Diagnostics/Diagnostic/FileIntegrityCheck.php @@ -8,7 +8,7 @@ namespace Piwik\Plugins\Diagnostics\Diagnostic; use Piwik\Development; -use Piwik\Filechecks; +use Piwik\FileIntegrity; use Piwik\Translation\Translator; /** @@ -31,22 +31,16 @@ class FileIntegrityCheck implements Diagnostic $label = $this->translator->translate('Installation_SystemCheckFileIntegrity'); if(Development::isEnabled()) { - return array(DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_OK)); + return array(DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_WARNING, '(Disabled in development mode)')); } - $messages = Filechecks::getFileIntegrityInformation(); - $ok = array_shift($messages); - - if (empty($messages)) { - return array(DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_OK)); - } + list($ok, $messages) = FileIntegrity::getFileIntegrityInformation(); if ($ok) { - $status = DiagnosticResult::STATUS_WARNING; - return array(DiagnosticResult::singleResult($label, $status, $messages[0])); + return array(DiagnosticResult::singleResult($label, DiagnosticResult::STATUS_OK, implode('
', $messages))); } - $comment = $this->translator->translate('General_FileIntegrityWarningExplanation'); + $comment = $this->translator->translate('General_FileIntegrityWarning'); // Keep only the 20 first lines else it becomes unmanageable if (count($messages) > 20) { diff --git a/plugins/Diagnostics/Diagnostic/RecommendedFunctionsCheck.php b/plugins/Diagnostics/Diagnostic/RecommendedFunctionsCheck.php index e89cf2e290..1a454de0d5 100644 --- a/plugins/Diagnostics/Diagnostic/RecommendedFunctionsCheck.php +++ b/plugins/Diagnostics/Diagnostic/RecommendedFunctionsCheck.php @@ -57,6 +57,7 @@ class RecommendedFunctionsCheck implements Diagnostic 'parse_ini_file', 'glob', 'gzopen', + 'md5_file', ); } -- cgit v1.2.3