From: Jerome Jutteau Date: Wed, 2 Jan 2013 23:01:01 +0000 (+0100) Subject: Forgeted install.php ... shame ... ;) X-Git-Tag: 1.0 X-Git-Url: https://git.p6c8.net/jirafeau_project.git/commitdiff_plain/8446aee16b869be5235e55068ffeb76b163dac79?ds=inline Forgeted install.php ... shame ... ;) --- diff --git a/install.php b/install.php new file mode 100755 index 0000000..a3db15b --- /dev/null +++ b/install.php @@ -0,0 +1,359 @@ + + * + * 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 ('NL', "\n"); +define ('QUOTE', "'"); + +define ('JIRAFEAU_CFG', JIRAFEAU_ROOT.'lib/config.local.php'); +define ('JIRAFEAU_VAR_RAND_LENGTH', 15); + +require (JIRAFEAU_ROOT . 'lib/lang.php'); +require (JIRAFEAU_ROOT . 'lib/config.php'); + +function +jirafeau_quoted ($str) +{ + return QUOTE . str_replace (QUOTE, "\'", $str) . QUOTE; +} + +function +jirafeau_export_cfg ($cfg) +{ + $handle = fopen (JIRAFEAU_CFG, 'w'); + fwrite ($handle, ' $item) + { + fwrite ($handle, '$cfg[' . jirafeau_quoted ($key) . '] = '); + if (is_bool ($item)) + fwrite ($handle, ($item ? 'true' : 'false')); + else if (is_string ($item)) + fwrite ($handle, jirafeau_quoted ($item)); + else + fwrite ($handle, 'null'); + fwrite ($handle, ';'.NL); + } + /* No newline at the end of the file to be able to send headers. */ + fwrite ($handle, '?>'); + fclose ($handle); +} + +function +jirafeau_mkdir ($path) +{ + if (!file_exists ($path) && !@mkdir ($path, 0755)) + return false; + return true; +} + +/** + * Returns true whether the path is writable or we manage to make it + * so, which essentially is the same thing. + * @param $path is the file or directory to be tested. + * @return true if $path is writable. + */ +function +jirafeau_is_writable ($path) +{ + /* "@" gets rid of error messages. */ + return is_writable ($path) || @chmod ($path, 0777); +} + +function +jirafeau_check_var_dir ($path) +{ + $mkdir_str1 = t('The following directory could not be created') . ':'; + $mkdir_str2 = t('You should create this directory by hand.'); + $write_str1 = t('The following directory is not writable') . ':'; + $write_str2 = t('You should give the write right to the web server on ' . + 'this directory.'); + $solution_str = t('Here is a solution') . ':'; + + if (!jirafeau_mkdir ($path) || !jirafeau_is_writable ($path)) + return array ('has_error' => true, + 'why' => $mkdir_str1 . '
' . + $path . '
' . $solution_str . + '
' . $mkdir_str2); + + foreach (array ('files', 'links') 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) == '/') ? '' : '/'); +} + +if (!file_exists (JIRAFEAU_CFG)) +{ + /* We try to create an empty one. */ + if (!@touch (JIRAFEAU_CFG)) + { + require (JIRAFEAU_ROOT . 'lib/template/header.php'); + echo '

' . + t('The local configuration file could not be created. Create a ' . + 'lib/config.local.php file and give the write ' . + 'right to the web server (preferred solution), or give the ' . + 'write right to the web server on the lib ' . + 'directory.') . + '

'; + require (JIRAFEAU_ROOT . 'lib/template/footer.php'); + exit; + } +} + +if (!is_writable (JIRAFEAU_CFG) && !@chmod (JIRAFEAU_CFG, '0666')) +{ + require (JIRAFEAU_ROOT . 'lib/template/header.php'); + echo '

' . + t('The local configuration is not writable by the web server. ' . + 'Give the write right to the web server on the ' . + 'lib/config.local.php file.') . + '

'; + require (JIRAFEAU_ROOT . 'lib/template/footer.php'); + exit; +} + +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'] = $_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; + + default: break; + } + +} + +require (JIRAFEAU_ROOT . 'lib/settings.php'); +require (JIRAFEAU_ROOT . 'lib/template/header.php'); + +$current = 1; +if (isset ($_POST['next'])) + $current = $_POST['step'] + 1; +else if (isset ($_POST['previous'])) + $current = $_POST['step'] - 1; +else if (isset ($_POST['retry'])) + $current = $_POST['step']; + +switch ($current) +{ +case 1: +default: + ?>

" method = "post"> " />
+ + + + +
+ +
+

" method = "post"> " />
+ + + + +
+

" method = "post"> " />
+ + + +
+ +
+

" method = "post"> " />
+
+

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

" />" />
+ '; + } + else + { + echo '

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

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