Merge pull request #20878 from owncloud/proper-htaccess-support-in-code-signing-checker
Also run .htaccess routine when installing on another system than Apache
This commit is contained in:
commit
f831d93f3f
|
@ -1,4 +1,3 @@
|
|||
# Version: 9.0.0
|
||||
<IfModule mod_headers.c>
|
||||
<IfModule mod_fcgid.c>
|
||||
<IfModule mod_setenvif.c>
|
||||
|
|
|
@ -369,11 +369,9 @@ class Setup {
|
|||
// out that this is indeed an ownCloud data directory
|
||||
file_put_contents($config->getSystemValue('datadirectory', \OC::$SERVERROOT.'/data').'/.ocdata', '');
|
||||
|
||||
// Update htaccess files for apache hosts
|
||||
if (isset($_SERVER['SERVER_SOFTWARE']) && strstr($_SERVER['SERVER_SOFTWARE'], 'Apache')) {
|
||||
self::updateHtaccess();
|
||||
self::protectDataDirectory();
|
||||
}
|
||||
// Update .htaccess files
|
||||
Setup::updateHtaccess();
|
||||
Setup::protectDataDirectory();
|
||||
|
||||
//try to write logtimezone
|
||||
if (date_default_timezone_get()) {
|
||||
|
@ -394,33 +392,18 @@ class Setup {
|
|||
return \OC::$SERVERROOT.'/.htaccess';
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the .htaccess contains the current version parameter
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function isCurrentHtaccess() {
|
||||
$version = \OC_Util::getVersion();
|
||||
unset($version[3]);
|
||||
|
||||
return !strpos(
|
||||
file_get_contents($this->pathToHtaccess()),
|
||||
'Version: '.implode('.', $version)
|
||||
) === false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Append the correct ErrorDocument path for Apache hosts
|
||||
*
|
||||
* @throws \OC\HintException If .htaccess does not include the current version
|
||||
*/
|
||||
public static function updateHtaccess() {
|
||||
// From CLI we don't know the defined web root. Thus we can't write any
|
||||
// directives into the .htaccess file.
|
||||
if(\OC::$CLI) {
|
||||
return;
|
||||
}
|
||||
$setupHelper = new \OC\Setup(\OC::$server->getConfig(), \OC::$server->getIniWrapper(),
|
||||
\OC::$server->getL10N('lib'), new \OC_Defaults(), \OC::$server->getLogger(),
|
||||
\OC::$server->getSecureRandom());
|
||||
if(!$setupHelper->isCurrentHtaccess()) {
|
||||
throw new \OC\HintException('.htaccess file has the wrong version. Please upload the correct version. Maybe you forgot to replace it after updating?');
|
||||
}
|
||||
|
||||
$htaccessContent = file_get_contents($setupHelper->pathToHtaccess());
|
||||
$content = '';
|
||||
|
|
|
@ -130,17 +130,4 @@ class Test_OC_Setup extends \Test\TestCase {
|
|||
->will($this->returnValue('NotAnArray'));
|
||||
$this->setupClass->getSupportedDatabases();
|
||||
}
|
||||
|
||||
/**
|
||||
* This is actual more an integration test whether the version parameter in the .htaccess
|
||||
* was updated as well when the version has been incremented.
|
||||
* If it hasn't this test will fail.
|
||||
*/
|
||||
public function testHtaccessIsCurrent() {
|
||||
$result = self::invokePrivate(
|
||||
$this->setupClass,
|
||||
'isCurrentHtaccess'
|
||||
);
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue