]> source.dussan.org Git - nextcloud-server.git/commitdiff
Block install without CAN_INSTALL file 14965/head
authorRoeland Jago Douma <roeland@famdouma.nl>
Thu, 4 Apr 2019 21:32:00 +0000 (23:32 +0200)
committerRoeland Jago Douma <roeland@famdouma.nl>
Thu, 11 Apr 2019 07:32:33 +0000 (09:32 +0200)
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
config/CAN_INSTALL [new file with mode: 0644]
core/Controller/SetupController.php
core/templates/installation_forbidden.php [new file with mode: 0644]
core/templates/installation_incomplete.php [new file with mode: 0644]
lib/private/Updater.php

diff --git a/config/CAN_INSTALL b/config/CAN_INSTALL
new file mode 100644 (file)
index 0000000..e69de29
index b9d561cb4c963c361f045d64fa9740d0edbc92a6..3dd02fc31dc2a914c0f41982e687b75a76b93f44 100644 (file)
@@ -62,6 +62,11 @@ class SetupController {
                        $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);
@@ -79,6 +84,10 @@ class SetupController {
                }
        }
 
+       private function displaySetupForbidden() {
+               \OC_Template::printGuestPage('', 'installation_forbidden');
+       }
+
        public function display($post) {
                $defaults = array(
                        'adminlogin' => '',
@@ -101,6 +110,13 @@ class SetupController {
                        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();
        }
 
diff --git a/core/templates/installation_forbidden.php b/core/templates/installation_forbidden.php
new file mode 100644 (file)
index 0000000..743d14b
--- /dev/null
@@ -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>
diff --git a/core/templates/installation_incomplete.php b/core/templates/installation_incomplete.php
new file mode 100644 (file)
index 0000000..867f637
--- /dev/null
@@ -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>
index 313cfc82ffac0376987a756e98b40c24ce924891..56bea90ddd77c38022460d116e3ab7eef7bde16c 100644 (file)
@@ -111,6 +111,13 @@ class Updater extends BasicEmitter {
                        $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());