initSQL(); $settings = $context->getSettings(); $context->parseCookies(); $currentHostName = getCurrentHostName(); $installation = !$sql || ($sql->isConnected() && !$settings->isInstalled()); $requestedUri = $_GET["site"] ?? $_GET["api"] ?? $_SERVER["REQUEST_URI"]; if ($installation) { $requestedUri = Router::cleanURL($requestedUri); if ($requestedUri !== "" && $requestedUri !== "index.php") { $response = "Redirecting to /"; header("Location: /"); } else { $document = new \Core\Documents\Install(new Router($context)); $response = $document->load(); } } else { $router = null; $routerCacheClass = '\Site\Cache\RouterCache'; $routerCachePath = getClassPath($routerCacheClass); if (is_file($routerCachePath)) { @include_once $routerCachePath; if (class_exists($routerCacheClass)) { $router = new $routerCacheClass($context); } } if ($router === null) { $req = new \Core\API\Routes\GenerateCache($context); if ($req->execute()) { $router = $req->getRouter(); } else { $message = "Unable to generate router cache: " . $req->getLastError(); $response = (new Router($context))->returnStatusCode(500, [ "message" => $message ]); } } if ($router !== null) { if ((!isset($_GET["site"]) || $_GET["site"] === "/") && isset($_GET["error"]) && is_string($_GET["error"]) && preg_match("/^\d+$/", $_GET["error"])) { $response = $router->returnStatusCode(intval($_GET["error"])); } else { try { $pathParams = []; $route = $router->run($requestedUri, $pathParams); if ($route === null) { $response = $router->returnStatusCode(404); } else if (!$settings->isTrustedDomain($currentHostName)) { $error = "Untrusted Origin. Adjust the 'trusted_domains' setting " . "to include the current host '$currentHostName' or contact the administrator to resolve this issue"; if ($route instanceof \Core\Objects\Router\ApiRoute) { header("Content-Type: application/json"); http_response_code(403); $response = json_encode(createError($error)); } else { $response = $router->returnStatusCode(403, ["message" => $error]); } } else { $response = $route->call($router, $pathParams); } } catch (\Throwable $e) { http_response_code(500); $router->getLogger()->error($e->getMessage()); $response = $router->returnStatusCode(500); } } } else { http_response_code(500); $response = "Router could not be instantiated."; } $context->processVisit(); } $context->sendCookies(); die($response);