<?php
/**
 * VFM - veno file manager setup script
 *
 * PHP version >= 7.4
 *
 * @category  PHP
 * @package   VenoFileManager
 * @author    Nicola Franchini <info@veno.it>
 * @copyright 2013 Nicola Franchini
 * @license   Regular License http://codecanyon.net/licenses/regular
 * @link      http://filemanager.veno.it/
 */
define('VFM_APP', true);

require_once 'config.php';

if ($_CONFIG['debug_mode'] === true) {
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
} else {
    error_reporting(E_ALL ^ E_NOTICE);
}

require_once 'class/class.setup.php';
require_once 'class/class.gatekeeper.php';

$setUp = new setUp();
$gateKeeper = new GateKeeper();

$_USERS = $gateKeeper->getUsers();
$firstrun = $setUp->getConfig('firstrun');
$script_url = $setUp->getConfig('script_url');

if ($firstrun !== true && strlen($_USERS[0]['pass']) > 0 && $script_url) {
    header('Location:'.$script_url);
    exit;
}

require_once 'class/class.utils.php';
require_once 'class/class.admin.php';
require_once 'class/class.updater.php';
$updater = new Updater();

$resetconfig = false;
$resetusr = false;

/**
 * Get the base url of the app
 */
if ($firstrun || !$script_url) {
    $actual_link = Admin::getAppUrl();
    $_CONFIG['script_url'] = $actual_link;
    $_CONFIG['firstrun'] = false;
    $resetconfig = true;
    $updater->updateUploadsDir();
}
/**
 * Create session name
 */
if (strlen($_CONFIG['session_name']) < 5) {
    $session = "vfm_".strval(mt_rand());
    $_CONFIG['session_name'] = $session;
    $resetconfig = true;
}
/**
 * Create unique app key
 */
if (strlen($_CONFIG['salt']) < 5) {
    $_CONFIG['salt'] = md5(mt_rand());
    $resetusr = true;
}

/**
 * Reset first SuperAdmin
 */
if (strlen($_USERS[0]['pass']) < 1 || $resetusr === true) {
    $reset = crypt($_CONFIG['salt'].urlencode('password'), Utils::randomString());
    $_USERS[0]['pass'] = $reset;
    $usr = '$_USERS = ';
    if (false == (file_put_contents('_content/users/users.php', "<?php\n\n $usr".var_export($_USERS, true).";\n"))) {
        Utils::setError("Error writing on <strong>_content/users/users.php</strong>, check CHMOD settings");
    }
}

/**
 * Update config.php file
 */
if ($resetusr === true || $resetconfig === true) {
    $con = '$_CONFIG = ';
    if (false == (file_put_contents('config.php', "<?php\n\n $con".var_export($_CONFIG, true).";\n"))) {
        Utils::setError("Error writing on <strong>/config.php</strong>, check CHMOD settings");
    }
}

$updater->updateHtaccess('./');

header('Location:'.$script_url);
exit;
