Move core setup code to controller class
This commit is contained in:
parent
2cdde7a56a
commit
8ae612f693
|
@ -1,59 +0,0 @@
|
|||
<?php
|
||||
|
||||
// Check for autosetup:
|
||||
$autosetup_file = OC::$SERVERROOT."/config/autoconfig.php";
|
||||
if( file_exists( $autosetup_file )) {
|
||||
OC_Log::write('core', 'Autoconfig file found, setting up owncloud...', OC_Log::INFO);
|
||||
include $autosetup_file;
|
||||
$_POST['install'] = 'true';
|
||||
$_POST = array_merge ($_POST, $AUTOCONFIG);
|
||||
unlink($autosetup_file);
|
||||
}
|
||||
|
||||
OC_Util::addScript('setup');
|
||||
|
||||
$hasSQLite = class_exists('SQLite3');
|
||||
$hasMySQL = is_callable('mysql_connect');
|
||||
$hasPostgreSQL = is_callable('pg_connect');
|
||||
$hasOracle = is_callable('oci_connect');
|
||||
$hasMSSQL = is_callable('sqlsrv_connect');
|
||||
$datadir = OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data');
|
||||
$vulnerableToNullByte = false;
|
||||
if(@file_exists(__FILE__."\0Nullbyte")) { // Check if the used PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)
|
||||
$vulnerableToNullByte = true;
|
||||
}
|
||||
|
||||
// Protect data directory here, so we can test if the protection is working
|
||||
OC_Setup::protectDataDirectory();
|
||||
|
||||
$opts = array(
|
||||
'hasSQLite' => $hasSQLite,
|
||||
'hasMySQL' => $hasMySQL,
|
||||
'hasPostgreSQL' => $hasPostgreSQL,
|
||||
'hasOracle' => $hasOracle,
|
||||
'hasMSSQL' => $hasMSSQL,
|
||||
'directory' => $datadir,
|
||||
'secureRNG' => OC_Util::secureRNGAvailable(),
|
||||
'htaccessWorking' => OC_Util::isHtAccessWorking(),
|
||||
'vulnerableToNullByte' => $vulnerableToNullByte,
|
||||
'errors' => array(),
|
||||
);
|
||||
|
||||
if(isset($_POST['install']) AND $_POST['install']=='true') {
|
||||
// We have to launch the installation process :
|
||||
$e = OC_Setup::install($_POST);
|
||||
$errors = array('errors' => $e);
|
||||
|
||||
if(count($e) > 0) {
|
||||
//OC_Template::printGuestPage("", "error", array("errors" => $errors));
|
||||
$options = array_merge($_POST, $opts, $errors);
|
||||
OC_Template::printGuestPage("", "installation", $options);
|
||||
}
|
||||
else {
|
||||
header( 'Location: '.OC_Helper::linkToRoute( 'post_setup_check' ));
|
||||
exit();
|
||||
}
|
||||
}
|
||||
else {
|
||||
OC_Template::printGuestPage("", "installation", $opts);
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
namespace OC\Core\Setup;
|
||||
|
||||
class Controller {
|
||||
public function run($post) {
|
||||
// Check for autosetup:
|
||||
$post = $this->loadAutoConfig($post);
|
||||
$opts = $this->getSystemInfo();
|
||||
|
||||
if(isset($post['install']) AND $post['install']=='true') {
|
||||
// We have to launch the installation process :
|
||||
$e = \OC_Setup::install($post);
|
||||
$errors = array('errors' => $e);
|
||||
|
||||
if(count($e) > 0) {
|
||||
$options = array_merge($post, $opts, $errors);
|
||||
$this->display($options);
|
||||
}
|
||||
else {
|
||||
$this->finishSetup();
|
||||
}
|
||||
}
|
||||
else {
|
||||
$this->display($opts);
|
||||
}
|
||||
}
|
||||
|
||||
public function display($post) {
|
||||
\OC_Util::addScript('setup');
|
||||
\OC_Template::printGuestPage('', 'installation', $post);
|
||||
}
|
||||
|
||||
public function finishSetup() {
|
||||
header( 'Location: '.\OC_Helper::linkToRoute( 'post_setup_check' ));
|
||||
exit();
|
||||
}
|
||||
|
||||
public function loadAutoConfig($post) {
|
||||
$autosetup_file = \OC::$SERVERROOT.'/config/autoconfig.php';
|
||||
if( file_exists( $autosetup_file )) {
|
||||
\OC_Log::write('core', 'Autoconfig file found, setting up owncloud...', \OC_Log::INFO);
|
||||
include $autosetup_file;
|
||||
$post['install'] = 'true';
|
||||
$post = array_merge ($post, $AUTOCONFIG);
|
||||
unlink($autosetup_file);
|
||||
}
|
||||
return $post;
|
||||
}
|
||||
|
||||
public function getSystemInfo() {
|
||||
$hasSQLite = class_exists('SQLite3');
|
||||
$hasMySQL = is_callable('mysql_connect');
|
||||
$hasPostgreSQL = is_callable('pg_connect');
|
||||
$hasOracle = is_callable('oci_connect');
|
||||
$hasMSSQL = is_callable('sqlsrv_connect');
|
||||
$datadir = \OC_Config::getValue('datadirectory', \OC::$SERVERROOT.'/data');
|
||||
$vulnerableToNullByte = false;
|
||||
if(@file_exists(__FILE__."\0Nullbyte")) { // Check if the used PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)
|
||||
$vulnerableToNullByte = true;
|
||||
}
|
||||
|
||||
// Protect data directory here, so we can test if the protection is working
|
||||
\OC_Setup::protectDataDirectory();
|
||||
|
||||
return array(
|
||||
'hasSQLite' => $hasSQLite,
|
||||
'hasMySQL' => $hasMySQL,
|
||||
'hasPostgreSQL' => $hasPostgreSQL,
|
||||
'hasOracle' => $hasOracle,
|
||||
'hasMSSQL' => $hasMSSQL,
|
||||
'directory' => $datadir,
|
||||
'secureRNG' => \OC_Util::secureRNGAvailable(),
|
||||
'htaccessWorking' => \OC_Util::isHtAccessWorking(),
|
||||
'vulnerableToNullByte' => $vulnerableToNullByte,
|
||||
'errors' => array(),
|
||||
);
|
||||
}
|
||||
}
|
|
@ -610,7 +610,8 @@ class OC {
|
|||
|
||||
// Check if ownCloud is installed or in maintenance (update) mode
|
||||
if (!OC_Config::getValue('installed', false)) {
|
||||
require_once 'core/setup.php';
|
||||
$controller = new OC\Core\Setup\Controller();
|
||||
$controller->run($_POST);
|
||||
exit();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue