pull/610/head
			
			
		
		
						commit
						076503a692
					
				
							
								
								
									
										88
									
								
								common.php
								
								
								
								
							
							
						
						
									
										88
									
								
								common.php
								
								
								
								
							|  | @ -42,6 +42,7 @@ $EnvConfigs = [ | |||
|     'globalHeadMdUrl'   => 0b011, | ||||
|     'globalReadmeMdUrl' => 0b011, | ||||
|     'globalFootOmfUrl'  => 0b011, | ||||
|     'bcmathUrl'         => 0b011, | ||||
| 
 | ||||
|     'Driver'            => 0b100, | ||||
|     'client_id'         => 0b100, | ||||
|  | @ -56,6 +57,7 @@ $EnvConfigs = [ | |||
|     'activeLimit'       => 0b100, | ||||
|     'driveId'           => 0b100, | ||||
| 
 | ||||
|     'diskDisplay'      => 0b110, | ||||
|     'diskname'          => 0b111, | ||||
|     'diskDescription'   => 0b111, | ||||
|     'domain_path'       => 0b111, | ||||
|  | @ -272,7 +274,7 @@ function main($path) | |||
|             $files['type'] = 'folder'; | ||||
|             $files['childcount'] = count($disktags); | ||||
|             $files['showname'] = 'root'; | ||||
|             foreach ($disktags as $disktag) { | ||||
|             foreach ($disktags as $disktag) if ($_SERVER['admin']||getConfig('diskDisplay', $disktag)=='') { | ||||
|                 $files['list'][$disktag]['type'] = 'folder'; | ||||
|                 $files['list'][$disktag]['name'] = $disktag; | ||||
|                 $files['list'][$disktag]['showname'] = getConfig('diskname', $disktag); | ||||
|  | @ -286,7 +288,7 @@ function main($path) | |||
|             $_SERVER['disktag'] = splitfirst( substr(path_format($path), 1), '/' )[0]; | ||||
|             //$pos = strpos($path, '/');
 | ||||
|             //if ($pos>1) $_SERVER['disktag'] = substr($path, 0, $pos);
 | ||||
|             if (!in_array($_SERVER['disktag'], $disktags)) { | ||||
|             if ((!$_SERVER['admin']&&getConfig('diskDisplay', $_SERVER['disktag'])=='disable')||!in_array($_SERVER['disktag'], $disktags)) { | ||||
|                 $tmp = path_format($_SERVER['base_path'] . '/' . $disktags[0] . '/' . $path); | ||||
|                 if (!!$_GET) { | ||||
|                     $tmp .= '?'; | ||||
|  | @ -320,12 +322,13 @@ function main($path) | |||
|         //error_log1($_SERVER['REQUEST_METHOD']);
 | ||||
|         if ($_GET['action']=='del_upload_cache') { | ||||
|             // del '.tmp' without login. 无需登录即可删除.tmp后缀文件
 | ||||
|             if (!driveisfine($_SERVER['disktag'], $drive)) return output('Not in drive, or disk [' . $_SERVER['disktag'] . '] error.', 403); | ||||
|             if (!driveisfine($_SERVER['disktag'], $drive)) return output($_SERVER['disktag']?'disk [ ' . $_SERVER['disktag'] . ' ] error.':'Not in drive', 403); | ||||
|             savecache('path_' . $path1, '', $_SERVER['disktag'], 1); // clear cache.
 | ||||
|             return $drive->del_upload_cache($path); | ||||
|         } | ||||
|          | ||||
|         if ($_GET['action']=='upbigfile') { | ||||
|             if (!driveisfine($_SERVER['disktag'], $drive)) return output('Not in drive, or disk [' . $_SERVER['disktag'] . '] error.', 403); | ||||
|             if (!driveisfine($_SERVER['disktag'], $drive)) return output($_SERVER['disktag']?'disk [ ' . $_SERVER['disktag'] . ' ] error.':'Not in drive', 403); | ||||
|             if (!$_SERVER['admin']) { | ||||
|                 if (!$_SERVER['is_guestup_path']) return output('Not_Guest_Upload_Folder', 400); | ||||
|                 if (strpos($_GET['upbigfilename'], '../')!==false) return output('Not_Allow_Cross_Path', 400); | ||||
|  | @ -334,7 +337,20 @@ function main($path) | |||
|             return $drive->bigfileupload($path1); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if ($_GET['action']=='upsmallfile') { | ||||
|         //echo json_encode($_POST, JSON_PRETTY_PRINT);
 | ||||
|         //echo json_encode($_FILES, JSON_PRETTY_PRINT);
 | ||||
|         if (!driveisfine($_SERVER['disktag'], $drive)) return output($_SERVER['disktag']?'disk [ ' . $_SERVER['disktag'] . ' ] error.':'Not in drive', 403); | ||||
|         if (!$_SERVER['admin']) { | ||||
|             if (!$_SERVER['is_guestup_path']) return output('Not_Guest_Upload_Folder', 400); | ||||
|             if (strpos($_GET['upbigfilename'], '../')!==false) return output('Not_Allow_Cross_Path', 400); | ||||
|             if (strpos($_POST['upbigfilename'], '../')!==false) return output('Not_Allow_Cross_Path', 400); | ||||
|         } | ||||
|         return 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']);*/ | ||||
|     } | ||||
|     if ($_SERVER['admin']) { | ||||
|         $tmp = adminoperate($path); | ||||
|         if ($tmp['statusCode'] > 0) { | ||||
|  | @ -385,6 +401,7 @@ function main($path) | |||
|     } else { | ||||
|         $files = $drive->list_files($path1); | ||||
|     } | ||||
|     //echo "<pre>" . json_encode($files, 448) . "</pre>";
 | ||||
|     //if ($path!=='') 
 | ||||
|     if ( $files['type']=='folder' && substr($path, -1)!=='/' ) { | ||||
|         $tmp = path_format($_SERVER['base_disk_path'] . $path . '/'); | ||||
|  | @ -446,26 +463,34 @@ function main($path) | |||
|                 $fileConduitSize = getConfig('fileConduitSize', $_SERVER['disktag']); | ||||
|                 $fileConduitCacheTime = getConfig('fileConduitCacheTime', $_SERVER['disktag']); | ||||
|                 if (!!$fileConduitSize || !!$fileConduitCacheTime) { | ||||
|                     if ($fileConduitSize>1) $fileConduitSize *= 1024*1024; | ||||
|                     if ($fileConduitSize>0) $fileConduitSize *= 1024*1024; | ||||
|                     else $fileConduitSize = 1024*1024; | ||||
|                     if ($fileConduitCacheTime>1) $fileConduitCacheTime *= 3600; | ||||
|                     if ($fileConduitCacheTime>0) $fileConduitCacheTime *= 3600; | ||||
|                     else $fileConduitCacheTime = 3600; | ||||
|                     /*if ($_SERVER['HTTP_RANGE']!='') { | ||||
|                         $header['Range'] = $_SERVER['HTTP_RANGE']; | ||||
|                          | ||||
|                         $response = curl('GET', $files['url'], '', $header, 1); | ||||
|                         //return output($header['Range'] . json_encode($response['returnhead']));
 | ||||
|                         return output( | ||||
|                             $response['body'], | ||||
|                             $response['stat'], | ||||
|                             //$response['returnhead'],
 | ||||
|                             ['Content-Type' => $files['mime'], 'Cache-Control' => 'max-age=' . $fileConduitCacheTime], | ||||
|                             $response['returnhead'], | ||||
|                             //['Accept-Ranges' => 'bytes', 'Range' => $response['returnhead']['Range'], 'Content-Type' => $files['mime'], 'Cache-Control' => 'max-age=' . $fileConduitCacheTime],
 | ||||
|                             false | ||||
|                         ); | ||||
|                     } else { | ||||
|                         return output('', 206, | ||||
|                             ['Accept-Ranges' => 'bytes', 'Content-Range' => 'bytes 0-0/' . $files['size'], 'Content-Type' => $files['mime'] ] | ||||
|                         ); | ||||
|                     }*/ | ||||
|                     if ($files['size']<$fileConduitSize) return output( | ||||
|                         base64_encode(file_get_contents($files['url'])), | ||||
|                         200, | ||||
|                         [ | ||||
|                             'Accept-Ranges' => 'bytes', | ||||
|                             //'access-control-allow-origin' => '*',
 | ||||
|                             //'access-control-expose-headers' => 'Content-Length, WWW-Authenticate, Location, Accept-Ranges',
 | ||||
|                             'Content-Type' => $files['mime'], | ||||
|                             'Cache-Control' => 'max-age=' . $fileConduitCacheTime, | ||||
|                             //'Cache-Control' => 'max-age=0',
 | ||||
|  | @ -473,6 +498,7 @@ function main($path) | |||
|                         ],  | ||||
|                         true | ||||
|                     ); | ||||
|                     //if ($files['size']<$fileConduitSize) return $drive->ConduitDown($files['url'], $files['time'], $fileConduitCacheTime);
 | ||||
|                 } | ||||
|                 if ($_SERVER['HTTP_RANGE']!='') $header['Range'] = $_SERVER['HTTP_RANGE']; | ||||
|                 $header['Location'] = $url; | ||||
|  | @ -490,12 +516,13 @@ function main($path) | |||
|         return render_list($path, $files); | ||||
|     } else { | ||||
|         if (!isset($files['error'])) { | ||||
|             if (is_array($files)) $files['error']['message'] = json_encode($files, JSON_PRETTY_PRINT); | ||||
|             else $files['error']['message'] = $files; | ||||
|             if (is_array($files)) { | ||||
|                 $files['error']['message'] = json_encode($files, JSON_PRETTY_PRINT); | ||||
|                 $files['error']['code'] = 'unknownError'; | ||||
|                 $files['error']['stat'] = 500; | ||||
|             } | ||||
|         return message('<div style="margin:8px;"><pre>' . $files['error']['message'] . '</pre></div><a href="javascript:history.back(-1)">'.getconstStr('Back').'</a>', $files['error']['code'], $files['error']['stat']); | ||||
|         } | ||||
|         return message('<div style="margin:8px;"><pre>' . $files.json_encode($files, JSON_PRETTY_PRINT) . '</pre></div><a href="javascript:history.back(-1)">'.getconstStr('Back').'</a>', $files['error']['code'], $files['error']['stat']); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | @ -857,7 +884,7 @@ function curl($method, $url, $data = '', $headers = [], $returnheader = 0, $loca | |||
|     } | ||||
|     $ch = curl_init(); | ||||
|     curl_setopt($ch, CURLOPT_URL, $url); | ||||
|     curl_setopt($ch, CURLOPT_CUSTOMREQUEST,$method); | ||||
|     curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); | ||||
|     curl_setopt($ch, CURLOPT_POSTFIELDS, $data); | ||||
|     curl_setopt($ch, CURLOPT_TIMEOUT, 5); | ||||
|     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); | ||||
|  | @ -869,7 +896,9 @@ function curl($method, $url, $data = '', $headers = [], $returnheader = 0, $loca | |||
|     if ($location) curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); | ||||
|     //$response['body'] = curl_exec($ch);
 | ||||
|     if ($returnheader) { | ||||
|         list($returnhead, $response['body']) = explode("\r\n\r\n", curl_exec($ch)); | ||||
|         $tmpres = splitlast(curl_exec($ch), "\r\n\r\n"); | ||||
|         $result['body'] = $tmpres[1]; | ||||
|         $returnhead = $tmpres[0]; | ||||
|         //echo "HEAD:" . $returnhead;
 | ||||
|         foreach (explode("\r\n", $returnhead) as $head) { | ||||
|             $tmp = explode(': ', $head); | ||||
|  | @ -879,7 +908,7 @@ function curl($method, $url, $data = '', $headers = [], $returnheader = 0, $loca | |||
|     } else { | ||||
|         $response['body'] = curl_exec($ch); | ||||
|     } | ||||
|     $response['stat'] = curl_getinfo($ch,CURLINFO_HTTP_CODE); | ||||
|     $response['stat'] = curl_getinfo($ch, CURLINFO_HTTP_CODE); | ||||
|     curl_close($ch); | ||||
|     return $response; | ||||
| } | ||||
|  | @ -1071,7 +1100,7 @@ function needUpdate() | |||
| function output($body, $statusCode = 200, $headers = ['Content-Type' => 'text/html'], $isBase64Encoded = false) | ||||
| { | ||||
|     if (isset($_SERVER['Set-Cookie'])) $headers['Set-Cookie'] = $_SERVER['Set-Cookie']; | ||||
|     if (baseclassofdrive()=='Aliyundrive') $headers['Referrer-Policy'] = 'no-referrer'; | ||||
|     if (baseclassofdrive()=='Aliyundrive' || baseclassofdrive()=='BaiduDisk') $headers['Referrer-Policy'] = 'no-referrer'; | ||||
|     //$headers['Referrer-Policy'] = 'same-origin';
 | ||||
|     //$headers['X-Frame-Options'] = 'sameorigin';
 | ||||
|     return [ | ||||
|  | @ -1208,7 +1237,7 @@ function adminform($name = '', $pass = '', $storage = '', $path = '') | |||
| function adminoperate($path) | ||||
| { | ||||
|     global $drive; | ||||
|     if ($_SERVER['REQUEST_METHOD']=='POST') if (!driveisfine($_SERVER['disktag'], $drive)) return output('Not in drive, or disk [' . $_SERVER['disktag'] . '] error.', 403); | ||||
|     if ($_SERVER['REQUEST_METHOD']=='POST') if (!driveisfine($_SERVER['disktag'], $drive)) return output($_SERVER['disktag']?'disk [ ' . $_SERVER['disktag'] . ' ] error.':'Not in drive', 403); | ||||
|     $path1 = path_format($_SERVER['list_path'] . '/' . $path); | ||||
|     if (substr($path1, -1)=='/') $path1=substr($path1, 0, -1); | ||||
|     $tmpget = $_GET; | ||||
|  | @ -1523,7 +1552,7 @@ function EnvOpt($needUpdate = 0) | |||
|         $html .= ' | ||||
| OneManager DIR: ' . __DIR__ . ' | ||||
| <form name="form1" method="POST" action=""> | ||||
|     <input id="inputarea" name="cmd" style="width:100%" value="' . $_POST['cmd'] . '" placeholder="ls, pwd, cat"><br> | ||||
|     <input id="inputarea" name="cmd" style="width:100%" value="' . htmlspecialchars($_POST['cmd']) . '" placeholder="ls, pwd, cat"><br> | ||||
|     <input type="submit" value="post"> | ||||
| </form>'; | ||||
|         if ($_POST['cmd']!='') { | ||||
|  | @ -1670,12 +1699,27 @@ output: | |||
|     <input name="_admin" type="hidden" value=""> | ||||
|     <input type="hidden" name="disk" value="' . $disktag . '">'; | ||||
|             foreach ($EnvConfigs as $key => $val) if (isInnerEnv($key) && isShowedEnv($key)) { | ||||
|                 if ($key=='diskDisplay') { | ||||
|                     $frame .= ' | ||||
|     <tr> | ||||
|         <td><label>' . $key . '</label></td> | ||||
|         <td width=100%> | ||||
|             <select name="' . $key . '"> | ||||
|                 <option value=""' . (getConfig($key, $disktag)===''?' selected':'') . '> </option> | ||||
|                 <option value="hidden"' . (getConfig($key, $disktag)==='hidden'?' selected':'') . '>hidden</option> | ||||
|                 <option value="disable"' . (getConfig($key, $disktag)==='disable'?' selected':'') . '>disable</option> | ||||
|             </select> | ||||
|             ' . getconstStr('EnvironmentsDescription')[$key] . ' | ||||
|         </td> | ||||
|     </tr>'; | ||||
|                 } else { | ||||
|                     $frame .= ' | ||||
|     <tr> | ||||
|         <td><label>' . $key . '</label></td> | ||||
|         <td width=100%><input type="text" name="' . $key . '" value="' . getConfig($key, $disktag) . '" placeholder="' . getconstStr('EnvironmentsDescription')[$key] . '" style="width:100%"></td> | ||||
|     </tr>'; | ||||
|                 } | ||||
|             } | ||||
|             $frame .= ' | ||||
|     <tr><td></td><td><input type="submit" name="submit1" value="' . getconstStr('Setup') . '"></td></tr> | ||||
| </form>'; | ||||
|  | @ -2159,7 +2203,13 @@ function render_list($path = '', $files = []) | |||
|     $p_path=''; | ||||
|     if ($path1 !== '/') { | ||||
|         if ($files['type']=='file') { | ||||
|             if (isset($files['name'])) { | ||||
|                 $pretitle = str_replace('&','&', $files['name']); | ||||
|             } else { | ||||
|                 if (substr($path1, 0, 1)=='/') $pretitle = substr($path1, 1); | ||||
|                 if (substr($path1, -1)=='/') $pretitle = substr($pretitle, 0, -1); | ||||
|                 $pretitle = str_replace('&','&', $pretitle); | ||||
|             } | ||||
|             $n_path = $pretitle; | ||||
|             $tmp = splitlast(splitlast($path1,'/')[0],'/'); | ||||
|             if ($tmp[1]=='') { | ||||
|  | @ -2928,7 +2978,7 @@ function render_list($path = '', $files = []) | |||
|             $MultiDiskArea = $tmp[0]; | ||||
|             $tmp = splitfirst($tmp[1], '<!--MultiDisksEnd-->'); | ||||
|             $MultiDisks = $tmp[0]; | ||||
|             foreach ($disktags as $disk) { | ||||
|             foreach ($disktags as $disk) if ($_SERVER['admin']||getConfig('diskDisplay', $disk)=='') { | ||||
|                 $diskname = getConfig('diskname', $disk); | ||||
|                 if ($diskname=='') $diskname = $disk; | ||||
|                 $MultiDisksStr = str_replace('<!--MultiDisksUrl-->', path_format($_SERVER['base_path'].'/'.$disk.'/'), $MultiDisks); | ||||
|  |  | |||
|  | @ -321,7 +321,6 @@ class Aliyundrive { | |||
|         return output(json_encode($this->files_format(json_decode($result['body'], true))), $result['stat']); | ||||
|     } | ||||
|     public function Copy($file) { | ||||
|         return output('NO copy', 415); | ||||
|         if (!$file['id']) { | ||||
|             $oldfile = $this->list_path($file['path'] . '/' . $file['name']); | ||||
|             //error_log1('res:' . json_encode($res));
 | ||||
|  | @ -329,47 +328,60 @@ class Aliyundrive { | |||
|         } else { | ||||
|             $oldfile = $this->fileGet($file['id']); | ||||
|         } | ||||
| 
 | ||||
|         $url = $this->api_url . '/file/create'; | ||||
| 
 | ||||
|         if ($oldfile['type']=='folder') return output('Can not copy folder', 415); | ||||
|         if (!function_exists('bcadd')) { | ||||
|             // no php-bcmath
 | ||||
|             if ($bcmathurl = getConfig('bcmathUrl', $this->disktag)) { | ||||
|                 if (strpos($bcmathurl, '?')) { | ||||
|                     $bcmathurl .= '÷nd=0x' . substr(md5($this->access_token), 0, 16) . '&divisor=' . $oldfile['size']; | ||||
|                 } else { | ||||
|                     $bcmathurl .= '?dividend=0x' . substr(md5($this->access_token), 0, 16) . '&divisor=' . $oldfile['size']; | ||||
|                 } | ||||
|                 $o = curl('GET', $bcmathurl)['body']; | ||||
|             } else { | ||||
|                 return output('No bcmath module, can not copy', 415); | ||||
|             } | ||||
|         } else { | ||||
|             $r = bchexdec( substr(md5($this->access_token), 0, 16) ); | ||||
|             $o = bcmod($r, $oldfile['size']); | ||||
|         } | ||||
|         $res = curl('GET', $oldfile['download_url'], '', [ | ||||
|             '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['content_type'] = $oldfile['content_type']; | ||||
|             $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['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) { | ||||
|             //error_log1('1,url:' . $url .' res:' . json_encode($result));
 | ||||
|             /*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']); | ||||
|                 } | ||||
|             /*$file_id = $res['file_id']; | ||||
|             $upload_id = $res['upload_id']; | ||||
|             $result = curl('PUT', $url, $content, [], 1); | ||||
|             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));
 | ||||
|             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) { | ||||
|         $tmp = splitlast($file['path'], '/'); | ||||
|  | @ -564,6 +576,60 @@ class Aliyundrive { | |||
|         $thumb_url = $res['thumbnail']; | ||||
|         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['download_url'] = $_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) | ||||
|     { | ||||
|         if (isset($_POST['uploadid'])) { | ||||
|  | @ -582,7 +648,6 @@ class Aliyundrive { | |||
|                     $i = $_POST['filesize']; | ||||
|                     //$o = $i ? bcmod($r, $i) : 0;
 | ||||
|                     $o = bcmod($r, $i); | ||||
|                     //return output(hexdec( substr(md5($this->access_token), 0, 16) ) . ' , ' . $r . ' / ' . $i . ' = ' . $o, 200);
 | ||||
|                     return output($o, 200); | ||||
|                 }*/ | ||||
|             } | ||||
|  |  | |||
|  | @ -973,6 +973,20 @@ class Onedrive { | |||
|         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) | ||||
|     { | ||||
|         if ($_POST['upbigfilename']=='') return output('error: no file name', 400); | ||||
|  |  | |||
|  | @ -67,7 +67,9 @@ if (isset($_SERVER['USER'])&&$_SERVER['USER']==='qcloud') { | |||
| } else { | ||||
|     include 'platform/Normal.php'; | ||||
|     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(); | ||||
|     //echo 'path:'. $path;
 | ||||
|  |  | |||
|  | @ -546,3 +546,7 @@ function changeAuthKey() { | |||
|     </script>'; | ||||
|     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>'; | ||||
|     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>'; | ||||
|     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']); | ||||
| } | ||||
|  |  | |||
|  | @ -536,3 +536,7 @@ function changeAuthKey() { | |||
|     </script>'; | ||||
|     return message($html, 'Change platform Auth token or key', 200); | ||||
| } | ||||
| 
 | ||||
| function smallfileupload($drive, $path) { | ||||
|     return output('Can not upload through FG.', 400); | ||||
| } | ||||
|  |  | |||
|  | @ -902,3 +902,7 @@ function changeAuthKey() { | |||
|     </script>'; | ||||
|     return message($html, 'Change platform Auth token or key', 200); | ||||
| } | ||||
| 
 | ||||
| function smallfileupload($drive, $path) { | ||||
|     return output('Can not upload through FG.', 400); | ||||
| } | ||||
|  |  | |||
|  | @ -391,3 +391,9 @@ function WaitFunction() { | |||
| function changeAuthKey() { | ||||
|     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() { | ||||
|     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']); | ||||
| } | ||||
|  |  | |||
|  | @ -662,3 +662,7 @@ function changeAuthKey() { | |||
|     </script>'; | ||||
|     return message($html, 'Change platform Auth token or key', 200); | ||||
| } | ||||
| 
 | ||||
| function smallfileupload($drive, $path) { | ||||
|     return output('Can not upload through SCF.', 400); | ||||
| } | ||||
|  |  | |||
|  | @ -705,3 +705,7 @@ function changeAuthKey() { | |||
|     </script>'; | ||||
|     return message($html, 'Change platform Auth token or key', 200); | ||||
| } | ||||
| 
 | ||||
| function smallfileupload($drive, $path) { | ||||
|     return output('Can not upload through SCF.', 400); | ||||
| } | ||||
|  |  | |||
|  | @ -316,7 +316,7 @@ function VercelUpdate($appId, $token, $sourcePath = "") | |||
|     $data["target"] = "production"; | ||||
|     $data["routes"][0]["src"] = "/(.*)"; | ||||
|     $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.5.1"; | ||||
|     if ($sourcePath=="") $sourcePath = splitlast(splitlast(__DIR__, "/")[0], "/")[0]; | ||||
|     //echo $sourcePath . "<br>";
 | ||||
|     getEachFiles($file, $sourcePath); | ||||
|  | @ -432,7 +432,7 @@ function WaitFunction($deployid = '') { | |||
|     } | ||||
|     $header["Authorization"] = "Bearer " . getConfig('APIKey'); | ||||
|     $header["Content-Type"] = "application/json"; | ||||
|     $url = "https://api.vercel.com/v11/deployments/" . $deployid; | ||||
|     $url = "https://api.vercel.com/v13/deployments/" . $deployid; | ||||
|     $response = curl("GET", $url, "", $header); | ||||
|     if ($response['stat']==200) { | ||||
|         $result = json_decode($response['body'], true); | ||||
|  | @ -489,3 +489,9 @@ function changeAuthKey() { | |||
|     </script>'; | ||||
|     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']); | ||||
| } | ||||
|  |  | |||
|  | @ -665,6 +665,21 @@ | |||
|         disableAutoFetch: true, | ||||
|         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) { | ||||
|         var pagenum =  pdf.numPages; | ||||
|         var pdfContainer = document.getElementById('pdf-d'); | ||||
|  | @ -678,7 +693,6 @@ | |||
|         pdfContainer.appendChild(pdfnextpagebutton); | ||||
|         var pdfWaitNextPage = setInterval(function(){ | ||||
|             //console.log(document.documentElement.scrollTop + ", " + document.body.scrollHeight); | ||||
|             console.log("next page: " + pagepos + " / " + pagenum); | ||||
|             if (pdfnextpagebutton.style.display=='none') { | ||||
|                 for (var i=pagepos;i<=(pagepos+4<pagenum?pagepos+4:pagenum);i++) { | ||||
|                     var canvasNew = document.createElement('canvas'); | ||||
|  | @ -688,6 +702,7 @@ | |||
|                 } | ||||
|                 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); | ||||
|  | @ -713,6 +728,24 @@ | |||
|             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--> | ||||
| <!--IsFileEnd--> | ||||
| <!--IsFolderStart--> | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| <!DOCTYPE html> | ||||
| <html lang="zh-CN"> | ||||
|   <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.gstatic.com" /> | ||||
| <meta charset="utf-8" /> | ||||
|  | @ -15,8 +15,13 @@ | |||
|   content="width=device-width, initial-scale=1.0,maximum-scale=1.0, user-scalable=no" | ||||
| /> | ||||
| <title><!--Title--></title> | ||||
| <<<<<<< HEAD | ||||
| <meta name="description" content="gd1214b's OneManager" /> | ||||
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/186526/renexmoe-cdn/css/app.min.css"><meta name="theme-color" content="#fff" /> | ||||
| ======= | ||||
| <meta name="description" content="A Onemanager-PHP site with Theme-renexmoe" /> | ||||
| <link rel="stylesheet" href="https://fastly.jsdelivr.net/gh/186526/renexmoe-cdn@v1.3/css/app.css"><meta name="theme-color" content="#fff" /> | ||||
| >>>>>>> 94f780963b612b2f91ec8f92939e9382b1271823 | ||||
| <!--BackgroundStart--> | ||||
| <style> | ||||
|   body { | ||||
|  | @ -510,6 +515,7 @@ | |||
|   { "music":"audiotrack", "video":"ondemand_video", "img":"image", | ||||
|   "pdf":"picture_as_pdf", "default":"insert_drive_file"} | ||||
|   <!--IconValuesEnd--> | ||||
| <<<<<<< HEAD | ||||
|   <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> | ||||
|  | @ -517,4 +523,7 @@ | |||
|   <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> | ||||
| >>>>>>> 94f780963b612b2f91ec8f92939e9382b1271823 | ||||
| </html> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 gd1214b
						gd1214b