diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-08-10 23:03:35 +0200 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-08-10 23:03:35 +0200 |
commit | 9650f3ecbebfc7c7cc30b787acae3490b0f4e6b5 (patch) | |
tree | 80d1c50a805bbd0507a8de495caba39e490d5706 | |
parent | 54aa57b47a9bd8f7e6f2f81f1b229eb19c1e135b (diff) | |
parent | 72ba67815ed15aac9d9511504f61f8c5fa73bff4 (diff) | |
download | nextcloud-server-9650f3ecbebfc7c7cc30b787acae3490b0f4e6b5.tar.gz nextcloud-server-9650f3ecbebfc7c7cc30b787acae3490b0f4e6b5.zip |
Merge pull request #17919 from rullzer/php_supported_check
Display warning in security & setup warnings if php version is EOL
-rw-r--r-- | core/js/setupchecks.js | 5 | ||||
-rw-r--r-- | core/js/tests/specs/setupchecksSpec.js | 17 | ||||
-rw-r--r-- | settings/controller/checksetupcontroller.php | 18 | ||||
-rw-r--r-- | tests/settings/controller/CheckSetupControllerTest.php | 45 |
4 files changed, 85 insertions, 0 deletions
diff --git a/core/js/setupchecks.js b/core/js/setupchecks.js index 35f24b188fa..5a5c12c85e6 100644 --- a/core/js/setupchecks.js +++ b/core/js/setupchecks.js @@ -72,6 +72,11 @@ if(data.isUsedTlsLibOutdated) { messages.push(data.isUsedTlsLibOutdated); } + if(data.phpSupported && data.phpSupported.eol) { + messages.push( + t('core', 'Your PHP version ({version}) is no longer <a href="{phpLink}">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP.', {version: data.phpSupported.version, phpLink: 'https://secure.php.net/supported-versions.php'}) + ); + } } else { messages.push(t('core', 'Error occurred while checking server setup')); } diff --git a/core/js/tests/specs/setupchecksSpec.js b/core/js/tests/specs/setupchecksSpec.js index ec8a732b4a1..fe12aa4544c 100644 --- a/core/js/tests/specs/setupchecksSpec.js +++ b/core/js/tests/specs/setupchecksSpec.js @@ -142,6 +142,23 @@ describe('OC.SetupChecks tests', function() { done(); }); }); + + it('should return an error if the php version is no longer supported', function(done) { + var async = OC.SetupChecks.checkSetup(); + + suite.server.requests[0].respond( + 200, + { + 'Content-Type': 'application/json', + }, + JSON.stringify({isUrandomAvailable: true, securityDocs: 'https://docs.owncloud.org/myDocs.html', serverHasInternetConnection: true, dataDirectoryProtected: true, isMemcacheConfigured: true, phpSupported: {eol: true, version: '5.4.0'}}) + ); + + async.done(function( data, s, x ){ + expect(data).toEqual(['Your PHP version (5.4.0) is no longer <a href="https://secure.php.net/supported-versions.php">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP.']); + done(); + }); + }); }); describe('checkGeneric', function() { diff --git a/settings/controller/checksetupcontroller.php b/settings/controller/checksetupcontroller.php index f849e3ed565..ff605b474e2 100644 --- a/settings/controller/checksetupcontroller.php +++ b/settings/controller/checksetupcontroller.php @@ -175,6 +175,23 @@ class CheckSetupController extends Controller { return ''; } + + /* + * Whether the php version is still supported (at time of release) + * according to: https://secure.php.net/supported-versions.php + * + * @return array + */ + private function isPhpSupported() { + $eol = false; + + //PHP 5.4 is EOL on 14 Sep 2015 + if (version_compare(PHP_VERSION, '5.5.0') === -1) { + $eol = true; + } + + return ['eol' => $eol, 'version' => PHP_VERSION]; + } /** * @return DataResponse @@ -189,6 +206,7 @@ class CheckSetupController extends Controller { 'isUrandomAvailable' => $this->isUrandomAvailable(), 'securityDocs' => $this->urlGenerator->linkToDocs('admin-security'), 'isUsedTlsLibOutdated' => $this->isUsedTlsLibOutdated(), + 'phpSupported' => $this->isPhpSupported(), ] ); } diff --git a/tests/settings/controller/CheckSetupControllerTest.php b/tests/settings/controller/CheckSetupControllerTest.php index 6096aae8652..62fedd6dd6d 100644 --- a/tests/settings/controller/CheckSetupControllerTest.php +++ b/tests/settings/controller/CheckSetupControllerTest.php @@ -31,11 +31,24 @@ use OC_Util; use Test\TestCase; /** + * Mock version_compare + * @param string $version1 + * @param string $version2 + * @return int + */ +function version_compare($version1, $version2) { + return CheckSetupControllerTest::$version_compare; +} + +/** * Class CheckSetupControllerTest * * @package OC\Settings\Controller */ class CheckSetupControllerTest extends TestCase { + /** @var int */ + public static $version_compare; + /** @var CheckSetupController */ private $checkSetupController; /** @var IRequest */ @@ -209,6 +222,33 @@ class CheckSetupControllerTest extends TestCase { ); } + public function testIsPhpSupportedFalse() { + self::$version_compare = -1; + + $this->assertEquals( + ['eol' => true, 'version' => PHP_VERSION], + self::invokePrivate($this->checkSetupController, 'isPhpSupported') + ); + } + + public function testIsPhpSupportedTrue() { + self::$version_compare = 0; + + $this->assertEquals( + ['eol' => false, 'version' => PHP_VERSION], + self::invokePrivate($this->checkSetupController, 'isPhpSupported') + ); + + + self::$version_compare = 1; + + $this->assertEquals( + ['eol' => false, 'version' => PHP_VERSION], + self::invokePrivate($this->checkSetupController, 'isPhpSupported') + ); + + } + public function testCheck() { $this->config->expects($this->at(0)) ->method('getSystemValue') @@ -244,6 +284,7 @@ class CheckSetupControllerTest extends TestCase { ->method('linkToDocs') ->with('admin-security') ->willReturn('https://doc.owncloud.org/server/8.1/admin_manual/configuration_server/hardening.html'); + self::$version_compare = -1; $expected = new DataResponse( [ @@ -254,6 +295,10 @@ class CheckSetupControllerTest extends TestCase { 'isUrandomAvailable' => self::invokePrivate($this->checkSetupController, 'isUrandomAvailable'), 'securityDocs' => 'https://doc.owncloud.org/server/8.1/admin_manual/configuration_server/hardening.html', 'isUsedTlsLibOutdated' => '', + 'phpSupported' => [ + 'eol' => true, + 'version' => PHP_VERSION + ] ] ); $this->assertEquals($expected, $this->checkSetupController->check()); |