123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- <?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($opts, $post, $errors);
- $this->display($options);
- }
- else {
- $this->finishSetup();
- }
- }
- else {
- $options = array_merge($opts, $post);
- $this->display($options);
- }
- }
- public function display($post) {
- $defaults = array(
- 'adminlogin' => '',
- 'adminpass' => '',
- 'dbuser' => '',
- 'dbpass' => '',
- 'dbname' => '',
- 'dbtablespace' => '',
- 'dbhost' => 'localhost',
- 'dbtype' => '',
- );
- $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) {
- $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);
- $AUTOCONFIG = array();
- include $autosetup_file;
- $post = array_merge ($post, $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);
- }
- }
- $post['dbIsSet'] = $dbIsSet;
- $post['directoryIsSet'] = $directoryIsSet;
- return $post;
- }
- /**
- * Gathers system information like database type and does
- * a few system checks.
- *
- * @return array of system info, including an "errors" value
- * in case of errors/warnings
- */
- 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/MariaDB';
- }
- 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;
- }
- if (\OC_Util::runningOnMac()) {
- $l10n = \OC_L10N::get('core');
- $themeName = \OC_Util::getTheme();
- $theme = new \OC_Defaults();
- $errors[] = array(
- 'error' => $l10n->t(
- 'Mac OS X is not supported and %s will not work properly on this platform. ' .
- 'Use it at your own risk! ',
- $theme->getName()
- ),
- 'hint' => $l10n->t('For the best results, please consider using a GNU/Linux server instead.')
- );
- }
- 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,
- );
- }
- }
|