* Copyright (C) 2015 Nicola Spanti (RyDroid) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ define('JIRAFEAU_ROOT', dirname(__FILE__) . '/'); define('JIRAFEAU_CFG', JIRAFEAU_ROOT . 'lib/config.local.php'); define('JIRAFEAU_VAR_RAND_LENGTH', 15); require(JIRAFEAU_ROOT . 'lib/settings.php'); require(JIRAFEAU_ROOT . 'lib/functions.php'); require(JIRAFEAU_ROOT . 'lib/lang.php'); /** * Prepend used functions **/ function jirafeau_quoted($str) { return QUOTE . str_replace(QUOTE, "\'", $str) . QUOTE; } function jirafeau_export_cfg($cfg) { $content = ' true, 'why' => $mkdir_str1 . '
' . $path . '
' . $solution_str . '
' . $mkdir_str2); } foreach (array('files', 'links', 'async', 'alias') as $subdir) { $subpath = $path.$subdir; if (!jirafeau_mkdir($subpath) || !jirafeau_is_writable($subpath)) { return array('has_error' => true, 'why' => $mkdir_str1 . '
' . $subpath . '
' . $solution_str . '
' . $mkdir_str2); } } return array('has_error' => false, 'why' => ''); } function jirafeau_add_ending_slash($path) { return $path . ((substr($path, -1) == '/') ? '' : '/'); } function jirafeau_fatal_error($errorText) { echo '

Error

' . $errorText . '

'; require(JIRAFEAU_ROOT . 'lib/template/footer.php'); exit; } /** * Check installation **/ // Is the installation process done already? // Then there is nothing to do here → redirect to the main page. if ($cfg['installation_done'] === true) { header('Location: index.php'); exit; } /** * Prepare installation process **/ require(JIRAFEAU_ROOT . 'lib/template/header.php'); // does the local configuration file exist? if (!file_exists(JIRAFEAU_CFG)) { // show an error if it is not possible to create the file if (!@touch(JIRAFEAU_CFG)) { jirafeau_fatal_error( t('The local configuration file could not be created. Create a ' . 'lib/config.local.php file and give the write ' . 'permission to the web server (preferred solution), or give the ' . 'write permission to the web server on the lib ' . 'directory.') ); } } // is the local configuration writable? if (!is_writable(JIRAFEAU_CFG) && !@chmod(JIRAFEAU_CFG, '0666')) { jirafeau_fatal_error( t('The local configuration is not writable by the web server. ' . 'Give the write permission to the web server on the ' . 'lib/config.local.php file.') ); } /** * Run trough each installation step **/ if (isset($_POST['step']) && isset($_POST['next'])) { switch ($_POST['step']) { case 1: $cfg['lang'] = $_POST['lang']; jirafeau_export_cfg($cfg); break; case 2: $cfg['admin_password'] = hash('sha256', $_POST['admin_password']); jirafeau_export_cfg($cfg); break; case 3: $cfg['web_root'] = jirafeau_add_ending_slash($_POST['web_root']); $cfg['var_root'] = jirafeau_add_ending_slash($_POST['var_root']); jirafeau_export_cfg($cfg); break; case 4: $cfg['web_root'] = jirafeau_add_ending_slash($_POST['web_root']); $cfg['var_root'] = jirafeau_add_ending_slash($_POST['var_root']); jirafeau_export_cfg($cfg); break; } } $current = 1; if (isset($_POST['next'])) { $current = $_POST['step'] + 1; } elseif (isset($_POST['previous'])) { $current = $_POST['step'] - 1; } elseif (isset($_POST['retry'])) { $current = $_POST['step']; } switch ($current) { case 1: default: ?>

'.$err['why'].'
'.NL; ?>

'; } else { $cfg['installation_done'] = true; jirafeau_export_cfg($cfg); echo '

' . t('Jirafeau is now fully operational') . ':' . '
' . $cfg['web_root'].'

'; } break; } require(JIRAFEAU_ROOT . 'lib/template/footer.php');