export&import config
parent
c234dd62d1
commit
e9ed4dc7f1
162
common.php
162
common.php
|
@ -10,14 +10,14 @@ $EnvConfigs = [
|
|||
// 1 showed/enableEdit, 0 hidden/disableEdit
|
||||
// 1 base64 to save, 0 not base64
|
||||
'APIKey' => 0b000, // used in heroku.
|
||||
'SecretId' => 0b000, // used in SCF.
|
||||
'SecretKey' => 0b000, // used in SCF.
|
||||
'SecretId' => 0b000, // used in SCF/CFC.
|
||||
'SecretKey' => 0b000, // used in SCF/CFC.
|
||||
'AccessKeyID' => 0b000, // used in FC.
|
||||
'AccessKeySecret' => 0b000, // used in FC.
|
||||
'HW_urn' => 0b000, // used in FG.
|
||||
'HW_key' => 0b000, // used in FG.
|
||||
'HW_secret' => 0b000, // used in FG.
|
||||
'function_name' => 0b000, // used in heroku.
|
||||
'HerokuappId' => 0b000, // used in heroku.
|
||||
|
||||
'admin' => 0b000,
|
||||
'adminloginpage' => 0b010,
|
||||
|
@ -52,6 +52,7 @@ $EnvConfigs = [
|
|||
'default_sbox_drive_id'=> 0b100,
|
||||
|
||||
'diskname' => 0b111,
|
||||
'diskDescription' => 0b111,
|
||||
'domain_path' => 0b111,
|
||||
'downloadencrypt' => 0b110,
|
||||
'guestup_path' => 0b111,
|
||||
|
@ -449,7 +450,9 @@ function proxy_replace_domain($url, $domainforproxy)
|
|||
if (substr($domainforproxy, 0, 7)=='http://' || substr($domainforproxy, 0, 8)=='https://') $aim = $domainforproxy;
|
||||
else $aim = $http . '//' . $domainforproxy;
|
||||
if (substr($aim, -1)=='/') $aim = substr($aim, 0, -1);
|
||||
return $aim . '/' . $uri . '&Origindomain=' . $domain;
|
||||
if (strpos($url, '?')>0) $sp = '&';
|
||||
else $sp = '?';
|
||||
return $aim . '/' . $uri . $sp . 'Origindomain=' . $domain;
|
||||
//$url = str_replace($tmp, $domainforproxy, $url).'&Origindomain='.$tmp;
|
||||
}
|
||||
|
||||
|
@ -617,12 +620,12 @@ function array_value_isnot_null($arr)
|
|||
return $arr!=='';
|
||||
}
|
||||
|
||||
function curl($method, $url, $data = '', $headers = [], $returnheader = 0)
|
||||
function curl($method, $url, $data = '', $headers = [], $returnheader = 0, $location = 0)
|
||||
{
|
||||
//if (!isset($headers['Accept'])) $headers['Accept'] = '*/*';
|
||||
//if (!isset($headers['Referer'])) $headers['Referer'] = $url;
|
||||
//if (!isset($headers['Content-Type'])) $headers['Content-Type'] = 'application/x-www-form-urlencoded';
|
||||
if (!isset($headers['Content-Type'])) $headers['Content-Type'] = '';
|
||||
if (!isset($headers['Content-Type'])&&!isset($headers['content-type'])) $headers['Content-Type'] = '';
|
||||
$sendHeaders = array();
|
||||
foreach ($headers as $headerName => $headerVal) {
|
||||
$sendHeaders[] = $headerName . ': ' . $headerVal;
|
||||
|
@ -638,6 +641,7 @@ function curl($method, $url, $data = '', $headers = [], $returnheader = 0)
|
|||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $sendHeaders);
|
||||
if ($location) curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
||||
//$response['body'] = curl_exec($ch);
|
||||
if ($returnheader) {
|
||||
list($returnhead, $response['body']) = explode("\r\n\r\n", curl_exec($ch));
|
||||
|
@ -1033,6 +1037,7 @@ function EnvOpt($needUpdate = 0)
|
|||
global $slash;
|
||||
global $drive;
|
||||
ksort($EnvConfigs);
|
||||
$disktags = explode('|', getConfig('disktag'));
|
||||
$envs = '';
|
||||
//foreach ($EnvConfigs as $env => $v) if (isCommonEnv($env)) $envs .= '\'' . $env . '\', ';
|
||||
$envs = substr(json_encode(array_keys ($EnvConfigs)), 1, -1);
|
||||
|
@ -1097,6 +1102,62 @@ function EnvOpt($needUpdate = 0)
|
|||
}
|
||||
return message($html, $title);
|
||||
}
|
||||
if (isset($_POST['config_b'])) {
|
||||
//return output(json_encode($_POST));
|
||||
if ($_POST['pass']!=''&&$_POST['pass']==getConfig('admin')) {
|
||||
if ($_POST['config_b'] == 'export') {
|
||||
foreach ($EnvConfigs as $env => $v) {
|
||||
if (isCommonEnv($env)) {
|
||||
$value = getConfig($env);
|
||||
if ($value) $tmp[$env] = $value;
|
||||
}
|
||||
}
|
||||
foreach ($disktags as $disktag) {
|
||||
$d = getConfig($disktag);
|
||||
if ($d === '') {
|
||||
$d = '';
|
||||
} elseif (gettype($d)=='array') {
|
||||
$tmp[$disktag] = $d;
|
||||
} else {
|
||||
$tmp[$disktag] = json_decode($d, true);
|
||||
}
|
||||
}
|
||||
unset($tmp['admin']);
|
||||
return output(json_encode($tmp, JSON_PRETTY_PRINT));
|
||||
}
|
||||
if ($_POST['config_b'] == 'import') {
|
||||
if (!$_POST['config_t']) return output("{\"Error\": \"Empty config.\"}", 403);
|
||||
$c = '{' . splitfirst($_POST['config_t'], '{')[1];
|
||||
$c = splitlast($c, '}')[0] . '}';
|
||||
$tmp = json_decode($c, true);
|
||||
if (!!!$tmp) return output("{\"Error\": \"Config input error. " . $c . "\"}", 403);
|
||||
$tmptag = $tmp['disktag'];
|
||||
foreach ($EnvConfigs as $env => $v) {
|
||||
if (isCommonEnv($env)) {
|
||||
if (isShowedEnv($env)) {
|
||||
if (getConfig($env)!=''&&!isset($tmp[$env])) $tmp[$env] = '';
|
||||
} else {
|
||||
unset($tmp[$env]);
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach ($disktags as $disktag) {
|
||||
if (!isset($tmp[$disktag])) $tmp[$disktag] = '';
|
||||
}
|
||||
$tmp['disktag'] = $tmptag;
|
||||
$response = setConfigResponse( setConfig($tmp, $_SERVER['disk_oprating']) );
|
||||
if (api_error($response)) {
|
||||
return output("{\"Error\": \"" . api_error_msg($response) . "\"}", 500);
|
||||
} else {
|
||||
return output("{\"Success\": \"Success\"}", 200);
|
||||
}
|
||||
}
|
||||
return output(json_encode($_POST), 500);
|
||||
} else {
|
||||
return output("{\"Error\": \"Error admin pass\"}", 403);
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET['preview'])) {
|
||||
$preurl = $_SERVER['PHP_SELF'] . '?preview';
|
||||
} else {
|
||||
|
@ -1161,7 +1222,7 @@ function EnvOpt($needUpdate = 0)
|
|||
<tr><td><input type="submit" name="submit1" value="' . getconstStr('Setup') . '"></td></tr>
|
||||
</form>
|
||||
</table><br>';
|
||||
$disktags = explode('|', getConfig('disktag'));
|
||||
|
||||
if (count($disktags)>1) {
|
||||
$html .= '
|
||||
<script src="//cdn.bootcss.com/Sortable/1.8.3/Sortable.js"></script>
|
||||
|
@ -1265,16 +1326,15 @@ function EnvOpt($needUpdate = 0)
|
|||
<tr>
|
||||
<td>Driver</td>
|
||||
<td>' . getConfig('Driver', $disktag);
|
||||
if ($diskok && baseclassofdrive($disk_tmp)=='Onedrive') $html .= ' <a href="?AddDisk=' . get_class($disk_tmp) . '&disktag=' . $disktag . '&SelectDrive">' . getconstStr('ChangeOnedrivetype') . '</a>';
|
||||
if ($diskok && baseclassofdrive($disk_tmp)!='Aliyundrive') $html .= ' <a href="?AddDisk=' . get_class($disk_tmp) . '&disktag=' . $disktag . '&SelectDrive">' . getconstStr('ChangeDrivetype') . '</a>';
|
||||
$html .= '</td>
|
||||
</tr>
|
||||
';
|
||||
if ($diskok) {
|
||||
foreach (extendShow_diskenv($disk_tmp) as $ext_env) {
|
||||
$html .= '<tr><td>' . $ext_env . '</td><td>' . getConfig($ext_env, $disktag) . '</td></tr>
|
||||
';
|
||||
}
|
||||
|
||||
if ($diskok) {
|
||||
$html .= '
|
||||
<form name="' . $disktag . '" action="" method="post">
|
||||
<input type="hidden" name="disk" value="' . $disktag . '">';
|
||||
|
@ -1291,13 +1351,87 @@ function EnvOpt($needUpdate = 0)
|
|||
} else {
|
||||
$html .= '
|
||||
<tr>
|
||||
<td colspan="2">' . $disk_tmp->error['body'] . '</td>
|
||||
<td colspan="2">' . ($disk_tmp->error['body']?$disk_tmp->error['stat'] . '<br>' . $disk_tmp->error['body']:'Add this disk again.') . '</td>
|
||||
</tr>';
|
||||
}
|
||||
$html .= '
|
||||
</table><br>';
|
||||
}
|
||||
}
|
||||
$html .= '
|
||||
<table>
|
||||
<form id="config_f" name="config" action="" method="POST" onsubmit="return false;">
|
||||
<tr>
|
||||
<td>admin pass:<input type="password" name="pass"></td>
|
||||
<td><button name="config_b" value="export" onclick="exportConfig(this);">export</button></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>config:<textarea name="config_t"></textarea></td>
|
||||
<td><button name="config_b" value="import" onclick="importConfig(this);">import</button></td>
|
||||
</tr>
|
||||
</form>
|
||||
</table>
|
||||
<script>
|
||||
var config_f = document.getElementById("config_f");
|
||||
function exportConfig(b) {
|
||||
if (config_f.pass.value=="") {
|
||||
alert("admin pass");
|
||||
return false;
|
||||
}
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open("POST", "");
|
||||
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
|
||||
xhr.onload = function(e){
|
||||
console.log(xhr.responseText+","+xhr.status);
|
||||
if (xhr.status==200) {
|
||||
var res = JSON.parse(xhr.responseText);
|
||||
config_f.config_t.value = xhr.responseText;
|
||||
config_f.parentNode.style = "width: 100%";
|
||||
config_f.config_t.style = "width: 100%";
|
||||
config_f.config_t.style.height = config_f.config_t.scrollHeight + "px";
|
||||
} else {
|
||||
alert(xhr.status+"\n"+xhr.responseText);
|
||||
}
|
||||
}
|
||||
xhr.onerror = function(e){
|
||||
alert("Network Error "+xhr.status);
|
||||
}
|
||||
xhr.send("pass=" + config_f.pass.value + "&config_b=" + b.value);
|
||||
}
|
||||
function importConfig(b) {
|
||||
if (config_f.pass.value=="") {
|
||||
alert("admin pass");
|
||||
return false;
|
||||
}
|
||||
if (config_f.config_t.value=="") {
|
||||
alert("input config");
|
||||
return false;
|
||||
} else {
|
||||
try {
|
||||
var tmp = JSON.parse(config_f.config_t.value);
|
||||
} catch(e) {
|
||||
alert("config error!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open("POST", "");
|
||||
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
|
||||
xhr.onload = function(e){
|
||||
console.log(xhr.responseText+","+xhr.status);
|
||||
if (xhr.status==200) {
|
||||
//var res = JSON.parse(xhr.responseText);
|
||||
alert("Import success");
|
||||
} else {
|
||||
alert(xhr.status+"\n"+xhr.responseText);
|
||||
}
|
||||
}
|
||||
xhr.onerror = function(e){
|
||||
alert("Network Error "+xhr.status);
|
||||
}
|
||||
xhr.send("pass=" + config_f.pass.value + "&config_t=" + encodeURIComponent(config_f.config_t.value) + "&config_b=" + b.value);
|
||||
}
|
||||
</script><br>';
|
||||
$Diver_arr = scandir(__DIR__ . $slash . 'disk');
|
||||
$html .= '
|
||||
<select name="DriveType" onchange="changedrivetype(this.options[this.options.selectedIndex].value)">';
|
||||
|
@ -1842,11 +1976,13 @@ function render_list($path = '', $files = [])
|
|||
while (strpos($html, '<!--FileDownUrl-->')) $html = str_replace('<!--FileDownUrl-->', path_format($_SERVER['base_disk_path'] . '/' . $path), $html);
|
||||
while (strpos($html, '<!--FileEncodeReplaceUrl-->')) $html = str_replace('<!--FileEncodeReplaceUrl-->', path_format($_SERVER['base_disk_path'] . '/' . $path), $html);
|
||||
while (strpos($html, '<!--FileName-->')) $html = str_replace('<!--FileName-->', $files['name'], $html);
|
||||
$html = str_replace('<!--FileEncodeDownUrl-->', urlencode($files['url']), $html);
|
||||
//$html = str_replace('<!--FileEncodeDownUrl-->', urlencode($files['url']), $html);
|
||||
while (strpos($html, '<!--FileEncodeDownUrl-->')) $html = str_replace('<!--FileEncodeDownUrl-->', urlencode(path_format($_SERVER['base_disk_path'] . '/' . $path)), $html);
|
||||
$html = str_replace('<!--constStr@ClicktoEdit-->', getconstStr('ClicktoEdit'), $html);
|
||||
$html = str_replace('<!--constStr@CancelEdit-->', getconstStr('CancelEdit'), $html);
|
||||
$html = str_replace('<!--constStr@Save-->', getconstStr('Save'), $html);
|
||||
while (strpos($html, '<!--TxtContent-->')) $html = str_replace('<!--TxtContent-->', htmlspecialchars(curl('GET', $files['url'])['body']), $html);
|
||||
while (strpos($html, '<!--TxtContent-->')) $html = str_replace('<!--TxtContent-->', htmlspecialchars(curl('GET', $files['url'], '', '', 0, 1)['body']), $html);
|
||||
//while (strpos($html, '<!--TxtContent-->')) $html = str_replace('<!--TxtContent-->', htmlspecialchars(get_content(spurlencode(path_format(urldecode($path) . '/' . $files['name']), '/'))['content']['body']), $html);
|
||||
$html = str_replace('<!--constStr@FileNotSupport-->', getconstStr('FileNotSupport'), $html);
|
||||
|
||||
|
||||
|
|
14
conststr.php
14
conststr.php
|
@ -96,6 +96,7 @@ $constStr = [
|
|||
'referrer' => 'only these domains can refer resourse in this site, format is a1.com|b2.com',
|
||||
'domain_path' => 'more custom domain, format is a1.com:/dirto/path1|b2.com:/path2',
|
||||
'diskname' => 'The disk name you want show.',
|
||||
'diskDescription' => ' Some tips of this disk, not used in code.',
|
||||
'disktag' => 'A tag used in store config and url.',
|
||||
'disableShowThumb' => 'if 1, the ShowThumbnail button will not display',
|
||||
'disableChangeTheme' => 'if 1, the Theme selection button will not display',
|
||||
|
@ -123,6 +124,7 @@ $constStr = [
|
|||
'referrer' => '只有这些域名能引用本站资源。格式为a1.com|b1.com',
|
||||
'domain_path' => '使用多个自定义域名时,指定每个域名看到的目录。格式为a1.com:/dirto/path1|b1.com:/path2,比private_path优先。',
|
||||
'diskname' => '这个盘你想显示什么名称。',
|
||||
'diskDescription' => '对这个盘的一些描述,随便写,代码不引用这个。',
|
||||
'disktag' => '一个标签,用于保存配置,多盘时会显示在url中。',
|
||||
'disableShowThumb' => '如果填 1, ‘显示缩略’按钮将被隐藏。',
|
||||
'disableChangeTheme' => '如果为 1,则不会显示主题选择按钮',
|
||||
|
@ -325,9 +327,9 @@ $constStr = [
|
|||
],
|
||||
'SetpassfileBfEncrypt' => [
|
||||
'en-us' => 'Set \'passfile\' in Environments before encrypt',
|
||||
'zh-cn' => '先在环境变量设置passfile才能加密',
|
||||
'zh-tw' => '先在環境變數設定passfile才能加密',
|
||||
'ja' => '最初に暗号化する環境変数にパスファイルを設定します',
|
||||
'zh-cn' => '先设置passfile才能加密',
|
||||
'zh-tw' => '先設定passfile才能加密',
|
||||
'ja' => '最初に暗号化する変数にパスファイルを設定します',
|
||||
'ko-kr' => '암호화하기 전에 환경 변수에 패스 파일을 설정하십시오',
|
||||
'fa' => 'قبل از رمزگذاری \"passfile \" را در محیط تنظیم کنید',
|
||||
'ar-sa' => 'أولا تعيين متغير البيئة passfile لتشفير',
|
||||
|
@ -424,9 +426,9 @@ $constStr = [
|
|||
'zh-tw' => '修改標籤',
|
||||
'ar-sa' => 'تغيير التسمية',
|
||||
],
|
||||
'ChangeOnedrivetype' => [
|
||||
'en-us' => 'Change Onedrive/Sharepoint',
|
||||
'zh-cn' => '切换Onedrive/Sharepoint',
|
||||
'ChangeDrivetype' => [
|
||||
'en-us' => 'Change',
|
||||
'zh-cn' => '切换',
|
||||
],
|
||||
'AddDisk' => [
|
||||
'en-us' => 'Add Disk',
|
||||
|
|
|
@ -27,18 +27,14 @@ class Aliyundrive {
|
|||
|
||||
public function ext_show_innerenv()
|
||||
{
|
||||
return [];
|
||||
return ['default_drive_id'];
|
||||
}
|
||||
|
||||
public function list_files($path = '/')
|
||||
{
|
||||
|
||||
|
||||
|
||||
$files = $this->list_path($path);
|
||||
|
||||
|
||||
|
||||
return $this->files_format($files);
|
||||
}
|
||||
|
||||
|
@ -129,6 +125,7 @@ class Aliyundrive {
|
|||
$files['content'] = $content1;
|
||||
savecache('path_' . $path, $files, $this->disktag);
|
||||
}
|
||||
error_log1($files['name'] . ' : ' . json_encode($files['content']) . PHP_EOL);
|
||||
}
|
||||
}
|
||||
if (!$files) {
|
||||
|
@ -254,9 +251,7 @@ class Aliyundrive {
|
|||
$upload_id = $res['upload_id'];
|
||||
$result = curl('PUT', $url, $pass, [], 1);
|
||||
if ($result['stat']==200) { // 块1传好
|
||||
$tmp1['part_number'] = 1;
|
||||
$tmp1['etag'] = $result['returnhead']['ETag'];
|
||||
$result = $this->fileComplete($file_id, $upload_id, [ $tmp1 ]);
|
||||
$result = $this->fileComplete($file_id, $upload_id, [ $result['returnhead']['ETag'] ]);
|
||||
return output(json_encode($this->files_format(json_decode($result['body'], true))), $result['stat']);
|
||||
}
|
||||
}
|
||||
|
@ -332,7 +327,7 @@ class Aliyundrive {
|
|||
$result = curl('PUT', $url, $content, [], 1);
|
||||
if ($result['stat']==200) { // 块1传好
|
||||
$etag = $result['returnhead']['ETag'];
|
||||
$result = $this->fileComplete($file_id, $upload_id, $etag);
|
||||
$result = $this->fileComplete($file_id, $upload_id, [ $etag ]);
|
||||
if ($result['stat']!=200) return output($result['body'], $result['stat']);
|
||||
else return output('success', 0);
|
||||
}*/
|
||||
|
@ -364,9 +359,7 @@ class Aliyundrive {
|
|||
$upload_id = $res['upload_id'];
|
||||
$result = curl('PUT', $url, $content, [], 1);
|
||||
if ($result['stat']==200) { // 块1传好
|
||||
$tmp2['part_number'] = 1;
|
||||
$tmp2['etag'] = $result['returnhead']['ETag'];
|
||||
$result = $this->fileComplete($file_id, $upload_id, [ $tmp2 ]);
|
||||
$result = $this->fileComplete($file_id, $upload_id, [ $result['returnhead']['ETag'] ]);
|
||||
if ($result['stat']!=200) return output(json_encode($this->files_format(json_decode($result['body'], true))), $result['stat']);
|
||||
else return output('success', 0);
|
||||
}
|
||||
|
@ -410,9 +403,7 @@ class Aliyundrive {
|
|||
$result = curl('PUT', $url, $content, [], 1);
|
||||
//error_log1('2,url:' . $url .' res:' . json_encode($result));
|
||||
if ($result['stat']==200) { // 块1传好
|
||||
$tmp1['part_number'] = 1;
|
||||
$tmp1['etag'] = $result['returnhead']['ETag'];
|
||||
$result = $this->fileComplete($file_id, $upload_id, [ $tmp1 ]);
|
||||
$result = $this->fileComplete($file_id, $upload_id, [ $result['returnhead']['ETag'] ]);
|
||||
//error_log1('3,url:' . $url .' res:' . json_encode($result));
|
||||
return output(json_encode($this->files_format(json_decode($result['body'], true))), $result['stat']);
|
||||
}
|
||||
|
@ -702,6 +693,12 @@ class Aliyundrive {
|
|||
return message($html, $title, 201);
|
||||
}
|
||||
protected function get_access_token($refresh_token) {
|
||||
if (!$refresh_token) {
|
||||
$tmp['stat'] = 0;
|
||||
$tmp['body'] = 'No refresh_token';
|
||||
$this->error = $tmp;
|
||||
return false;
|
||||
}
|
||||
if (!($this->access_token = getcache('access_token', $this->disktag))) {
|
||||
$p=0;
|
||||
$tmp1['refresh_token'] = $refresh_token;
|
||||
|
@ -709,7 +706,7 @@ class Aliyundrive {
|
|||
$response = curl('POST', $this->auth_url, json_encode($tmp1), ["content-type"=>"application/json; charset=utf-8"]);
|
||||
$p++;
|
||||
}
|
||||
error_log1(json_encode($response));
|
||||
//error_log1(json_encode($response));
|
||||
if ($response['stat']==200) $ret = json_decode($response['body'], true);
|
||||
if (!isset($ret['access_token'])) {
|
||||
error_log1('failed to get [' . $this->disktag . '] access_token. response: ' . $response['stat'] . $response['body']);
|
||||
|
@ -719,8 +716,8 @@ class Aliyundrive {
|
|||
return false;
|
||||
}
|
||||
$tmp = $ret;
|
||||
$tmp['access_token'] = '******';
|
||||
$tmp['refresh_token'] = '******';
|
||||
$tmp['access_token'] = substr($tmp['access_token'], 0, 10) . '******';
|
||||
$tmp['refresh_token'] = substr($tmp['refresh_token'], 0, 10) . '******';
|
||||
error_log1('[' . $this->disktag . '] Get access token:' . json_encode($tmp, JSON_PRETTY_PRINT));
|
||||
$this->access_token = $ret['access_token'];
|
||||
savecache('access_token', $this->access_token, $this->disktag, $ret['expires_in'] - 300);
|
||||
|
|
|
@ -767,6 +767,12 @@ class Onedrive {
|
|||
}
|
||||
|
||||
protected function get_access_token($refresh_token) {
|
||||
if (!$refresh_token) {
|
||||
$tmp['stat'] = 0;
|
||||
$tmp['body'] = 'No refresh_token';
|
||||
$this->error = $tmp;
|
||||
return false;
|
||||
}
|
||||
if (!($this->access_token = getcache('access_token', $this->disktag))) {
|
||||
$p=0;
|
||||
while ($response['stat']==0&&$p<3) {
|
||||
|
@ -784,8 +790,8 @@ class Onedrive {
|
|||
//throw new Exception($response['stat'].', failed to get ['.$this->disktag.'] access_token.'.$response['body']);
|
||||
}
|
||||
$tmp = $ret;
|
||||
$tmp['access_token'] = '******';
|
||||
$tmp['refresh_token'] = '******';
|
||||
$tmp['access_token'] = substr($tmp['access_token'], 0, 10) . '******';
|
||||
$tmp['refresh_token'] = substr($tmp['refresh_token'], 0, 10) . '******';
|
||||
error_log1('[' . $this->disktag . '] Get access token:' . json_encode($tmp, JSON_PRETTY_PRINT));
|
||||
$this->access_token = $ret['access_token'];
|
||||
savecache('access_token', $this->access_token, $this->disktag, $ret['expires_in'] - 300);
|
||||
|
|
|
@ -90,7 +90,10 @@ function setConfig($arr, $disktag = '')
|
|||
$indisk = 0;
|
||||
$operatedisk = 0;
|
||||
foreach ($arr as $k => $v) {
|
||||
if (isInnerEnv($k)) {
|
||||
if (isCommonEnv($k)) {
|
||||
if (isBase64Env($k)) $tmp[$k] = base64y_encode($v);
|
||||
else $tmp[$k] = $v;
|
||||
} elseif (isInnerEnv($k)) {
|
||||
if (isBase64Env($k)) $diskconfig[$k] = base64y_encode($v);
|
||||
else $diskconfig[$k] = $v;
|
||||
$indisk = 1;
|
||||
|
@ -109,8 +112,7 @@ function setConfig($arr, $disktag = '')
|
|||
} elseif ($k=='disktag_rename' || $k=='disktag_newname') {
|
||||
if ($arr['disktag_rename']!=$arr['disktag_newname']) $operatedisk = 1;
|
||||
} else {
|
||||
if (isBase64Env($k)) $tmp[$k] = base64y_encode($v);
|
||||
else $tmp[$k] = $v;
|
||||
$tmp[$k] = json_encode($v);
|
||||
}
|
||||
}
|
||||
if ($indisk) {
|
||||
|
|
|
@ -80,7 +80,10 @@ function setConfig($arr, $disktag = '')
|
|||
$indisk = 0;
|
||||
$operatedisk = 0;
|
||||
foreach ($arr as $k => $v) {
|
||||
if (isInnerEnv($k)) {
|
||||
if (isCommonEnv($k)) {
|
||||
if (isBase64Env($k)) $tmp[$k] = base64y_encode($v);
|
||||
else $tmp[$k] = $v;
|
||||
} elseif (isInnerEnv($k)) {
|
||||
if (isBase64Env($k)) $diskconfig[$k] = base64y_encode($v);
|
||||
else $diskconfig[$k] = $v;
|
||||
$indisk = 1;
|
||||
|
@ -99,8 +102,7 @@ function setConfig($arr, $disktag = '')
|
|||
} elseif ($k=='disktag_rename' || $k=='disktag_newname') {
|
||||
if ($arr['disktag_rename']!=$arr['disktag_newname']) $operatedisk = 1;
|
||||
} else {
|
||||
if (isBase64Env($k)) $tmp[$k] = base64y_encode($v);
|
||||
else $tmp[$k] = $v;
|
||||
$tmp[$k] = json_encode($v);
|
||||
}
|
||||
}
|
||||
if ($indisk) {
|
||||
|
|
|
@ -2,6 +2,30 @@
|
|||
|
||||
function getpath()
|
||||
{
|
||||
if (getConfig('function_name') && getConfig('APIKey')) {
|
||||
$APIKey = getConfig('APIKey');
|
||||
$res = HerokuAPI('GET', 'https://api.heroku.com/apps/' . getConfig('function_name'), '', $APIKey);
|
||||
$response = json_decode($res['body'], true);
|
||||
if (isset($response['build_stack'])) {
|
||||
$tmp['HerokuappId'] = $response['id'];
|
||||
$tmp['function_name'] = null;
|
||||
} else {
|
||||
error_log1('Something error' . 'Get Heroku app id: ' . json_encode($res, JSON_PRETTY_PRINT));
|
||||
//return message('Get Heroku app id: ' . json_encode($res, JSON_PRETTY_PRINT), 'Something error', 500);
|
||||
}
|
||||
$response = json_decode(setHerokuConfig($tmp, $tmp['HerokuappId'], $APIKey)['body'], true);
|
||||
$title = 'Change function_name to HerokuappId';
|
||||
if (api_error($response)) {
|
||||
$html = api_error_msg($response);
|
||||
$stat = 500;
|
||||
error_log1('Change function_name to HerokuappId' . $html);
|
||||
} else {
|
||||
$html = getconstStr('Wait') . ' 5s, jump to index.
|
||||
<meta http-equiv="refresh" content="5;URL=/">';
|
||||
$stat = 201;
|
||||
}
|
||||
//return message($html, $title, $stat);
|
||||
}
|
||||
$_SERVER['firstacceptlanguage'] = strtolower(splitfirst(splitfirst($_SERVER['HTTP_ACCEPT_LANGUAGE'],';')[0],',')[0]);
|
||||
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
||||
$_SERVER['REQUEST_SCHEME'] = $_SERVER['HTTP_X_FORWARDED_PROTO'];
|
||||
|
@ -84,7 +108,10 @@ function setConfig($arr, $disktag = '')
|
|||
$indisk = 0;
|
||||
$operatedisk = 0;
|
||||
foreach ($arr as $k => $v) {
|
||||
if (isInnerEnv($k)) {
|
||||
if (isCommonEnv($k)) {
|
||||
if (isBase64Env($k)) $tmp[$k] = base64y_encode($v);
|
||||
else $tmp[$k] = $v;
|
||||
} elseif (isInnerEnv($k)) {
|
||||
if (isBase64Env($k)) $diskconfig[$k] = base64y_encode($v);
|
||||
else $diskconfig[$k] = $v;
|
||||
$indisk = 1;
|
||||
|
@ -103,8 +130,7 @@ function setConfig($arr, $disktag = '')
|
|||
} elseif ($k=='disktag_rename' || $k=='disktag_newname') {
|
||||
if ($arr['disktag_rename']!=$arr['disktag_newname']) $operatedisk = 1;
|
||||
} else {
|
||||
if (isBase64Env($k)) $tmp[$k] = base64y_encode($v);
|
||||
else $tmp[$k] = $v;
|
||||
$tmp[$k] = json_encode($v);
|
||||
}
|
||||
}
|
||||
if ($indisk) {
|
||||
|
@ -131,7 +157,7 @@ function setConfig($arr, $disktag = '')
|
|||
}
|
||||
foreach ($tmp as $key => $val) if ($val=='') $tmp[$key]=null;
|
||||
|
||||
return setHerokuConfig($tmp, getConfig('function_name'), getConfig('APIKey'));
|
||||
return setHerokuConfig($tmp, getConfig('HerokuappId'), getConfig('APIKey'));
|
||||
error_log1(json_encode($arr, JSON_PRETTY_PRINT) . ' => tmp:' . json_encode($tmp, JSON_PRETTY_PRINT));
|
||||
}
|
||||
|
||||
|
@ -148,15 +174,25 @@ function install()
|
|||
$APIKey = $_POST['APIKey'];
|
||||
$tmp['APIKey'] = $APIKey;
|
||||
}
|
||||
$HerokuappId = getConfig('HerokuappId');
|
||||
if ($HerokuappId=='') {
|
||||
$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;
|
||||
else return message('Please visit from xxxx.herokuapp.com', '', 500);
|
||||
$res = HerokuAPI('GET', 'https://api.heroku.com/apps/' . $function_name, '', $APIKey);
|
||||
$response = json_decode($res['body'], true);
|
||||
if (isset($response['build_stack'])) {
|
||||
$HerokuappId = $response['id'];
|
||||
} else {
|
||||
return message('Get Heroku app id: ' . json_encode($res, JSON_PRETTY_PRINT), 'Something error', 500);
|
||||
}
|
||||
$response = json_decode(setHerokuConfig($tmp, $function_name, $APIKey)['body'], true);
|
||||
}
|
||||
}
|
||||
$tmp['HerokuappId'] = $HerokuappId;
|
||||
$response = json_decode(setHerokuConfig($tmp, $HerokuappId, $APIKey)['body'], true);
|
||||
if (api_error($response)) {
|
||||
$html = api_error_msg($response);
|
||||
$title = 'Error';
|
||||
|
@ -164,7 +200,7 @@ function install()
|
|||
return output('Jump
|
||||
<script>
|
||||
var expd = new Date();
|
||||
expd.setTime(expd.getTime()+(2*60*60*1000));
|
||||
expd.setTime(expd.getTime()+1000);
|
||||
var expires = "expires="+expd.toGMTString();
|
||||
document.cookie=\'language=; path=/; \'+expires;
|
||||
</script>
|
||||
|
@ -261,22 +297,22 @@ function HerokuAPI($method, $url, $data = '', $apikey)
|
|||
return $response;
|
||||
}
|
||||
|
||||
function getHerokuConfig($function_name, $apikey)
|
||||
function getHerokuConfig($HerokuappId, $apikey)
|
||||
{
|
||||
return HerokuAPI('GET', 'https://api.heroku.com/apps/' . $function_name . '/config-vars', '', $apikey);
|
||||
return HerokuAPI('GET', 'https://api.heroku.com/apps/' . $HerokuappId . '/config-vars', '', $apikey);
|
||||
}
|
||||
|
||||
function setHerokuConfig($env, $function_name, $apikey)
|
||||
function setHerokuConfig($env, $HerokuappId, $apikey)
|
||||
{
|
||||
$data = json_encode($env);
|
||||
if (substr($data, 0, 1)=='{') return HerokuAPI('PATCH', 'https://api.heroku.com/apps/' . $function_name . '/config-vars', $data, $apikey);
|
||||
if (substr($data, 0, 1)=='{') return HerokuAPI('PATCH', 'https://api.heroku.com/apps/' . $HerokuappId . '/config-vars', $data, $apikey);
|
||||
}
|
||||
|
||||
function updateHerokuapp($function_name, $apikey, $source)
|
||||
function updateHerokuapp($HerokuappId, $apikey, $source)
|
||||
{
|
||||
$tmp['source_blob']['url'] = $source;
|
||||
$data = json_encode($tmp);
|
||||
return HerokuAPI('POST', 'https://api.heroku.com/apps/' . $function_name . '/builds', $data, $apikey);
|
||||
return HerokuAPI('POST', 'https://api.heroku.com/apps/' . $HerokuappId . '/builds', $data, $apikey);
|
||||
}
|
||||
|
||||
function api_error($response)
|
||||
|
@ -296,7 +332,7 @@ function OnekeyUpate($auth = 'qkqpttgf', $project = 'OneManager-php', $branch =
|
|||
{
|
||||
//'https://github.com/qkqpttgf/OneManager-php/tarball/master/';
|
||||
$source = 'https://github.com/' . $auth . '/' . $project . '/tarball/' . urlencode($branch) . '/';
|
||||
return updateHerokuapp(getConfig('function_name'), getConfig('APIKey'), $source);
|
||||
return updateHerokuapp(getConfig('HerokuappId'), getConfig('APIKey'), $source);
|
||||
}
|
||||
|
||||
function setConfigResponse($response)
|
||||
|
|
|
@ -103,7 +103,10 @@ function setConfig($arr, $disktag = '')
|
|||
$indisk = 0;
|
||||
$operatedisk = 0;
|
||||
foreach ($arr as $k => $v) {
|
||||
if (isInnerEnv($k)) {
|
||||
if (isCommonEnv($k)) {
|
||||
if (isBase64Env($k)) $tmp[$k] = base64y_encode($v);
|
||||
else $tmp[$k] = $v;
|
||||
} elseif (isInnerEnv($k)) {
|
||||
if (isBase64Env($k)) $diskconfig[$k] = base64y_encode($v);
|
||||
else $diskconfig[$k] = $v;
|
||||
$indisk = 1;
|
||||
|
@ -122,8 +125,7 @@ function setConfig($arr, $disktag = '')
|
|||
} elseif ($k=='disktag_rename' || $k=='disktag_newname') {
|
||||
if ($arr['disktag_rename']!=$arr['disktag_newname']) $operatedisk = 1;
|
||||
} else {
|
||||
if (isBase64Env($k)) $tmp[$k] = base64y_encode($v);
|
||||
else $tmp[$k] = $v;
|
||||
$tmp[$k] = json_encode($v);
|
||||
}
|
||||
}
|
||||
if ($indisk) {
|
||||
|
|
|
@ -116,7 +116,10 @@ function setConfig($arr, $disktag = '')
|
|||
$indisk = 0;
|
||||
$operatedisk = 0;
|
||||
foreach ($arr as $k => $v) {
|
||||
if (isInnerEnv($k)) {
|
||||
if (isCommonEnv($k)) {
|
||||
if (isBase64Env($k)) $envs[$k] = base64y_encode($v);
|
||||
else $envs[$k] = $v;
|
||||
} elseif (isInnerEnv($k)) {
|
||||
if (isBase64Env($k)) $envs[$disktag][$k] = base64y_encode($v);
|
||||
else $envs[$disktag][$k] = $v;
|
||||
$indisk = 1;
|
||||
|
@ -135,8 +138,7 @@ function setConfig($arr, $disktag = '')
|
|||
} elseif ($k=='disktag_rename' || $k=='disktag_newname') {
|
||||
if ($arr['disktag_rename']!=$arr['disktag_newname']) $operatedisk = 1;
|
||||
} else {
|
||||
if (isBase64Env($k)) $envs[$k] = base64y_encode($v);
|
||||
else $envs[$k] = $v;
|
||||
$envs[$k] = $v;
|
||||
}
|
||||
}
|
||||
if ($indisk) {
|
||||
|
|
|
@ -97,7 +97,10 @@ function setConfig($arr, $disktag = '')
|
|||
$indisk = 0;
|
||||
$operatedisk = 0;
|
||||
foreach ($arr as $k => $v) {
|
||||
if (isInnerEnv($k)) {
|
||||
if (isCommonEnv($k)) {
|
||||
if (isBase64Env($k)) $envs[$k] = base64y_encode($v);
|
||||
else $envs[$k] = $v;
|
||||
} elseif (isInnerEnv($k)) {
|
||||
if (isBase64Env($k)) $envs[$disktag][$k] = base64y_encode($v);
|
||||
else $envs[$disktag][$k] = $v;
|
||||
$indisk = 1;
|
||||
|
@ -116,8 +119,12 @@ function setConfig($arr, $disktag = '')
|
|||
} elseif ($k=='disktag_rename' || $k=='disktag_newname') {
|
||||
if ($arr['disktag_rename']!=$arr['disktag_newname']) $operatedisk = 1;
|
||||
} else {
|
||||
if (isBase64Env($k)) $envs[$k] = base64y_encode($v);
|
||||
else $envs[$k] = $v;
|
||||
//$tmpdisk = json_decode($v, true);
|
||||
//var_dump($tmpdisk);
|
||||
//error_log(json_encode($tmpdisk));
|
||||
//if ($tmpdisk===null)
|
||||
$envs[$k] = $v;
|
||||
//else $envs[$k] = $tmpdisk;
|
||||
}
|
||||
}
|
||||
if ($indisk) {
|
||||
|
|
|
@ -85,7 +85,10 @@ function setConfig($arr, $disktag = '')
|
|||
$indisk = 0;
|
||||
$operatedisk = 0;
|
||||
foreach ($arr as $k => $v) {
|
||||
if (isInnerEnv($k)) {
|
||||
if (isCommonEnv($k)) {
|
||||
if (isBase64Env($k)) $tmp[$k] = base64y_encode($v);
|
||||
else $tmp[$k] = $v;
|
||||
} elseif (isInnerEnv($k)) {
|
||||
if (isBase64Env($k)) $diskconfig[$k] = base64y_encode($v);
|
||||
else $diskconfig[$k] = $v;
|
||||
$indisk = 1;
|
||||
|
@ -104,8 +107,7 @@ function setConfig($arr, $disktag = '')
|
|||
} elseif ($k=='disktag_rename' || $k=='disktag_newname') {
|
||||
if ($arr['disktag_rename']!=$arr['disktag_newname']) $operatedisk = 1;
|
||||
} else {
|
||||
if (isBase64Env($k)) $tmp[$k] = base64y_encode($v);
|
||||
else $tmp[$k] = $v;
|
||||
$tmp[$k] = json_encode($v);
|
||||
}
|
||||
}
|
||||
if ($indisk) {
|
||||
|
|
|
@ -96,8 +96,11 @@ function setConfig($arr, $disktag = '')
|
|||
$indisk = 0;
|
||||
$operatedisk = 0;
|
||||
foreach ($arr as $k => $v) {
|
||||
if (isInnerEnv($k)) {
|
||||
if (in_array($k, $Base64Env)) $envs[$disktag][$k] = base64y_encode($v);
|
||||
if (isCommonEnv($k)) {
|
||||
if (isBase64Env($k)) $envs[$k] = base64y_encode($v);
|
||||
else $envs[$k] = $v;
|
||||
} elseif (isInnerEnv($k)) {
|
||||
if (isBase64Env($k)) $envs[$disktag][$k] = base64y_encode($v);
|
||||
else $envs[$disktag][$k] = $v;
|
||||
$indisk = 1;
|
||||
} elseif ($k=='disktag_add') {
|
||||
|
@ -115,8 +118,7 @@ function setConfig($arr, $disktag = '')
|
|||
} elseif ($k=='disktag_rename' || $k=='disktag_newname') {
|
||||
if ($arr['disktag_rename']!=$arr['disktag_newname']) $operatedisk = 1;
|
||||
} else {
|
||||
if (in_array($k, $Base64Env)) $envs[$k] = base64y_encode($v);
|
||||
else $envs[$k] = $v;
|
||||
$envs[$k] = $v;
|
||||
}
|
||||
}
|
||||
if ($indisk) {
|
||||
|
|
Loading…
Reference in New Issue