]> git.p6c8.net - jirafeau.git/blobdiff - install.php
Config option to enforce "classic download" without HTML5 File Api
[jirafeau.git] / install.php
index b6b322d5a38334a26b2037643dae79367880c92e..ebda6f566af9d0de581c5a102101eac03687881e 100644 (file)
@@ -2,7 +2,8 @@
 /*
  *  Jirafeau, your web file repository
  *  Copyright (C) 2008  Julien "axolotl" BERNARD <axolotl@magieeternelle.org>
- *  Copyright (C) 2015  Nicola Spanti (RyDroid) <dev@nicola-spanti.info>
+ *  Copyright (C) 2015  Jerome Jutteau <jerome@jutteau.fr>
+ *  Copyright (C) 2024  Jirafeau project <https://gitlab.com/jirafeau> (see AUTHORS.md)
  *
  *  This program is free software: you can redistribute it and/or modify
  *  it under the terms of the GNU Affero General Public License as
@@ -26,73 +27,6 @@ require(JIRAFEAU_ROOT . 'lib/settings.php');
 require(JIRAFEAU_ROOT . 'lib/functions.php');
 require(JIRAFEAU_ROOT . 'lib/lang.php');
 
-function jirafeau_export_cfg($cfg)
-{
-    $content = '<?php' . NL;
-    $content .= '/* This file was generated by the install process. ' .
-               'You can edit it. Please see config.original.php to understand the ' .
-               'configuration items. */' . NL;
-    $content .= '$cfg = ' . var_export($cfg, true) . ';';
-
-    $fileWrite = file_put_contents(JIRAFEAU_CFG, $content);
-
-    if (false === $fileWrite) {
-        jirafeau_fatal_error(t('Can not write local configuration file'));
-    }
-}
-
-function jirafeau_mkdir($path)
-{
-    return !(!file_exists($path) && !@mkdir($path, 0755));
-}
-
-/**
- * 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('CANNOT_CREATE_DIR') . ':';
-    $mkdir_str2 = t('MANUAL_CREATE');
-    $write_str1 = t('DIR_NOT_W') . ':';
-    $write_str2 = t('You should give the write permission to the web server on ' .
-                    'this directory.');
-    $solution_str = t('HERE_SOLUTION') . ':';
-
-    if (!jirafeau_mkdir($path) || !jirafeau_is_writable($path)) {
-        return array('has_error' => true,
-                      'why' => $mkdir_str1 . '<br /><code>' .
-                               $path . '</code><br />' . $solution_str .
-                               '<br />' . $mkdir_str2);
-    }
-
-    foreach (array('files', 'links', 'async') as $subdir) {
-        $subpath = $path.$subdir;
-
-        if (!jirafeau_mkdir($subpath) || !jirafeau_is_writable($subpath)) {
-            return array('has_error' => true,
-                          'why' => $mkdir_str1 . '<br /><code>' .
-                                   $subpath . '</code><br />' . $solution_str .
-                                   '<br />' . $mkdir_str2);
-        }
-    }
-
-    return array('has_error' => false, 'why' => '');
-}
-
-function jirafeau_add_ending_slash($path)
-{
-    return $path . ((substr($path, -1) == '/') ? '' : '/');
-}
-
 /**
  * Check installation
  **/
@@ -114,23 +48,13 @@ require(JIRAFEAU_ROOT . 'lib/template/header.php');
 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 ' .
-               '<code>lib/config.local.php</code> file and give the write ' .
-               'permission to the web server (preferred solution), or give the ' .
-               'write permission to the web server on the <code>lib</code> ' .
-               'directory.')
-        );
+        jirafeau_fatal_error(t('CONF_SOLUTION'));
     }
 }
 
 // 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 ' .
-            '<code>lib/config.local.php</code> file.')
-    );
+    jirafeau_fatal_error(t('CONF_SOLUTION_2'));
 }
 
 /**
@@ -139,26 +63,26 @@ if (!is_writable(JIRAFEAU_CFG) && !@chmod(JIRAFEAU_CFG, '0666')) {
 
 if (isset($_POST['step']) && isset($_POST['next'])) {
     switch ($_POST['step']) {
-    case 1:
-        if (strlen($_POST['admin_password'])) {
-            $cfg['admin_password'] = hash('sha256', $_POST['admin_password']);
-        } else {
-            $cfg['admin_password'] = '';
-        }
-        jirafeau_export_cfg($cfg);
-        break;
-
-    case 2:
-        $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 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 1:
+            if (strlen($_POST['admin_password'])) {
+                $cfg['admin_password'] = hash('sha256', $_POST['admin_password']);
+            } else {
+                $cfg['admin_password'] = '';
+            }
+            jirafeau_export_cfg($cfg);
+            break;
+
+        case 2:
+            $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 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;
     }
 }
 
@@ -172,117 +96,112 @@ if (isset($_POST['next'])) {
 }
 
 switch ($current) {
-case 1:
-default:
-    ?><h2><?php printf(t('JI_INSTALL') . ' - ' . t('STEP') .
-    ' %d ' . t('OUT_OF') . ' %d', 1, 3);
-    ?></h2> <div id = "install"> <form method="post"> <input type =
+    case 1:
+    default:
+        ?><h2><?php printf(t('JI_INSTALL') . ' - ' . t('STEP') .
+        ' %d ' . t('OUT_OF') . ' %d', 1, 3);
+        ?></h2> <div id = "install"> <form method="post"> <input type =
         "hidden" name = "jirafeau" value =
         "<?php echo JIRAFEAU_VERSION; ?>" /><input type = "hidden" name =
         "step" value = "1" /><fieldset> <legend><?php
-        echo t('ADMIN_PSW');
-    ?></legend> <table> <tr> <td class = "info" colspan =
+            echo t('ADMIN_PSW');
+        ?></legend> <table> <tr> <td class = "info" colspan =
         "2"><?php echo t('ADMIN_INTERFACE_INFO');
-    ?></td> </tr> <tr> <td class = "label"><label for = "select_password"
+        ?></td> </tr> <tr> <td class = "label"><label for = "select_password"
        ><?php echo t('ADMIN_PSW') . ':';
-    ?></label></td>
+        ?></label></td>
         <td class = "field"><input type = "password" name = "admin_password"
-        id = "admin_password" size = "40" /></td>
+        id = "admin_password" size = "40" autocomplete = "new-password"/></td>
         </tr>
         <tr class = "nav">
         <td></td>
         <td class = "nav next">
         <input type = "submit"
         class = "navleft" name = "previous" value = "<?php
-        echo t('PREV_STEP'); ?>" />
+            echo t('PREV_STEP'); ?>" />
         <input type = "submit" name = "next" value =
         "<?php echo t('NEXT_STEP'); ?>" /></td> </tr> </table>
         </fieldset> </form> </div> <?php
 break;
 
-case 2:
-    ?><h2><?php printf(t('JI_INSTALL') . ' - ' . t('STEP') .
-    ' %d ' . t('OUT_OF') . ' %d', 2, 3);
-    ?></h2> <div id = "install"> <form method="post"> <input type =
+    case 2:
+        ?><h2><?php printf(t('JI_INSTALL') . ' - ' . t('STEP') .
+        ' %d ' . t('OUT_OF') . ' %d', 2, 3);
+        ?></h2> <div id = "install"> <form method="post"> <input type =
         "hidden" name = "jirafeau" value =
         "<?php echo JIRAFEAU_VERSION; ?>" /><input type = "hidden" name =
         "step" value =
         "2" /><fieldset> <legend><?php echo t('INFO');
-    ?></legend> <table> <tr> <td class = "info" colspan =
+        ?></legend> <table> <tr> <td class = "info" colspan =
         "2"><?php echo t('BASE_ADDR_INFO');
-    ?></td> </tr> <tr> <td class = "label"><label for = "input_web_root"
+        ?></td> </tr> <tr> <td class = "label"><label for = "input_web_root"
        ><?php echo t('BASE_ADDR') . ':';
-    ?></label></td>
+        ?></label></td>
         <td class = "field"><input type = "text" name = "web_root"
         id = "input_web_root" value = "<?php
-        echo(empty($cfg['web_root']) ?
-          $_SERVER['HTTP_HOST'] . str_replace(
-              basename(__FILE__),
-              '',
-              $_SERVER['REQUEST_URI']
-          ) : $cfg['web_root']);
-      ?>" size = "40" /></td>
+               echo(empty($cfg['web_root']) ? jirafeau_default_web_root() : $cfg['web_root']);
+        ?>" size = "40" /></td>
         </tr> <tr> <td class = "info" colspan = "2"><?php
-        echo t('DATA_DIR_EXPLAINATION');
-    ?></td> </tr> <tr> <td class = "label"><label for = "input_var_root"
+          echo t('DATA_DIR_EXPLAINATION');
+        ?></td> </tr> <tr> <td class = "label"><label for = "input_var_root"
        ><?php echo t('DATA_DIR') . ':';
-    ?></label></td>
+        ?></label></td>
         <td class = "field"><input type = "text" name = "var_root"
         id = "input_var_root" value = "<?php
-        if (empty($cfg['var_root'])) {
-            $alphanum = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' .
+            if (empty($cfg['var_root'])) {
+                $alphanum = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' .
           'abcdefghijklmnopqrstuvwxyz' . '0123456789';
-            $len_alphanum = strlen($alphanum);
-            $var = 'var-';
-            for ($i = 0; $i <JIRAFEAU_VAR_RAND_LENGTH; $i++) {
-                $var .= substr($alphanum, mt_rand(0, $len_alphanum - 1), 1);
+                $len_alphanum = strlen($alphanum);
+                $var = 'var-';
+                for ($i = 0; $i < JIRAFEAU_VAR_RAND_LENGTH; $i++) {
+                    $var .= substr($alphanum, mt_rand(0, $len_alphanum - 1), 1);
+                }
+                echo JIRAFEAU_ROOT . $var . '/';
+            } else {
+                echo $cfg['var_root'];
             }
-            echo JIRAFEAU_ROOT . $var . '/';
-        } else {
-            echo $cfg['var_root'];
-        }
-      ?>" size = "40" /></td>
+        ?>" size = "40" /></td>
         </tr> <tr> <td colspan = "2"><input type = "submit"
         class = "navleft" name = "previous" value = "<?php
-        echo t('PREV_STEP'); ?>" />
+          echo t('PREV_STEP'); ?>" />
          <input type = "submit" class = "navright" name = "next" value = 
         "<?php echo t('NEXT_STEP'); ?>" />
         </td> </tr> </table> </fieldset>
         </form> </div> <?php
 break;
 
-case 3:
-    ?><h2><?php printf(t('JI_INSTALL') . ' - ' . t('STEP') .
-    ' %d ' . t('OUT_OF') . ' %d', 3, 3);
-    ?></h2> <div id = "install"> <form method="post"> <input type =
+    case 3:
+        ?><h2><?php printf(t('JI_INSTALL') . ' - ' . t('STEP') .
+        ' %d ' . t('OUT_OF') . ' %d', 3, 3);
+        ?></h2> <div id = "install"> <form method="post"> <input type =
         "hidden" name = "jirafeau" value =
         "<?php echo JIRAFEAU_VERSION; ?>" /><input type = "hidden" name =
         "step" value =
         "3" /><fieldset> <legend><?php echo t('FINALIZATION');
-    ?></legend> <table> <tr> <td class = "info" colspan =
+        ?></legend> <table> <tr> <td class = "info" colspan =
         "2"><?php echo t('SETTING_UP');
-    ?></td> </tr> <tr> <td class = "nav previous"><input type =
+        ?></td> </tr> <tr> <td class = "nav previous"><input type =
         "submit" name = "previous" value = " <?php echo t('PREV_STEP');
-    ?>" /></td> <td></td> </tr>
+        ?>" /></td> <td></td> </tr>
         </table> </fieldset> </form> </div>
     <?php
-    $err = jirafeau_check_var_dir($cfg['var_root']);
-    if ($err['has_error']) {
-        echo '<div class="error"><p>'.$err['why'].'<br />'.NL; ?><form method="post"> <input type = "hidden" name = "jirafeau" value =
+        $err = jirafeau_check_var_dir($cfg['var_root']);
+        if ($err['has_error']) {
+            echo '<div class="error"><p>'.$err['why'].'<br />'.NL; ?><form method="post"> <input type = "hidden" name = "jirafeau" value =
             "<?php echo JIRAFEAU_VERSION; ?>" /><input type = "hidden" name =
             "step" value = "3" /><input type = "submit" name =
             "retry" value =
             "<?php echo t('RETRY_STEP'); ?>" /></form>
             <?php echo '</p></div>';
-    } else {
-        $cfg['installation_done'] = true;
-        jirafeau_export_cfg($cfg);
-        echo '<div class="message"><p>' .
-             t('JI_FONCTIONAL') . ':' .
-             '<br /><a href="./">' .
-             $cfg['web_root'].'</a></p></div>';
-    }
-break;
+        } else {
+            $cfg['installation_done'] = true;
+            jirafeau_export_cfg($cfg);
+            echo '<div class="message"><p>' .
+                 t('JI_FONCTIONAL') . ':' .
+                 '<br /><a href="./">' .
+                 $cfg['web_root'].'</a></p></div>';
+        }
+        break;
 }
 
 require(JIRAFEAU_ROOT . 'lib/template/footer.php');

patrick-canterino.de