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 = '
+
+ ';
+ $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 = '
- ';
- $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 (explode("|",getConfig('disktag')) as $disktag) {
+ if ($disktag!='') {
+ $html .= '
+ ';
+ }
+ }
+ $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);
}