mirror of
https://github.com/NamelessMC/Nameless
synced 2026-08-18 06:29:04 -04:00
* Make sure error reporting is disabled by default * Fix styleci * Update index.php --------- Co-authored-by: partydragen <admin@partydragen.com> Co-authored-by: Partydragen <adrian_kili@outlook.com>
149 lines
4.2 KiB
PHP
149 lines
4.2 KiB
PHP
<?php
|
|
|
|
/*
|
|
* Made by Samerton
|
|
* https://github.com/NamelessMC/Nameless/
|
|
* NamelessMC version 2.3.0
|
|
*
|
|
* License: MIT
|
|
*
|
|
* Main index file
|
|
*/
|
|
|
|
// Uncomment to enable debugging
|
|
// define('DEBUGGING', 1);
|
|
|
|
header('X-Frame-Options: SAMEORIGIN');
|
|
|
|
if ((!defined('DEBUGGING') || !DEBUGGING) && (getenv('NAMELESS_DEBUGGING') || isset($_SERVER['NAMELESS_DEBUGGING']))) {
|
|
define('DEBUGGING', true);
|
|
}
|
|
|
|
// Disable display errors before vendor load
|
|
ini_set('display_startup_errors', 0);
|
|
ini_set('display_errors', 0);
|
|
|
|
// Ensure PHP version >= 8.2
|
|
if (PHP_VERSION_ID < 80200) {
|
|
die('NamelessMC is not compatible with PHP versions older than 8.2, you are running PHP ' . PHP_VERSION);
|
|
}
|
|
|
|
// Start page load timer
|
|
define('PAGE_START_TIME', microtime(true));
|
|
|
|
if (!is_dir(__DIR__ . '/vendor') || !is_dir(__DIR__ . '/core/assets/vendor')) {
|
|
die(
|
|
"Your installation is missing the 'vendor' or 'core/assets/vendor' directory.<br>
|
|
<br>
|
|
Please use the 'nameless-deps-dist.zip' file, not a source code zip file.<br>
|
|
<br>
|
|
If you are a developer, please refer to the instructions in CONTRIBUTING.md"
|
|
);
|
|
}
|
|
|
|
const PATH = '/';
|
|
const ROOT_PATH = __DIR__;
|
|
|
|
require_once __DIR__ . '/vendor/autoload.php';
|
|
|
|
if (defined('DEBUGGING') && DEBUGGING) {
|
|
ini_set('display_startup_errors', 1);
|
|
ini_set('display_errors', 1);
|
|
}
|
|
|
|
if (isset($_GET['route']) && $_GET['route'] == '/rewrite_test') {
|
|
require_once('rewrite_test.php');
|
|
die;
|
|
}
|
|
|
|
if (!Config::exists() || Config::get('core.installed') !== true) {
|
|
if (is_file(ROOT_PATH . '/install.php')) {
|
|
Redirect::to('install.php');
|
|
} else {
|
|
die('Config does not exist, but neither does the installer');
|
|
}
|
|
}
|
|
|
|
$page = 'Home';
|
|
|
|
if (!ini_get('upload_tmp_dir')) {
|
|
$tmp_dir = sys_get_temp_dir();
|
|
} else {
|
|
$tmp_dir = ini_get('upload_tmp_dir');
|
|
}
|
|
|
|
if (HttpUtils::getProtocol() === 'https') {
|
|
ini_set('session.cookie_secure', 'On');
|
|
}
|
|
|
|
ini_set('session.cookie_httponly', 1);
|
|
ini_set('open_basedir', ROOT_PATH . PATH_SEPARATOR . $tmp_dir . PATH_SEPARATOR . '/proc/stat');
|
|
|
|
// Get the directory the user is trying to access
|
|
$directory = $_SERVER['REQUEST_URI'];
|
|
$directories = explode('/', $directory);
|
|
$lim = count($directories);
|
|
|
|
// Start initialising the page
|
|
require(ROOT_PATH . '/core/init.php');
|
|
|
|
// Get page to load from URL
|
|
if (!isset($_GET['route']) || $_GET['route'] == '/') {
|
|
if ((!isset($_GET['route']) || ($_GET['route'] != '/')) && count($directories) > 1) {
|
|
require(ROOT_PATH . '/404.php');
|
|
} else {
|
|
// Homepage
|
|
$homepage = $pages->getPageByURL(Settings::get('home_type'));
|
|
if ($homepage != null) {
|
|
$pages->setActivePage($homepage);
|
|
require(implode(DIRECTORY_SEPARATOR, [ROOT_PATH, 'modules', $homepage['module'], $homepage['file']]));
|
|
} else {
|
|
$pages->setActivePage($pages->getPageByURL('/'));
|
|
require(ROOT_PATH . '/modules/Core/pages/index.php');
|
|
}
|
|
}
|
|
die;
|
|
}
|
|
|
|
$route = rtrim(strtok($_GET['route'], '?'), '/');
|
|
|
|
$all_pages = $pages->returnPages();
|
|
|
|
if (array_key_exists($route, $all_pages)) {
|
|
$pages->setActivePage($all_pages[$route]);
|
|
if (isset($all_pages[$route]['custom'])) {
|
|
require(implode(DIRECTORY_SEPARATOR, [ROOT_PATH, 'modules', 'Core', 'pages', 'custom.php']));
|
|
die;
|
|
}
|
|
|
|
$path = implode(DIRECTORY_SEPARATOR, [ROOT_PATH, 'modules', $all_pages[$route]['module'], $all_pages[$route]['file']]);
|
|
|
|
if (file_exists($path)) {
|
|
require($path);
|
|
die;
|
|
}
|
|
} else {
|
|
// Use recursion to check - might have URL parameters in path
|
|
$path_array = explode('/', $route);
|
|
|
|
for ($i = count($path_array) - 2; $i > 0; $i--) {
|
|
$new_path = '/';
|
|
for ($n = 1; $n <= $i; $n++) {
|
|
$new_path .= $path_array[$n] . '/';
|
|
}
|
|
|
|
$new_path = rtrim($new_path, '/');
|
|
|
|
if (array_key_exists($new_path, $all_pages)) {
|
|
$path = implode(DIRECTORY_SEPARATOR, [ROOT_PATH, 'modules', $all_pages[$new_path]['module'], $all_pages[$new_path]['file']]);
|
|
|
|
if (file_exists($path)) {
|
|
$pages->setActivePage($all_pages[$new_path]);
|
|
require($path);
|
|
die;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
require(ROOT_PATH . '/404.php');
|