Compare commits
105 Commits
Author | SHA1 | Date |
---|---|---|
![]() |
400d531fab | |
![]() |
a9e113fbf9 | |
![]() |
f51e791072 | |
![]() |
6ff6ae997b | |
![]() |
1d84a49703 | |
![]() |
ccde6a7772 | |
![]() |
e7fa472f74 | |
![]() |
d595234a58 | |
![]() |
596955ffe0 | |
![]() |
ef70b6bcb5 | |
![]() |
c44677ad5c | |
![]() |
6275911942 | |
![]() |
b17f9af07b | |
![]() |
37d2697096 | |
![]() |
bb7c865cc3 | |
![]() |
cf6f59b745 | |
![]() |
3de4f2bfde | |
![]() |
813663b744 | |
![]() |
3f7887dab5 | |
![]() |
4a9d8c72c8 | |
![]() |
60ac0c2de8 | |
![]() |
f7f5a79d08 | |
![]() |
5a6b3a2e1c | |
![]() |
8fadfa5cf0 | |
![]() |
6ecfee98e6 | |
![]() |
57e2c63c03 | |
![]() |
e12169d2de | |
![]() |
d46cd7c962 | |
![]() |
f6f9687e53 | |
![]() |
f43dc37630 | |
![]() |
26897fc181 | |
![]() |
1bc7b692c2 | |
![]() |
f9ce32d899 | |
![]() |
41d0245ac1 | |
![]() |
370c0a1f29 | |
![]() |
2590ca22f4 | |
![]() |
fd6da1a67c | |
![]() |
0cc83ddced | |
![]() |
5eddb34e3a | |
![]() |
12d6565eb7 | |
![]() |
bda5b7c1fc | |
![]() |
0a83622087 | |
![]() |
cc0fd539a1 | |
![]() |
dbb2de5f50 | |
![]() |
2e5ea1bc6f | |
![]() |
4c36e56714 | |
![]() |
a9ccd374b8 | |
![]() |
00973a6496 | |
![]() |
80aca441d0 | |
![]() |
bb83f493d1 | |
![]() |
166f00c3a7 | |
![]() |
94f780963b | |
![]() |
b7595eee71 | |
![]() |
be07cced24 | |
![]() |
326e7ba0e5 | |
![]() |
ce0d34084d | |
![]() |
a81c94bad3 | |
![]() |
f276a60a1d | |
![]() |
a4d0d8dfff | |
![]() |
9c8c739a9c | |
![]() |
00dcccee9c | |
![]() |
09c276f33a | |
![]() |
134e9c29cf | |
![]() |
6dc5d60649 | |
![]() |
38d64b2d00 | |
![]() |
27b7aa1619 | |
![]() |
179641a403 | |
![]() |
c24a6fd37e | |
![]() |
97d2bce570 | |
![]() |
0793caec0f | |
![]() |
e87b00a242 | |
![]() |
54a997acbb | |
![]() |
3e3141be80 | |
![]() |
2b5a3e89d7 | |
![]() |
1b57164db5 | |
![]() |
7c6daaddbb | |
![]() |
e16a7012ef | |
![]() |
ed631d958d | |
![]() |
64096211e2 | |
![]() |
5a0d6d990f | |
![]() |
6eb6a826cf | |
![]() |
cfdebf35b7 | |
![]() |
a7acdaeb7c | |
![]() |
c48ebba178 | |
![]() |
8d6864f145 | |
![]() |
5433fe0522 | |
![]() |
e209d98ad8 | |
![]() |
eb1319119a | |
![]() |
46fb778cb5 | |
![]() |
0271dc5b9f | |
![]() |
4a866c8aa2 | |
![]() |
7329e51368 | |
![]() |
a259f9e5ee | |
![]() |
e8b89d3296 | |
![]() |
d2a31efb43 | |
![]() |
93569049ea | |
![]() |
816513cde7 | |
![]() |
3e8919b642 | |
![]() |
1ba3f28226 | |
![]() |
2570bad78b | |
![]() |
bb291b7ae8 | |
![]() |
b9953586c8 | |
![]() |
2d192e5623 | |
![]() |
4073323d7c | |
![]() |
29840c8b26 |
6
.replit
6
.replit
|
@ -1,3 +1,7 @@
|
||||||
language = "php74"
|
|
||||||
run = "php -S 0.0.0.0:8000 index.php"
|
run = "php -S 0.0.0.0:8000 index.php"
|
||||||
entrypoint = "index.php"
|
entrypoint = "index.php"
|
||||||
|
[nix]
|
||||||
|
channel = "stable-22_11"
|
||||||
|
[deployment]
|
||||||
|
run = ["sh", "-c", "php -S 0.0.0.0:8000 index.php"]
|
||||||
|
deploymentTarget = "cloudrun"
|
||||||
|
|
1362
common.php
1362
common.php
File diff suppressed because it is too large
Load Diff
|
@ -6,7 +6,7 @@ global $constStr;
|
||||||
$exts['img'] = ['ico', 'bmp', 'gif', 'jpg', 'jpeg', 'jpe', 'jfif', 'tif', 'tiff', 'png', 'heic', 'webp'];
|
$exts['img'] = ['ico', 'bmp', 'gif', 'jpg', 'jpeg', 'jpe', 'jfif', 'tif', 'tiff', 'png', 'heic', 'webp'];
|
||||||
$exts['music'] = ['mp3', 'wma', 'flac', 'ape', 'wav', 'ogg', 'm4a'];
|
$exts['music'] = ['mp3', 'wma', 'flac', 'ape', 'wav', 'ogg', 'm4a'];
|
||||||
$exts['office'] = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx'];
|
$exts['office'] = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx'];
|
||||||
$exts['txt'] = ['txt', 'bat', 'sh', 'php', 'asp', 'js', 'css', 'json', 'html', 'c', 'cpp', 'md', 'py', 'omf'];
|
$exts['txt'] = ['txt', 'log', 'bat', 'sh', 'php', 'asp', 'js', 'css', 'json', 'html', 'c', 'cpp', 'md', 'py', 'omf'];
|
||||||
$exts['video'] = ['mp4', 'webm', 'mkv', 'mov', 'flv', 'blv', 'avi', 'wmv', 'm3u8', 'rm', '3gp', 'rmvb'];
|
$exts['video'] = ['mp4', 'webm', 'mkv', 'mov', 'flv', 'blv', 'avi', 'wmv', 'm3u8', 'rm', '3gp', 'rmvb'];
|
||||||
$exts['zip'] = ['zip', 'rar', '7z', 'gz', 'tar'];
|
$exts['zip'] = ['zip', 'rar', '7z', 'gz', 'tar'];
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,10 @@ class Aliyundrive {
|
||||||
//$this->auth_url = 'https://websv.aliyundrive.com/token/refresh';
|
//$this->auth_url = 'https://websv.aliyundrive.com/token/refresh';
|
||||||
$this->auth_url = 'https://auth.aliyundrive.com/v2/account/token';
|
$this->auth_url = 'https://auth.aliyundrive.com/v2/account/token';
|
||||||
$this->api_url = 'https://api.aliyundrive.com/v2';
|
$this->api_url = 'https://api.aliyundrive.com/v2';
|
||||||
|
$this->api_url_v3 = 'https://api.aliyundrive.com/adrive/v3';
|
||||||
$this->driveId = getConfig('driveId', $tag);
|
$this->driveId = getConfig('driveId', $tag);
|
||||||
|
//$this->DownurlStrName = 'download_url';
|
||||||
|
$this->DownurlStrName = 'url';
|
||||||
$res = $this->get_access_token(getConfig('refresh_token', $tag));
|
$res = $this->get_access_token(getConfig('refresh_token', $tag));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +53,7 @@ class Aliyundrive {
|
||||||
$tmp['time'] = $files['updated_at'];
|
$tmp['time'] = $files['updated_at'];
|
||||||
$tmp['size'] = $files['size'];
|
$tmp['size'] = $files['size'];
|
||||||
$tmp['mime'] = $files['file']['mimeType'];
|
$tmp['mime'] = $files['file']['mimeType'];
|
||||||
$tmp['url'] = $files['download_url'];
|
$tmp['url'] = $files[$this->DownurlStrName];
|
||||||
$tmp['content'] = $files['content'];
|
$tmp['content'] = $files['content'];
|
||||||
if (isset($files['exist'])) $tmp['exist'] = $files['exist'];
|
if (isset($files['exist'])) $tmp['exist'] = $files['exist'];
|
||||||
if (isset($files['rapid_upload'])) $tmp['rapid_upload'] = $files['rapid_upload'];
|
if (isset($files['rapid_upload'])) $tmp['rapid_upload'] = $files['rapid_upload'];
|
||||||
|
@ -66,7 +69,7 @@ class Aliyundrive {
|
||||||
$filename = strtolower($file['name']);
|
$filename = strtolower($file['name']);
|
||||||
if ($file['type']=='file') {
|
if ($file['type']=='file') {
|
||||||
$tmp['list'][$filename]['type'] = 'file';
|
$tmp['list'][$filename]['type'] = 'file';
|
||||||
$tmp['list'][$filename]['url'] = $file['download_url'];
|
$tmp['list'][$filename]['url'] = $file[$this->DownurlStrName];
|
||||||
$tmp['list'][$filename]['mime'] = $file['file']['content_type'];
|
$tmp['list'][$filename]['mime'] = $file['file']['content_type'];
|
||||||
} elseif ($file['type']=='folder') {
|
} elseif ($file['type']=='folder') {
|
||||||
$tmp['list'][$filename]['type'] = 'folder';
|
$tmp['list'][$filename]['type'] = 'folder';
|
||||||
|
@ -93,9 +96,10 @@ class Aliyundrive {
|
||||||
if (!($files = getcache('path_' . $path, $this->disktag))) {
|
if (!($files = getcache('path_' . $path, $this->disktag))) {
|
||||||
if ($path == '/' || $path == '') {
|
if ($path == '/' || $path == '') {
|
||||||
$files = $this->fileList('root');
|
$files = $this->fileList('root');
|
||||||
//error_log1('root_id' . $files['id']);
|
//error_log1('root_id' . $files['file_id']);
|
||||||
$files['file_id'] = 'root';
|
$files['file_id'] = 'root';
|
||||||
$files['type'] = 'folder';
|
$files['type'] = 'folder';
|
||||||
|
//error_log1(json_encode($files, JSON_PRETTY_PRINT));
|
||||||
} else {
|
} else {
|
||||||
$tmp = splitlast($path, '/');
|
$tmp = splitlast($path, '/');
|
||||||
$parent_path = $tmp[0];
|
$parent_path = $tmp[0];
|
||||||
|
@ -121,7 +125,7 @@ class Aliyundrive {
|
||||||
if (!(isset($files['content'])&&$files['content']['stat']==200)) {
|
if (!(isset($files['content'])&&$files['content']['stat']==200)) {
|
||||||
$header['Referer'] = 'https://www.aliyundrive.com/';
|
$header['Referer'] = 'https://www.aliyundrive.com/';
|
||||||
$header['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36';
|
$header['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36';
|
||||||
$content1 = curl('GET', $files['download_url'], '', $header);
|
$content1 = curl('GET', $files[$this->DownurlStrName], '', $header);
|
||||||
$tmp = null;
|
$tmp = null;
|
||||||
$tmp = json_decode(json_encode($content1), true);
|
$tmp = json_decode(json_encode($content1), true);
|
||||||
if ($tmp['body']===null) {
|
if ($tmp['body']===null) {
|
||||||
|
@ -181,7 +185,7 @@ class Aliyundrive {
|
||||||
}
|
}
|
||||||
protected function fileList($parent_file_id)
|
protected function fileList($parent_file_id)
|
||||||
{
|
{
|
||||||
$url = $this->api_url . '/file/list';
|
$url = $this->api_url_v3 . '/file/list';
|
||||||
|
|
||||||
$header["content-type"] = "application/json; charset=utf-8";
|
$header["content-type"] = "application/json; charset=utf-8";
|
||||||
$header['authorization'] = 'Bearer ' . $this->access_token;
|
$header['authorization'] = 'Bearer ' . $this->access_token;
|
||||||
|
@ -320,7 +324,6 @@ class Aliyundrive {
|
||||||
return output(json_encode($this->files_format(json_decode($result['body'], true))), $result['stat']);
|
return output(json_encode($this->files_format(json_decode($result['body'], true))), $result['stat']);
|
||||||
}
|
}
|
||||||
public function Copy($file) {
|
public function Copy($file) {
|
||||||
return output('NO copy', 415);
|
|
||||||
if (!$file['id']) {
|
if (!$file['id']) {
|
||||||
$oldfile = $this->list_path($file['path'] . '/' . $file['name']);
|
$oldfile = $this->list_path($file['path'] . '/' . $file['name']);
|
||||||
//error_log1('res:' . json_encode($res));
|
//error_log1('res:' . json_encode($res));
|
||||||
|
@ -328,47 +331,60 @@ class Aliyundrive {
|
||||||
} else {
|
} else {
|
||||||
$oldfile = $this->fileGet($file['id']);
|
$oldfile = $this->fileGet($file['id']);
|
||||||
}
|
}
|
||||||
|
if ($oldfile['type']=='folder') return output('Can not copy folder', 415);
|
||||||
$url = $this->api_url . '/file/create';
|
if (!function_exists('bcadd')) {
|
||||||
|
// no php-bcmath
|
||||||
$header["content-type"] = "application/json; charset=utf-8";
|
if ($bcmathurl = getConfig('bcmathUrl', $this->disktag)) {
|
||||||
$header['authorization'] = 'Bearer ' . $this->access_token;
|
if (strpos($bcmathurl, '?')) {
|
||||||
|
$bcmathurl .= '÷nd=0x' . substr(md5($this->access_token), 0, 16) . '&divisor=' . $oldfile['size'];
|
||||||
$data['check_name_mode'] = 'auto_rename'; // ignore, auto_rename, refuse.
|
} else {
|
||||||
$data['content_hash'] = $oldfile['content_hash'];
|
$bcmathurl .= '?dividend=0x' . substr(md5($this->access_token), 0, 16) . '&divisor=' . $oldfile['size'];
|
||||||
$data['content_hash_name'] = 'sha1';
|
}
|
||||||
$data['content_type'] = $oldfile['content_type'];
|
$o = curl('GET', $bcmathurl)['body'];
|
||||||
$data['drive_id'] = $this->driveId;
|
|
||||||
$data['ignoreError'] = false;
|
|
||||||
$data['name'] = $oldfile['name'];
|
|
||||||
$data['parent_file_id'] = $oldfile['parent_file_id'];
|
|
||||||
$data['part_info_list'][0]['part_number'] = 1;
|
|
||||||
$data['size'] = $oldfile['size'];
|
|
||||||
$data['type'] = 'file';
|
|
||||||
|
|
||||||
$result = curl('POST', $url, json_encode($data), $header);
|
|
||||||
|
|
||||||
if ($result['stat']==201) {
|
|
||||||
//error_log1('1,url:' . $url .' res:' . json_encode($result));
|
|
||||||
$res = json_decode($result['body'], true);
|
|
||||||
$url = $res['part_info_list'][0]['upload_url'];
|
|
||||||
if (!$url) { // 无url,应该算秒传
|
|
||||||
return output('no up url', 200);
|
|
||||||
} else {
|
} else {
|
||||||
return output(json_encode($this->files_format(json_decode($result['body'], true))), $result['stat']);
|
return output('No bcmath module, can not copy', 415);
|
||||||
}
|
}
|
||||||
/*$file_id = $res['file_id'];
|
} else {
|
||||||
$upload_id = $res['upload_id'];
|
$r = bchexdec( substr(md5($this->access_token), 0, 16) );
|
||||||
$result = curl('PUT', $url, $content, [], 1);
|
$o = bcmod($r, $oldfile['size']);
|
||||||
if ($result['stat']==200) { // 块1传好
|
|
||||||
$etag = $result['returnhead']['ETag'];
|
|
||||||
$result = $this->fileComplete($file_id, $upload_id, [ $etag ]);
|
|
||||||
if ($result['stat']!=200) return output($result['body'], $result['stat']);
|
|
||||||
else return output('success', 0);
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
//error_log1('2,url:' . $url .' res:' . json_encode($result));
|
$res = curl('GET', $oldfile[$this->DownurlStrName], '', [
|
||||||
return output(json_encode($this->files_format(json_decode($result['body'], true))), $result['stat']);
|
'Referer' => ''
|
||||||
|
, 'Range' => 'bytes=' . $o . '-' . ($o+7)
|
||||||
|
]);
|
||||||
|
if ($res['stat']==206) {
|
||||||
|
$proof_code = base64_encode($res['body']);
|
||||||
|
$url = 'https://api.aliyundrive.com/adrive/v2/file/createWithFolders';
|
||||||
|
$header["content-type"] = "application/json; charset=utf-8";
|
||||||
|
$header['authorization'] = 'Bearer ' . $this->access_token;
|
||||||
|
$data['check_name_mode'] = 'auto_rename'; // ignore, auto_rename, refuse.
|
||||||
|
$data['content_hash'] = $oldfile['content_hash'];
|
||||||
|
$data['content_hash_name'] = 'sha1';
|
||||||
|
$data['drive_id'] = $this->driveId;
|
||||||
|
$data['name'] = $oldfile['name'];
|
||||||
|
$data['parent_file_id'] = $oldfile['parent_file_id'];
|
||||||
|
$data['part_info_list'][0]['part_number'] = 1;
|
||||||
|
$data['proof_code'] = $proof_code;
|
||||||
|
$data['proof_version'] = 'v1';
|
||||||
|
$data['size'] = $oldfile['size'];
|
||||||
|
$data['type'] = 'file';
|
||||||
|
$result = curl('POST', $url, json_encode($data), $header);
|
||||||
|
/*if ($result['stat']==201) {
|
||||||
|
$res = json_decode($result['body'], true);
|
||||||
|
if ($res['rapid_upload']) return output('rapid upload', 200);
|
||||||
|
$url = $res['part_info_list'][0]['upload_url'];
|
||||||
|
if (!$url) { // 无url,应该算秒传
|
||||||
|
return output('no up url', 200);
|
||||||
|
} else {
|
||||||
|
return output(json_encode($this->files_format(json_decode($result['body'], true))), $result['stat']);
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
//error_log1('2,url:' . $url .' res:' . json_encode($result));
|
||||||
|
return output(json_encode($this->files_format(json_decode($result['body'], true))), $result['stat']);
|
||||||
|
} else {
|
||||||
|
return output("Get proof error\n" . json_encode($res), 415);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public function Edit($file, $content) {
|
public function Edit($file, $content) {
|
||||||
$tmp = splitlast($file['path'], '/');
|
$tmp = splitlast($file['path'], '/');
|
||||||
|
@ -490,6 +506,31 @@ class Aliyundrive {
|
||||||
|
|
||||||
return curl('POST', $url, json_encode($data), $header);
|
return curl('POST', $url, json_encode($data), $header);
|
||||||
}
|
}
|
||||||
|
protected function fileCreate1($parentId, $fileName, $sha1, $proof_code, $size, $part_number) {
|
||||||
|
//$url = $this->api_url . '/file/create';
|
||||||
|
$url = 'https://api.aliyundrive.com/adrive/v2/file/createWithFolders';
|
||||||
|
|
||||||
|
$header["content-type"] = "application/json; charset=utf-8";
|
||||||
|
$header['authorization'] = 'Bearer ' . $this->access_token;
|
||||||
|
|
||||||
|
$data['check_name_mode'] = 'refuse'; // ignore, auto_rename, refuse.
|
||||||
|
$data['content_hash'] = $sha1;
|
||||||
|
$data['content_hash_name'] = 'sha1';
|
||||||
|
//$data['content_type'] = '';
|
||||||
|
$data['drive_id'] = $this->driveId;
|
||||||
|
//$data['ignoreError'] = false;
|
||||||
|
$data['name'] = $fileName;
|
||||||
|
$data['parent_file_id'] = $parentId;
|
||||||
|
for ($i=0;$i<$part_number;$i++) {
|
||||||
|
$data['part_info_list'][$i]['part_number'] = $i+1;
|
||||||
|
}
|
||||||
|
$data['proof_code'] = $proof_code;
|
||||||
|
$data['proof_version'] = 'v1';
|
||||||
|
$data['size'] = (int)$size;
|
||||||
|
$data['type'] = 'file';
|
||||||
|
|
||||||
|
return curl('POST', $url, json_encode($data), $header);
|
||||||
|
}
|
||||||
protected function tmpfileCreate($parentId, $tmpFilePath, $tofileName = '') {
|
protected function tmpfileCreate($parentId, $tmpFilePath, $tofileName = '') {
|
||||||
$sha1 = sha1_file($tmpFilePath);
|
$sha1 = sha1_file($tmpFilePath);
|
||||||
if ($tofileName == '') $tofileName = splitlast($tmpFilePath, '/')[1];
|
if ($tofileName == '') $tofileName = splitlast($tmpFilePath, '/')[1];
|
||||||
|
@ -538,6 +579,60 @@ class Aliyundrive {
|
||||||
$thumb_url = $res['thumbnail'];
|
$thumb_url = $res['thumbnail'];
|
||||||
return $thumb_url;
|
return $thumb_url;
|
||||||
}
|
}
|
||||||
|
public function smallfileupload($path, $tmpfile) {
|
||||||
|
if (!$_SERVER['admin']) {
|
||||||
|
$tmp1 = splitlast($tmpfile['name'], '.');
|
||||||
|
if ($tmp1[0]==''||$tmp1[1]=='') $filename = sha1_file($tmpfile['tmp_name']);
|
||||||
|
else $filename = sha1_file($tmpfile['tmp_name']) . '.' . $tmp1[1];
|
||||||
|
} else {
|
||||||
|
$filename = $tmpfile['name'];
|
||||||
|
}
|
||||||
|
//$content = file_get_contents($tmpfile['tmp_name']);
|
||||||
|
$result = $this->tmpfileCreate($this->list_path($_SERVER['list_path'] . '/' . $path . '/')['file_id'], $tmpfile['tmp_name'], $filename);
|
||||||
|
//error_log1('1,url:' . $url .' res:' . json_encode($result));
|
||||||
|
if ($result['stat']==201) {
|
||||||
|
$res = json_decode($result['body'], true);
|
||||||
|
$url = $res['part_info_list'][0]['upload_url'];
|
||||||
|
if (!$url) { // 无url,应该算秒传
|
||||||
|
//return output('no up url', 0);
|
||||||
|
$a = 1;
|
||||||
|
} else {
|
||||||
|
$file_id = $res['file_id'];
|
||||||
|
$upload_id = $res['upload_id'];
|
||||||
|
//$result = curl('PUT', $url, $content, [], 1);
|
||||||
|
$ch = curl_init();
|
||||||
|
curl_setopt($ch, CURLOPT_URL, $url);
|
||||||
|
curl_setopt($ch, CURLOPT_PUT, 1);
|
||||||
|
curl_setopt($ch, CURLOPT_HEADER, 1);
|
||||||
|
$fh_res = fopen($tmpfile['tmp_name'], 'r');
|
||||||
|
curl_setopt($ch, CURLOPT_INFILE, $fh_res);
|
||||||
|
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($tmpfile['tmp_name']));
|
||||||
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||||
|
$tmpres = splitlast(curl_exec($ch), "\r\n\r\n");
|
||||||
|
$result['body'] = $tmpres[1];
|
||||||
|
$returnhead = $tmpres[0];
|
||||||
|
foreach (explode("\r\n", $returnhead) as $head) {
|
||||||
|
$tmp = explode(': ', $head);
|
||||||
|
$heads[$tmp[0]] = $tmp[1];
|
||||||
|
}
|
||||||
|
$result['returnhead'] = $heads;
|
||||||
|
$result['stat'] = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||||
|
fclose($fh_res);
|
||||||
|
curl_close($ch);
|
||||||
|
//error_log1('2,url:' . $url .' res:' . json_encode($result));
|
||||||
|
if ($result['stat']==200) { // 块1传好
|
||||||
|
$result = $this->fileComplete($file_id, $upload_id, [ $result['returnhead']['ETag'] ]);
|
||||||
|
//error_log1('3, res:' . json_encode($result));
|
||||||
|
//if ($result['stat']!=200) return output(json_encode($this->files_format(json_decode($result['body'], true))), $result['stat']);
|
||||||
|
//else return output('success', 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$res = json_decode($result['body'], true);
|
||||||
|
//if (isset($res['url']))
|
||||||
|
$res[$this->DownurlStrName] = $_SERVER['host'] . path_format($_SERVER['base_disk_path'] . '/' . $path . '/' . $filename);
|
||||||
|
}
|
||||||
|
return output(json_encode($this->files_format($res), JSON_UNESCAPED_SLASHES), $result['stat']);
|
||||||
|
}
|
||||||
public function bigfileupload($path)
|
public function bigfileupload($path)
|
||||||
{
|
{
|
||||||
if (isset($_POST['uploadid'])) {
|
if (isset($_POST['uploadid'])) {
|
||||||
|
@ -545,6 +640,20 @@ class Aliyundrive {
|
||||||
$result = $this->fileComplete($_POST['fileid'], $_POST['uploadid'], json_decode($_POST['etag'], true));
|
$result = $this->fileComplete($_POST['fileid'], $_POST['uploadid'], json_decode($_POST['etag'], true));
|
||||||
return output(json_encode($this->files_format(json_decode($result['body'], true))), $result['stat']);
|
return output(json_encode($this->files_format(json_decode($result['body'], true))), $result['stat']);
|
||||||
} else {
|
} else {
|
||||||
|
if (isset($_POST['CalcProof'])) {
|
||||||
|
return output(substr(md5($this->access_token), 0, 16), 200);
|
||||||
|
// Calc proof code
|
||||||
|
/*if (!function_exists('bcadd')) {
|
||||||
|
// no php-bcmath
|
||||||
|
return output(0, 200);
|
||||||
|
} else {
|
||||||
|
$r = bchexdec( substr(md5($this->access_token), 0, 16) );
|
||||||
|
$i = $_POST['filesize'];
|
||||||
|
//$o = $i ? bcmod($r, $i) : 0;
|
||||||
|
$o = bcmod($r, $i);
|
||||||
|
return output($o, 200);
|
||||||
|
}*/
|
||||||
|
}
|
||||||
if ($_POST['upbigfilename']=='') return output('error: no file name', 400);
|
if ($_POST['upbigfilename']=='') return output('error: no file name', 400);
|
||||||
if (!is_numeric($_POST['filesize'])) return output('error: no file size', 400);
|
if (!is_numeric($_POST['filesize'])) return output('error: no file size', 400);
|
||||||
if (!isset($_POST['filesha1'])) return output('error: no file sha1', 400);
|
if (!isset($_POST['filesha1'])) return output('error: no file sha1', 400);
|
||||||
|
@ -574,7 +683,11 @@ class Aliyundrive {
|
||||||
//error_log1($res['body']);
|
//error_log1($res['body']);
|
||||||
$parent_file_id = json_decode($res['body'], true)['file_id'];
|
$parent_file_id = json_decode($res['body'], true)['file_id'];
|
||||||
}
|
}
|
||||||
$response = $this->fileCreate($parent_file_id, $filename, $_POST['filesha1'], $fileinfo['size'], ceil($fileinfo['size']/$_POST['chunksize']));
|
//if (!function_exists('bcadd')) {
|
||||||
|
// $response = $this->fileCreate($parent_file_id, $filename, $_POST['filesha1'], $fileinfo['size'], ceil($fileinfo['size']/$_POST['chunksize']));
|
||||||
|
//} else {
|
||||||
|
$response = $this->fileCreate1($parent_file_id, $filename, $_POST['filesha1'], $_POST['proof_code'], $fileinfo['size'], ceil($fileinfo['size']/$_POST['chunksize']));
|
||||||
|
//}
|
||||||
$res = json_decode($response['body'], true);
|
$res = json_decode($response['body'], true);
|
||||||
if (isset($res['exist'])) {
|
if (isset($res['exist'])) {
|
||||||
// 已经有
|
// 已经有
|
||||||
|
@ -800,7 +913,7 @@ class Aliyundrive {
|
||||||
alert("Do not input ' . $envs . '");
|
alert("Do not input ' . $envs . '");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
var reg = /^[a-zA-Z]([_a-zA-Z0-9]{1,20})$/;
|
var reg = /^[a-zA-Z]([_a-zA-Z0-9]{1,})$/;
|
||||||
if (!reg.test(t.disktag_add.value)) {
|
if (!reg.test(t.disktag_add.value)) {
|
||||||
alert(\'' . getconstStr('TagFormatAlert') . '\');
|
alert(\'' . getconstStr('TagFormatAlert') . '\');
|
||||||
return false;
|
return false;
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -718,7 +718,7 @@ class Googledrive {
|
||||||
alert("Do not input ' . $envs . '");
|
alert("Do not input ' . $envs . '");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
var reg = /^[a-zA-Z]([_a-zA-Z0-9]{1,20})$/;
|
var reg = /^[a-zA-Z]([_a-zA-Z0-9]{1,})$/;
|
||||||
if (!reg.test(t.disktag_add.value)) {
|
if (!reg.test(t.disktag_add.value)) {
|
||||||
alert(\'' . getconstStr('TagFormatAlert') . '\');
|
alert(\'' . getconstStr('TagFormatAlert') . '\');
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -57,9 +57,27 @@ class Onedrive {
|
||||||
if (isset($parentfiles['children'][$filename][$this->DownurlStrName])) {
|
if (isset($parentfiles['children'][$filename][$this->DownurlStrName])) {
|
||||||
if (in_array(splitlast($filename,'.')[1], $exts['txt'])) {
|
if (in_array(splitlast($filename,'.')[1], $exts['txt'])) {
|
||||||
if (!(isset($parentfiles['children'][$filename]['content'])&&$parentfiles['children'][$filename]['content']['stat']==200)) {
|
if (!(isset($parentfiles['children'][$filename]['content'])&&$parentfiles['children'][$filename]['content']['stat']==200)) {
|
||||||
$content1 = curl('GET', $parentfiles['children'][$filename][$this->DownurlStrName]);
|
//$content1 = curl('GET', $parentfiles['children'][$filename][$this->DownurlStrName]);
|
||||||
$parentfiles['children'][$filename]['content'] = $content1;
|
//$parentfiles['children'][$filename]['content'] = $content1;
|
||||||
savecache('path_' . $parentpath, $parentfiles, $this->disktag);
|
//savecache('path_' . $parentpath, $parentfiles, $this->disktag);
|
||||||
|
if ($parentfiles['children'][$filename]['size']<1024*1024) {
|
||||||
|
if (!(isset($parentfiles['children'][$filename]['content'])&&$parentfiles['children'][$filename]['content']['stat']==200)) {
|
||||||
|
$content1 = curl('GET', $parentfiles['children'][$filename][$this->DownurlStrName]);
|
||||||
|
$tmp = null;
|
||||||
|
$tmp = json_decode(json_encode($content1), true);
|
||||||
|
if ($tmp['body']===null) {
|
||||||
|
$txtcode = chkTxtCode($content1['body']);
|
||||||
|
if ($txtcode!==false) $tmp['body'] = iconv($txtcode, 'UTF-8//TRANSLIT', $content1['body']);
|
||||||
|
$tmp = json_decode(json_encode($tmp), true);
|
||||||
|
if ($tmp['body']) $content1['body'] = $tmp['body'];
|
||||||
|
}
|
||||||
|
$parentfiles['children'][$filename]['content'] = $content1;
|
||||||
|
savecache('path_' . $path, $parentfiles['children'][$filename], $this->disktag);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$parentfiles['children'][$filename]['content']['stat'] = 202;
|
||||||
|
$parentfiles['children'][$filename]['content']['body'] = 'File too large.';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $this->files_format($parentfiles['children'][$filename]);
|
return $this->files_format($parentfiles['children'][$filename]);
|
||||||
|
@ -107,9 +125,10 @@ class Onedrive {
|
||||||
$tmp = null;
|
$tmp = null;
|
||||||
$tmp = json_decode(json_encode($content1), true);
|
$tmp = json_decode(json_encode($content1), true);
|
||||||
if ($tmp['body']===null) {
|
if ($tmp['body']===null) {
|
||||||
$tmp['body'] = iconv("GBK", 'UTF-8//TRANSLIT', $content1['body']);
|
$txtcode = chkTxtCode($content1['body']);
|
||||||
|
if ($txtcode!==false) $tmp['body'] = iconv($txtcode, 'UTF-8//TRANSLIT', $content1['body']);
|
||||||
$tmp = json_decode(json_encode($tmp), true);
|
$tmp = json_decode(json_encode($tmp), true);
|
||||||
if ($tmp['body']!==null) $content1['body'] = $tmp['body'];
|
if ($tmp['body']) $content1['body'] = $tmp['body'];
|
||||||
}
|
}
|
||||||
$files['content'] = $content1;
|
$files['content'] = $content1;
|
||||||
savecache('path_' . $path, $files, $this->disktag);
|
savecache('path_' . $path, $files, $this->disktag);
|
||||||
|
@ -810,7 +829,7 @@ class Onedrive {
|
||||||
alert("Do not input \"" + t.disktag_add.value + "\" in ' . getconstStr('DiskTag') . '");
|
alert("Do not input \"" + t.disktag_add.value + "\" in ' . getconstStr('DiskTag') . '");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
var reg = /^[a-zA-Z]([_a-zA-Z0-9]{1,20})$/;
|
var reg = /^[a-zA-Z]([_a-zA-Z0-9]{1,})$/;
|
||||||
if (!reg.test(t.disktag_add.value)) {
|
if (!reg.test(t.disktag_add.value)) {
|
||||||
alert(\'' . getconstStr('TagFormatAlert') . '\');
|
alert(\'' . getconstStr('TagFormatAlert') . '\');
|
||||||
return false;
|
return false;
|
||||||
|
@ -954,6 +973,20 @@ class Onedrive {
|
||||||
return $thumb_url;
|
return $thumb_url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function smallfileupload($path, $tmpfile) {
|
||||||
|
if (!$_SERVER['admin']) {
|
||||||
|
$tmp1 = splitlast($tmpfile['name'], '.');
|
||||||
|
if ($tmp1[0]==''||$tmp1[1]=='') $filename = md5_file($tmpfile['tmp_name']);
|
||||||
|
else $filename = md5_file($tmpfile['tmp_name']) . '.' . $tmp1[1];
|
||||||
|
} else {
|
||||||
|
$filename = $tmpfile['name'];
|
||||||
|
}
|
||||||
|
$content = file_get_contents($tmpfile['tmp_name']);
|
||||||
|
$result = $this->MSAPI('PUT', path_format($_SERVER['list_path'] . '/' . $path . '/' . $filename), $content);
|
||||||
|
$res = $this->files_format(json_decode($result['body'], true));
|
||||||
|
if (isset($res['url'])) $res['url'] = $_SERVER['host'] . path_format($_SERVER['base_disk_path'] . '/' . $path . '/' . $filename);
|
||||||
|
return output(json_encode($res, JSON_UNESCAPED_SLASHES), $result['stat']);
|
||||||
|
}
|
||||||
public function bigfileupload($path)
|
public function bigfileupload($path)
|
||||||
{
|
{
|
||||||
if ($_POST['upbigfilename']=='') return output('error: no file name', 400);
|
if ($_POST['upbigfilename']=='') return output('error: no file name', 400);
|
||||||
|
|
60
index.php
60
index.php
|
@ -1,6 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
//error_reporting(E_ALL & ~E_NOTICE);
|
//error_reporting(E_ALL & ~E_NOTICE);
|
||||||
error_reporting(0);
|
error_reporting(0);
|
||||||
|
|
||||||
include 'vendor/autoload.php';
|
include 'vendor/autoload.php';
|
||||||
include 'conststr.php';
|
include 'conststr.php';
|
||||||
include 'common.php';
|
include 'common.php';
|
||||||
|
@ -8,18 +9,46 @@ include 'common.php';
|
||||||
date_default_timezone_set('UTC');
|
date_default_timezone_set('UTC');
|
||||||
//echo '<pre>'. json_encode($_SERVER, JSON_PRETTY_PRINT).'</pre>';
|
//echo '<pre>'. json_encode($_SERVER, JSON_PRETTY_PRINT).'</pre>';
|
||||||
//echo '<pre>'. json_encode($_ENV, JSON_PRETTY_PRINT).'</pre>';
|
//echo '<pre>'. json_encode($_ENV, JSON_PRETTY_PRINT).'</pre>';
|
||||||
if (isset($_SERVER['USER'])&&$_SERVER['USER']==='qcloud') {
|
global $platform;
|
||||||
|
$platform = checkPlatform();
|
||||||
|
function checkPlatform() {
|
||||||
|
if (isset($_SERVER['USER'])&&$_SERVER['USER']==='qcloud')
|
||||||
|
return 'SCF';
|
||||||
|
if (isset($_SERVER['FC_FUNC_CODE_PATH']))
|
||||||
|
return 'FC';
|
||||||
|
if (isset($_SERVER['RUNTIME_LOG_PATH']) && $_SERVER['RUNTIME_LOG_PATH']=='/home/snuser/log')
|
||||||
|
return 'FG';
|
||||||
|
if (isset($_SERVER['BCE_CFC_RUNTIME_NAME']) && $_SERVER['BCE_CFC_RUNTIME_NAME']=='php7')
|
||||||
|
return 'CFC';
|
||||||
|
if (isset($_SERVER['HEROKU_APP_DIR'])&&$_SERVER['HEROKU_APP_DIR']==='/app')
|
||||||
|
return 'Heroku';
|
||||||
|
if (isset($_SERVER['DOCUMENT_ROOT'])&&$_SERVER['DOCUMENT_ROOT']==='/var/task/user')
|
||||||
|
return 'Vercel';
|
||||||
|
if (isset($_SERVER['DOCUMENT_ROOT'])&&substr($_SERVER['DOCUMENT_ROOT'], 0, 13)==='/home/runner/')
|
||||||
|
return 'Replit';
|
||||||
|
return 'Normal';
|
||||||
|
}
|
||||||
|
function writebackPlatform($p) {
|
||||||
|
if ('SCF'==$p) $_SERVER['USER']='qcloud';
|
||||||
|
if ('FC'==$p) $_SERVER['FC_FUNC_CODE_PATH']=getenv('FC_FUNC_CODE_PATH');
|
||||||
|
if ('FG'==$p) $_SERVER['RUNTIME_LOG_PATH']='/home/snuser/log';
|
||||||
|
if ('CFC'==$p) $_SERVER['BCE_CFC_RUNTIME_NAME']='php7';
|
||||||
|
//if ('Heroku'==$p) $_SERVER['HEROKU_APP_DIR']='/app';
|
||||||
|
if ('Vercel'==$p) $_SERVER['DOCUMENT_ROOT']='/var/task/user';
|
||||||
|
//if ('Replit'==$p) $_SERVER['DOCUMENT_ROOT']='/home/runner/';
|
||||||
|
}
|
||||||
|
if ('SCF'==$platform) {
|
||||||
if (getenv('ONEMANAGER_CONFIG_SAVE')=='file') include 'platform/TencentSCF_file.php';
|
if (getenv('ONEMANAGER_CONFIG_SAVE')=='file') include 'platform/TencentSCF_file.php';
|
||||||
else include 'platform/TencentSCF_env.php';
|
else include 'platform/TencentSCF_env.php';
|
||||||
} elseif (isset($_SERVER['FC_FUNC_CODE_PATH'])) {
|
} elseif ('FC'==$platform) {
|
||||||
include 'platform/AliyunFC.php';
|
include 'platform/AliyunFC.php';
|
||||||
} elseif (isset($_SERVER['_APP_SHARE_DIR']) && $_SERVER['_APP_SHARE_DIR']=='/var/share/CFF/processrouter') {
|
} elseif ('FG'==$platform) {
|
||||||
//if (getenv('ONEMANAGER_CONFIG_SAVE')=='file') include 'platform/HuaweiFG_file.php';
|
//if (getenv('ONEMANAGER_CONFIG_SAVE')=='file') include 'platform/HuaweiFG_file.php';
|
||||||
//else include 'platform/HuaweiFG_env.php';
|
//else include 'platform/HuaweiFG_env.php';
|
||||||
echo 'FG' . PHP_EOL;
|
echo 'FG' . PHP_EOL;
|
||||||
} elseif (isset($_SERVER['BCE_CFC_RUNTIME_NAME']) && $_SERVER['BCE_CFC_RUNTIME_NAME']=='php7') {
|
} elseif ('CFC'==$platform) {
|
||||||
include 'platform/BaiduCFC.php';
|
include 'platform/BaiduCFC.php';
|
||||||
} elseif (isset($_SERVER['HEROKU_APP_DIR'])&&$_SERVER['HEROKU_APP_DIR']==='/app') {
|
} elseif ('Heroku'==$platform) {
|
||||||
include 'platform/Heroku.php';
|
include 'platform/Heroku.php';
|
||||||
$path = getpath();
|
$path = getpath();
|
||||||
//echo 'path:'. $path;
|
//echo 'path:'. $path;
|
||||||
|
@ -33,9 +62,11 @@ if (isset($_SERVER['USER'])&&$_SERVER['USER']==='qcloud') {
|
||||||
http_response_code($re['statusCode']);
|
http_response_code($re['statusCode']);
|
||||||
if ($re['isBase64Encoded']) echo base64_decode($re['body']);
|
if ($re['isBase64Encoded']) echo base64_decode($re['body']);
|
||||||
else echo $re['body'];
|
else echo $re['body'];
|
||||||
} elseif (isset($_SERVER['DOCUMENT_ROOT'])&&$_SERVER['DOCUMENT_ROOT']==='/var/task/user') {
|
} elseif ('Vercel'==$platform) {
|
||||||
if (getenv('ONEMANAGER_CONFIG_SAVE')=='env') include 'platform/Vercel_env.php';
|
if (getenv('ONEMANAGER_CONFIG_SAVE')=='env') include 'platform/Vercel_env.php';
|
||||||
else include 'platform/Vercel.php';
|
else include 'platform/Vercel.php';
|
||||||
|
|
||||||
|
writebackPlatform('Vercel');
|
||||||
$path = getpath();
|
$path = getpath();
|
||||||
//echo 'path:'. $path;
|
//echo 'path:'. $path;
|
||||||
$_GET = getGET();
|
$_GET = getGET();
|
||||||
|
@ -48,7 +79,7 @@ if (isset($_SERVER['USER'])&&$_SERVER['USER']==='qcloud') {
|
||||||
http_response_code($re['statusCode']);
|
http_response_code($re['statusCode']);
|
||||||
if ($re['isBase64Encoded']) echo base64_decode($re['body']);
|
if ($re['isBase64Encoded']) echo base64_decode($re['body']);
|
||||||
else echo $re['body'];
|
else echo $re['body'];
|
||||||
} elseif (isset($_SERVER['DOCUMENT_ROOT'])&&substr($_SERVER['DOCUMENT_ROOT'], 0, 13)==='/home/runner/') {
|
} elseif ('Replit'==$platform) {
|
||||||
include 'platform/Replit.php';
|
include 'platform/Replit.php';
|
||||||
|
|
||||||
$path = getpath();
|
$path = getpath();
|
||||||
|
@ -67,7 +98,9 @@ if (isset($_SERVER['USER'])&&$_SERVER['USER']==='qcloud') {
|
||||||
} else {
|
} else {
|
||||||
include 'platform/Normal.php';
|
include 'platform/Normal.php';
|
||||||
if (!function_exists('curl_init')) {
|
if (!function_exists('curl_init')) {
|
||||||
return message('<font color="red">Need curl</font>, please install php-curl.', 'Error', 500);
|
http_response_code(500);
|
||||||
|
echo '<font color="red">Need curl</font>, please install php-curl.';
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
$path = getpath();
|
$path = getpath();
|
||||||
//echo 'path:'. $path;
|
//echo 'path:'. $path;
|
||||||
|
@ -96,6 +129,7 @@ function main_handler($event, $context)
|
||||||
unset($_GET);
|
unset($_GET);
|
||||||
unset($_COOKIE);
|
unset($_COOKIE);
|
||||||
unset($_SERVER);
|
unset($_SERVER);
|
||||||
|
writebackPlatform('SCF');
|
||||||
GetGlobalVariable($event);
|
GetGlobalVariable($event);
|
||||||
//echo '<pre>'. json_encode($_COOKIE, JSON_PRETTY_PRINT).'</pre>';
|
//echo '<pre>'. json_encode($_COOKIE, JSON_PRETTY_PRINT).'</pre>';
|
||||||
$path = GetPathSetting($event, $context);
|
$path = GetPathSetting($event, $context);
|
||||||
|
@ -106,7 +140,8 @@ function main_handler($event, $context)
|
||||||
// Aliyun FC & Huawei FG & Baidu CFC
|
// Aliyun FC & Huawei FG & Baidu CFC
|
||||||
function handler($event, $context)
|
function handler($event, $context)
|
||||||
{
|
{
|
||||||
if (isset($_SERVER['FC_FUNC_CODE_PATH'])) {
|
global $platform;
|
||||||
|
if ('FC'==$platform) {
|
||||||
// Aliyun FC
|
// Aliyun FC
|
||||||
set_error_handler("myErrorHandler");
|
set_error_handler("myErrorHandler");
|
||||||
$tmp = array(
|
$tmp = array(
|
||||||
|
@ -125,6 +160,7 @@ function handler($event, $context)
|
||||||
unset($_GET);
|
unset($_GET);
|
||||||
unset($_COOKIE);
|
unset($_COOKIE);
|
||||||
unset($_SERVER);
|
unset($_SERVER);
|
||||||
|
writebackPlatform('FC');
|
||||||
GetGlobalVariable($event);
|
GetGlobalVariable($event);
|
||||||
$path = GetPathSetting($event, $context);
|
$path = GetPathSetting($event, $context);
|
||||||
|
|
||||||
|
@ -132,7 +168,7 @@ function handler($event, $context)
|
||||||
|
|
||||||
return new RingCentral\Psr7\Response($re['statusCode'], $re['headers'], ($re['isBase64Encoded']?base64_decode($re['body']):$re['body']));
|
return new RingCentral\Psr7\Response($re['statusCode'], $re['headers'], ($re['isBase64Encoded']?base64_decode($re['body']):$re['body']));
|
||||||
|
|
||||||
} elseif ($_SERVER['_APP_SHARE_DIR']=='/var/share/CFF/processrouter') {
|
} elseif ('FG'==$platform) {
|
||||||
// Huawei FG
|
// Huawei FG
|
||||||
global $contextUserData;
|
global $contextUserData;
|
||||||
$contextUserData = $context;
|
$contextUserData = $context;
|
||||||
|
@ -147,13 +183,14 @@ function handler($event, $context)
|
||||||
unset($_GET);
|
unset($_GET);
|
||||||
unset($_COOKIE);
|
unset($_COOKIE);
|
||||||
unset($_SERVER);
|
unset($_SERVER);
|
||||||
|
writebackPlatform('FG');
|
||||||
GetGlobalVariable($event);
|
GetGlobalVariable($event);
|
||||||
//echo '<pre>'. json_encode($_COOKIE, JSON_PRETTY_PRINT).'</pre>';
|
//echo '<pre>'. json_encode($_COOKIE, JSON_PRETTY_PRINT).'</pre>';
|
||||||
$path = GetPathSetting($event, $context);
|
$path = GetPathSetting($event, $context);
|
||||||
|
|
||||||
return main($path);
|
return main($path);
|
||||||
|
|
||||||
} elseif ($_SERVER['BCE_CFC_RUNTIME_NAME']=='php7') {
|
} elseif ('CFC'==$platform) {
|
||||||
// Baidu CFC
|
// Baidu CFC
|
||||||
//$html = '<pre>'. json_encode($event, JSON_PRETTY_PRINT).'</pre>';
|
//$html = '<pre>'. json_encode($event, JSON_PRETTY_PRINT).'</pre>';
|
||||||
//$html .= '<pre>'. json_encode($context, JSON_PRETTY_PRINT).'</pre>';
|
//$html .= '<pre>'. json_encode($context, JSON_PRETTY_PRINT).'</pre>';
|
||||||
|
@ -167,6 +204,7 @@ function handler($event, $context)
|
||||||
unset($_GET);
|
unset($_GET);
|
||||||
unset($_COOKIE);
|
unset($_COOKIE);
|
||||||
unset($_SERVER);
|
unset($_SERVER);
|
||||||
|
writebackPlatform('CFC');
|
||||||
GetGlobalVariable($event);
|
GetGlobalVariable($event);
|
||||||
//echo '<pre>'. json_encode($_COOKIE, JSON_PRETTY_PRINT).'</pre>';
|
//echo '<pre>'. json_encode($_COOKIE, JSON_PRETTY_PRINT).'</pre>';
|
||||||
$path = GetPathSetting($event, $context);
|
$path = GetPathSetting($event, $context);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -67,7 +67,6 @@ function GetPathSetting($event, $context)
|
||||||
$_SERVER['host'] = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'];
|
$_SERVER['host'] = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'];
|
||||||
$_SERVER['referhost'] = explode('/', $event['headers']['Referer'][0])[2];
|
$_SERVER['referhost'] = explode('/', $event['headers']['Referer'][0])[2];
|
||||||
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = $event['headers']['If-Modified-Since'][0];
|
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = $event['headers']['If-Modified-Since'][0];
|
||||||
$_SERVER['FC_FUNC_CODE_PATH'] = getenv('FC_FUNC_CODE_PATH');
|
|
||||||
$_SERVER['REQUEST_METHOD'] = $event['method'];
|
$_SERVER['REQUEST_METHOD'] = $event['method'];
|
||||||
return $path;
|
return $path;
|
||||||
//return spurlencode($path, '/');
|
//return spurlencode($path, '/');
|
||||||
|
@ -546,3 +545,7 @@ function changeAuthKey() {
|
||||||
</script>';
|
</script>';
|
||||||
return message($html, 'Change platform Auth token or key', 200);
|
return message($html, 'Change platform Auth token or key', 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function smallfileupload($drive, $path) {
|
||||||
|
return output('Can not upload through FC.', 400);
|
||||||
|
}
|
||||||
|
|
|
@ -485,3 +485,7 @@ function changeAuthKey() {
|
||||||
</script>';
|
</script>';
|
||||||
return message($html, 'Change platform Auth token or key', 200);
|
return message($html, 'Change platform Auth token or key', 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function smallfileupload($drive, $path) {
|
||||||
|
return output('Can not upload through CFC.', 400);
|
||||||
|
}
|
||||||
|
|
|
@ -415,3 +415,9 @@ function changeAuthKey() {
|
||||||
</script>';
|
</script>';
|
||||||
return message($html, 'Change platform Auth token or key', 200);
|
return message($html, 'Change platform Auth token or key', 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function smallfileupload($drive, $path) {
|
||||||
|
if ($_FILES['file1']['error']) return output($_FILES['file1']['error'], 400);
|
||||||
|
if ($_FILES['file1']['size']>4*1024*1024) return output('File too large', 400);
|
||||||
|
return $drive->smallfileupload($path, $_FILES['file1']);
|
||||||
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ global $contextUserData;
|
||||||
|
|
||||||
function printInput($event, $context)
|
function printInput($event, $context)
|
||||||
{
|
{
|
||||||
$tmp['eventID'] = $context->geteventID();
|
$tmp['RequestID'] = $context->getRequestID();
|
||||||
$tmp['RemainingTimeInMilliSeconds'] = $context->getRemainingTimeInMilliSeconds();
|
$tmp['RemainingTimeInMilliSeconds'] = $context->getRemainingTimeInMilliSeconds();
|
||||||
$tmp['AccessKey'] = $context->getAccessKey();
|
$tmp['AccessKey'] = $context->getAccessKey();
|
||||||
$tmp['SecretKey'] = $context->getSecretKey();
|
$tmp['SecretKey'] = $context->getSecretKey();
|
||||||
|
@ -17,7 +17,7 @@ function printInput($event, $context)
|
||||||
$tmp['MemorySize'] = $context->getMemorySize();
|
$tmp['MemorySize'] = $context->getMemorySize();
|
||||||
$tmp['CPUNumber'] = $context->getCPUNumber();
|
$tmp['CPUNumber'] = $context->getCPUNumber();
|
||||||
$tmp['ProjectID'] = $context->getProjectID();
|
$tmp['ProjectID'] = $context->getProjectID();
|
||||||
$tmp['Package'] = $context->Package();
|
$tmp['Package'] = $context->getPackage();
|
||||||
$tmp['Token'] = $context->getToken();
|
$tmp['Token'] = $context->getToken();
|
||||||
$tmp['Logger'] = $context->getLogger();
|
$tmp['Logger'] = $context->getLogger();
|
||||||
|
|
||||||
|
@ -51,13 +51,13 @@ function GetPathSetting($event, $context)
|
||||||
$_SERVER['ProjectID'] = $context->getProjectID();
|
$_SERVER['ProjectID'] = $context->getProjectID();
|
||||||
$host_name = $event['headers']['host'];
|
$host_name = $event['headers']['host'];
|
||||||
$_SERVER['HTTP_HOST'] = $host_name;
|
$_SERVER['HTTP_HOST'] = $host_name;
|
||||||
$path = path_format($event['pathParameters'][''].'/');
|
$path = path_format('/' . $event['pathParameters']['']);
|
||||||
$path = str_replace('+', '%2B', $path);
|
$path = str_replace('+', '%2B', $path);
|
||||||
$_SERVER['base_path'] = path_format($event['path'].'/');
|
$_SERVER['base_path'] = path_format($event['path']);
|
||||||
if ( $_SERVER['base_path'] == $path ) {
|
if ( $_SERVER['base_path'] == $path ) {
|
||||||
$_SERVER['base_path'] = '/';
|
$_SERVER['base_path'] = '/';
|
||||||
} else {
|
} else {
|
||||||
$_SERVER['base_path'] = substr($_SERVER['base_path'], 0, -strlen($path));
|
$_SERVER['base_path'] = substr($_SERVER['base_path'], 0, strlen($_SERVER['base_path'])-strlen($path));
|
||||||
if ($_SERVER['base_path']=='') $_SERVER['base_path'] = '/';
|
if ($_SERVER['base_path']=='') $_SERVER['base_path'] = '/';
|
||||||
}
|
}
|
||||||
//$_SERVER['PHP_SELF'] = path_format($_SERVER['base_path'] . $path);
|
//$_SERVER['PHP_SELF'] = path_format($_SERVER['base_path'] . $path);
|
||||||
|
@ -75,7 +75,6 @@ function GetPathSetting($event, $context)
|
||||||
$_SERVER['HTTP_TRANSLATE'] = $event['headers']['translate'];//'f'
|
$_SERVER['HTTP_TRANSLATE'] = $event['headers']['translate'];//'f'
|
||||||
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = $event['headers']['if-modified-since'];
|
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = $event['headers']['if-modified-since'];
|
||||||
$_SERVER['REQUEST_METHOD'] = $event['httpMethod'];
|
$_SERVER['REQUEST_METHOD'] = $event['httpMethod'];
|
||||||
$_SERVER['_APP_SHARE_DIR'] = '/var/share/CFF/processrouter';
|
|
||||||
return $path;
|
return $path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -536,3 +535,7 @@ function changeAuthKey() {
|
||||||
</script>';
|
</script>';
|
||||||
return message($html, 'Change platform Auth token or key', 200);
|
return message($html, 'Change platform Auth token or key', 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function smallfileupload($drive, $path) {
|
||||||
|
return output('Can not upload through FG.', 400);
|
||||||
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ global $contextUserData;
|
||||||
|
|
||||||
function printInput($event, $context)
|
function printInput($event, $context)
|
||||||
{
|
{
|
||||||
$tmp['eventID'] = $context->geteventID();
|
$tmp['RequestID'] = $context->getRequestID();
|
||||||
$tmp['RemainingTimeInMilliSeconds'] = $context->getRemainingTimeInMilliSeconds();
|
$tmp['RemainingTimeInMilliSeconds'] = $context->getRemainingTimeInMilliSeconds();
|
||||||
$tmp['AccessKey'] = $context->getAccessKey();
|
$tmp['AccessKey'] = $context->getAccessKey();
|
||||||
$tmp['SecretKey'] = $context->getSecretKey();
|
$tmp['SecretKey'] = $context->getSecretKey();
|
||||||
|
@ -17,7 +17,7 @@ function printInput($event, $context)
|
||||||
$tmp['MemorySize'] = $context->getMemorySize();
|
$tmp['MemorySize'] = $context->getMemorySize();
|
||||||
$tmp['CPUNumber'] = $context->getCPUNumber();
|
$tmp['CPUNumber'] = $context->getCPUNumber();
|
||||||
$tmp['ProjectID'] = $context->getProjectID();
|
$tmp['ProjectID'] = $context->getProjectID();
|
||||||
$tmp['Package'] = $context->Package();
|
$tmp['Package'] = $context->getPackage();
|
||||||
$tmp['Token'] = $context->getToken();
|
$tmp['Token'] = $context->getToken();
|
||||||
$tmp['Logger'] = $context->getLogger();
|
$tmp['Logger'] = $context->getLogger();
|
||||||
|
|
||||||
|
@ -51,13 +51,13 @@ function GetPathSetting($event, $context)
|
||||||
$_SERVER['ProjectID'] = $context->getProjectID();
|
$_SERVER['ProjectID'] = $context->getProjectID();
|
||||||
$host_name = $event['headers']['host'];
|
$host_name = $event['headers']['host'];
|
||||||
$_SERVER['HTTP_HOST'] = $host_name;
|
$_SERVER['HTTP_HOST'] = $host_name;
|
||||||
$path = path_format($event['pathParameters'][''].'/');
|
$path = path_format('/' . $event['pathParameters']['']);
|
||||||
$path = str_replace('+', '%2B', $path);
|
$path = str_replace('+', '%2B', $path);
|
||||||
$_SERVER['base_path'] = path_format($event['path'].'/');
|
$_SERVER['base_path'] = path_format($event['path']);
|
||||||
if ( $_SERVER['base_path'] == $path ) {
|
if ( $_SERVER['base_path'] == $path ) {
|
||||||
$_SERVER['base_path'] = '/';
|
$_SERVER['base_path'] = '/';
|
||||||
} else {
|
} else {
|
||||||
$_SERVER['base_path'] = substr($_SERVER['base_path'], 0, -strlen($path));
|
$_SERVER['base_path'] = substr($_SERVER['base_path'], 0, strlen($_SERVER['base_path'])-strlen($path));
|
||||||
if ($_SERVER['base_path']=='') $_SERVER['base_path'] = '/';
|
if ($_SERVER['base_path']=='') $_SERVER['base_path'] = '/';
|
||||||
}
|
}
|
||||||
//$_SERVER['PHP_SELF'] = path_format($_SERVER['base_path'] . $path);
|
//$_SERVER['PHP_SELF'] = path_format($_SERVER['base_path'] . $path);
|
||||||
|
@ -75,7 +75,6 @@ function GetPathSetting($event, $context)
|
||||||
$_SERVER['HTTP_TRANSLATE'] = $event['headers']['translate'];//'f'
|
$_SERVER['HTTP_TRANSLATE'] = $event['headers']['translate'];//'f'
|
||||||
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = $event['headers']['if-modified-since'];
|
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = $event['headers']['if-modified-since'];
|
||||||
$_SERVER['REQUEST_METHOD'] = $event['httpMethod'];
|
$_SERVER['REQUEST_METHOD'] = $event['httpMethod'];
|
||||||
$_SERVER['_APP_SHARE_DIR'] = '/var/share/CFF/processrouter';
|
|
||||||
return $path;
|
return $path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -902,3 +901,7 @@ function changeAuthKey() {
|
||||||
</script>';
|
</script>';
|
||||||
return message($html, 'Change platform Auth token or key', 200);
|
return message($html, 'Change platform Auth token or key', 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function smallfileupload($drive, $path) {
|
||||||
|
return output('Can not upload through FG.', 400);
|
||||||
|
}
|
||||||
|
|
|
@ -4,13 +4,14 @@ function getpath()
|
||||||
{
|
{
|
||||||
$_SERVER['firstacceptlanguage'] = strtolower(splitfirst(splitfirst($_SERVER['HTTP_ACCEPT_LANGUAGE'],';')[0],',')[0]);
|
$_SERVER['firstacceptlanguage'] = strtolower(splitfirst(splitfirst($_SERVER['HTTP_ACCEPT_LANGUAGE'],';')[0],',')[0]);
|
||||||
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
||||||
if (isset($_SERVER['HTTP_FLY_CLIENT_IP'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_FLY_CLIENT_IP'];
|
if (isset($_SERVER['HTTP_FLY_CLIENT_IP'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_FLY_CLIENT_IP']; // Glitch
|
||||||
|
if ($_SERVER['HTTP_FLY_FORWARDED_PROTO']!='') $_SERVER['REQUEST_SCHEME'] = $_SERVER['HTTP_FLY_FORWARDED_PROTO'];
|
||||||
|
if ($_SERVER['HTTP_X_FORWARDED_PROTO']!='') {
|
||||||
|
$tmp = explode(',', $_SERVER['HTTP_X_FORWARDED_PROTO'])[0];
|
||||||
|
if ($tmp=='http'||$tmp=='https') $_SERVER['REQUEST_SCHEME'] = $tmp;
|
||||||
|
}
|
||||||
if ($_SERVER['REQUEST_SCHEME']!='http'&&$_SERVER['REQUEST_SCHEME']!='https') {
|
if ($_SERVER['REQUEST_SCHEME']!='http'&&$_SERVER['REQUEST_SCHEME']!='https') {
|
||||||
if ($_SERVER['HTTP_X_FORWARDED_PROTO']!='') {
|
$_SERVER['REQUEST_SCHEME'] = 'http';
|
||||||
$tmp = explode(',', $_SERVER['HTTP_X_FORWARDED_PROTO'])[0];
|
|
||||||
if ($tmp=='http'||$tmp=='https') $_SERVER['REQUEST_SCHEME'] = $tmp;
|
|
||||||
}
|
|
||||||
if ($_SERVER['HTTP_FLY_FORWARDED_PROTO']!='') $_SERVER['REQUEST_SCHEME'] = $_SERVER['HTTP_FLY_FORWARDED_PROTO'];
|
|
||||||
}
|
}
|
||||||
$_SERVER['host'] = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'];
|
$_SERVER['host'] = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'];
|
||||||
$_SERVER['referhost'] = explode('/', $_SERVER['HTTP_REFERER'])[2];
|
$_SERVER['referhost'] = explode('/', $_SERVER['HTTP_REFERER'])[2];
|
||||||
|
@ -22,8 +23,6 @@ function getpath()
|
||||||
else $path = $_SERVER['REQUEST_URI'];
|
else $path = $_SERVER['REQUEST_URI'];
|
||||||
$path = path_format( substr($path, strlen($_SERVER['base_path'])) );
|
$path = path_format( substr($path, strlen($_SERVER['base_path'])) );
|
||||||
return $path;
|
return $path;
|
||||||
//return substr($path, 1);
|
|
||||||
//return spurlencode($path, '/');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getGET()
|
function getGET()
|
||||||
|
@ -392,3 +391,9 @@ function WaitFunction() {
|
||||||
function changeAuthKey() {
|
function changeAuthKey() {
|
||||||
return message("Not need.", 'Change platform Auth token or key', 404);
|
return message("Not need.", 'Change platform Auth token or key', 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function smallfileupload($drive, $path) {
|
||||||
|
if ($_FILES['file1']['error']) return output($_FILES['file1']['error'], 400);
|
||||||
|
if ($_FILES['file1']['size']>4*1024*1024) return output('File too large', 400);
|
||||||
|
return $drive->smallfileupload($path, $_FILES['file1']);
|
||||||
|
}
|
||||||
|
|
|
@ -355,3 +355,9 @@ function WaitFunction() {
|
||||||
function changeAuthKey() {
|
function changeAuthKey() {
|
||||||
return message("Not need.", 'Change platform Auth token or key', 404);
|
return message("Not need.", 'Change platform Auth token or key', 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function smallfileupload($drive, $path) {
|
||||||
|
if ($_FILES['file1']['error']) return output($_FILES['file1']['error'], 400);
|
||||||
|
if ($_FILES['file1']['size']>4*1024*1024) return output('File too large', 400);
|
||||||
|
return $drive->smallfileupload($path, $_FILES['file1']);
|
||||||
|
}
|
||||||
|
|
|
@ -60,7 +60,6 @@ function GetPathSetting($event, $context)
|
||||||
$_SERVER['HTTP_TRANSLATE'] = $event['headers']['translate'];//'f'
|
$_SERVER['HTTP_TRANSLATE'] = $event['headers']['translate'];//'f'
|
||||||
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = $event['headers']['if-modified-since'];
|
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = $event['headers']['if-modified-since'];
|
||||||
$_SERVER['REQUEST_METHOD'] = $event['httpMethod'];
|
$_SERVER['REQUEST_METHOD'] = $event['httpMethod'];
|
||||||
$_SERVER['USER'] = 'qcloud';
|
|
||||||
return $path;
|
return $path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -662,3 +661,7 @@ function changeAuthKey() {
|
||||||
</script>';
|
</script>';
|
||||||
return message($html, 'Change platform Auth token or key', 200);
|
return message($html, 'Change platform Auth token or key', 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function smallfileupload($drive, $path) {
|
||||||
|
return output('Can not upload through SCF.', 400);
|
||||||
|
}
|
||||||
|
|
|
@ -60,7 +60,6 @@ function GetPathSetting($event, $context)
|
||||||
$_SERVER['HTTP_TRANSLATE'] = $event['headers']['translate'];//'f'
|
$_SERVER['HTTP_TRANSLATE'] = $event['headers']['translate'];//'f'
|
||||||
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = $event['headers']['if-modified-since'];
|
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = $event['headers']['if-modified-since'];
|
||||||
$_SERVER['REQUEST_METHOD'] = $event['httpMethod'];
|
$_SERVER['REQUEST_METHOD'] = $event['httpMethod'];
|
||||||
$_SERVER['USER'] = 'qcloud';
|
|
||||||
return $path;
|
return $path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -705,3 +704,7 @@ function changeAuthKey() {
|
||||||
</script>';
|
</script>';
|
||||||
return message($html, 'Change platform Auth token or key', 200);
|
return message($html, 'Change platform Auth token or key', 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function smallfileupload($drive, $path) {
|
||||||
|
return output('Can not upload through SCF.', 400);
|
||||||
|
}
|
||||||
|
|
|
@ -1,32 +1,29 @@
|
||||||
<?php
|
<?php
|
||||||
// https://vercel.com/docs/api#endpoints/deployments/create-a-new-deployment
|
// https://vercel.com/docs/api#endpoints/deployments/create-a-new-deployment
|
||||||
|
|
||||||
function getpath()
|
function getpath() {
|
||||||
{
|
$_SERVER['firstacceptlanguage'] = strtolower(splitfirst(splitfirst($_SERVER['HTTP_ACCEPT_LANGUAGE'], ';')[0], ',')[0]);
|
||||||
$_SERVER['firstacceptlanguage'] = strtolower(splitfirst(splitfirst($_SERVER['HTTP_ACCEPT_LANGUAGE'],';')[0],',')[0]);
|
|
||||||
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
||||||
if (isset($_SERVER['HTTP_FLY_CLIENT_IP'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_FLY_CLIENT_IP'];
|
if (isset($_SERVER['HTTP_FLY_CLIENT_IP'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_FLY_CLIENT_IP'];
|
||||||
if ($_SERVER['REQUEST_SCHEME']!='http'&&$_SERVER['REQUEST_SCHEME']!='https') {
|
if ($_SERVER['REQUEST_SCHEME'] != 'http' && $_SERVER['REQUEST_SCHEME'] != 'https') {
|
||||||
if ($_SERVER['HTTP_X_FORWARDED_PROTO']!='') {
|
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] != '') {
|
||||||
$tmp = explode(',', $_SERVER['HTTP_X_FORWARDED_PROTO'])[0];
|
$tmp = explode(',', $_SERVER['HTTP_X_FORWARDED_PROTO'])[0];
|
||||||
if ($tmp=='http'||$tmp=='https') $_SERVER['REQUEST_SCHEME'] = $tmp;
|
if ($tmp == 'http' || $tmp == 'https') $_SERVER['REQUEST_SCHEME'] = $tmp;
|
||||||
}
|
}
|
||||||
if ($_SERVER['HTTP_FLY_FORWARDED_PROTO']!='') $_SERVER['REQUEST_SCHEME'] = $_SERVER['HTTP_FLY_FORWARDED_PROTO'];
|
if ($_SERVER['HTTP_FLY_FORWARDED_PROTO'] != '') $_SERVER['REQUEST_SCHEME'] = $_SERVER['HTTP_FLY_FORWARDED_PROTO'];
|
||||||
}
|
}
|
||||||
$_SERVER['host'] = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'];
|
$_SERVER['host'] = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'];
|
||||||
$_SERVER['referhost'] = explode('/', $_SERVER['HTTP_REFERER'])[2];
|
$_SERVER['referhost'] = explode('/', $_SERVER['HTTP_REFERER'])[2];
|
||||||
$_SERVER['base_path'] = "/";
|
$_SERVER['base_path'] = "/";
|
||||||
if (isset($_SERVER['UNENCODED_URL'])) $_SERVER['REQUEST_URI'] = $_SERVER['UNENCODED_URL'];
|
if (isset($_SERVER['UNENCODED_URL'])) $_SERVER['REQUEST_URI'] = $_SERVER['UNENCODED_URL'];
|
||||||
$p = strpos($_SERVER['REQUEST_URI'],'?');
|
$p = strpos($_SERVER['REQUEST_URI'], '?');
|
||||||
if ($p>0) $path = substr($_SERVER['REQUEST_URI'], 0, $p);
|
if ($p > 0) $path = substr($_SERVER['REQUEST_URI'], 0, $p);
|
||||||
else $path = $_SERVER['REQUEST_URI'];
|
else $path = $_SERVER['REQUEST_URI'];
|
||||||
$path = path_format( substr($path, strlen($_SERVER['base_path'])) );
|
$path = path_format(substr($path, strlen($_SERVER['base_path'])));
|
||||||
$_SERVER['DOCUMENT_ROOT'] = '/var/task/user';
|
|
||||||
return $path;
|
return $path;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getGET()
|
function getGET() {
|
||||||
{
|
|
||||||
if (!$_POST) {
|
if (!$_POST) {
|
||||||
if (!!$HTTP_RAW_POST_DATA) {
|
if (!!$HTTP_RAW_POST_DATA) {
|
||||||
$tmpdata = $HTTP_RAW_POST_DATA;
|
$tmpdata = $HTTP_RAW_POST_DATA;
|
||||||
|
@ -36,20 +33,20 @@ function getGET()
|
||||||
if (!!$tmpdata) {
|
if (!!$tmpdata) {
|
||||||
$postbody = explode("&", $tmpdata);
|
$postbody = explode("&", $tmpdata);
|
||||||
foreach ($postbody as $postvalues) {
|
foreach ($postbody as $postvalues) {
|
||||||
$pos = strpos($postvalues,"=");
|
$pos = strpos($postvalues, "=");
|
||||||
$_POST[urldecode(substr($postvalues,0,$pos))]=urldecode(substr($postvalues,$pos+1));
|
$_POST[urldecode(substr($postvalues, 0, $pos))] = urldecode(substr($postvalues, $pos + 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isset($_SERVER['UNENCODED_URL'])) $_SERVER['REQUEST_URI'] = $_SERVER['UNENCODED_URL'];
|
if (isset($_SERVER['UNENCODED_URL'])) $_SERVER['REQUEST_URI'] = $_SERVER['UNENCODED_URL'];
|
||||||
$p = strpos($_SERVER['REQUEST_URI'],'?');
|
$p = strpos($_SERVER['REQUEST_URI'], '?');
|
||||||
if ($p>0) {
|
if ($p > 0) {
|
||||||
$getstr = substr($_SERVER['REQUEST_URI'], $p+1);
|
$getstr = substr($_SERVER['REQUEST_URI'], $p + 1);
|
||||||
$getstrarr = explode("&",$getstr);
|
$getstrarr = explode("&", $getstr);
|
||||||
foreach ($getstrarr as $getvalues) {
|
foreach ($getstrarr as $getvalues) {
|
||||||
if ($getvalues != '') {
|
if ($getvalues != '') {
|
||||||
$pos = strpos($getvalues, "=");
|
$pos = strpos($getvalues, "=");
|
||||||
//echo $pos;
|
//echo $pos;
|
||||||
if ($pos > 0) {
|
if ($pos > 0) {
|
||||||
$getarry[urldecode(substr($getvalues, 0, $pos))] = urldecode(substr($getvalues, $pos + 1));
|
$getarry[urldecode(substr($getvalues, 0, $pos))] = urldecode(substr($getvalues, $pos + 1));
|
||||||
} else {
|
} else {
|
||||||
|
@ -65,16 +62,15 @@ function getGET()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getConfig($str, $disktag = '')
|
function getConfig($str, $disktag = '') {
|
||||||
{
|
|
||||||
$projectPath = splitlast(__DIR__, '/')[0];
|
$projectPath = splitlast(__DIR__, '/')[0];
|
||||||
$configPath = $projectPath . '/.data/config.php';
|
$configPath = $projectPath . '/.data/config.php';
|
||||||
$s = file_get_contents($configPath);
|
$s = file_get_contents($configPath);
|
||||||
$configs = '{' . splitlast(splitfirst($s, '{')[1], '}')[0] . '}';
|
$configs = '{' . splitlast(splitfirst($s, '{')[1], '}')[0] . '}';
|
||||||
if ($configs!='') {
|
if ($configs != '') {
|
||||||
$envs = json_decode($configs, true);
|
$envs = json_decode($configs, true);
|
||||||
if (isInnerEnv($str)) {
|
if (isInnerEnv($str)) {
|
||||||
if ($disktag=='') $disktag = $_SERVER['disktag'];
|
if ($disktag == '') $disktag = $_SERVER['disktag'];
|
||||||
if (isset($envs[$disktag][$str])) {
|
if (isset($envs[$disktag][$str])) {
|
||||||
if (isBase64Env($str)) return base64y_decode($envs[$disktag][$str]);
|
if (isBase64Env($str)) return base64y_decode($envs[$disktag][$str]);
|
||||||
else return $envs[$disktag][$str];
|
else return $envs[$disktag][$str];
|
||||||
|
@ -89,15 +85,14 @@ function getConfig($str, $disktag = '')
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
function setConfig($arr, $disktag = '')
|
function setConfig($arr, $disktag = '') {
|
||||||
{
|
if ($disktag == '') $disktag = $_SERVER['disktag'];
|
||||||
if ($disktag=='') $disktag = $_SERVER['disktag'];
|
|
||||||
$projectPath = splitlast(__DIR__, '/')[0];
|
$projectPath = splitlast(__DIR__, '/')[0];
|
||||||
$configPath = $projectPath . '/.data/config.php';
|
$configPath = $projectPath . '/.data/config.php';
|
||||||
$s = file_get_contents($configPath);
|
$s = file_get_contents($configPath);
|
||||||
$configs = '{' . splitlast(splitfirst($s, '{')[1], '}')[0] . '}';
|
$configs = '{' . splitlast(splitfirst($s, '{')[1], '}')[0] . '}';
|
||||||
if ($configs!='') $envs = json_decode($configs, true);
|
if ($configs != '') $envs = json_decode($configs, true);
|
||||||
$disktags = explode("|",getConfig('disktag'));
|
$disktags = explode("|", getConfig('disktag'));
|
||||||
$indisk = 0;
|
$indisk = 0;
|
||||||
$operatedisk = 0;
|
$operatedisk = 0;
|
||||||
foreach ($arr as $k => $v) {
|
foreach ($arr as $k => $v) {
|
||||||
|
@ -108,20 +103,20 @@ function setConfig($arr, $disktag = '')
|
||||||
if (isBase64Env($k)) $envs[$disktag][$k] = base64y_encode($v);
|
if (isBase64Env($k)) $envs[$disktag][$k] = base64y_encode($v);
|
||||||
else $envs[$disktag][$k] = $v;
|
else $envs[$disktag][$k] = $v;
|
||||||
$indisk = 1;
|
$indisk = 1;
|
||||||
} elseif ($k=='disktag_add') {
|
} elseif ($k == 'disktag_add') {
|
||||||
array_push($disktags, $v);
|
array_push($disktags, $v);
|
||||||
$operatedisk = 1;
|
$operatedisk = 1;
|
||||||
} elseif ($k=='disktag_del') {
|
} elseif ($k == 'disktag_del') {
|
||||||
$disktags = array_diff($disktags, [ $v ]);
|
$disktags = array_diff($disktags, [$v]);
|
||||||
$envs[$v] = '';
|
$envs[$v] = '';
|
||||||
$operatedisk = 1;
|
$operatedisk = 1;
|
||||||
} elseif ($k=='disktag_copy') {
|
} elseif ($k == 'disktag_copy') {
|
||||||
$newtag = $v . '_' . date("Ymd_His");
|
$newtag = $v . '_' . date("Ymd_His");
|
||||||
$envs[$newtag] = $envs[$v];
|
$envs[$newtag] = $envs[$v];
|
||||||
array_push($disktags, $newtag);
|
array_push($disktags, $newtag);
|
||||||
$operatedisk = 1;
|
$operatedisk = 1;
|
||||||
} elseif ($k=='disktag_rename' || $k=='disktag_newname') {
|
} elseif ($k == 'disktag_rename' || $k == 'disktag_newname') {
|
||||||
if ($arr['disktag_rename']!=$arr['disktag_newname']) $operatedisk = 1;
|
if ($arr['disktag_rename'] != $arr['disktag_newname']) $operatedisk = 1;
|
||||||
} else {
|
} else {
|
||||||
$envs[$k] = $v;
|
$envs[$k] = $v;
|
||||||
}
|
}
|
||||||
|
@ -133,10 +128,10 @@ function setConfig($arr, $disktag = '')
|
||||||
$envs[$disktag] = $diskconfig;
|
$envs[$disktag] = $diskconfig;
|
||||||
}
|
}
|
||||||
if ($operatedisk) {
|
if ($operatedisk) {
|
||||||
if (isset($arr['disktag_newname']) && $arr['disktag_newname']!='') {
|
if (isset($arr['disktag_newname']) && $arr['disktag_newname'] != '') {
|
||||||
$tags = [];
|
$tags = [];
|
||||||
foreach ($disktags as $tag) {
|
foreach ($disktags as $tag) {
|
||||||
if ($tag==$arr['disktag_rename']) array_push($tags, $arr['disktag_newname']);
|
if ($tag == $arr['disktag_rename']) array_push($tags, $arr['disktag_newname']);
|
||||||
else array_push($tags, $tag);
|
else array_push($tags, $tag);
|
||||||
}
|
}
|
||||||
$envs['disktag'] = implode('|', $tags);
|
$envs['disktag'] = implode('|', $tags);
|
||||||
|
@ -144,8 +139,9 @@ function setConfig($arr, $disktag = '')
|
||||||
$envs[$arr['disktag_rename']] = '';
|
$envs[$arr['disktag_rename']] = '';
|
||||||
} else {
|
} else {
|
||||||
$disktags = array_unique($disktags);
|
$disktags = array_unique($disktags);
|
||||||
foreach ($disktags as $disktag) if ($disktag!='') $disktag_s .= $disktag . '|';
|
$disktag_s = "";
|
||||||
if ($disktag_s!='') $envs['disktag'] = substr($disktag_s, 0, -1);
|
foreach ($disktags as $disktag) if ($disktag != '') $disktag_s .= $disktag . '|';
|
||||||
|
if ($disktag_s != '') $envs['disktag'] = substr($disktag_s, 0, -1);
|
||||||
else $envs['disktag'] = '';
|
else $envs['disktag'] = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -157,11 +153,10 @@ function setConfig($arr, $disktag = '')
|
||||||
return setVercelConfig($envs, getConfig('HerokuappId'), getConfig('APIKey'));
|
return setVercelConfig($envs, getConfig('HerokuappId'), getConfig('APIKey'));
|
||||||
}
|
}
|
||||||
|
|
||||||
function install()
|
function install() {
|
||||||
{
|
|
||||||
global $constStr;
|
global $constStr;
|
||||||
if ($_GET['install1']) {
|
if ($_GET['install1']) {
|
||||||
if ($_POST['admin']!='') {
|
if ($_POST['admin'] != '') {
|
||||||
$tmp['admin'] = $_POST['admin'];
|
$tmp['admin'] = $_POST['admin'];
|
||||||
//$tmp['language'] = $_POST['language'];
|
//$tmp['language'] = $_POST['language'];
|
||||||
$tmp['timezone'] = $_COOKIE['timezone'];
|
$tmp['timezone'] = $_COOKIE['timezone'];
|
||||||
|
@ -176,8 +171,14 @@ function install()
|
||||||
$header["Content-Type"] = "application/json";
|
$header["Content-Type"] = "application/json";
|
||||||
$aliases = json_decode(curl("GET", "https://api.vercel.com/v3/now/aliases", "", $header)['body'], true);
|
$aliases = json_decode(curl("GET", "https://api.vercel.com/v3/now/aliases", "", $header)['body'], true);
|
||||||
$host = splitfirst($_SERVER["host"], "//")[1];
|
$host = splitfirst($_SERVER["host"], "//")[1];
|
||||||
|
$aliases1 = [];
|
||||||
foreach ($aliases["aliases"] as $key => $aliase) {
|
foreach ($aliases["aliases"] as $key => $aliase) {
|
||||||
if ($host==$aliase["alias"]) $projectId = $aliase["projectId"];
|
$aliases1[] = $aliase["alias"];
|
||||||
|
if ($host == $aliase["alias"]) $projectId = $aliase["projectId"];
|
||||||
|
}
|
||||||
|
if (!$projectId) {
|
||||||
|
$html = 'Please visit from one of: ' . json_encode($aliases1, JSON_PRETTY_PRINT);
|
||||||
|
return message($html, 'Error', 400);
|
||||||
}
|
}
|
||||||
$tmp['HerokuappId'] = $projectId;
|
$tmp['HerokuappId'] = $projectId;
|
||||||
|
|
||||||
|
@ -204,17 +205,18 @@ function install()
|
||||||
}
|
}
|
||||||
}, 1000);
|
}, 1000);
|
||||||
</script>';
|
</script>';
|
||||||
|
$title = "Success";
|
||||||
return message($html, $title, 201, 1);
|
return message($html, $title, 201, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($_GET['install0']) {
|
if ($_GET['install0']) {
|
||||||
$html .= '
|
$html = '
|
||||||
<form action="?install1" method="post" onsubmit="return notnull(this);">
|
<form action="?install1" method="post" onsubmit="return notnull(this);">
|
||||||
language:<br>';
|
language:<br>';
|
||||||
foreach ($constStr['languages'] as $key1 => $value1) {
|
foreach ($constStr['languages'] as $key1 => $value1) {
|
||||||
$html .= '
|
$html .= '
|
||||||
<label><input type="radio" name="language" value="'.$key1.'" '.($key1==$constStr['language']?'checked':'').' onclick="changelanguage(\''.$key1.'\')">'.$value1.'</label><br>';
|
<label><input type="radio" name="language" value="' . $key1 . '" ' . ($key1 == $constStr['language'] ? 'checked' : '') . ' onclick="changelanguage(\'' . $key1 . '\')">' . $value1 . '</label><br>';
|
||||||
}
|
}
|
||||||
$html .= '<br>
|
$html .= '<br>
|
||||||
<a href="https://vercel.com/account/tokens" target="_blank">' . getconstStr('Create') . ' token</a><br>
|
<a href="https://vercel.com/account/tokens" target="_blank">' . getconstStr('Create') . ' token</a><br>
|
||||||
|
@ -222,7 +224,7 @@ language:<br>';
|
||||||
$html .= '<br>
|
$html .= '<br>
|
||||||
<label>Set admin password:<input name="admin" type="password" placeholder="' . getconstStr('EnvironmentsDescription')['admin'] . '" size="' . strlen(getconstStr('EnvironmentsDescription')['admin']) . '"></label><br>';
|
<label>Set admin password:<input name="admin" type="password" placeholder="' . getconstStr('EnvironmentsDescription')['admin'] . '" size="' . strlen(getconstStr('EnvironmentsDescription')['admin']) . '"></label><br>';
|
||||||
$html .= '
|
$html .= '
|
||||||
<input type="submit" value="'.getconstStr('Submit').'">
|
<input type="submit" value="' . getconstStr('Submit') . '">
|
||||||
</form>
|
</form>
|
||||||
<div id="showerror"></div>
|
<div id="showerror"></div>
|
||||||
<script>
|
<script>
|
||||||
|
@ -258,29 +260,28 @@ language:<br>';
|
||||||
return message($html, $title, 201);
|
return message($html, $title, 201);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (substr($_SERVER["host"], -10)=="vercel.app") {
|
//if (substr($_SERVER["host"], -10)=="vercel.app") {
|
||||||
$html .= '<a href="?install0">' . getconstStr('ClickInstall') . '</a>, ' . getconstStr('LogintoBind');
|
$html = '<a href="?install0">' . getconstStr('ClickInstall') . '</a>, ' . getconstStr('LogintoBind');
|
||||||
$html .= "<br>Remember: you MUST wait 30-60s after each operate / do some change, that make sure Vercel has done the building<br>" ;
|
$html .= "<br>Remember: you MUST wait 30-60s after each operate / do some change, that make sure Vercel has done the building<br>";
|
||||||
} else {
|
//} else {
|
||||||
$html.= "Please visit form *.vercel.app";
|
// $html.= "Please visit form *.vercel.app";
|
||||||
}
|
//}
|
||||||
$title = 'Install';
|
$title = 'Install';
|
||||||
return message($html, $title, 201);
|
return message($html, $title, 201);
|
||||||
}
|
}
|
||||||
|
|
||||||
function copyFolder($from, $to)
|
function copyFolder($from, $to) {
|
||||||
{
|
if (substr($from, -1) == '/') $from = substr($from, 0, -1);
|
||||||
if (substr($from, -1)=='/') $from = substr($from, 0, -1);
|
if (substr($to, -1) == '/') $to = substr($to, 0, -1);
|
||||||
if (substr($to, -1)=='/') $to = substr($to, 0, -1);
|
|
||||||
if (!file_exists($to)) mkdir($to, 0777, 1);
|
if (!file_exists($to)) mkdir($to, 0777, 1);
|
||||||
$handler=opendir($from);
|
$handler = opendir($from);
|
||||||
while($filename=readdir($handler)) {
|
while ($filename = readdir($handler)) {
|
||||||
if($filename != '.' && $filename != '..'){
|
if ($filename != '.' && $filename != '..') {
|
||||||
$fromfile = $from.'/'.$filename;
|
$fromfile = $from . '/' . $filename;
|
||||||
$tofile = $to.'/'.$filename;
|
$tofile = $to . '/' . $filename;
|
||||||
if(is_dir($fromfile)){// 如果读取的某个对象是文件夹,则递归
|
if (is_dir($fromfile)) { // 如果读取的某个对象是文件夹,则递归
|
||||||
copyFolder($fromfile, $tofile);
|
copyFolder($fromfile, $tofile);
|
||||||
}else{
|
} else {
|
||||||
copy($fromfile, $tofile);
|
copy($fromfile, $tofile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -289,8 +290,7 @@ function copyFolder($from, $to)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setVercelConfig($envs, $appId, $token)
|
function setVercelConfig($envs, $appId, $token) {
|
||||||
{
|
|
||||||
sortConfig($envs);
|
sortConfig($envs);
|
||||||
$outPath = '/tmp/code/';
|
$outPath = '/tmp/code/';
|
||||||
$outPath_Api = $outPath . 'api/';
|
$outPath_Api = $outPath . 'api/';
|
||||||
|
@ -305,8 +305,7 @@ function setVercelConfig($envs, $appId, $token)
|
||||||
return VercelUpdate($appId, $token, $outPath);
|
return VercelUpdate($appId, $token, $outPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
function VercelUpdate($appId, $token, $sourcePath = "")
|
function VercelUpdate($appId, $token, $sourcePath = "") {
|
||||||
{
|
|
||||||
if (checkBuilding($appId, $token)) return '{"error":{"message":"Another building is in progress."}}';
|
if (checkBuilding($appId, $token)) return '{"error":{"message":"Another building is in progress."}}';
|
||||||
$url = "https://api.vercel.com/v13/deployments";
|
$url = "https://api.vercel.com/v13/deployments";
|
||||||
$header["Authorization"] = "Bearer " . $token;
|
$header["Authorization"] = "Bearer " . $token;
|
||||||
|
@ -316,8 +315,8 @@ function VercelUpdate($appId, $token, $sourcePath = "")
|
||||||
$data["target"] = "production";
|
$data["target"] = "production";
|
||||||
$data["routes"][0]["src"] = "/(.*)";
|
$data["routes"][0]["src"] = "/(.*)";
|
||||||
$data["routes"][0]["dest"] = "/api/index.php";
|
$data["routes"][0]["dest"] = "/api/index.php";
|
||||||
$data["functions"]["api/index.php"]["runtime"] = "vercel-php@0.4.0";
|
$data["functions"]["api/index.php"]["runtime"] = "vercel-php@0.6.0";
|
||||||
if ($sourcePath=="") $sourcePath = splitlast(splitlast(__DIR__, "/")[0], "/")[0];
|
if ($sourcePath == "") $sourcePath = splitlast(splitlast(__DIR__, "/")[0], "/")[0];
|
||||||
//echo $sourcePath . "<br>";
|
//echo $sourcePath . "<br>";
|
||||||
getEachFiles($file, $sourcePath);
|
getEachFiles($file, $sourcePath);
|
||||||
$data["files"] = $file;
|
$data["files"] = $file;
|
||||||
|
@ -330,8 +329,7 @@ function VercelUpdate($appId, $token, $sourcePath = "")
|
||||||
return json_encode($result);
|
return json_encode($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkBuilding($projectId, $token)
|
function checkBuilding($projectId, $token) {
|
||||||
{
|
|
||||||
$r = 0;
|
$r = 0;
|
||||||
$url = "https://api.vercel.com/v6/deployments/?projectId=" . $projectId;
|
$url = "https://api.vercel.com/v6/deployments/?projectId=" . $projectId;
|
||||||
$header["Authorization"] = "Bearer " . $token;
|
$header["Authorization"] = "Bearer " . $token;
|
||||||
|
@ -339,27 +337,26 @@ function checkBuilding($projectId, $token)
|
||||||
$response = curl("GET", $url, '', $header);
|
$response = curl("GET", $url, '', $header);
|
||||||
//echo json_encode($response, JSON_PRETTY_PRINT) . " ,res<br>";
|
//echo json_encode($response, JSON_PRETTY_PRINT) . " ,res<br>";
|
||||||
$result = json_decode($response["body"], true);
|
$result = json_decode($response["body"], true);
|
||||||
foreach ( $result['deployments'] as $deployment ) {
|
foreach ($result['deployments'] as $deployment) {
|
||||||
if ($deployment['state']!=="READY") $r++;
|
if ($deployment['state'] !== "READY" && $deployment['state'] !== "ERROR") $r++;
|
||||||
}
|
}
|
||||||
return $r;
|
return $r;
|
||||||
//if ($r===0) return true;
|
//if ($r===0) return true;
|
||||||
//else return false;
|
//else return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getEachFiles(&$file, $base, $path = "")
|
function getEachFiles(&$file, $base, $path = "") {
|
||||||
{
|
|
||||||
//if (substr($base, -1)=="/") $base = substr($base, 0, -1);
|
//if (substr($base, -1)=="/") $base = substr($base, 0, -1);
|
||||||
//if (substr($path, -1)=="/") $path = substr($path, 0, -1);
|
//if (substr($path, -1)=="/") $path = substr($path, 0, -1);
|
||||||
$handler=opendir(path_format($base . "/" . $path));
|
$handler = opendir(path_format($base . "/" . $path));
|
||||||
while($filename=readdir($handler)) {
|
while ($filename = readdir($handler)) {
|
||||||
if($filename != '.' && $filename != '..' && $filename != '.git'){
|
if ($filename != '.' && $filename != '..' && $filename != '.git') {
|
||||||
$fromfile = path_format($base . "/" . $path . "/" . $filename);
|
$fromfile = path_format($base . "/" . $path . "/" . $filename);
|
||||||
//echo $fromfile . "<br>";
|
//echo $fromfile . "<br>";
|
||||||
if(is_dir($fromfile)){// 如果读取的某个对象是文件夹,则递归
|
if (is_dir($fromfile)) { // 如果读取的某个对象是文件夹,则递归
|
||||||
$response = getEachFiles($file, $base, path_format($path . "/" . $filename));
|
$response = getEachFiles($file, $base, path_format($path . "/" . $filename));
|
||||||
if (api_error(setConfigResponse($response))) return $response;
|
if (api_error(setConfigResponse($response))) return $response;
|
||||||
}else{
|
} else {
|
||||||
$tmp['file'] = path_format($path . "/" . $filename);
|
$tmp['file'] = path_format($path . "/" . $filename);
|
||||||
$tmp['data'] = file_get_contents($fromfile);
|
$tmp['data'] = file_get_contents($fromfile);
|
||||||
$file[] = $tmp;
|
$file[] = $tmp;
|
||||||
|
@ -368,47 +365,43 @@ function getEachFiles(&$file, $base, $path = "")
|
||||||
}
|
}
|
||||||
closedir($handler);
|
closedir($handler);
|
||||||
|
|
||||||
return json_encode( [ 'response' => 'success' ] );
|
return json_encode(['response' => 'success']);
|
||||||
}
|
}
|
||||||
|
|
||||||
function api_error($response)
|
function api_error($response) {
|
||||||
{
|
|
||||||
return isset($response['error']);
|
return isset($response['error']);
|
||||||
}
|
}
|
||||||
|
|
||||||
function api_error_msg($response)
|
function api_error_msg($response) {
|
||||||
{
|
|
||||||
return $response['error']['code'] . '<br>
|
return $response['error']['code'] . '<br>
|
||||||
' . $response['error']['message'] . '<br>
|
' . $response['error']['message'] . '<br>
|
||||||
<button onclick="location.href = location.href;">'.getconstStr('Refresh').'</button>';
|
<button onclick="location.href = location.href;">' . getconstStr('Refresh') . '</button>';
|
||||||
}
|
}
|
||||||
|
|
||||||
function setConfigResponse($response)
|
function setConfigResponse($response) {
|
||||||
{
|
|
||||||
return json_decode($response, true);
|
return json_decode($response, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
function OnekeyUpate($GitSource = 'Github', $auth = 'qkqpttgf', $project = 'OneManager-php', $branch = 'master')
|
function OnekeyUpate($GitSource = 'Github', $auth = 'qkqpttgf', $project = 'OneManager-php', $branch = 'master') {
|
||||||
{
|
|
||||||
$tmppath = '/tmp';
|
$tmppath = '/tmp';
|
||||||
|
|
||||||
if ($GitSource=='Github') {
|
if ($GitSource == 'Github') {
|
||||||
// 从github下载对应tar.gz,并解压
|
// 从github下载对应tar.gz,并解压
|
||||||
$url = 'https://github.com/' . $auth . '/' . $project . '/tarball/' . urlencode($branch) . '/';
|
$url = 'https://github.com/' . $auth . '/' . $project . '/tarball/' . urlencode($branch) . '/';
|
||||||
} elseif ($GitSource=='HITGitlab') {
|
} elseif ($GitSource == 'HITGitlab') {
|
||||||
$url = 'https://git.hit.edu.cn/' . $auth . '/' . $project . '/-/archive/' . urlencode($branch) . '/' . $project . '-' . urlencode($branch) . '.tar.gz';
|
$url = 'https://git.hit.edu.cn/' . $auth . '/' . $project . '/-/archive/' . urlencode($branch) . '/' . $project . '-' . urlencode($branch) . '.tar.gz';
|
||||||
} else return json_encode(['error'=>['code'=>'Git Source input Error!']]);
|
} else return json_encode(['error' => ['code' => 'Git Source input Error!']]);
|
||||||
|
|
||||||
$tarfile = $tmppath . '/github.tar.gz';
|
$tarfile = $tmppath . '/github.tar.gz';
|
||||||
file_put_contents($tarfile, file_get_contents($url));
|
file_put_contents($tarfile, file_get_contents($url));
|
||||||
$phar = new PharData($tarfile);
|
$phar = new PharData($tarfile);
|
||||||
$html = $phar->extractTo($tmppath, null, true);//路径 要解压的文件 是否覆盖
|
$html = $phar->extractTo($tmppath, null, true); //路径 要解压的文件 是否覆盖
|
||||||
unlink($tarfile);
|
unlink($tarfile);
|
||||||
|
|
||||||
// 获取解压出的目录名
|
// 获取解压出的目录名
|
||||||
$outPath = findIndexPath($tmppath);
|
$outPath = findIndexPath($tmppath);
|
||||||
|
|
||||||
if ($outPath=='') return '{"error":{"message":"no outpath"}}';
|
if ($outPath == '') return '{"error":{"message":"no outpath"}}';
|
||||||
$name = $project . 'CODE';
|
$name = $project . 'CODE';
|
||||||
mkdir($tmppath . "/" . $name, 0777, 1);
|
mkdir($tmppath . "/" . $name, 0777, 1);
|
||||||
rename($outPath, $tmppath . "/" . $name . '/api');
|
rename($outPath, $tmppath . "/" . $name . '/api');
|
||||||
|
@ -425,31 +418,36 @@ function OnekeyUpate($GitSource = 'Github', $auth = 'qkqpttgf', $project = 'OneM
|
||||||
}
|
}
|
||||||
|
|
||||||
function WaitFunction($deployid = '') {
|
function WaitFunction($deployid = '') {
|
||||||
if ($buildId=='1') {
|
if ($deployid == '1') {
|
||||||
$tmp['stat'] = 400;
|
$tmp['stat'] = 400;
|
||||||
$tmp['body'] = 'id must provided.';
|
$tmp['body'] = 'id must provided.';
|
||||||
return $tmp;
|
return $tmp;
|
||||||
}
|
}
|
||||||
$header["Authorization"] = "Bearer " . getConfig('APIKey');
|
$token = getConfig('APIKey');
|
||||||
$header["Content-Type"] = "application/json";
|
if ($token != '') {
|
||||||
$url = "https://api.vercel.com/v11/deployments/" . $deployid;
|
$header["Authorization"] = "Bearer " . $token;
|
||||||
$response = curl("GET", $url, "", $header);
|
$header["Content-Type"] = "application/json";
|
||||||
if ($response['stat']==200) {
|
$url = "https://api.vercel.com/v13/deployments/" . $deployid;
|
||||||
$result = json_decode($response['body'], true);
|
$response = curl("GET", $url, "", $header);
|
||||||
if ($result['readyState']=="READY") return true;
|
if ($response['stat'] == 200) {
|
||||||
if ($result['readyState']=="ERROR") return $response;
|
$result = json_decode($response['body'], true);
|
||||||
return false;
|
if ($result['readyState'] == "READY") return true;
|
||||||
|
if ($result['readyState'] == "ERROR") return $response;
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
$response['body'] .= $url;
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$response['body'] .= $url;
|
return false;
|
||||||
return $response;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeAuthKey() {
|
function changeAuthKey() {
|
||||||
if ($_POST['APIKey']!='') {
|
if ($_POST['APIKey'] != '') {
|
||||||
$APIKey = $_POST['APIKey'];
|
$APIKey = $_POST['APIKey'];
|
||||||
$tmp['APIKey'] = $APIKey;
|
$tmp['APIKey'] = $APIKey;
|
||||||
$response = setConfigResponse( setVercelConfig($tmp, getConfig('HerokuappId'), $APIKey) );
|
$response = setConfigResponse(setVercelConfig($tmp, getConfig('HerokuappId'), $APIKey));
|
||||||
if (api_error($response)) {
|
if (api_error($response)) {
|
||||||
$html = api_error_msg($response);
|
$html = api_error_msg($response);
|
||||||
$title = 'Error';
|
$title = 'Error';
|
||||||
|
@ -468,6 +466,7 @@ function changeAuthKey() {
|
||||||
}
|
}
|
||||||
}, 1000);
|
}, 1000);
|
||||||
</script>';
|
</script>';
|
||||||
|
$title = "Success";
|
||||||
return message($html, $title, 201, 1);
|
return message($html, $title, 201, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -489,3 +488,9 @@ function changeAuthKey() {
|
||||||
</script>';
|
</script>';
|
||||||
return message($html, 'Change platform Auth token or key', 200);
|
return message($html, 'Change platform Auth token or key', 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function smallfileupload($drive, $path) {
|
||||||
|
if ($_FILES['file1']['error']) return output($_FILES['file1']['error'], 400);
|
||||||
|
if ($_FILES['file1']['size'] > 4 * 1024 * 1024) return output('File too large', 400);
|
||||||
|
return $drive->smallfileupload($path, $_FILES['file1']);
|
||||||
|
}
|
||||||
|
|
|
@ -21,7 +21,6 @@ function getpath()
|
||||||
if ($p>0) $path = substr($_SERVER['REQUEST_URI'], 0, $p);
|
if ($p>0) $path = substr($_SERVER['REQUEST_URI'], 0, $p);
|
||||||
else $path = $_SERVER['REQUEST_URI'];
|
else $path = $_SERVER['REQUEST_URI'];
|
||||||
$path = path_format( substr($path, strlen($_SERVER['base_path'])) );
|
$path = path_format( substr($path, strlen($_SERVER['base_path'])) );
|
||||||
$_SERVER['DOCUMENT_ROOT'] = '/var/task/user';
|
|
||||||
return $path;
|
return $path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
19
readme.md
19
readme.md
|
@ -41,19 +41,22 @@
|
||||||
|
|
||||||
https://onemanager.qkqpttgf.repl.co/
|
https://onemanager.qkqpttgf.repl.co/
|
||||||
|
|
||||||
### Notice
|
|
||||||
|
|
||||||
> `Import from Github` useing the `.replit` file in code files will cause an empty web page, may someone help me?
|
|
||||||
|
|
||||||
### How to Install
|
### How to Install
|
||||||
|
A:
|
||||||
|
> 1. Click the "+" or "Create Repl", click the `Import from Github`;
|
||||||
|
> 2. Input `https://github.com/qkqpttgf/OneManager-php` in "GitHub URL", then it will auto show "Language" - "PHP Web Server", Click the "Import from Github";
|
||||||
|
> 3. After done, click the green button "Run", it will show the web page on the right, you MUST open it in a new tab or window.
|
||||||
|
|
||||||
|
B:
|
||||||
> 1. Click the "+" or "Create Repl", find template "PHP Web Server" (via input "php"), input a name for your project in "Title" or left it default, Click the "+ Create Repl".
|
> 1. Click the "+" or "Create Repl", find template "PHP Web Server" (via input "php"), input a name for your project in "Title" or left it default, Click the "+ Create Repl".
|
||||||
> 2. After done, input `git clone https://github.com/qkqpttgf/OneManager-php && mv -b OneManager-php/* ./ && mv -b OneManager-php/.[^.]* ./ && rm -rf *~ && rm -rf OneManager-php` to Console or Shell on the right, press "Enter" to run it.
|
> 2. After done, input `git clone https://github.com/qkqpttgf/OneManager-php && mv -b OneManager-php/* ./ && mv -b OneManager-php/.[^.]* ./ && rm -rf *~ && rm -rf OneManager-php` to Console or Shell on the right, press "Enter" to run it.
|
||||||
> 3. Click the green button "Run", it will show the web page on the right, you can open it in a new tab or window.
|
> 3. Click the green button "Run", it will show the web page on the right, you MUST open it in a new tab or window.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Deploy to Heroku
|
# ~~Deploy to Heroku~~
|
||||||
|
|
||||||
|
## Dyno will no longer free
|
||||||
|
|
||||||
### Official
|
### Official
|
||||||
|
|
||||||
|
@ -87,7 +90,9 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Deploy to Tencent Serverless Cloud Function (SCF)
|
# ~~Deploy to Tencent Serverless Cloud Function (SCF)~~
|
||||||
|
|
||||||
|
## SCF no longer free
|
||||||
|
|
||||||
### Official
|
### Official
|
||||||
|
|
||||||
|
|
17
readme_cn.md
17
readme_cn.md
|
@ -43,19 +43,22 @@
|
||||||
|
|
||||||
https://onemanager.qkqpttgf.repl.co/
|
https://onemanager.qkqpttgf.repl.co/
|
||||||
|
|
||||||
### 注意
|
|
||||||
|
|
||||||
> 直接`Import from Github`通过`.replit`文件指定php时,网页会空白,有人帮忙解决吗?
|
|
||||||
|
|
||||||
### 安装
|
### 安装
|
||||||
|
A:
|
||||||
|
> 1. 点右上的 "+" 或左上的 "+ Create Repl",点击`Import from Github`;
|
||||||
|
> 2. 在"GitHub URL"中输入`https://github.com/qkqpttgf/OneManager-php`,会自动弹出显示"Language"与"PHP Web Server",点下面的"Import from Github"。
|
||||||
|
> 3. 结束后,点上方的绿色 "Run" 按钮,右边会显示一个网页,你要在新窗口打开它来安装,不然不能登录。
|
||||||
|
|
||||||
|
B:
|
||||||
> 1. 点右上的 "+" 或左上的 "+ Create Repl",template中输入php,点选"PHP Web Server",在"Title"里输入你想要的名称或者让它默认, 点下面的"+ Create Repl"。
|
> 1. 点右上的 "+" 或左上的 "+ Create Repl",template中输入php,点选"PHP Web Server",在"Title"里输入你想要的名称或者让它默认, 点下面的"+ Create Repl"。
|
||||||
> 2. 结束后,在右边的Console或Shell里输入 `git clone https://github.com/qkqpttgf/OneManager-php && mv -b OneManager-php/* ./ && mv -b OneManager-php/.[^.]* ./ && rm -rf *~ && rm -rf OneManager-php` 敲回车运行。
|
> 2. 结束后,在右边的Console或Shell里输入 `git clone https://github.com/qkqpttgf/OneManager-php && mv -b OneManager-php/* ./ && mv -b OneManager-php/.[^.]* ./ && rm -rf *~ && rm -rf OneManager-php` 敲回车运行。
|
||||||
> 3. 点上方的绿色 "Run" 按钮,右边会显示一个网页,你要在新窗口打开它来安装,不然不能登录。
|
> 3. 点上方的绿色 "Run" 按钮,右边会显示一个网页,你要在新窗口打开它来安装,不然不能登录。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 部署到 Heroku
|
# ~~部署到 Heroku~~
|
||||||
|
|
||||||
|
## Dyno套餐不再免费
|
||||||
|
|
||||||
### 官网
|
### 官网
|
||||||
|
|
||||||
|
@ -87,7 +90,9 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 部署到腾讯无服务器云函数 Serverless Cloud Function (SCF)
|
# ~~部署到腾讯无服务器云函数 Serverless Cloud Function (SCF)~~
|
||||||
|
|
||||||
|
## SCF要收套餐费用了
|
||||||
|
|
||||||
### 官网
|
### 官网
|
||||||
|
|
||||||
|
|
|
@ -386,7 +386,7 @@
|
||||||
<div style="margin:50px">
|
<div style="margin:50px">
|
||||||
<a onclick="operatediv_close('login')" class="operatediv_close"><!--constStr@Close--></a>
|
<a onclick="operatediv_close('login')" class="operatediv_close"><!--constStr@Close--></a>
|
||||||
<center>
|
<center>
|
||||||
<form action="<!--IsPreview?-->admin" method="post">
|
<form action="<!--IsPreview?-->login=admin" method="post">
|
||||||
<input id="login_input" name="password1" type="password" placeholder="<!--constStr@InputPassword-->">
|
<input id="login_input" name="password1" type="password" placeholder="<!--constStr@InputPassword-->">
|
||||||
<input type="submit" value="<!--constStr@Login-->">
|
<input type="submit" value="<!--constStr@Login-->">
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -107,7 +107,6 @@
|
||||||
<h1 class="title" id="title">
|
<h1 class="title" id="title">
|
||||||
<a href="<!--base_path-->"><!--Sitename--></a>
|
<a href="<!--base_path-->"><!--Sitename--></a>
|
||||||
</h1>
|
</h1>
|
||||||
<!--
|
|
||||||
<!--MultiDiskAreaStart-->
|
<!--MultiDiskAreaStart-->
|
||||||
<div class="list-wrapper" id="more-disk-div">
|
<div class="list-wrapper" id="more-disk-div">
|
||||||
<div class="list-container">
|
<div class="list-container">
|
||||||
|
@ -121,7 +120,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!--MultiDiskAreaEnd-->
|
<!--MultiDiskAreaEnd-->
|
||||||
-->
|
|
||||||
<!--HeadomfStart-->
|
<!--HeadomfStart-->
|
||||||
<div class="list-wrapper" id="head-om-div">
|
<div class="list-wrapper" id="head-om-div">
|
||||||
<div class="list-container">
|
<div class="list-container">
|
||||||
|
@ -485,12 +483,13 @@
|
||||||
<div style="color: rgba(247,247,249,0);"><!--FootStr--></div>
|
<div style="color: rgba(247,247,249,0);"><!--FootStr--></div>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
<!--MdRequireStart--><link rel="stylesheet" href="https://unpkg.com/github-markdown-css@3.0.1/github-markdown.css">
|
||||||
|
<script type="text/javascript" src="?jsFile=marked.js"></script><!--MdRequireEnd-->
|
||||||
<!--ListStart-->
|
<!--ListStart-->
|
||||||
<!--MdRequireStart--><link rel="stylesheet" href="//unpkg.zhimg.com/github-markdown-css@3.0.1/github-markdown.css">
|
<!--GuestUploadStart--><script type="text/javascript" src="?jsFile=spark-md5.min.js"></script><!--GuestUploadEnd-->
|
||||||
<script type="text/javascript" src="//unpkg.zhimg.com/marked@0.6.2/marked.min.js"></script><!--MdRequireEnd-->
|
<!--AliyundriveUploadJsStart--><script src="https://unpkg.com/bignumber.js@9.0.2/bignumber.js"></script>
|
||||||
<!--GuestUploadStart--><script type="text/javascript" src="//cdn.bootcss.com/spark-md5/3.0.0/spark-md5.min.js"></script><!--GuestUploadEnd-->
|
<script src="?jsFile=sha1.min.js"></script><!--AliyundriveUploadJsEnd-->
|
||||||
<!--AliyundriveUploadJsStart--><script src="https://cdn.jsdelivr.net/npm/js-sha1@0.6.0/src/sha1.min.js"></script><!--AliyundriveUploadJsEnd-->
|
<!--IsFileStart--><!--IspdfFileStart--><script src="https://unpkg.com/pdfjs-dist@2.4.456/build/pdf.min.js"></script><!--IspdfFileEnd--><!--IsFileEnd-->
|
||||||
<!--IsFileStart--><!--IspdfFileStart--><script src="//cdn.bootcss.com/pdf.js/2.3.200/pdf.min.js"></script><!--IspdfFileEnd--><!--IsFileEnd-->
|
|
||||||
<!--ListEnd-->
|
<!--ListEnd-->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function changelanguage(str)
|
function changelanguage(str)
|
||||||
|
@ -521,13 +520,53 @@
|
||||||
f.password1.value = sha1(timestamp + "" + f.password1.value);
|
f.password1.value = sha1(timestamp + "" + f.password1.value);
|
||||||
return true;
|
return true;
|
||||||
} catch {
|
} catch {
|
||||||
alert("sha1.js not loaded.");
|
//alert("sha1.js not loaded.");
|
||||||
|
if (confirm("sha1.js not loaded.\n\nLoad from program?")) loadjs("?jsFile=sha1.min.js");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function loadjs(url) {
|
||||||
|
var xhr = new XMLHttpRequest;
|
||||||
|
xhr.open("GET", url);
|
||||||
|
xhr.onload = function(e) {
|
||||||
|
if (xhr.status==200) {
|
||||||
|
var script = document.createElement("script");
|
||||||
|
script.type = "text/javascript";
|
||||||
|
script.text = xhr.responseText;
|
||||||
|
document.body.appendChild(script);
|
||||||
|
} else {
|
||||||
|
console.log(xhr.response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xhr.send(null);
|
||||||
|
}
|
||||||
<!--LoginEnd-->
|
<!--LoginEnd-->
|
||||||
|
<!--WriteTimezoneStart-->
|
||||||
|
var nowtime= new Date();
|
||||||
|
var timezone = 0-nowtime.getTimezoneOffset()/60;
|
||||||
|
var expd = new Date();
|
||||||
|
expd.setTime(expd.getTime()+(2*60*60*1000));
|
||||||
|
var expires = "expires="+expd.toGMTString();
|
||||||
|
document.cookie="timezone="+timezone+"; path=/; "+expires;
|
||||||
|
if (timezone!=<!--timezone-->) {
|
||||||
|
//alert('Your timezone is '+timezone+', reload local timezone.');
|
||||||
|
location.href=location.href;
|
||||||
|
}
|
||||||
|
<!--WriteTimezoneEnd-->
|
||||||
|
<!--HeadmdStart-->
|
||||||
|
var $head = document.getElementById('head');
|
||||||
|
if ($head) {
|
||||||
|
//document.getElementById('head-div').parentNode.insertBefore(document.getElementById('head-div'),document.getElementById('list-div'));
|
||||||
|
$head.innerHTML = marked(document.getElementById('head-md').innerText);
|
||||||
|
}
|
||||||
|
<!--HeadmdEnd-->
|
||||||
|
<!--ReadmemdStart-->
|
||||||
|
var $readme = document.getElementById('readme');
|
||||||
|
if ($readme) {
|
||||||
|
$readme.innerHTML = marked(document.getElementById('readme-md').innerText);
|
||||||
|
}
|
||||||
|
<!--ReadmemdEnd-->
|
||||||
<!--ListStart-->
|
<!--ListStart-->
|
||||||
|
|
||||||
<!--IsFileStart-->
|
<!--IsFileStart-->
|
||||||
var $url = document.getElementById('url');
|
var $url = document.getElementById('url');
|
||||||
if ($url) {
|
if ($url) {
|
||||||
|
@ -616,26 +655,64 @@
|
||||||
addVideos(["<!--FileEncodeUrl-->"]);
|
addVideos(["<!--FileEncodeUrl-->"]);
|
||||||
<!--IsvideoFileEnd-->
|
<!--IsvideoFileEnd-->
|
||||||
<!--IspdfFileStart-->
|
<!--IspdfFileStart-->
|
||||||
pdfjsLib.GlobalWorkerOptions.workerSrc = '//cdn.bootcss.com/pdf.js/2.3.200/pdf.worker.min.js';
|
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://unpkg.com/pdfjs-dist@2.4.456/build/pdf.worker.min.js';
|
||||||
var loadingTask = pdfjsLib.getDocument({
|
var loadingTask = pdfjsLib.getDocument({
|
||||||
url: "<!--FileDownUrl-->",
|
url: "<!--FileDownUrl-->",
|
||||||
cMapUrl: "//cdn.jsdelivr.net/npm/pdfjs-dist@2.2.228/cmaps/",
|
cMapUrl: "https://unpkg.com/pdfjs-dist@2.4.456/cmaps/",
|
||||||
cMapPacked: true,
|
cMapPacked: true,
|
||||||
|
disableStream: true,
|
||||||
|
disableAutoFetch: true,
|
||||||
rangeChunkSize: 65535
|
rangeChunkSize: 65535
|
||||||
});
|
});
|
||||||
|
/*loadingTask.onProgress = (e) => {
|
||||||
|
//console.log(e);
|
||||||
|
var p = document.getElementById('p');
|
||||||
|
if (p==null) {
|
||||||
|
p = document.createElement('div');
|
||||||
|
p.id = 'p';
|
||||||
|
p.setAttribute('onclick', "this.style.display = 'none';");
|
||||||
|
p.style = 'left: 10px; top: 30%; position: fixed;';
|
||||||
|
document.body.appendChild(p);
|
||||||
|
}
|
||||||
|
p.innerHTML = 'Loaded: ' + ((e.loaded/e.total)*100).toFixed(2) + '%<br>(' + size_format(e.loaded) + ' / ' + size_format(e.total) + ')';
|
||||||
|
p.style.display = '';
|
||||||
|
if (e.loaded==e.total) p.style.display = 'none';
|
||||||
|
|
||||||
|
}*/
|
||||||
loadingTask.promise.then(function(pdf) {
|
loadingTask.promise.then(function(pdf) {
|
||||||
var pagenum = pdf.numPages;
|
var pagenum = pdf.numPages;
|
||||||
var pdfContainer = document.getElementById('pdf-d');
|
var pdfContainer = document.getElementById('pdf-d');
|
||||||
pdfContainer.innerHTML = '';
|
pdfContainer.innerHTML = '';
|
||||||
for (var i=1;i<=pagenum;i++) {
|
var pagepos = 1;
|
||||||
var canvasNew = document.createElement('canvas');
|
var pdfnextpagebutton = document.createElement('button');
|
||||||
canvasNew.id = 'pdf-c'+i;
|
pdfnextpagebutton.id = 'pdfnextpagebutton';
|
||||||
pdfContainer.appendChild(canvasNew);
|
pdfnextpagebutton.innerText = 'Load page ' + pagepos + '-' + (pagepos+4<pagenum?pagepos+4:pagenum) + ' (' + pagenum + ')';
|
||||||
renderpage(pdf,i);
|
pdfnextpagebutton.setAttribute('onclick', "this.style.display = 'none';");
|
||||||
}
|
pdfnextpagebutton.style.display = 'none';
|
||||||
|
pdfContainer.appendChild(pdfnextpagebutton);
|
||||||
|
var pdfWaitNextPage = setInterval(function(){
|
||||||
|
//console.log(document.documentElement.scrollTop + ", " + document.body.scrollHeight);
|
||||||
|
if (pdfnextpagebutton.style.display=='none') {
|
||||||
|
for (var i=pagepos;i<=(pagepos+4<pagenum?pagepos+4:pagenum);i++) {
|
||||||
|
var canvasNew = document.createElement('canvas');
|
||||||
|
canvasNew.id = 'pdf-c'+i;
|
||||||
|
pdfContainer.appendChild(canvasNew);
|
||||||
|
renderpage(pdf,i);
|
||||||
|
}
|
||||||
|
pagepos = i;
|
||||||
|
if (pagepos<pagenum) {
|
||||||
|
console.log("next page: " + pagepos + " / " + pagenum);
|
||||||
|
pdfnextpagebutton.innerText = 'Load page ' + pagepos + '-' + (pagepos+4<pagenum?pagepos+4:pagenum) + ' (' + pagenum + ')';
|
||||||
|
pdfnextpagebutton.style.display ='';
|
||||||
|
pdfContainer.appendChild(pdfnextpagebutton);
|
||||||
|
} else {
|
||||||
|
console.log("end of pdf");
|
||||||
|
clearInterval(pdfWaitNextPage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
});
|
});
|
||||||
function renderpage(pdf,i)
|
function renderpage(pdf,i) {
|
||||||
{
|
|
||||||
pdf.getPage(i).then(function(page) {
|
pdf.getPage(i).then(function(page) {
|
||||||
var scale = 1.5;
|
var scale = 1.5;
|
||||||
var viewport = page.getViewport({ scale: scale, });
|
var viewport = page.getViewport({ scale: scale, });
|
||||||
|
@ -650,22 +727,27 @@
|
||||||
page.render(renderContext);
|
page.render(renderContext);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
function size_format(num) {
|
||||||
|
if (num>1024) {
|
||||||
|
num=num/1024;
|
||||||
|
} else {
|
||||||
|
return num.toFixed(2) + ' B';
|
||||||
|
}
|
||||||
|
if (num>1024) {
|
||||||
|
num=num/1024;
|
||||||
|
} else {
|
||||||
|
return num.toFixed(2) + ' KB';
|
||||||
|
}
|
||||||
|
if (num>1024) {
|
||||||
|
num=num/1024;
|
||||||
|
} else {
|
||||||
|
return num.toFixed(2) + ' MB';
|
||||||
|
}
|
||||||
|
return num.toFixed(2) + ' GB';
|
||||||
|
}
|
||||||
<!--IspdfFileEnd-->
|
<!--IspdfFileEnd-->
|
||||||
<!--IsFileEnd-->
|
<!--IsFileEnd-->
|
||||||
<!--IsFolderStart-->
|
<!--IsFolderStart-->
|
||||||
<!--HeadmdStart-->
|
|
||||||
var $head = document.getElementById('head');
|
|
||||||
if ($head) {
|
|
||||||
//document.getElementById('head-div').parentNode.insertBefore(document.getElementById('head-div'),document.getElementById('list-div'));
|
|
||||||
$head.innerHTML = marked(document.getElementById('head-md').innerText);
|
|
||||||
}
|
|
||||||
<!--HeadmdEnd-->
|
|
||||||
<!--ReadmemdStart-->
|
|
||||||
var $readme = document.getElementById('readme');
|
|
||||||
if ($readme) {
|
|
||||||
$readme.innerHTML = marked(document.getElementById('readme-md').innerText);
|
|
||||||
}
|
|
||||||
<!--ReadmemdEnd-->
|
|
||||||
<!--ShowThumbnailsStart-->
|
<!--ShowThumbnailsStart-->
|
||||||
function showthumbnails(obj) {
|
function showthumbnails(obj) {
|
||||||
images = [<!--ImgExts-->];
|
images = [<!--ImgExts-->];
|
||||||
|
@ -796,18 +878,6 @@
|
||||||
}
|
}
|
||||||
<!--IsNotHiddenEnd-->
|
<!--IsNotHiddenEnd-->
|
||||||
<!--IsFolderEnd-->
|
<!--IsFolderEnd-->
|
||||||
<!--WriteTimezoneStart-->
|
|
||||||
var nowtime= new Date();
|
|
||||||
var timezone = 0-nowtime.getTimezoneOffset()/60;
|
|
||||||
var expd = new Date();
|
|
||||||
expd.setTime(expd.getTime()+(2*60*60*1000));
|
|
||||||
var expires = "expires="+expd.toGMTString();
|
|
||||||
document.cookie="timezone="+timezone+"; path=/; "+expires;
|
|
||||||
if (timezone!=<!--timezone-->) {
|
|
||||||
alert('Your timezone is '+timezone+', reload local timezone.');
|
|
||||||
location.href=location.href;
|
|
||||||
}
|
|
||||||
<!--WriteTimezoneEnd-->
|
|
||||||
function CopyAllDownloadUrl(str) {
|
function CopyAllDownloadUrl(str) {
|
||||||
var tmptextarea=document.createElement('textarea');
|
var tmptextarea=document.createElement('textarea');
|
||||||
document.body.appendChild(tmptextarea);
|
document.body.appendChild(tmptextarea);
|
||||||
|
@ -1147,7 +1217,39 @@
|
||||||
}// else console.log(Object.keys(uploading).length);
|
}// else console.log(Object.keys(uploading).length);
|
||||||
} else clearInterval(uploadList);
|
} else clearInterval(uploadList);
|
||||||
}, 1000);
|
}, 1000);
|
||||||
//getuplink(i);
|
function CalcProof(file) {
|
||||||
|
return new Promise(function(resolve, reject){
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
xhr.open("POST", '?action=upbigfile');
|
||||||
|
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
|
||||||
|
xhr.setRequestHeader('x-requested-with', 'XMLHttpRequest');
|
||||||
|
xhr.onload = function(e){
|
||||||
|
var html;
|
||||||
|
if (xhr.status==200) {
|
||||||
|
//console.log(xhr.responseText);
|
||||||
|
var r = new BigNumber("0x".concat(xhr.responseText));
|
||||||
|
var i = new BigNumber(file.size);
|
||||||
|
var o = i ? r.mod(i) : 0;
|
||||||
|
var reader1 = new FileReader();
|
||||||
|
var start = o.toNumber();
|
||||||
|
var end = start + 8;
|
||||||
|
//if (file.size<end) end = file.size;
|
||||||
|
console.log(start + " ~ " + end);
|
||||||
|
//reader1.readAsBinaryString(file.slice(start,end));
|
||||||
|
reader1.readAsDataURL(file.slice(start,end));
|
||||||
|
reader1.onload = function(e) {
|
||||||
|
var proof = this.result;
|
||||||
|
proof = proof.substr(proof.indexOf('base64,')+7);
|
||||||
|
resolve(proof);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//console.log(xhr.status+'calc proof code\n'+xhr.responseText);
|
||||||
|
reject(xhr.status+"\ncalc proof code\n"+xhr.responseText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xhr.send('CalcProof=1');
|
||||||
|
});
|
||||||
|
}
|
||||||
function getuplink(i, r=0) {
|
function getuplink(i, r=0) {
|
||||||
var file=files[i];
|
var file=files[i];
|
||||||
var td1;
|
var td1;
|
||||||
|
@ -1175,6 +1277,7 @@
|
||||||
uploadbuttonshow();
|
uploadbuttonshow();
|
||||||
return;
|
return;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
var upbigfilename = encodeURIComponent((file.webkitRelativePath||file.name));
|
var upbigfilename = encodeURIComponent((file.webkitRelativePath||file.name));
|
||||||
uploading[upbigfilename] = [i];
|
uploading[upbigfilename] = [i];
|
||||||
var spark = sha1.create();
|
var spark = sha1.create();
|
||||||
|
@ -1186,7 +1289,14 @@
|
||||||
var blob = file.slice(start,end);
|
var blob = file.slice(start,end);
|
||||||
reader.readAsArrayBuffer(blob);
|
reader.readAsArrayBuffer(blob);
|
||||||
}
|
}
|
||||||
readblob(asize);
|
var proof_code = '';
|
||||||
|
CalcProof(file).then(a => {
|
||||||
|
proof_code = a;
|
||||||
|
console.log('proof: ' + proof_code);
|
||||||
|
readblob(asize);
|
||||||
|
}, e => {
|
||||||
|
td2.innerHTML = e;
|
||||||
|
});
|
||||||
|
|
||||||
reader.onload = function(e){
|
reader.onload = function(e){
|
||||||
td2.innerHTML='<!--constStr@Calculate--> SHA1: '+(asize*100/file.size).toFixed(2)+'%';
|
td2.innerHTML='<!--constStr@Calculate--> SHA1: '+(asize*100/file.size).toFixed(2)+'%';
|
||||||
|
@ -1254,7 +1364,7 @@
|
||||||
getuplink(i);
|
getuplink(i);
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
xhr1.send('upbigfilename='+ upbigfilename +'&filesize='+ file.size +'&filelastModified='+ file.lastModified + '&filesha1=' + filesha1 + '&chunksize=' + chunksize + '&_admin=' + localStorage.getItem("admin"));
|
xhr1.send('upbigfilename='+ upbigfilename +'&filesize='+ file.size +'&filelastModified='+ file.lastModified + '&proof_code=' + proof_code + '&filesha1=' + filesha1 + '&chunksize=' + chunksize + '&_admin=' + localStorage.getItem("admin"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1652,7 +1762,7 @@
|
||||||
document.getElementById('password1').focus();
|
document.getElementById('password1').focus();
|
||||||
<!--EncryptedEnd-->
|
<!--EncryptedEnd-->
|
||||||
</script>
|
</script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
|
<script src="https://www.unpkg.com/ionicons@6.0.1/dist/ionicons.js"></script>
|
||||||
<!--LoginStart--><script src="https://cdn.jsdelivr.net/npm/js-sha1@0.6.0/src/sha1.min.js"></script><!--LoginEnd-->
|
<!--LoginStart--><script src="?jsFile=sha1.min.js"></script><!--LoginEnd-->
|
||||||
<!--customScript-->
|
<!--customScript-->
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -497,7 +497,7 @@
|
||||||
<div>
|
<div>
|
||||||
<a onclick="operatediv_close('login')" class="operatediv_close">×</a>
|
<a onclick="operatediv_close('login')" class="operatediv_close">×</a>
|
||||||
<center>
|
<center>
|
||||||
<form action="<!--IsPreview?-->admin" method="post" onsubmit="return sha1loginpass(this);">
|
<form action="<!--IsPreview?-->login=admin" method="post" onsubmit="return sha1loginpass(this);">
|
||||||
<input id="login_input" name="password1" type="password" placeholder="<!--constStr@InputPassword-->">
|
<input id="login_input" name="password1" type="password" placeholder="<!--constStr@InputPassword-->">
|
||||||
<input name="timestamp" type="hidden" value="">
|
<input name="timestamp" type="hidden" value="">
|
||||||
<input type="submit" value="<!--constStr@Login-->">
|
<input type="submit" value="<!--constStr@Login-->">
|
||||||
|
@ -510,11 +510,11 @@
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
<!--ListStart-->
|
<!--ListStart-->
|
||||||
<!--MdRequireStart--><link rel="stylesheet" href="//unpkg.zhimg.com/github-markdown-css@3.0.1/github-markdown.css">
|
<!--MdRequireStart--><link rel="stylesheet" href="https://unpkg.com/github-markdown-css@3.0.1/github-markdown.css">
|
||||||
<script type="text/javascript" src="//unpkg.zhimg.com/marked@0.6.2/marked.min.js"></script><!--MdRequireEnd-->
|
<script type="text/javascript" src="?jsFile=marked.js"></script><!--MdRequireEnd-->
|
||||||
<!--GuestUploadStart--><script type="text/javascript" src="//cdn.bootcss.com/spark-md5/3.0.0/spark-md5.min.js"></script><!--GuestUploadEnd-->
|
<!--GuestUploadStart--><script type="text/javascript" src="?jsFile=spark-md5.min.js"></script><!--GuestUploadEnd-->
|
||||||
<!--AliyundriveUploadJsStart--><script src="https://cdn.bootcss.com/js-sha1/0.6.0/sha1.min.js"></script><!--AliyundriveUploadJsEnd-->
|
<!--AliyundriveUploadJsStart--><script src="?jsFile=sha1.min.js"></script><!--AliyundriveUploadJsEnd-->
|
||||||
<!--IsFileStart--><!--IspdfFileStart--><script src="//cdn.bootcss.com/pdf.js/2.3.200/pdf.min.js"></script><!--IspdfFileEnd--><!--IsFileEnd-->
|
<!--IsFileStart--><!--IspdfFileStart--><script src="https://unpkg.com/pdfjs-dist@2.4.456/build/pdf.min.js"></script><!--IspdfFileEnd--><!--IsFileEnd-->
|
||||||
<!--ListEnd-->
|
<!--ListEnd-->
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.markdown-body{font-size: 14px;}
|
.markdown-body{font-size: 14px;}
|
||||||
|
@ -642,10 +642,10 @@
|
||||||
addVideos(['<!--FileEncodeUrl-->']);
|
addVideos(['<!--FileEncodeUrl-->']);
|
||||||
<!--IsvideoFileEnd-->
|
<!--IsvideoFileEnd-->
|
||||||
<!--IspdfFileStart-->
|
<!--IspdfFileStart-->
|
||||||
pdfjsLib.GlobalWorkerOptions.workerSrc = '//cdn.bootcss.com/pdf.js/2.3.200/pdf.worker.min.js';
|
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://unpkg.com/pdfjs-dist@2.4.456/build/pdf.worker.min.js';
|
||||||
var loadingTask = pdfjsLib.getDocument({
|
var loadingTask = pdfjsLib.getDocument({
|
||||||
url: '<!--FileDownUrl-->',
|
url: '<!--FileDownUrl-->',
|
||||||
cMapUrl: "//cdn.jsdelivr.net/npm/pdfjs-dist@2.2.228/cmaps/",
|
cMapUrl: "https://unpkg.com/pdfjs-dist@2.4.456/cmaps/",
|
||||||
cMapPacked: true,
|
cMapPacked: true,
|
||||||
rangeChunkSize: 65535
|
rangeChunkSize: 65535
|
||||||
});
|
});
|
||||||
|
@ -1698,6 +1698,6 @@
|
||||||
<!--EncryptedEnd-->
|
<!--EncryptedEnd-->
|
||||||
</script>
|
</script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
|
||||||
<!--LoginStart--><script src="https://cdn.bootcss.com/js-sha1/0.6.0/sha1.min.js"></script><!--LoginEnd-->
|
<!--LoginStart--><script src="?jsFile=sha1.min.js"></script><!--LoginEnd-->
|
||||||
<!--customScript-->
|
<!--customScript-->
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -89,9 +89,10 @@
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<form action="?admin" method="post">
|
<form action="<!--IsPreview?-->login=admin" method="post" onsubmit="return sha1loginpass(this);">
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<input class="form-control" id="login_input" name="password1" type="password" placeholder="<!--constStr@InputPassword-->">
|
<input class="form-control" id="login_input" name="password1" type="password" placeholder="<!--constStr@InputPassword-->">
|
||||||
|
<input name="timestamp" type="hidden">
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<input class="btn btn-primary" type="submit" value="<!--constStr@Login-->"></button>
|
<input class="btn btn-primary" type="submit" value="<!--constStr@Login-->"></button>
|
||||||
|
@ -668,7 +669,7 @@ return false;
|
||||||
<!--IsFolderEnd-->
|
<!--IsFolderEnd-->
|
||||||
<!--AdminEnd-->
|
<!--AdminEnd-->
|
||||||
<!--LoginStart-->
|
<!--LoginStart-->
|
||||||
|
<script src="?jsFile=sha1.min.js"></script>
|
||||||
<!--LoginEnd-->
|
<!--LoginEnd-->
|
||||||
<p class="text-center text-muted"><a href="https://github.com/qkqpttgf/OneManager-php" class="text-muted">OneManager</a> By 逸笙 Theme By Nchyn</p>
|
<p class="text-center text-muted"><a href="https://github.com/qkqpttgf/OneManager-php" class="text-muted">OneManager</a> By 逸笙 Theme By Nchyn</p>
|
||||||
<p class="text-center" style="color: rgba(247,247,249,0);"><!--FootStr--></p>
|
<p class="text-center" style="color: rgba(247,247,249,0);"><!--FootStr--></p>
|
||||||
|
@ -676,11 +677,11 @@ return false;
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
<!--ListStart-->
|
<!--ListStart-->
|
||||||
<!--MdRequireStart--><link rel="stylesheet" href="//unpkg.zhimg.com/github-markdown-css@3.0.1/github-markdown.css">
|
<!--MdRequireStart--><link rel="stylesheet" href="https://unpkg.com/github-markdown-css@3.0.1/github-markdown.css">
|
||||||
<script type="text/javascript" src="//unpkg.zhimg.com/marked@0.6.2/marked.min.js"></script><!--MdRequireEnd-->
|
<script type="text/javascript" src="?jsFile=marked.js"></script><!--MdRequireEnd-->
|
||||||
<!--GuestUploadStart--><script type="text/javascript" src="//cdn.bootcss.com/spark-md5/3.0.0/spark-md5.min.js"></script><!--GuestUploadEnd-->
|
<!--GuestUploadStart--><script type="text/javascript" src="?jsFile=spark-md5.min.js"></script><!--GuestUploadEnd-->
|
||||||
<!--AliyundriveUploadJsStart--><script src="//cdn.bootcdn.net/ajax/libs/js-sha1/0.6.0/sha1.min.js"></script><!--AliyundriveUploadJsEnd-->
|
<!--AliyundriveUploadJsStart--><script src="?jsFile=sha1.min.js"></script><!--AliyundriveUploadJsEnd-->
|
||||||
<!--IsFileStart--><!--IspdfFileStart--><script src="//cdn.bootcss.com/pdf.js/2.3.200/pdf.min.js"></script><!--IspdfFileEnd--><!--IsFileEnd-->
|
<!--IsFileStart--><!--IspdfFileStart--><script src="https://unpkg.com/pdfjs-dist@2.4.456/build/pdf.min.js"></script><!--IspdfFileEnd--><!--IsFileEnd-->
|
||||||
<!--ListEnd-->
|
<!--ListEnd-->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function changelanguage(str)
|
function changelanguage(str)
|
||||||
|
@ -802,10 +803,10 @@ return false;
|
||||||
addVideos(['<!--FileEncodeUrl-->']);
|
addVideos(['<!--FileEncodeUrl-->']);
|
||||||
<!--IsvideoFileEnd-->
|
<!--IsvideoFileEnd-->
|
||||||
<!--IspdfFileStart-->
|
<!--IspdfFileStart-->
|
||||||
pdfjsLib.GlobalWorkerOptions.workerSrc = '//cdn.bootcss.com/pdf.js/2.3.200/pdf.worker.min.js';
|
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://unpkg.com/pdfjs-dist@2.4.456/build/pdf.worker.min.js';
|
||||||
var loadingTask = pdfjsLib.getDocument({
|
var loadingTask = pdfjsLib.getDocument({
|
||||||
url: '<!--FileDownUrl-->',
|
url: '<!--FileDownUrl-->',
|
||||||
cMapUrl: "//cdn.jsdelivr.net/npm/pdfjs-dist@2.2.228/cmaps/",
|
cMapUrl: "https://unpkg.com/pdfjs-dist@2.4.456/cmaps/",
|
||||||
cMapPacked: true,
|
cMapPacked: true,
|
||||||
rangeChunkSize: 65535
|
rangeChunkSize: 65535
|
||||||
});
|
});
|
||||||
|
@ -1745,6 +1746,35 @@ return false;
|
||||||
document.getElementById('login_div').style.top=(window.innerHeight-document.getElementById('login_div').offsetHeight)/2+document.body.scrollTop +'px';
|
document.getElementById('login_div').style.top=(window.innerHeight-document.getElementById('login_div').offsetHeight)/2+document.body.scrollTop +'px';
|
||||||
document.getElementById('login_input').focus();
|
document.getElementById('login_input').focus();
|
||||||
}
|
}
|
||||||
|
function sha1loginpass(f) {
|
||||||
|
if (f.password1.value=="") return false;
|
||||||
|
try {
|
||||||
|
timestamp = new Date().getTime() + "";
|
||||||
|
timestamp = timestamp.substr(0, timestamp.length-3);
|
||||||
|
f.timestamp.value = timestamp;
|
||||||
|
f.password1.value = sha1(timestamp + "" + f.password1.value);
|
||||||
|
return true;
|
||||||
|
} catch {
|
||||||
|
//alert("sha1.js not loaded.");
|
||||||
|
if (confirm("sha1.js not loaded.\n\nLoad from program?")) loadjs("?jsFile=sha1.min.js");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function loadjs(url) {
|
||||||
|
var xhr = new XMLHttpRequest;
|
||||||
|
xhr.open("GET", url);
|
||||||
|
xhr.onload = function(e) {
|
||||||
|
if (xhr.status==200) {
|
||||||
|
var script = document.createElement("script");
|
||||||
|
script.type = "text/javascript";
|
||||||
|
script.text = xhr.responseText;
|
||||||
|
document.body.appendChild(script);
|
||||||
|
} else {
|
||||||
|
console.log(xhr.response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xhr.send(null);
|
||||||
|
}
|
||||||
<!--LoginEnd-->
|
<!--LoginEnd-->
|
||||||
<!--EncryptedStart-->
|
<!--EncryptedStart-->
|
||||||
document.getElementById('password1').focus();
|
document.getElementById('password1').focus();
|
||||||
|
|
|
@ -145,8 +145,8 @@
|
||||||
</div>
|
</div>
|
||||||
<!--IsofficeFileEnd-->
|
<!--IsofficeFileEnd-->
|
||||||
<!--IsvideoFileStart-->
|
<!--IsvideoFileStart-->
|
||||||
<link class="dplayer-css" rel="stylesheet" href="https://cdn.jsdelivr.net/npm/dplayer/dist/DPlayer.min.css">
|
<link class="dplayer-css" rel="stylesheet" href="https://fastly.jsdelivr.net/npm/dplayer/dist/DPlayer.min.css">
|
||||||
<script src="https://cdn.jsdelivr.net/npm/dplayer/dist/DPlayer.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/dplayer/1.27.0/DPlayer.min.js"></script>
|
||||||
<div class="nexmoe-item">
|
<div class="nexmoe-item">
|
||||||
<div class="mdui-center" id="dplayer"></div>
|
<div class="mdui-center" id="dplayer"></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -283,8 +283,8 @@
|
||||||
<!--ShowThumbnailsEnd-->
|
<!--ShowThumbnailsEnd-->
|
||||||
<!--IsFolderEnd-->
|
<!--IsFolderEnd-->
|
||||||
<!--ListEnd-->
|
<!--ListEnd-->
|
||||||
<!--MdRequireStart--><link rel="stylesheet" href="//unpkg.zhimg.com/github-markdown-css@3.0.1/github-markdown.css">
|
<!--MdRequireStart--><link rel="stylesheet" href="https://unpkg.com/github-markdown-css@3.0.1/github-markdown.css">
|
||||||
<script type="text/javascript" src="//unpkg.zhimg.com/marked@0.6.2/marked.min.js"></script><!--MdRequireEnd-->
|
<script type="text/javascript" src="?jsFile=marked.js"></script><!--MdRequireEnd-->
|
||||||
<script>
|
<script>
|
||||||
<!--MorePageStart-->
|
<!--MorePageStart-->
|
||||||
function nextpage(num) {
|
function nextpage(num) {
|
||||||
|
|
|
@ -374,8 +374,8 @@
|
||||||
<!--ListEnd-->
|
<!--ListEnd-->
|
||||||
<script src="//cdn.jsdelivr.net/gh/mcstudios/glightbox/dist/js/glightbox.min.js"></script>
|
<script src="//cdn.jsdelivr.net/gh/mcstudios/glightbox/dist/js/glightbox.min.js"></script>
|
||||||
<script src="//cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script>
|
<script src="//cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script>
|
||||||
<!--MdRequireStart--><link rel="stylesheet" href="//unpkg.zhimg.com/github-markdown-css@3.0.1/github-markdown.css">
|
<!--MdRequireStart--><link rel="stylesheet" href="https://unpkg.com/github-markdown-css@3.0.1/github-markdown.css">
|
||||||
<script type="text/javascript" src="//unpkg.zhimg.com/marked@0.6.2/marked.min.js"></script><!--MdRequireEnd-->
|
<script type="text/javascript" src="?jsFile=marked.js"></script><!--MdRequireEnd-->
|
||||||
<script>
|
<script>
|
||||||
<!--MorePageStart-->
|
<!--MorePageStart-->
|
||||||
function nextpage(num) {
|
function nextpage(num) {
|
||||||
|
|
|
@ -421,7 +421,7 @@
|
||||||
<div style="margin:50px">
|
<div style="margin:50px">
|
||||||
<a onclick="operatediv_close('login')" class="operatediv_close"><!--constStr@Close--></a>
|
<a onclick="operatediv_close('login')" class="operatediv_close"><!--constStr@Close--></a>
|
||||||
<center>
|
<center>
|
||||||
<form action="<!--IsPreview?-->admin" method="post" onsubmit="return sha1loginpass(this);">
|
<form action="<!--IsPreview?-->login=admin" method="post" onsubmit="return sha1loginpass(this);">
|
||||||
<input id="login_input" name="password1" type="password" placeholder="<!--constStr@InputPassword-->">
|
<input id="login_input" name="password1" type="password" placeholder="<!--constStr@InputPassword-->">
|
||||||
<input name="timestamp" type="hidden" value="">
|
<input name="timestamp" type="hidden" value="">
|
||||||
<input type="submit" value="<!--constStr@Login-->">
|
<input type="submit" value="<!--constStr@Login-->">
|
||||||
|
@ -434,11 +434,11 @@
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
<!--ListStart-->
|
<!--ListStart-->
|
||||||
<!--MdRequireStart--><link rel="stylesheet" href="//unpkg.zhimg.com/github-markdown-css@3.0.1/github-markdown.css">
|
<!--MdRequireStart--><link rel="stylesheet" href="https://unpkg.com/github-markdown-css@3.0.1/github-markdown.css">
|
||||||
<script type="text/javascript" src="//unpkg.zhimg.com/marked@0.6.2/marked.min.js"></script><!--MdRequireEnd-->
|
<script type="text/javascript" src="?jsFile=marked.js"></script><!--MdRequireEnd-->
|
||||||
<!--GuestUploadStart--><script type="text/javascript" src="//cdn.bootcss.com/spark-md5/3.0.0/spark-md5.min.js"></script><!--GuestUploadEnd-->
|
<!--GuestUploadStart--><script type="text/javascript" src="?jsFile=spark-md5.min.js"></script><!--GuestUploadEnd-->
|
||||||
<!--AliyundriveUploadJsStart--><script src="https://cdn.bootcss.com/js-sha1/0.6.0/sha1.min.js"></script><!--AliyundriveUploadJsEnd-->
|
<!--AliyundriveUploadJsStart--><script src="?jsFile=sha1.min.js"></script><!--AliyundriveUploadJsEnd-->
|
||||||
<!--IsFileStart--><!--IspdfFileStart--><script src="//cdn.bootcss.com/pdf.js/2.3.200/pdf.min.js"></script><!--IspdfFileEnd--><!--IsFileEnd-->
|
<!--IsFileStart--><!--IspdfFileStart--><script src="https://unpkg.com/pdfjs-dist@2.4.456/build/pdf.min.js"></script><!--IspdfFileEnd--><!--IsFileEnd-->
|
||||||
<!--ListEnd-->
|
<!--ListEnd-->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function changelanguage(str)
|
function changelanguage(str)
|
||||||
|
@ -564,10 +564,10 @@
|
||||||
addVideos(['<!--FileEncodeUrl-->']);
|
addVideos(['<!--FileEncodeUrl-->']);
|
||||||
<!--IsvideoFileEnd-->
|
<!--IsvideoFileEnd-->
|
||||||
<!--IspdfFileStart-->
|
<!--IspdfFileStart-->
|
||||||
pdfjsLib.GlobalWorkerOptions.workerSrc = '//cdn.bootcss.com/pdf.js/2.3.200/pdf.worker.min.js';
|
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://unpkg.com/pdfjs-dist@2.4.456/build/pdf.worker.min.js';
|
||||||
var loadingTask = pdfjsLib.getDocument({
|
var loadingTask = pdfjsLib.getDocument({
|
||||||
url: '<!--FileDownUrl-->',
|
url: '<!--FileDownUrl-->',
|
||||||
cMapUrl: "//cdn.jsdelivr.net/npm/pdfjs-dist@2.2.228/cmaps/",
|
cMapUrl: "https://unpkg.com/pdfjs-dist@2.4.456/cmaps/",
|
||||||
cMapPacked: true,
|
cMapPacked: true,
|
||||||
rangeChunkSize: 65535
|
rangeChunkSize: 65535
|
||||||
});
|
});
|
||||||
|
@ -1590,6 +1590,6 @@
|
||||||
<!--EncryptedEnd-->
|
<!--EncryptedEnd-->
|
||||||
</script>
|
</script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
|
||||||
<!--LoginStart--><script src="https://cdn.bootcss.com/js-sha1/0.6.0/sha1.min.js"></script><!--LoginEnd-->
|
<!--LoginStart--><script src="?jsFile=sha1.min.js"></script><!--LoginEnd-->
|
||||||
<!--customScript-->
|
<!--customScript-->
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -457,8 +457,9 @@
|
||||||
<div style="margin:50px">
|
<div style="margin:50px">
|
||||||
<a onclick="operatediv_close('login')" class="operatediv_close"><!--constStr@Close--></a>
|
<a onclick="operatediv_close('login')" class="operatediv_close"><!--constStr@Close--></a>
|
||||||
<center>
|
<center>
|
||||||
<form action="<!--IsPreview?-->admin" method="post">
|
<form action="<!--IsPreview?-->login=admin" method="post" onsubmit="return sha1loginpass(this);">
|
||||||
<input id="login_input" name="password1" type="password" placeholder="<!--constStr@InputPassword-->">
|
<input id="login_input" name="password1" type="password" placeholder="<!--constStr@InputPassword-->">
|
||||||
|
<input name="timestamp" type="hidden" value="">
|
||||||
<input type="submit" value="<!--constStr@Login-->">
|
<input type="submit" value="<!--constStr@Login-->">
|
||||||
</form>
|
</form>
|
||||||
</center>
|
</center>
|
||||||
|
@ -469,10 +470,10 @@
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
<!--ListStart-->
|
<!--ListStart-->
|
||||||
<!--MdRequireStart--><link rel="stylesheet" href="//unpkg.zhimg.com/github-markdown-css@3.0.1/github-markdown.css">
|
<!--MdRequireStart--><link rel="stylesheet" href="https://unpkg.com/github-markdown-css@3.0.1/github-markdown.css">
|
||||||
<script type="text/javascript" src="//unpkg.zhimg.com/marked@0.6.2/marked.min.js"></script><!--MdRequireEnd-->
|
<script type="text/javascript" src="?jsFile=marked.js"></script><!--MdRequireEnd-->
|
||||||
<!--GuestUploadStart--><script type="text/javascript" src="//cdn.bootcss.com/spark-md5/3.0.0/spark-md5.min.js"></script><!--GuestUploadEnd-->
|
<!--GuestUploadStart--><script type="text/javascript" src="?jsFile=spark-md5.min.js"></script><!--GuestUploadEnd-->
|
||||||
<!--IsFileStart--><!--IspdfFileStart--><script src="//cdn.bootcss.com/pdf.js/2.3.200/pdf.min.js"></script><!--IspdfFileEnd--><!--IsFileEnd-->
|
<!--IsFileStart--><!--IspdfFileStart--><script src="https://unpkg.com/pdfjs-dist@2.4.456/build/pdf.min.js"></script><!--IspdfFileEnd--><!--IsFileEnd-->
|
||||||
<!--ListEnd-->
|
<!--ListEnd-->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function changelanguage(str)
|
function changelanguage(str)
|
||||||
|
@ -594,10 +595,10 @@
|
||||||
addVideos(['<!--FileDownUrl-->']);
|
addVideos(['<!--FileDownUrl-->']);
|
||||||
<!--IsvideoFileEnd-->
|
<!--IsvideoFileEnd-->
|
||||||
<!--IspdfFileStart-->
|
<!--IspdfFileStart-->
|
||||||
pdfjsLib.GlobalWorkerOptions.workerSrc = '//cdn.bootcss.com/pdf.js/2.3.200/pdf.worker.min.js';
|
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://unpkg.com/pdfjs-dist@2.4.456/build/pdf.worker.min.js';
|
||||||
var loadingTask = pdfjsLib.getDocument({
|
var loadingTask = pdfjsLib.getDocument({
|
||||||
url: '<!--FileDownUrl-->',
|
url: '<!--FileDownUrl-->',
|
||||||
cMapUrl: "//cdn.jsdelivr.net/npm/pdfjs-dist@2.2.228/cmaps/",
|
cMapUrl: "https://unpkg.com/pdfjs-dist@2.4.456/cmaps/",
|
||||||
cMapPacked: true,
|
cMapPacked: true,
|
||||||
rangeChunkSize: 65535
|
rangeChunkSize: 65535
|
||||||
});
|
});
|
||||||
|
@ -1246,11 +1247,43 @@
|
||||||
document.getElementById('login_div').style.top=(window.innerHeight-document.getElementById('login_div').offsetHeight)/2+document.body.scrollTop +'px';
|
document.getElementById('login_div').style.top=(window.innerHeight-document.getElementById('login_div').offsetHeight)/2+document.body.scrollTop +'px';
|
||||||
document.getElementById('login_input').focus();
|
document.getElementById('login_input').focus();
|
||||||
}
|
}
|
||||||
|
function sha1loginpass(f) {
|
||||||
|
if (f.password1.value == "") return false;
|
||||||
|
try {
|
||||||
|
timestamp = new Date().getTime() + "";
|
||||||
|
timestamp = timestamp.substr(0, timestamp.length - 3);
|
||||||
|
f.timestamp.value = timestamp;
|
||||||
|
f.password1.value = sha1(timestamp + "" + f.password1.value);
|
||||||
|
return true;
|
||||||
|
} catch {
|
||||||
|
//alert("sha1.js not loaded.");
|
||||||
|
if (confirm("sha1.js not loaded.\n\nLoad from program?")) loadjs("?jsFile=sha1.min.js");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function loadjs(url) {
|
||||||
|
var xhr = new XMLHttpRequest;
|
||||||
|
xhr.open("GET", url);
|
||||||
|
xhr.onload = function (e) {
|
||||||
|
if (xhr.status == 200) {
|
||||||
|
var script = document.createElement("script");
|
||||||
|
script.type = "text/javascript";
|
||||||
|
script.text = xhr.responseText;
|
||||||
|
document.body.appendChild(script);
|
||||||
|
} else {
|
||||||
|
console.log(xhr.response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xhr.send(null);
|
||||||
|
}
|
||||||
<!--LoginEnd-->
|
<!--LoginEnd-->
|
||||||
<!--EncryptedStart-->
|
<!--EncryptedStart-->
|
||||||
document.getElementById('password1').focus();
|
document.getElementById('password1').focus();
|
||||||
<!--EncryptedEnd-->
|
<!--EncryptedEnd-->
|
||||||
</script>
|
</script>
|
||||||
|
<!--LoginStart-->
|
||||||
|
<script src="?jsFile=sha1.min.js"></script>
|
||||||
|
<!--LoginEnd-->
|
||||||
<script src="https://cdn.jsdelivr.net/npm/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
|
||||||
<!--customScript-->
|
<!--customScript-->
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh-CN">
|
<html lang="zh-CN">
|
||||||
<head>
|
<head>
|
||||||
<link rel="preconnect" href="https://cdn.jsdelivr.net" />
|
<link rel="preconnect" href="https://fastly.jsdelivr.net" />
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
/>
|
/>
|
||||||
<title><!--Title--></title>
|
<title><!--Title--></title>
|
||||||
<meta name="description" content="A Onemanager-PHP site with Theme-renexmoe" />
|
<meta name="description" content="A Onemanager-PHP site with Theme-renexmoe" />
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/css/app.css"><meta name="theme-color" content="#fff" />
|
<link rel="stylesheet" href="https://fastly.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/css/app.css"><meta name="theme-color" content="#fff" />
|
||||||
<!--BackgroundStart-->
|
<!--BackgroundStart-->
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
|
@ -98,9 +98,9 @@
|
||||||
<div class="mdui-drawer mdui-drawer-close" id="main-drawer">
|
<div class="mdui-drawer mdui-drawer-close" id="main-drawer">
|
||||||
<div class="mdui-list" mdui-collapse="{accordion: true}">
|
<div class="mdui-list" mdui-collapse="{accordion: true}">
|
||||||
<!--LoginStart-->
|
<!--LoginStart-->
|
||||||
<li class="mdui-list-item mdui-ripple" href="?admin" >
|
<li class="mdui-list-item mdui-ripple" href="?login=admin" >
|
||||||
<a class="mdui-list-item-icon mdui-icon material-icons">account_circle</a>
|
<a class="mdui-list-item-icon mdui-icon material-icons">account_circle</a>
|
||||||
<a class="mdui-list-item-content" href="?admin">登录</a>
|
<a class="mdui-list-item-content" href="?login=admin">登录</a>
|
||||||
</li>
|
</li>
|
||||||
<!--LoginEnd-->
|
<!--LoginEnd-->
|
||||||
<!--AdminStart-->
|
<!--AdminStart-->
|
||||||
|
@ -511,5 +511,5 @@
|
||||||
{ "music":"audiotrack", "video":"ondemand_video", "img":"image",
|
{ "music":"audiotrack", "video":"ondemand_video", "img":"image",
|
||||||
"pdf":"picture_as_pdf", "default":"insert_drive_file"}
|
"pdf":"picture_as_pdf", "default":"insert_drive_file"}
|
||||||
<!--IconValuesEnd-->
|
<!--IconValuesEnd-->
|
||||||
<script src="https://cdn.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/js/app@1b381f3c.a4f2dc4618121eac37e2.js"></script><script src="https://cdn.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/js/app@28a13772.98a11cc0c1cf2495c3d8.js"></script><script src="https://cdn.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/js/app@34e3d95a.2f8dbf552095a86a7f1b.js"></script><script src="https://cdn.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/js/app@798ab416.9ed46bb752b71a3c13a4.js"></script><script src="https://cdn.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/js/app@9c50beac.30955a99f08c9574cd14.js"></script><script src="https://cdn.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/js/app@f0256996.956ea71aa357ba3fdc28.js"></script><script src="https://cdn.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/js/webpack-runtime.93708ab3e9cb84dcc01a.js"></script>
|
<script src="https://fastly.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/js/app@1b381f3c.a4f2dc4618121eac37e2.js"></script><script src="https://fastly.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/js/app@28a13772.98a11cc0c1cf2495c3d8.js"></script><script src="https://fastly.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/js/app@34e3d95a.2f8dbf552095a86a7f1b.js"></script><script src="https://fastly.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/js/app@798ab416.9ed46bb752b71a3c13a4.js"></script><script src="https://fastly.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/js/app@9c50beac.30955a99f08c9574cd14.js"></script><script src="https://fastly.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/js/app@f0256996.956ea71aa357ba3fdc28.js"></script><script src="https://fastly.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/js/webpack-runtime.93708ab3e9cb84dcc01a.js"></script>
|
||||||
</html>
|
</html>
|
||||||
|
|
3372
theme/tfo.html
3372
theme/tfo.html
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue