diff --git a/function/heroku.php b/function/heroku.php deleted file mode 100644 index 915a3b1..0000000 --- a/function/heroku.php +++ /dev/null @@ -1,253 +0,0 @@ -0) $path = substr($_SERVER['REQUEST_URI'], 0, $p); - else $path = $_SERVER['REQUEST_URI']; - $path = path_format( substr($path, strlen($_SERVER['base_path'])) ); - return substr($path, 1); - //return spurlencode($path, '/'); -} - -function getGET() -{ - $p = strpos($_SERVER['REQUEST_URI'],'?'); - if ($p>0) { - $getstr = substr($_SERVER['REQUEST_URI'], $p+1); - $getstrarr = explode("&",$getstr); - foreach ($getstrarr as $getvalues) { - if ($getvalues != '') { - $pos = strpos($getvalues, "="); - //echo $pos; - if ($pos > 0) { - $getarry[urldecode(substr($getvalues, 0, $pos))] = urldecode(substr($getvalues, $pos + 1)); - } else { - $getarry[urldecode($getvalues)] = true; - } - } - } - } - if (isset($getarry)) { - return $getarry; - } else { - return []; - } -} - -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'] = ''; - } - foreach ($tmp as $key => $val) if ($val=='') $tmp[$key]=null; -// echo '正式设置:'.json_encode($tmp,JSON_PRETTY_PRINT).' -//'; - return setHerokuConfig($tmp, getConfig('function_name'), getConfig('APIKey')); -} - -function install() -{ - global $constStr; - if ($_GET['install1']) { - if ($_POST['admin']!='') { - $tmp['admin'] = $_POST['admin']; - $tmp['language'] = $_POST['language']; - $APIKey = getConfig('APIKey'); - if ($APIKey=='') { - $APIKey = $_POST['APIKey']; - $tmp['APIKey'] = $APIKey; - } - $function_name = getConfig('function_name'); - if ($function_name=='') { - $tmp1 = substr($_SERVER['HTTP_HOST'], 0, strrpos($_SERVER['HTTP_HOST'], '.')); - $maindomain = substr($tmp1, strrpos($tmp1, '.')+1); - if ($maindomain=='herokuapp') $function_name = substr($tmp1, 0, strrpos($tmp1, '.')); - else $function_name = 'visit from xxxx.herokuapp.com'; - $tmp['function_name'] = $function_name; - } - $response = json_decode(setHerokuConfig($tmp, $function_name, $APIKey)['body'], true); - if (api_error($response)) { - $html = api_error_msg($response); - $title = 'Error'; - } else { - return output('Jump', 302); - } - return message($html, $title, 201); - } - } - if ($_GET['install0']) { - $html .= ' -
-language:
'; - foreach ($constStr['languages'] as $key1 => $value1) { - $html .= ' -
'; - } - if (getConfig('APIKey')=='') $html .= ' - '.getconstStr('Create').' API Key
-
'; - $html .= ' -
'; - $html .= ' - -
- '; - $title = getconstStr('SelectLanguage'); - return message($html, $title, 201); - } - $html .= ''.getconstStr('ClickInstall').', '.getconstStr('LogintoBind'); - $title = 'Error'; - return message($html, $title, 201); -} - -function HerokuAPI($method, $url, $data = '', $apikey) -{ - if ($method=='PATCH'||$method=='POST') { - $headers['Content-Type'] = 'application/json'; - } - $headers['Authorization'] = 'Bearer ' . $apikey; - $headers['Accept'] = 'application/vnd.heroku+json; version=3'; - //if (!isset($headers['Accept'])) $headers['Accept'] = '*/*'; - //if (!isset($headers['Referer'])) $headers['Referer'] = $url; - $sendHeaders = array(); - foreach ($headers as $headerName => $headerVal) { - $sendHeaders[] = $headerName . ': ' . $headerVal; - } - error_log($method . $url . $data . $apikey); - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_CUSTOMREQUEST,$method); - curl_setopt($ch, CURLOPT_POSTFIELDS,$data); - curl_setopt($ch, CURLOPT_TIMEOUT, 5); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_HEADER, 0); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); - curl_setopt($ch, CURLOPT_HTTPHEADER, $sendHeaders); - $response['body'] = curl_exec($ch); - $response['stat'] = curl_getinfo($ch,CURLINFO_HTTP_CODE); - curl_close($ch); - error_log($response['stat'].' -'.$response['body'].' -'); - return $response; -} - -function getHerokuConfig($function_name, $apikey) -{ - return HerokuAPI('GET', 'https://api.heroku.com/apps/' . $function_name . '/config-vars', '', $apikey); -} - -function setHerokuConfig($env, $function_name, $apikey) -{ - $data = json_encode($env); - return HerokuAPI('PATCH', 'https://api.heroku.com/apps/' . $function_name . '/config-vars', $data, $apikey); -} - -function updateHerokuapp($function_name, $apikey, $source) -{ - $tmp['source_blob']['url'] = $source; - $data = json_encode($tmp); - return HerokuAPI('POST', 'https://api.heroku.com/apps/' . $function_name . '/builds', $data, $apikey); -} - -function api_error($response) -{ - return isset($response['id'])&&isset($response['message']); -} - -function api_error_msg($response) -{ - return $response['id'] . '
-' . $response['message'] . '

-function_name:' . $_SERVER['function_name'] . '
-'; -} - -function OnekeyUpate($auth = 'BingoKingo', $project = 'Tfo', $branch = 'master') -{ - //'https://github.com/qkqpttgf/OneManager-php/tarball/master/'; - $source = 'https://github.com/' . $auth . '/' . $project . '/tarball/' . $branch . '/'; - return json_decode(updateHerokuapp(getConfig('function_name'), getConfig('APIKey'), $source)['body'], true); -} - -function setConfigResponse($response) -{ - return json_decode( $response['body'], true ); -}