From 0a4352c322e12dcc21a27df402f1d91e5309220b Mon Sep 17 00:00:00 2001 From: qkqpttgf <45693631+qkqpttgf@users.noreply.github.com> Date: Mon, 17 Feb 2020 06:22:34 -0600 Subject: [PATCH] Add files via upload --- function/heroku.php | 250 +++++++++++++++++++++++++++++++++----------- function/scf.php | 6 -- 2 files changed, 188 insertions(+), 68 deletions(-) diff --git a/function/heroku.php b/function/heroku.php index 63eeafe..2c7e753 100644 --- a/function/heroku.php +++ b/function/heroku.php @@ -1,5 +1,17 @@ 0) $path = substr($_SERVER['REQUEST_URI'], 0, $p); else $path = $_SERVER['REQUEST_URI']; $path = path_format( substr($path, strlen($_SERVER['base_path'])) ); - return $path; + return substr($path, 1); //return spurlencode($path, '/'); } @@ -37,11 +49,66 @@ function getGET() } } +function getConfig($str, $disktag = '') +{ + global $innerEnv; + if ($disktag=='') $disktag = $_SERVER['disktag']; + if (in_array($str, $innerEnv)) { + return json_decode(getenv($disktag), true)[$str]; + } + return getenv($str); +} + +function setConfig($arr, $disktag = '') +{ + echo '进入设置:'.json_encode($arr,JSON_PRETTY_PRINT).' +'; + global $innerEnv; + if ($disktag=='') $disktag = $_SERVER['disktag']; + //$disktags = json_decode(getConfig('disktag'), true); + //if ($_SERVER['disk_oprating']) $disktag = $_SERVER['disk_oprating']; + //else $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)) { + $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 { + $tmp[$k] = $v; + } + } + if ($indisk) { + $diskconfig = array_filter($diskconfig, 'array_value_isnot_null'); + ksort($diskconfig); + $tmp[$disktag] = json_encode($diskconfig); + } + if ($oparetdisk) { + foreach ($disktags as $disktag) if ($disktag!='') $disktag_s .= $disktag . '|'; + $tmp['disktag'] = substr($disktag_s, 0, -1); + } + echo '正式设置:'.json_encode($tmp,JSON_PRETTY_PRINT).' +'; + return setHerokuConfig($tmp, getConfig('function_name'), getConfig('APIKey')); +} + function get_refresh_token() { global $constStr; $url = path_format($_SERVER['PHP_SELF'] . '/'); if ($_GET['authorization_code'] && isset($_GET['code'])) { + $_SERVER['disktag'] = $_COOKIE['disktag']; + config_oauth(); $tmp = curl_request($_SERVER['oauth_url'] . 'token', 'client_id=' . $_SERVER['client_id'] .'&client_secret=' . $_SERVER['client_secret'] . '&grant_type=authorization_code&requested_token_use=on_behalf_of&redirect_uri=' . $_SERVER['redirect_uri'] .'&code=' . $_GET['code']); if ($tmp['stat']==200) $ret = json_decode($tmp['body'], true); if (isset($ret['refresh_token'])) { @@ -65,17 +132,21 @@ function get_refresh_token() texta[i].style.height = texta[i].scrollHeight + \'px\'; } document.cookie=\'language=; path=/\'; + document.cookie=\'disktag=; path=/\'; '; - setConfig([ 'refresh_token' => $tmptoken, 'token_expires' => time()+30*24*60*60 ]); + setConfig([ 'refresh_token' => $tmptoken, 'token_expires' => time()+30*24*60*60 ], $_COOKIE['disktag']); savecache('access_token', $ret['access_token'], $ret['expires_in'] - 60); $str .= ' - '; + '; return message($str, getconstStr('WaitJumpIndex')); } return message('
' . $tmp['body'] . '
', $tmp['stat']); //return message('
' . json_encode($ret, JSON_PRETTY_PRINT) . '
', 500); } - if ($_GET['install3']) { + if ($_GET['install1']) { + $_SERVER['disk_oprating'] = $_COOKIE['disktag']; + $_SERVER['disktag'] = $_COOKIE['disktag']; + config_oauth(); if (getConfig('Onedrive_ver')=='MS' || getConfig('Onedrive_ver')=='CN' || getConfig('Onedrive_ver')=='MSC') { return message(' '.getconstStr('JumptoOffice').' @@ -89,17 +160,19 @@ function get_refresh_token() ', getconstStr('Wait').' 1s', 201); } } - if ($_GET['install2']) { - // echo $_POST['Onedrive_ver']; - if ($_POST['Onedrive_ver']=='MS' || $_POST['Onedrive_ver']=='CN' || $_POST['Onedrive_ver']=='MSC') { + if ($_GET['install0']) { + if ($_POST['disktag_add']!='' && ($_POST['Onedrive_ver']=='MS' || $_POST['Onedrive_ver']=='CN' || $_POST['Onedrive_ver']=='MSC')) { + $_SERVER['disktag'] = $_COOKIE['disktag']; + $tmp['disktag_add'] = $_POST['disktag_add']; + $tmp['diskname'] = $_POST['diskname']; $tmp['Onedrive_ver'] = $_POST['Onedrive_ver']; if ($_POST['Onedrive_ver']=='MSC') { $tmp['client_id'] = $_POST['client_id']; $tmp['client_secret'] = $_POST['client_secret']; } - $response = json_decode(setConfig($tmp)['body'], true); + $response = json_decode( setConfig($tmp, $_COOKIE['disktag']), true )['Response']; $title = getconstStr('MayinEnv'); - $html = getconstStr('Wait') . ' 3s'; + $html = getconstStr('Wait') . ' 3s'; if (isset($response['id'])&&isset($response['message'])) { $html = $response['id'] . '
' . $response['message'] . '

@@ -110,6 +183,53 @@ function_name:' . $_SERVER['function_name'] . '
return message($html, $title, 201); } } + + if ($constStr['language']!='zh-cn') { + $linklang='en-us'; + } else $linklang='zh-cn'; + $ru = "https://developer.microsoft.com/".$linklang."/graph/quick-start?appID=_appId_&appName=_appName_&redirectUrl=".$_SERVER['redirect_uri']."&platform=option-php"; + $deepLink = "/quickstart/graphIO?publicClientSupport=false&appName=OneManager&redirectUrl=".$_SERVER['redirect_uri']."&allowImplicitFlow=false&ru=".urlencode($ru); + $app_url = "https://apps.dev.microsoft.com/?deepLink=".urlencode($deepLink); + $html = ' +
+ Onedrive Disk Tag:
+ Onedrive Disk Name:
+ Onedrive_Ver:
+
+
+
+ +
+ '; + $title = 'Bind Onedrive'; + return message($html, $title, 201); +} + +function install() +{ + global $constStr; if ($_GET['install1']) { if ($_POST['admin']!='') { $tmp['admin'] = $_POST['admin']; @@ -124,7 +244,7 @@ function_name:' . $_SERVER['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 x.herokuapp.com'; + else $function_name = 'visit from xxxx.herokuapp.com'; $tmp['function_name'] = $function_name; } $response = json_decode(setHerokuConfig($tmp, $function_name, $APIKey)['body'], true); @@ -135,27 +255,7 @@ function_name:' . $_SERVER['function_name'] . '
'; $title = 'Error'; } else { - if ($constStr['language']!='zh-cn') { - $linklang='en-us'; - } else $linklang='zh-cn'; - $ru = "https://developer.microsoft.com/".$linklang."/graph/quick-start?appID=_appId_&appName=_appName_&redirectUrl=".$_SERVER['redirect_uri']."&platform=option-php"; - $deepLink = "/quickstart/graphIO?publicClientSupport=false&appName=OneManager&redirectUrl=".$_SERVER['redirect_uri']."&allowImplicitFlow=false&ru=".urlencode($ru); - $app_url = "https://apps.dev.microsoft.com/?deepLink=".urlencode($deepLink); - $html = ' -
- Onedrive_Ver:
-
-
-
- -
'; - $title = 'Install'; + return output('Jump', 302); } return message($html, $title, 201); } @@ -172,7 +272,7 @@ language:
'; '.getconstStr('Create').' API Key

'; $html .= ' -
'; +
'; $html .= ' @@ -189,11 +289,7 @@ language:
'; return false; }'; if (getConfig('APIKey')=='') $html .= ' - if (t.SecretId.value==\'\') { - alert(\'input SecretId\'); - return false; - } - if (t.SecretKey.value==\'\') { + if (t.APIKey.value==\'\') { alert(\'input SecretKey\'); return false; }'; @@ -204,21 +300,11 @@ language:
'; $title = getconstStr('SelectLanguage'); return message($html, $title, 201); } - $html .= 'refresh_token not exist, click to install.'; + $html .= 'Click to install the project, then login and bind your onedrive.'; $title = 'Error'; return message($html, $title, 201); } -function getConfig($str) -{ - return getenv($str); -} - -function setConfig($arr) -{ - return setHerokuConfig($arr, getConfig('function_name'), getConfig('APIKey')); -} - function HerokuAPI($method, $url, $data = '', $apikey) { if ($method=='PATCH') { @@ -267,13 +353,10 @@ function setHerokuConfig($env, $function_name, $apikey) function EnvOpt($function_name, $needUpdate = 0) { global $constStr; - $constEnv = [ - //'admin', - 'adminloginpage', 'domain_path', 'guestup_path', 'passfile', - //'private_path', - 'public_path', 'sitename', 'language', 'theme' - ]; - asort($constEnv); + global $commonEnv; + global $innerEnv; + asort($commonEnv); + asort($innerEnv); $html = 'OneManager '.getconstStr('Setup').''; /*if ($_POST['updateProgram']==getconstStr('updateProgram')) { $response = json_decode(updataProgram($function_name, $Region, $namespace), true)['Response']; @@ -298,6 +381,16 @@ namespace:' . $namespace . '
if (!(getConfig($k)==''&&$v=='')) $tmp[$k] = $v; } } + $_SERVER['disk_oprating'] = ''; + foreach ($_POST as $k => $v) { + if (in_array($k, $commonEnv)) { + if (!(getConfig($k)==''&&$v=='')) $tmp[$k] = $v; + } + if (in_array($k, $innerEnv)||$k=='disktag_del' || $k=='disktag_add') { + $tmp[$k] = $v; + } + if ($k == 'disk') $_SERVER['disk_oprating'] = $v; + } /*if ($tmp['domain_path']!='') { $tmp1 = explode("|",$tmp['domain_path']); $tmparr = []; @@ -307,7 +400,7 @@ namespace:' . $namespace . '
} $tmp['domain_path'] = $tmparr; }*/ - $response = setConfig($tmp); + $response = setConfig($tmp, $_SERVER['disk_oprating']); if (!$response) { $html = $response . '
'; @@ -333,9 +426,12 @@ namespace:' . $namespace . '
$html .= getconstStr('NotNeedUpdate'); }*/ $html .= ' -
- '; - foreach ($constEnv as $key) { + +
+ + + '; + foreach ($commonEnv as $key) { if ($key=='language') { $html .= ' @@ -357,7 +453,7 @@ namespace:' . $namespace . '
'; } - $html .= '
平台变量:
- + $html .= ' + +
'; + foreach (explode("|",getConfig('disktag')) as $disktag) { + if ($disktag!='') { + $html .= ' + + + + + + + + '; + foreach ($innerEnv as $key) { + $html .= ' + + + + '; + } + $html .= ' + + +
'.$disktag.': + + +
'; + } + } + $html .= ' + Add Disk'; return message($html, getconstStr('Setup')); } diff --git a/function/scf.php b/function/scf.php index 2aef9c4..960d4f2 100644 --- a/function/scf.php +++ b/function/scf.php @@ -70,12 +70,6 @@ function getConfig($str, $disktag = '') if ($disktag=='') $disktag = $_SERVER['disktag']; if (in_array($str, $innerEnv)) { return json_decode(getenv($disktag), true)[$str]; - $a=getenv($_SERVER['disktag']); - echo $str.','.$a.','; - $b = json_decode($a, true); - echo json_encode($b[$str], JSON_PRETTY_PRINT).'。 -'; - return $b[$str]; } return getenv($str); }