<?php
/*
* Jirafeau, your web file repository
- * Copyright (C) 2020 Jérôme Jutteau <jerome@jutteau.fr>
+ * Copyright (C) 2008 Julien "axolotl" BERNARD <axolotl@magieeternelle.org>
+ * 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
require(JIRAFEAU_ROOT . 'lib/functions.php');
require(JIRAFEAU_ROOT . 'lib/lang.php');
-function env_2_cfg_string(&$cfg, $config_name, $env_name, $default = null)
+function env_2_cfg_string(&$cfg, $config_name, $default = null)
{
+ $env_name = strtoupper($config_name);
$r = getenv($env_name);
if ($r === false) {
if (is_null($default)) {
return true;
}
+function env_2_cfg_bool(&$cfg, $config_name, $default = null)
+{
+ $env_name = strtoupper($config_name);
+ $r = getenv($env_name);
+ if ($r === false) {
+ if (is_null($default)) {
+ return false;
+ } else {
+ $r = $default;
+ }
+ } else {
+ $r = ($r == "1") ? true : false;
+ }
+ echo("setting $config_name to " . ($r ? "true" : "false") . "\n");
+ $cfg[$config_name] = $r;
+ return true;
+}
+
+function env_2_cfg_int(&$cfg, $config_name, $default = null)
+{
+ $env_name = strtoupper($config_name);
+ $r = getenv($env_name);
+ if ($r === false) {
+ if (is_null($default)) {
+ return false;
+ } else {
+ $r = $default;
+ }
+ } else {
+ $r = intval($r);
+ }
+ echo("setting $config_name to $r\n");
+ $cfg[$config_name] = $r;
+ return true;
+}
+
+function env_2_cfg_string_array(&$cfg, $config_name)
+{
+ $env_name = strtoupper($config_name);
+ $r = getenv($env_name);
+ if ($r === false) {
+ return;
+ }
+ $r = explode(",", $r);
+ $c = count($r);
+ echo("setting $config_name array with $c value(s)n\n");
+ $cfg[$config_name] = $r;
+ return true;
+}
+
function setup_admin_password(&$cfg)
{
if (strlen($cfg['admin_password']) > 0) {
function setup_var_folder(&$cfg)
{
- env_2_cfg_string($cfg, 'var_root', 'VAR_ROOT', '/data/');
+ env_2_cfg_string($cfg, 'var_root', '/data/');
$var_root = $cfg['var_root'];
if (!is_dir($var_root)) {
mkdir($var_root, 0770, true);
set_rights($var_root . 'links');
}
-// TODO: lots of other options to implement
-$setup_ok = setup_admin_password($cfg) &&
- setup_var_folder($cfg);
-env_2_cfg_string($cfg, 'web_root', 'WEB_ROOT', '');
-env_2_cfg_string($cfg, 'file_hash', 'FILE_HASH', 'md5');
+function setup_webroot(&$cfg)
+{
+ if (!env_2_cfg_string($cfg, 'web_root')) {
+ echo("warning: you may want to have set WEB_ROOT to your website URL (like 'jirafeau.mydomain.tld/')\n");
+ }
+}
+
+function run_setup(&$cfg)
+{
+ $setup_ok = setup_admin_password($cfg) &&
+ setup_var_folder($cfg);
+ setup_webroot($cfg);
+ env_2_cfg_string($cfg, 'file_hash');
+ env_2_cfg_bool($cfg, 'preview');
+ env_2_cfg_string($cfg, 'title', false);
+ env_2_cfg_string($cfg, 'organisation');
+ env_2_cfg_string($cfg, 'contactperson');
+ env_2_cfg_string($cfg, 'style');
+ env_2_cfg_string($cfg, 'availability_default');
+ env_2_cfg_string($cfg, 'dark_style');
+ env_2_cfg_bool($cfg, 'one_time_download');
+ env_2_cfg_bool($cfg, 'one_time_download_preselected');
+ env_2_cfg_bool($cfg, 'enable_crypt');
+ env_2_cfg_bool($cfg, 'debug');
+ env_2_cfg_int($cfg, 'maximal_upload_size');
+ env_2_cfg_string_array($cfg, 'upload_password');
+ env_2_cfg_string_array($cfg, 'upload_ip');
+ env_2_cfg_string_array($cfg, 'admin_ip');
+ env_2_cfg_string_array($cfg, 'upload_ip_nopassword');
+ env_2_cfg_string_array($cfg, 'proxy_ip');
+ env_2_cfg_bool($cfg, 'store_uploader_ip');
+ env_2_cfg_string($cfg, 'download_password_requirement');
+ env_2_cfg_int($cfg, 'download_password_gen_len');
+ env_2_cfg_string($cfg, 'download_password_gen_chars');
+ env_2_cfg_string($cfg, 'download_password_policy');
+ env_2_cfg_string($cfg, 'download_password_policy_regex');
-if ($setup_ok) {
- $cfg['installation_done'] = true;
- jirafeau_export_cfg($cfg);
- echo("You can now connect to your Jirafeau instance\n");
- exit(0);
-} else {
- echo("Some Jirafeau options failed");
- exit(1);
+ if ($setup_ok) {
+ $cfg['installation_done'] = true;
+ jirafeau_export_cfg($cfg);
+ echo("You can now connect to your Jirafeau instance\n");
+ exit(0);
+ } else {
+ echo("Some Jirafeau options failed");
+ exit(1);
+ }
}
+
+run_setup($cfg);