Skip to content

Commit

Permalink
Merge pull request #15112 from nextcloud/backport/14965/stable15
Browse files Browse the repository at this point in the history
[stable15] Prevent a reinstall
  • Loading branch information
MorrisJobke authored Apr 15, 2019
2 parents 5ff7e3d + 441e9fe commit d860057
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 0 deletions.
Empty file added config/CAN_INSTALL
Empty file.
16 changes: 16 additions & 0 deletions core/Controller/SetupController.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,11 @@ public function run($post) {
$post['dbpass'] = $post['dbpassword'];
}

if (!is_file(\OC::$configDir.'/CAN_INSTALL')) {
$this->displaySetupForbidden();
return;
}

if(isset($post['install']) AND $post['install']=='true') {
// We have to launch the installation process :
$e = $this->setupHelper->install($post);
Expand All @@ -79,6 +84,10 @@ public function run($post) {
}
}

private function displaySetupForbidden() {
\OC_Template::printGuestPage('', 'installation_forbidden');
}

public function display($post) {
$defaults = array(
'adminlogin' => '',
Expand All @@ -103,6 +112,13 @@ public function finishSetup() {
unlink($this->autoConfigFile);
}
\OC::$server->getIntegrityCodeChecker()->runInstanceVerification();

if (\OC_Util::getChannel() !== 'git' && is_file(\OC::$configDir.'/CAN_INSTALL')) {
if (!unlink(\OC::$configDir.'/CAN_INSTALL')) {
\OC_Template::printGuestPage('', 'installation_incomplete');
}
}

\OC_Util::redirectToDefaultPage();
}

Expand Down
6 changes: 6 additions & 0 deletions core/templates/installation_forbidden.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<div class="error">
<h2><?php p($l->t('Error')) ?></h2>
<p>
<?php p($l->t('It looks like you are trying to reinstall your Nextcloud. However the file CAN_INSTALL is missing from your config directory. Please create the file CAN_INSTALL in your config folder to continue.')) ?>
</p>
</div>
6 changes: 6 additions & 0 deletions core/templates/installation_incomplete.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<div class="error">
<h2><?php p($l->t('Error')) ?></h2>
<p>
<?php p($l->t('Could not remove CAN_INSTALL from the config folder. Please remove this file manually.')) ?>
</p>
</div>
7 changes: 7 additions & 0 deletions lib/private/Updater.php
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,13 @@ public function upgrade() {
$this->emit('\OC\Updater', 'maintenanceEnabled');
}

// Clear CAN_INSTALL file if not on git
if (\OC_Util::getChannel() !== 'git' && is_file(\OC::$configDir.'/CAN_INSTALL')) {
if (!unlink(\OC::$configDir . '/CAN_INSTALL')) {
$this->log->error('Could not cleanup CAN_INSTALL from your config folder. Please remove this file manually.');
}
}

$installedVersion = $this->config->getSystemValue('version', '0.0.0');
$currentVersion = implode('.', \OCP\Util::getVersion());

Expand Down

0 comments on commit d860057

Please sign in to comment.