Merge pull request #4795 from owncloud/setup
Move core setup code to controller classremotes/origin/ldap_group_count
commit
3c80071807
@ -1,73 +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 = array_merge ($_POST, $AUTOCONFIG); |
||||
$_REQUEST = array_merge ($_REQUEST, $AUTOCONFIG); |
||||
} |
||||
|
||||
$dbIsSet = isset($_POST['dbtype']); |
||||
$directoryIsSet = isset($_POST['directory']); |
||||
$adminAccountIsSet = isset($_POST['adminlogin']); |
||||
|
||||
if ($dbIsSet AND $directoryIsSet AND $adminAccountIsSet) { |
||||
$_POST['install'] = 'true'; |
||||
if( file_exists( $autosetup_file )) { |
||||
unlink($autosetup_file); |
||||
} |
||||
} |
||||
|
||||
OC_Util::addScript( '3rdparty', 'strengthify/jquery.strengthify' ); |
||||
OC_Util::addStyle( '3rdparty', 'strengthify/strengthify' ); |
||||
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(), |
||||
'dbIsSet' => $dbIsSet, |
||||
'directoryIsSet' => $directoryIsSet, |
||||
); |
||||
|
||||
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,138 @@ |
||||
<?php |
||||
/** |
||||
* Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
|
||||
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) { |
||||
$defaults = array( |
||||
'adminlogin' => '', |
||||
'adminpass' => '', |
||||
'dbuser' => '', |
||||
'dbpass' => '', |
||||
'dbname' => '', |
||||
'dbtablespace' => '', |
||||
'dbhost' => '', |
||||
); |
||||
$parameters = array_merge($defaults, $post); |
||||
|
||||
\OC_Util::addScript( '3rdparty', 'strengthify/jquery.strengthify' ); |
||||
\OC_Util::addStyle( '3rdparty', 'strengthify/strengthify' ); |
||||
\OC_Util::addScript('setup'); |
||||
\OC_Template::printGuestPage('', 'installation', $parameters); |
||||
} |
||||
|
||||
public function finishSetup() { |
||||
header( 'Location: '.\OC_Helper::linkToRoute( 'post_setup_check' )); |
||||
exit(); |
||||
} |
||||
|
||||
public function loadAutoConfig($post) { |
||||
$dbIsSet = isset($post['dbtype']); |
||||
$directoryIsSet = isset($post['directory']); |
||||
$adminAccountIsSet = isset($post['adminlogin']); |
||||
|
||||
$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 = array_merge ($post, $AUTOCONFIG); |
||||
} |
||||
|
||||
if ($dbIsSet AND $directoryIsSet AND $adminAccountIsSet) { |
||||
$post['install'] = 'true'; |
||||
if( file_exists( $autosetup_file )) { |
||||
unlink($autosetup_file); |
||||
} |
||||
} |
||||
$post['dbIsSet'] = $dbIsSet; |
||||
$post['directoryIsSet'] = $directoryIsSet; |
||||
|
||||
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'); |
||||
$databases = array(); |
||||
if ($hasSQLite) { |
||||
$databases['sqlite'] = 'SQLite'; |
||||
} |
||||
if ($hasMySQL) { |
||||
$databases['mysql'] = 'MySQL'; |
||||
} |
||||
if ($hasPostgreSQL) { |
||||
$databases['pgsql'] = 'PostgreSQL'; |
||||
} |
||||
if ($hasOracle) { |
||||
$databases['oci'] = 'Oracle'; |
||||
} |
||||
if ($hasMSSQL) { |
||||
$databases['mssql'] = 'MS SQL'; |
||||
} |
||||
$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; |
||||
} |
||||
|
||||
$errors = array(); |
||||
|
||||
// Protect data directory here, so we can test if the protection is working |
||||
\OC_Setup::protectDataDirectory(); |
||||
try { |
||||
$htaccessWorking = \OC_Util::isHtAccessWorking(); |
||||
} catch (\OC\HintException $e) { |
||||
$errors[] = array( |
||||
'error' => $e->getMessage(), |
||||
'hint' => $e->getHint() |
||||
); |
||||
$htaccessWorking = false; |
||||
} |
||||
|
||||
return array( |
||||
'hasSQLite' => $hasSQLite, |
||||
'hasMySQL' => $hasMySQL, |
||||
'hasPostgreSQL' => $hasPostgreSQL, |
||||
'hasOracle' => $hasOracle, |
||||
'hasMSSQL' => $hasMSSQL, |
||||
'databases' => $databases, |
||||
'directory' => $datadir, |
||||
'secureRNG' => \OC_Util::secureRNGAvailable(), |
||||
'htaccessWorking' => $htaccessWorking, |
||||
'vulnerableToNullByte' => $vulnerableToNullByte, |
||||
'errors' => $errors, |
||||
); |
||||
} |
||||
} |
Loading…
Reference in new issue