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']; $_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 = '') { global $InnerEnv; global $Base64Env; if (in_array($str, $InnerEnv)) { if ($disktag=='') $disktag = $_SERVER['disktag']; $env = json_decode(getenv($disktag), true); if (isset($env[$str])) { if (in_array($str, $Base64Env)) return equal_replace($env[$str],1); else return $env[$str]; } } else { if (in_array($str, $Base64Env)) return equal_replace(getenv($str),1); else return getenv($str); } return ''; } function setConfig($arr, $disktag = '') { global $InnerEnv; global $Base64Env; if ($disktag=='') $disktag = $_SERVER['disktag']; $disktags = explode("|",getConfig('disktag')); $diskconfig = json_decode(getenv($disktag), true); $tmp = []; $indisk = 0; $oparetdisk = 0; foreach ($arr as $k => $v) { if (in_array($k, $InnerEnv)) { if (in_array($k, $Base64Env)) $diskconfig[$k] = equal_replace($v); else $diskconfig[$k] = $v; $indisk = 1; } elseif ($k=='disktag_add') { array_push($disktags, $v); $oparetdisk = 1; } elseif ($k=='disktag_del') { $disktags = array_diff($disktags, [ $v ]); $tmp[$v] = ''; $oparetdisk = 1; } else { if (in_array($k, $Base64Env)) $tmp[$k] = equal_replace($v); else $tmp[$k] = $v; } } if ($indisk) { $diskconfig = array_filter($diskconfig, 'array_value_isnot_null'); ksort($diskconfig); $tmp[$disktag] = json_encode($diskconfig); } if ($oparetdisk) { $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 = 'Error'; 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'] .= '