Get all http headers in camel-case form
public static getAllHeaders ( ) : array | ||
리턴 | array |
$envId = (int) $_SERVER['HTTP_X_SCALR_ENV_ID']; $pathChunks = explode('/', $path); $version = array_shift($pathChunks); $path = '/' . $path; $user = Scalr_Account_User::init(); $user->loadByApiAccessKey($keyId); if (!$user->getSetting(Scalr_Account_User::SETTING_API_ENABLED)) { throw new Exception("API disabled for this account"); } //Check IP whitelist $postData = isset($_POST['rawPostData']) ? $_POST['rawPostData'] : ''; $secretKey = $user->getSetting(Scalr_Account_User::SETTING_API_SECRET_KEY); $stringToSign = "{$path}:{$keyId}:{$envId}:{$postData}:{$secretKey}"; $validToken = CryptoTool::hash($stringToSign); if ($validToken != $token) { throw new Exception("Invalid authentification token"); } // prepate input data $postDataConvert = array(); foreach (json_decode($postData, true) as $key => $value) { $postDataConvert[str_replace('.', '_', $key)] = $value; } $request = Scalr_UI_Request::initializeInstance(Scalr_UI_Request::REQUEST_TYPE_API, Scalr::getAllHeaders(), $_SERVER, $postDataConvert, $_FILES, $user->id, $envId); $request->requestApiVersion = intval(trim($version, 'v')); SettingEntity::increase('internalapi.' . join('.', $pathChunks)); Scalr_Api_Controller::handleRequest($pathChunks); Scalr_UI_Response::getInstance()->sendResponse(); } catch (Exception $e) { Scalr_UI_Response::getInstance()->failure($e->getMessage()); Scalr_UI_Response::getInstance()->sendResponse(); }
\Scalr::logException($e); Scalr_UI_Response::getInstance()->data(array('errorDB' => true)); Scalr_UI_Response::getInstance()->debugException($e); Scalr_UI_Response::getInstance()->failure($e instanceof \Scalr\Exception\MysqlConnectionException ? 'Database connection issue' : 'Database error'); Scalr_UI_Response::getInstance()->sendResponse(); }; try { $startTime = microtime(true); require __DIR__ . '/src/prepend.inc.php'; $prependTime = microtime(true); // public controller for link like /public/*; don't check CSRF $publicController = !strncmp('public', $path, strlen('public')); $session = Scalr_Session::getInstance(); $time1 = microtime(true); try { $request = Scalr_UI_Request::initializeInstance(Scalr_UI_Request::REQUEST_TYPE_UI, Scalr::getAllHeaders(), $_SERVER, $_REQUEST, $_FILES, $session->getUserId(), null); } catch (Exception $e) { if ($path == 'guest/logout') { // hack Scalr_Session::destroy(); Scalr_UI_Response::getInstance()->setRedirect('/'); Scalr_UI_Response::getInstance()->sendResponse(); exit; } $message = $e->getMessage(); if ($e->getCode() != 1) { $message = htmlspecialchars($message) . ' <a href="/guest/logout">Click here to login as another user</a>'; Scalr_UI_Response::getInstance()->debugException($e); Scalr_UI_Response::getInstance()->failure($message, true); throw new Exception(); } else {
//NOTE: Apache mod_rewrite sets REDIRECT_URL instead of REQUEST_URI environment variable, we need to get final overridden URI $path = trim(str_replace("?{$_SERVER['QUERY_STRING']}", "", isset($_SERVER['REDIRECT_URL']) ? $_SERVER['REDIRECT_URL'] : $_SERVER['REQUEST_URI']), '/'); $logMysqlExcepton = function ($e) { \Scalr::logException($e); Scalr_UI_Response::getInstance()->data(array('errorDB' => true)); Scalr_UI_Response::getInstance()->debugException($e); Scalr_UI_Response::getInstance()->failure($e instanceof \Scalr\Exception\MysqlConnectionException ? 'Database connection issue' : 'Database error'); Scalr_UI_Response::getInstance()->sendResponse(); }; try { $startTime = microtime(true); require __DIR__ . '/src/prepend.inc.php'; $prependTime = microtime(true); // public controller for link like /public/*; don't check CSRF $publicController = !strncmp('public', $path, strlen('public')); $headers = Scalr::getAllHeaders(); $session = Scalr_Session::getInstance(isset($headers['Scalr-Autoload-Request'])); $time1 = microtime(true); try { $request = Scalr_UI_Request::initializeInstance(Scalr_UI_Request::REQUEST_TYPE_UI, $headers, $_SERVER, $_REQUEST, $_FILES, $session->getUserId(), null); } catch (Exception $e) { if ($path == 'guest/logout') { // hack Scalr_Session::destroy(); Scalr_UI_Response::getInstance()->setRedirect('/'); Scalr_UI_Response::getInstance()->sendResponse(); exit; } $message = $e->getMessage(); if ($e->getCode() != 1) { $message = htmlspecialchars($message) . ' <a href="/guest/logout">Click here to login as another user</a>';