500) $event['body']=substr($event['body'],0,strpos($event['body'],'base64')+30) . '...Too Long!...' . substr($event['body'],-50); echo urldecode(json_encode($event, JSON_PRETTY_PRINT)) . ' ' . urldecode(json_encode($context, JSON_PRETTY_PRINT)) . ' '; } function GetGlobalVariable($event) { $_GET = $event['queryStringParameters']; foreach ($_GET as $k => $v) { if ($v == '') $_GET[$k] = true; } $postbody = explode("&",$event['body']); foreach ($postbody as $postvalues) { $pos = strpos($postvalues,"="); $_POST[urldecode(substr($postvalues,0,$pos))]=urldecode(substr($postvalues,$pos+1)); } $cookiebody = explode("; ",$event['headers']['Cookie']); foreach ($cookiebody as $cookievalues) { $pos = strpos($cookievalues,"="); $_COOKIE[urldecode(substr($cookievalues,0,$pos))]=urldecode(substr($cookievalues,$pos+1)); } $_SERVER['HTTP_USER_AGENT'] = $event['headers']['User-Agent']; if (isset($event['headers']['authorization'])) { $basicAuth = splitfirst(base64_decode(splitfirst($event['headers']['authorization'], 'Basic ')[1]), ':'); $_SERVER['PHP_AUTH_USER'] = $basicAuth[0]; $_SERVER['PHP_AUTH_PW'] = $basicAuth[1]; } $_SERVER['HTTP_TRANSLATE'] = $event['headers']['translate'];//'f' $_SERVER['BCE_CFC_RUNTIME_NAME'] = 'php7'; } function GetPathSetting($event, $context) { $_SERVER['firstacceptlanguage'] = strtolower(splitfirst(splitfirst($event['headers']['Accept-Language'],';')[0],',')[0]); $_SERVER['functionBrn'] = $context['functionBrn']; $_SERVER['base_path'] = '/'; $path = $event['path']; if (substr($path,-1)=='/') $path=substr($path,0,-1); $_SERVER['is_guestup_path'] = is_guestup_path($path); $_SERVER['PHP_SELF'] = path_format($_SERVER['base_path'] . $path); $_SERVER['REMOTE_ADDR'] = $event['requestContext']['sourceIp']; $_SERVER['HTTP_X_REQUESTED_WITH'] = $event['headers']['X-Requested-With']; return $path; } function getConfig($str, $disktag = '') { if (isInnerEnv($str)) { if ($disktag=='') $disktag = $_SERVER['disktag']; $env = json_decode(getenv($disktag), true); if (isset($env[$str])) { if (isBase64Env($str)) return base64y_decode($env[$str]); else return $env[$str]; } } else { if (isBase64Env($str)) return base64y_decode(getenv($str)); else return getenv($str); } return ''; } function setConfig($arr, $disktag = '') { if ($disktag=='') $disktag = $_SERVER['disktag']; $disktags = explode("|",getConfig('disktag')); $diskconfig = json_decode(getenv($disktag), true); $tmp = []; $indisk = 0; $operatedisk = 0; foreach ($arr as $k => $v) { if (isInnerEnv($k)) { if (isBase64Env($k)) $diskconfig[$k] = base64y_encode($v); else $diskconfig[$k] = $v; $indisk = 1; } elseif ($k=='disktag_add') { array_push($disktags, $v); $operatedisk = 1; } elseif ($k=='disktag_del') { $disktags = array_diff($disktags, [ $v ]); $tmp[$v] = ''; $operatedisk = 1; } elseif ($k=='disktag_copy') { $newtag = $v . '_' . date("Ymd_His"); $tmp[$newtag] = getConfig($v); array_push($disktags, $newtag); $operatedisk = 1; } elseif ($k=='disktag_rename' || $k=='disktag_newname') { if ($arr['disktag_rename']!=$arr['disktag_newname']) $operatedisk = 1; } else { if (isBase64Env($k)) $tmp[$k] = base64y_encode($v); else $tmp[$k] = $v; } } if ($indisk) { $diskconfig = array_filter($diskconfig, 'array_value_isnot_null'); ksort($diskconfig); $tmp[$disktag] = json_encode($diskconfig); } if ($operatedisk) { if (isset($arr['disktag_newname']) && $arr['disktag_newname']!='') { $tags = []; foreach ($disktags as $tag) { if ($tag==$arr['disktag_rename']) array_push($tags, $arr['disktag_newname']); else array_push($tags, $tag); } $tmp['disktag'] = implode('|', $tags); $tmp[$arr['disktag_newname']] = getConfig($arr['disktag_rename']); $tmp[$arr['disktag_rename']] = ''; } else { $disktags = array_unique($disktags); foreach ($disktags as $disktag) if ($disktag!='') $disktag_s .= $disktag . '|'; if ($disktag_s!='') $tmp['disktag'] = substr($disktag_s, 0, -1); else $tmp['disktag'] = ''; } } // echo '正式设置:'.json_encode($tmp,JSON_PRETTY_PRINT).' //'; $response = updateEnvironment($tmp, getConfig('SecretId'), getConfig('SecretKey')); return $response; } function install() { global $constStr; if ($_GET['install2']) { $tmp['admin'] = $_POST['admin']; $response = setConfigResponse( setConfig($tmp) ); if (api_error($response)) { $html = api_error_msg($response); $title = 'Error'; return message($html, $title, 201); } if (needUpdate()) { OnekeyUpate(); return message('update to github version, reinstall. ', 'Program updating', 201); } return output('Jump ', 302); } if ($_GET['install1']) { $tmp['timezone'] = $_COOKIE['timezone']; $SecretId = getConfig('SecretId'); if ($SecretId=='') { $SecretId = $_POST['SecretId']; $tmp['SecretId'] = $SecretId; } $SecretKey = getConfig('SecretKey'); if ($SecretKey=='') { $SecretKey = $_POST['SecretKey']; $tmp['SecretKey'] = $SecretKey; } $response = setConfigResponse(SetbaseConfig($tmp, $SecretId, $SecretKey)); if (api_error($response)) { $html = api_error_msg($response); $title = 'Error'; return message($html, $title, 201); } else { $html .= '
'; $title = getconstStr('SetAdminPassword'); return message($html, $title, 201); } } if ($_GET['install0']) { $html .= ' '; $title = getconstStr('SelectLanguage'); return message($html, $title, 201); } $html .= ''.getconstStr('ClickInstall').', '.getconstStr('LogintoBind'); $title = 'Install'; return message($html, $title, 201); } function CFCAPIv1($Brn, $AccessKey, $SecretKey, $Method, $End, $data = '') { // brn:bce:cfc:bj:c094b1ca1XXXXXXXXb8dea6ab482:function:fdsa:$LATEST $BRN = explode(':', $Brn); if ( !($BRN[0]=='brn' && $BRN[1]=='bce' && $BRN[2]=='cfc') ) { $tmp['code'] = 'BRN Error'; $tmp['message'] = 'The BRN expect start with "brn:bce:cfc:", given: ' . $Brn . ' .'; return json_encode($tmp); } $Region = $BRN[3]; //$project_id = $BRN[4]; $FunctionName = $BRN[6]; $host = 'cfc.' . $Region . '.baidubce.com'; date_default_timezone_set('UTC'); // unset last timezone setting $timestamp = date('Y-m-d\TH:i:s\Z'); //date_default_timezone_set(get_timezone($_SERVER['timezone'])); $authStringPrefix = 'bce-auth-v1/' . $AccessKey . '/' . $timestamp . '/1800' ; $path = '/v1/functions/' . $FunctionName . '/' . $End; $CanonicalURI = spurlencode($path, '/'); $CanonicalQueryString = ''; $CanonicalHeaders = 'host:' . $host; $CanonicalRequest = $Method . "\n" . $CanonicalURI . "\n" . $CanonicalQueryString . "\n" . $CanonicalHeaders; $SigningKey = hash_hmac('sha256', $authStringPrefix, $SecretKey); $Signature = hash_hmac('sha256', $CanonicalRequest, $SigningKey); $authorization = $authStringPrefix . '/host/' . $Signature; $p = 0; while ($response['stat']==0 && $p<3) { $response = curl( $Method, 'https://' . $host . $path, $data, [ 'Authorization' => $authorization, 'Content-type' => 'application/json' ] ); $p++; } if ($response['stat']==0) { $tmp['code'] = 'Network Error'; $tmp['message'] = 'Can not connect ' . $host; return json_encode($tmp); } if ($response['stat']!=200) { $tmp = json_decode($response['body'], true); $tmp['message'] .= '