Merge pull request #9 from qkqpttgf/master

update 3.1
pull/31/head
JMFANS 2020-03-01 21:03:19 +08:00 committed by GitHub
commit 423ccda51d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 71 additions and 23 deletions

View File

@ -1,5 +1,30 @@
<?php
$Base64Env = [
//'APIKey', // used in heroku.
//'Region', // used in SCF.
//'SecretId', // used in SCF.
//'SecretKey', // used in SCF.
//'admin',
//'adminloginpage',
'background',
//'disktag',
//'function_name', // used in heroku.
//'language',
//'passfile',
'sitename',
//'theme',
//'Onedrive_ver',
//'client_id',
'client_secret',
'domain_path',
'guestup_path',
'diskname',
'public_path',
//'refresh_token',
//'token_expires',
];
$CommonEnv = [
'APIKey', // used in heroku.
'Region', // used in SCF.
@ -105,8 +130,7 @@ function config_oauth()
// MS Customer
// https://portal.azure.com
$_SERVER['client_id'] = getConfig('client_id');
$_SERVER['client_secret'] = base64_decode(equal_replace(getConfig('client_secret'),1));
//getConfig('client_secret');
$_SERVER['client_secret'] = getConfig('client_secret');
$_SERVER['oauth_url'] = 'https://login.microsoftonline.com/common/oauth2/v2.0/';
$_SERVER['api_url'] = 'https://graph.microsoft.com/v1.0/me/drive/root';
$_SERVER['scope'] = 'https://graph.microsoft.com/Files.ReadWrite.All offline_access';
@ -167,7 +191,9 @@ function equal_replace($str, $add = false)
{
if ($add) {
while(strlen($str)%4) $str .= '=';
$str = urldecode(base64_decode($str));
} else {
$str = base64_encode(urlencode($str));
while(substr($str,-1)=='=') $str=substr($str,0,-1);
}
return $str;
@ -254,14 +280,14 @@ function gethiddenpass($path,$passfile)
$passwordf=explode("\n",$arr['body']);
$password=$passwordf[0];
$password=md5($password);
savecache($path . '/password', $password);
savecache('path_' . $path . '/?password', $password);
return $password;
} else {
//return md5('DefaultP@sswordWhenNetworkError');
return md5( md5(time()).rand(1000,9999) );
}
} else {
savecache($path . '/password', 'null');
savecache('path_' . $path . '/?password', 'null');
if ($path !== '' ) {
$path = substr($path,0,strrpos($path,'/'));
return gethiddenpass($path,$passfile);
@ -523,6 +549,7 @@ function main($path)
$response = curl_request( $_SERVER['oauth_url'] . 'token', 'client_id='. $_SERVER['client_id'] .'&client_secret='. $_SERVER['client_secret'] .'&grant_type=refresh_token&requested_token_use=on_behalf_of&refresh_token=' . $refresh_token );
if ($response['stat']==200) $ret = json_decode($response['body'], true);
if (!isset($ret['access_token'])) {
error_log($_SERVER['oauth_url'] . 'token'.'?client_id='. $_SERVER['client_id'] .'&client_secret='. $_SERVER['client_secret'] .'&grant_type=refresh_token&requested_token_use=on_behalf_of&refresh_token=' . $refresh_token);
error_log('failed to get access_token. response' . json_encode($ret));
throw new Exception($response['stat'].', failed to get access_token.'.$response['body']);
}
@ -536,6 +563,7 @@ function main($path)
if ($_SERVER['ajax']) {
if ($_GET['action']=='del_upload_cache'&&substr($_GET['filename'],-4)=='.tmp') {
// del '.tmp' without login. 无需登录即可删除.tmp后缀文件
error_log('del.tmp:GET,'.json_encode($_GET,JSON_PRETTY_PRINT));
$tmp = MSAPI('DELETE',path_format(path_format($_SERVER['list_path'] . path_format($path)) . '/' . spurlencode($_GET['filename']) ),'',$_SERVER['access_token']);
$path1 = path_format($_SERVER['list_path'] . path_format($path));
savecache('path_' . $path1, json_decode('{}',true), 1);

View File

@ -40,16 +40,20 @@ function getGET()
function getConfig($str, $disktag = '')
{
global $InnerEnv;
global $Base64Env;
if ($disktag=='') $disktag = $_SERVER['disktag'];
if (in_array($str, $InnerEnv)) {
return json_decode(getenv($disktag), true)[$str];
if (in_array($str, $Base64Env)) return equal_replace(json_decode(getenv($disktag), true)[$str],1);
else return json_decode(getenv($disktag), true)[$str];
}
return getenv($str);
if (in_array($str, $Base64Env)) return equal_replace(getenv($str),1);
else return getenv($str);
}
function setConfig($arr, $disktag = '')
{
global $InnerEnv;
global $Base64Env;
if ($disktag=='') $disktag = $_SERVER['disktag'];
$disktags = explode("|",getConfig('disktag'));
$diskconfig = json_decode(getenv($disktag), true);
@ -58,7 +62,8 @@ function setConfig($arr, $disktag = '')
$oparetdisk = 0;
foreach ($arr as $k => $v) {
if (in_array($k, $InnerEnv)) {
$diskconfig[$k] = $v;
if (in_array($k, $Base64Env)) $diskconfig[$k] = equal_replace($v);
else $diskconfig[$k] = $v;
$indisk = 1;
} elseif ($k=='disktag_add') {
array_push($disktags, $v);
@ -68,7 +73,8 @@ function setConfig($arr, $disktag = '')
$tmp[$v] = '';
$oparetdisk = 1;
} else {
$tmp[$k] = $v;
if (in_array($k, $Base64Env)) $tmp[$k] = equal_replace($v);
else $tmp[$k] = $v;
}
}
if ($indisk) {
@ -158,7 +164,7 @@ function get_refresh_token()
$tmp['Onedrive_ver'] = $_POST['Onedrive_ver'];
if ($_POST['Onedrive_ver']=='MSC') {
$tmp['client_id'] = $_POST['client_id'];
$tmp['client_secret'] = equal_replace(base64_encode($_POST['client_secret']));
$tmp['client_secret'] = $_POST['client_secret'];
//$_POST['client_secret'];
}
$response = json_decode( setConfig($tmp, $_COOKIE['disktag']), true )['Response'];

View File

@ -39,6 +39,7 @@ function getGET()
function getConfig($str, $disktag = '')
{
global $InnerEnv;
global $Base64Env;
//include 'config.php';
if ($disktag=='') $disktag = $_SERVER['disktag'];
$s = file_get_contents('config.php');
@ -46,8 +47,12 @@ function getConfig($str, $disktag = '')
if ($configs!='') {
$envs = json_decode($configs, true);
if (in_array($str, $InnerEnv)) {
if (isset($envs[$disktag][$str])) return $envs[$disktag][$str];
} else if (isset($envs[$str])) return $envs[$str];
if (in_array($str, $Base64Env)) return equal_replace($envs[$disktag][$str],1);
else return $envs[$disktag][$str];
} else {
if (in_array($str, $Base64Env)) return equal_replace($envs[$str],1);
else return $envs[$str];
}
}
return '';
}
@ -55,6 +60,7 @@ function getConfig($str, $disktag = '')
function setConfig($arr, $disktag = '')
{
global $InnerEnv;
global $Base64Env;
if ($disktag=='') $disktag = $_SERVER['disktag'];
//include 'config.php';
$s = file_get_contents('config.php');
@ -65,7 +71,8 @@ function setConfig($arr, $disktag = '')
$operatedisk = 0;
foreach ($arr as $k => $v) {
if (in_array($k, $InnerEnv)) {
$envs[$disktag][$k] = $v;
if (in_array($k, $Base64Env)) $envs[$disktag][$k] = equal_replace($v);
else $envs[$disktag][$k] = $v;
/*$diskconfig[$k] = $v;
$indisk = 1;*/
} elseif ($k=='disktag_add') {
@ -76,7 +83,8 @@ function setConfig($arr, $disktag = '')
$envs[$v] = '';
$operatedisk = 1;
} else {
$envs[$k] = $v;
if (in_array($k, $Base64Env)) $envs[$k] = equal_replace($v);
else $envs[$k] = $v;
}
}
/*if ($indisk) {
@ -171,8 +179,7 @@ function get_refresh_token()
$tmp['Onedrive_ver'] = $_POST['Onedrive_ver'];
if ($_POST['Onedrive_ver']=='MSC') {
$tmp['client_id'] = $_POST['client_id'];
$tmp['client_secret'] = equal_replace(base64_encode($_POST['client_secret']));
//$_POST['client_secret'];
$tmp['client_secret'] = $_POST['client_secret'];
}
$response = setConfig($tmp, $_COOKIE['disktag']);
$title = getconstStr('MayinEnv');

View File

@ -54,16 +54,20 @@ function GetPathSetting($event, $context)
function getConfig($str, $disktag = '')
{
global $InnerEnv;
global $Base64Env;
if ($disktag=='') $disktag = $_SERVER['disktag'];
if (in_array($str, $InnerEnv)) {
return json_decode(getenv($disktag), true)[$str];
if (in_array($str, $Base64Env)) return equal_replace(json_decode(getenv($disktag), true)[$str],1);
else return json_decode(getenv($disktag), true)[$str];
}
return getenv($str);
if (in_array($str, $Base64Env)) return equal_replace(getenv($str),1);
else return getenv($str);
}
function setConfig($arr, $disktag = '')
{
global $InnerEnv;
global $Base64Env;
if ($disktag=='') $disktag = $_SERVER['disktag'];
$disktags = explode("|",getConfig('disktag'));
$diskconfig = json_decode(getenv($disktag), true);
@ -72,7 +76,8 @@ function setConfig($arr, $disktag = '')
$oparetdisk = 0;
foreach ($arr as $k => $v) {
if (in_array($k, $InnerEnv)) {
$diskconfig[$k] = $v;
if (in_array($k, $Base64Env)) $diskconfig[$k] = equal_replace($v);
else $diskconfig[$k] = $v;
$indisk = 1;
} elseif ($k=='disktag_add') {
array_push($disktags, $v);
@ -82,7 +87,8 @@ function setConfig($arr, $disktag = '')
$tmp[$v] = '';
$oparetdisk = 1;
} else {
$tmp[$k] = $v;
if (in_array($k, $Base64Env)) $tmp[$k] = equal_replace($v);
else $tmp[$k] = $v;
}
}
if ($indisk) {
@ -180,8 +186,7 @@ function get_refresh_token()
$tmp['Onedrive_ver'] = $_POST['Onedrive_ver'];
if ($_POST['Onedrive_ver']=='MSC') {
$tmp['client_id'] = $_POST['client_id'];
$tmp['client_secret'] = equal_replace(base64_encode($_POST['client_secret']));
//$_POST['client_secret'];
$tmp['client_secret'] = $_POST['client_secret'];
}
$response = json_decode( setConfig($tmp, $_COOKIE['disktag']), true )['Response'];
$title = getconstStr('MayinEnv');
@ -276,7 +281,6 @@ namespace:' . $_SERVER['namespace'] . '<br>
$trynum = 0;
while( json_decode(getfunctioninfo($_SERVER['function_name'], $_SERVER['Region'], $_SERVER['namespace'], $SecretId, $SecretKey),true)['Response']['Status']!='Active' ) echo '
'.++$trynum;
//$response = json_decode( updateEnvironment($tmp, $_SERVER['function_name'], $_SERVER['Region'], $_SERVER['namespace'], $SecretId, $SecretKey), true)['Response'];
if (needUpdate()) {
updateProgram($_SERVER['function_name'], $_SERVER['Region'], $_SERVER['namespace'], $SecretId, $SecretKey);
return message('update to github version, reinstall.<meta http-equiv="refresh" content="3;URL=' . $url . '">', 'Program updating', 201);

View File

@ -1,7 +1,10 @@
20200229-1300.13
In SCF, some config can input Special symbols now, like ?&= 。
在SCF中某些配置可以输入特殊符号了像background可以用?&=之类的了。
20200225-1310.12
Can update by one click any time. fix bugs: special tag, reupload.
可以不管版本直接一键更新覆盖了。修复可以使用特殊onedrive标签的bug修复断网续传的问题。
20200222-2130.11
you can set background now. fix bug: 2nd disk upload.
可以设置背景图片了。第2个盘上传后链接不对。