OneManager-php/index.php

134 lines
4.3 KiB
PHP
Raw Normal View History

2019-12-30 14:15:35 +00:00
<?php
error_reporting(E_ALL & ~E_NOTICE);
2020-01-18 12:12:21 +00:00
include 'vendor/autoload.php';
2019-12-30 14:15:35 +00:00
include 'conststr.php';
include 'common.php';
2019-12-30 14:15:35 +00:00
2020-01-18 12:12:21 +00:00
//echo '<pre>'. json_encode($_SERVER, JSON_PRETTY_PRINT).'</pre>';
2020-03-13 12:35:28 +00:00
if (isset($_SERVER['USER'])&&$_SERVER['USER']==='qcloud') {
2020-08-06 02:46:11 +00:00
if (getenv('ONEMANAGER_CONFIG_SAVE')=='file') include 'platform/TencentSCF_file.php';
else include 'platform/TencentSCF_env.php';
} elseif (isset($_SERVER['FC_SERVER_PATH'])&&$_SERVER['FC_SERVER_PATH']==='/var/fc/runtime/php7.2') {
include 'platform/AliyunFC.php';
2020-07-13 09:36:17 +00:00
} elseif ($_SERVER['_APP_SHARE_DIR']=='/var/share/CFF/processrouter') {
include 'platform/HuaweiFG.php';
2020-03-13 12:35:28 +00:00
} elseif (isset($_SERVER['HEROKU_APP_DIR'])&&$_SERVER['HEROKU_APP_DIR']==='/app') {
include 'platform/Heroku.php';
2020-01-18 12:12:21 +00:00
$path = getpath();
//echo 'path:'. $path;
$_GET = getGET();
//echo '<pre>'. json_encode($_GET, JSON_PRETTY_PRINT).'</pre>';
$re = main($path);
$sendHeaders = array();
foreach ($re['headers'] as $headerName => $headerVal) {
header($headerName . ': ' . $headerVal, true);
}
http_response_code($re['statusCode']);
echo $re['body'];
} else {
include 'platform/Normal.php';
2020-01-18 12:12:21 +00:00
$path = getpath();
//echo 'path:'. $path;
$_GET = getGET();
//echo '<pre>'. json_encode($_GET, JSON_PRETTY_PRINT).'</pre>';
2019-12-30 14:15:35 +00:00
2020-01-18 12:12:21 +00:00
$re = main($path);
$sendHeaders = array();
foreach ($re['headers'] as $headerName => $headerVal) {
header($headerName . ': ' . $headerVal, true);
2019-12-30 14:15:35 +00:00
}
2020-01-18 12:12:21 +00:00
http_response_code($re['statusCode']);
echo $re['body'];
}
// Tencent SCF
2020-01-18 12:12:21 +00:00
function main_handler($event, $context)
{
$event = json_decode(json_encode($event), true);
$context = json_decode(json_encode($context), true);
printInput($event, $context);
unset($_POST);
unset($_GET);
unset($_COOKIE);
unset($_SERVER);
GetGlobalVariable($event);
2020-01-20 04:49:55 +00:00
//echo '<pre>'. json_encode($_COOKIE, JSON_PRETTY_PRINT).'</pre>';
2020-01-18 12:12:21 +00:00
$path = GetPathSetting($event, $context);
2020-02-20 03:59:58 +00:00
2020-01-18 12:12:21 +00:00
return main($path);
}
2020-07-13 09:36:17 +00:00
// Aliyun FC & Huawei FG
function handler($event, $context)
{
2020-07-13 09:36:17 +00:00
if (isset($_SERVER['FC_SERVER_PATH'])&&$_SERVER['FC_SERVER_PATH']==='/var/fc/runtime/php7.2') {
// Aliyun FC
set_error_handler("myErrorHandler");
$tmp = array(
'method' => $event->getMethod(),
'clientIP' => $event->getAttribute("clientIP"),
'eventURI' => $event->getAttribute("eventURI"),
'path' => spurlencode($event->getAttribute("path"), '/'),
'queryString' => $event->getQueryParams(),
'headers' => $event->getHeaders(),
'body' => $event->getBody()->getContents(),
);
$event = $tmp;
$context = json_decode(json_encode($context), true);
printInput($event, $context);
unset($_POST);
unset($_GET);
unset($_COOKIE);
unset($_SERVER);
GetGlobalVariable($event);
$path = GetPathSetting($event, $context);
2020-07-13 09:36:17 +00:00
$re = main($path);
return new RingCentral\Psr7\Response($re['statusCode'], $re['headers'], $re['body']);
2020-07-13 09:36:17 +00:00
} elseif ($_SERVER['_APP_SHARE_DIR']=='/var/share/CFF/processrouter') {
// Huawei FG
global $contextUserData;
$contextUserData = $context;
$event = json_decode(json_encode($event), true);
if ($event['isBase64Encoded']) $event['body'] = base64_decode($event['body']);
printInput($event, $context);
unset($_POST);
unset($_GET);
unset($_COOKIE);
unset($_SERVER);
GetGlobalVariable($event);
//echo '<pre>'. json_encode($_COOKIE, JSON_PRETTY_PRINT).'</pre>';
$path = GetPathSetting($event, $context);
return main($path);
}
}
// used by Aliyun FC
function myErrorHandler($errno, $errstr, $errfile, $errline) {
if (!(error_reporting() & $errno)) {
return false;
}
switch ($errno) {
case E_USER_ERROR:
$errInfo = array(
"errorMessage" => $errstr,
"errorType" => \ServerlessFC\friendly_error_type($errno),
"stackTrace" => array(
"file" => $errfile,
"line" => $errline,
),
);
throw new \ErrorException($errstr, 0, $errno, $errfile, $errline);
break;
default: // E_USER_WARNING | E_USER_NOTICE
break;
}
return true;
}