pull/610/head
			
			
		
		
						commit
						076503a692
					
				
							
								
								
									
										84
									
								
								common.php
								
								
								
								
							
							
						
						
									
										84
									
								
								common.php
								
								
								
								
							|  | @ -42,6 +42,7 @@ $EnvConfigs = [ | ||||||
|     'globalHeadMdUrl'   => 0b011, |     'globalHeadMdUrl'   => 0b011, | ||||||
|     'globalReadmeMdUrl' => 0b011, |     'globalReadmeMdUrl' => 0b011, | ||||||
|     'globalFootOmfUrl'  => 0b011, |     'globalFootOmfUrl'  => 0b011, | ||||||
|  |     'bcmathUrl'         => 0b011, | ||||||
| 
 | 
 | ||||||
|     'Driver'            => 0b100, |     'Driver'            => 0b100, | ||||||
|     'client_id'         => 0b100, |     'client_id'         => 0b100, | ||||||
|  | @ -56,6 +57,7 @@ $EnvConfigs = [ | ||||||
|     'activeLimit'       => 0b100, |     'activeLimit'       => 0b100, | ||||||
|     'driveId'           => 0b100, |     'driveId'           => 0b100, | ||||||
| 
 | 
 | ||||||
|  |     'diskDisplay'      => 0b110, | ||||||
|     'diskname'          => 0b111, |     'diskname'          => 0b111, | ||||||
|     'diskDescription'   => 0b111, |     'diskDescription'   => 0b111, | ||||||
|     'domain_path'       => 0b111, |     'domain_path'       => 0b111, | ||||||
|  | @ -272,7 +274,7 @@ function main($path) | ||||||
|             $files['type'] = 'folder'; |             $files['type'] = 'folder'; | ||||||
|             $files['childcount'] = count($disktags); |             $files['childcount'] = count($disktags); | ||||||
|             $files['showname'] = 'root'; |             $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]['type'] = 'folder'; | ||||||
|                 $files['list'][$disktag]['name'] = $disktag; |                 $files['list'][$disktag]['name'] = $disktag; | ||||||
|                 $files['list'][$disktag]['showname'] = getConfig('diskname', $disktag); |                 $files['list'][$disktag]['showname'] = getConfig('diskname', $disktag); | ||||||
|  | @ -286,7 +288,7 @@ function main($path) | ||||||
|             $_SERVER['disktag'] = splitfirst( substr(path_format($path), 1), '/' )[0]; |             $_SERVER['disktag'] = splitfirst( substr(path_format($path), 1), '/' )[0]; | ||||||
|             //$pos = strpos($path, '/');
 |             //$pos = strpos($path, '/');
 | ||||||
|             //if ($pos>1) $_SERVER['disktag'] = substr($path, 0, $pos);
 |             //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); |                 $tmp = path_format($_SERVER['base_path'] . '/' . $disktags[0] . '/' . $path); | ||||||
|                 if (!!$_GET) { |                 if (!!$_GET) { | ||||||
|                     $tmp .= '?'; |                     $tmp .= '?'; | ||||||
|  | @ -320,12 +322,13 @@ function main($path) | ||||||
|         //error_log1($_SERVER['REQUEST_METHOD']);
 |         //error_log1($_SERVER['REQUEST_METHOD']);
 | ||||||
|         if ($_GET['action']=='del_upload_cache') { |         if ($_GET['action']=='del_upload_cache') { | ||||||
|             // del '.tmp' without login. 无需登录即可删除.tmp后缀文件
 |             // 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.
 |             savecache('path_' . $path1, '', $_SERVER['disktag'], 1); // clear cache.
 | ||||||
|             return $drive->del_upload_cache($path); |             return $drive->del_upload_cache($path); | ||||||
|         } |         } | ||||||
|  |          | ||||||
|         if ($_GET['action']=='upbigfile') { |         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['admin']) { | ||||||
|                 if (!$_SERVER['is_guestup_path']) return output('Not_Guest_Upload_Folder', 400); |                 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($_GET['upbigfilename'], '../')!==false) return output('Not_Allow_Cross_Path', 400); | ||||||
|  | @ -334,7 +337,20 @@ function main($path) | ||||||
|             return $drive->bigfileupload($path1); |             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']) { |     if ($_SERVER['admin']) { | ||||||
|         $tmp = adminoperate($path); |         $tmp = adminoperate($path); | ||||||
|         if ($tmp['statusCode'] > 0) { |         if ($tmp['statusCode'] > 0) { | ||||||
|  | @ -385,6 +401,7 @@ function main($path) | ||||||
|     } else { |     } else { | ||||||
|         $files = $drive->list_files($path1); |         $files = $drive->list_files($path1); | ||||||
|     } |     } | ||||||
|  |     //echo "<pre>" . json_encode($files, 448) . "</pre>";
 | ||||||
|     //if ($path!=='') 
 |     //if ($path!=='') 
 | ||||||
|     if ( $files['type']=='folder' && substr($path, -1)!=='/' ) { |     if ( $files['type']=='folder' && substr($path, -1)!=='/' ) { | ||||||
|         $tmp = path_format($_SERVER['base_disk_path'] . $path . '/'); |         $tmp = path_format($_SERVER['base_disk_path'] . $path . '/'); | ||||||
|  | @ -446,26 +463,34 @@ function main($path) | ||||||
|                 $fileConduitSize = getConfig('fileConduitSize', $_SERVER['disktag']); |                 $fileConduitSize = getConfig('fileConduitSize', $_SERVER['disktag']); | ||||||
|                 $fileConduitCacheTime = getConfig('fileConduitCacheTime', $_SERVER['disktag']); |                 $fileConduitCacheTime = getConfig('fileConduitCacheTime', $_SERVER['disktag']); | ||||||
|                 if (!!$fileConduitSize || !!$fileConduitCacheTime) { |                 if (!!$fileConduitSize || !!$fileConduitCacheTime) { | ||||||
|                     if ($fileConduitSize>1) $fileConduitSize *= 1024*1024; |                     if ($fileConduitSize>0) $fileConduitSize *= 1024*1024; | ||||||
|                     else $fileConduitSize = 1024*1024; |                     else $fileConduitSize = 1024*1024; | ||||||
|                     if ($fileConduitCacheTime>1) $fileConduitCacheTime *= 3600; |                     if ($fileConduitCacheTime>0) $fileConduitCacheTime *= 3600; | ||||||
|                     else $fileConduitCacheTime = 3600; |                     else $fileConduitCacheTime = 3600; | ||||||
|                     /*if ($_SERVER['HTTP_RANGE']!='') { |                     /*if ($_SERVER['HTTP_RANGE']!='') { | ||||||
|                         $header['Range'] = $_SERVER['HTTP_RANGE']; |                         $header['Range'] = $_SERVER['HTTP_RANGE']; | ||||||
|  |                          | ||||||
|                         $response = curl('GET', $files['url'], '', $header, 1); |                         $response = curl('GET', $files['url'], '', $header, 1); | ||||||
|                         //return output($header['Range'] . json_encode($response['returnhead']));
 |                         //return output($header['Range'] . json_encode($response['returnhead']));
 | ||||||
|                         return output( |                         return output( | ||||||
|                             $response['body'], |                             $response['body'], | ||||||
|                             $response['stat'], |                             $response['stat'], | ||||||
|                             //$response['returnhead'],
 |                             $response['returnhead'], | ||||||
|                             ['Content-Type' => $files['mime'], 'Cache-Control' => 'max-age=' . $fileConduitCacheTime], |                             //['Accept-Ranges' => 'bytes', 'Range' => $response['returnhead']['Range'], 'Content-Type' => $files['mime'], 'Cache-Control' => 'max-age=' . $fileConduitCacheTime],
 | ||||||
|                             false |                             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( |                     if ($files['size']<$fileConduitSize) return output( | ||||||
|                         base64_encode(file_get_contents($files['url'])), |                         base64_encode(file_get_contents($files['url'])), | ||||||
|                         200, |                         200, | ||||||
|                         [ |                         [ | ||||||
|  |                             'Accept-Ranges' => 'bytes', | ||||||
|  |                             //'access-control-allow-origin' => '*',
 | ||||||
|  |                             //'access-control-expose-headers' => 'Content-Length, WWW-Authenticate, Location, Accept-Ranges',
 | ||||||
|                             'Content-Type' => $files['mime'], |                             'Content-Type' => $files['mime'], | ||||||
|                             'Cache-Control' => 'max-age=' . $fileConduitCacheTime, |                             'Cache-Control' => 'max-age=' . $fileConduitCacheTime, | ||||||
|                             //'Cache-Control' => 'max-age=0',
 |                             //'Cache-Control' => 'max-age=0',
 | ||||||
|  | @ -473,6 +498,7 @@ function main($path) | ||||||
|                         ],  |                         ],  | ||||||
|                         true |                         true | ||||||
|                     ); |                     ); | ||||||
|  |                     //if ($files['size']<$fileConduitSize) return $drive->ConduitDown($files['url'], $files['time'], $fileConduitCacheTime);
 | ||||||
|                 } |                 } | ||||||
|                 if ($_SERVER['HTTP_RANGE']!='') $header['Range'] = $_SERVER['HTTP_RANGE']; |                 if ($_SERVER['HTTP_RANGE']!='') $header['Range'] = $_SERVER['HTTP_RANGE']; | ||||||
|                 $header['Location'] = $url; |                 $header['Location'] = $url; | ||||||
|  | @ -490,12 +516,13 @@ function main($path) | ||||||
|         return render_list($path, $files); |         return render_list($path, $files); | ||||||
|     } else { |     } else { | ||||||
|         if (!isset($files['error'])) { |         if (!isset($files['error'])) { | ||||||
|             if (is_array($files)) $files['error']['message'] = json_encode($files, JSON_PRETTY_PRINT); |             if (is_array($files)) { | ||||||
|             else $files['error']['message'] = $files; |                 $files['error']['message'] = json_encode($files, JSON_PRETTY_PRINT); | ||||||
|                 $files['error']['code'] = 'unknownError'; |                 $files['error']['code'] = 'unknownError'; | ||||||
|                 $files['error']['stat'] = 500; |                 $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']); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -869,7 +896,9 @@ function curl($method, $url, $data = '', $headers = [], $returnheader = 0, $loca | ||||||
|     if ($location) curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); |     if ($location) curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); | ||||||
|     //$response['body'] = curl_exec($ch);
 |     //$response['body'] = curl_exec($ch);
 | ||||||
|     if ($returnheader) { |     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;
 |         //echo "HEAD:" . $returnhead;
 | ||||||
|         foreach (explode("\r\n", $returnhead) as $head) { |         foreach (explode("\r\n", $returnhead) as $head) { | ||||||
|             $tmp = explode(': ', $head); |             $tmp = explode(': ', $head); | ||||||
|  | @ -1071,7 +1100,7 @@ function needUpdate() | ||||||
| function output($body, $statusCode = 200, $headers = ['Content-Type' => 'text/html'], $isBase64Encoded = false) | function output($body, $statusCode = 200, $headers = ['Content-Type' => 'text/html'], $isBase64Encoded = false) | ||||||
| { | { | ||||||
|     if (isset($_SERVER['Set-Cookie'])) $headers['Set-Cookie'] = $_SERVER['Set-Cookie']; |     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['Referrer-Policy'] = 'same-origin';
 | ||||||
|     //$headers['X-Frame-Options'] = 'sameorigin';
 |     //$headers['X-Frame-Options'] = 'sameorigin';
 | ||||||
|     return [ |     return [ | ||||||
|  | @ -1208,7 +1237,7 @@ function adminform($name = '', $pass = '', $storage = '', $path = '') | ||||||
| function adminoperate($path) | function adminoperate($path) | ||||||
| { | { | ||||||
|     global $drive; |     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); |     $path1 = path_format($_SERVER['list_path'] . '/' . $path); | ||||||
|     if (substr($path1, -1)=='/') $path1=substr($path1, 0, -1); |     if (substr($path1, -1)=='/') $path1=substr($path1, 0, -1); | ||||||
|     $tmpget = $_GET; |     $tmpget = $_GET; | ||||||
|  | @ -1523,7 +1552,7 @@ function EnvOpt($needUpdate = 0) | ||||||
|         $html .= ' |         $html .= ' | ||||||
| OneManager DIR: ' . __DIR__ . ' | OneManager DIR: ' . __DIR__ . ' | ||||||
| <form name="form1" method="POST" action=""> | <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"> |     <input type="submit" value="post"> | ||||||
| </form>'; | </form>'; | ||||||
|         if ($_POST['cmd']!='') { |         if ($_POST['cmd']!='') { | ||||||
|  | @ -1670,12 +1699,27 @@ output: | ||||||
|     <input name="_admin" type="hidden" value=""> |     <input name="_admin" type="hidden" value=""> | ||||||
|     <input type="hidden" name="disk" value="' . $disktag . '">'; |     <input type="hidden" name="disk" value="' . $disktag . '">'; | ||||||
|             foreach ($EnvConfigs as $key => $val) if (isInnerEnv($key) && isShowedEnv($key)) { |             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 .= ' |                     $frame .= ' | ||||||
|     <tr> |     <tr> | ||||||
|         <td><label>' . $key . '</label></td> |         <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> |         <td width=100%><input type="text" name="' . $key . '" value="' . getConfig($key, $disktag) . '" placeholder="' . getconstStr('EnvironmentsDescription')[$key] . '" style="width:100%"></td> | ||||||
|     </tr>'; |     </tr>'; | ||||||
|                 } |                 } | ||||||
|  |             } | ||||||
|             $frame .= ' |             $frame .= ' | ||||||
|     <tr><td></td><td><input type="submit" name="submit1" value="' . getconstStr('Setup') . '"></td></tr> |     <tr><td></td><td><input type="submit" name="submit1" value="' . getconstStr('Setup') . '"></td></tr> | ||||||
| </form>'; | </form>'; | ||||||
|  | @ -2159,7 +2203,13 @@ function render_list($path = '', $files = []) | ||||||
|     $p_path=''; |     $p_path=''; | ||||||
|     if ($path1 !== '/') { |     if ($path1 !== '/') { | ||||||
|         if ($files['type']=='file') { |         if ($files['type']=='file') { | ||||||
|  |             if (isset($files['name'])) { | ||||||
|                 $pretitle = str_replace('&','&', $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; |             $n_path = $pretitle; | ||||||
|             $tmp = splitlast(splitlast($path1,'/')[0],'/'); |             $tmp = splitlast(splitlast($path1,'/')[0],'/'); | ||||||
|             if ($tmp[1]=='') { |             if ($tmp[1]=='') { | ||||||
|  | @ -2928,7 +2978,7 @@ function render_list($path = '', $files = []) | ||||||
|             $MultiDiskArea = $tmp[0]; |             $MultiDiskArea = $tmp[0]; | ||||||
|             $tmp = splitfirst($tmp[1], '<!--MultiDisksEnd-->'); |             $tmp = splitfirst($tmp[1], '<!--MultiDisksEnd-->'); | ||||||
|             $MultiDisks = $tmp[0]; |             $MultiDisks = $tmp[0]; | ||||||
|             foreach ($disktags as $disk) { |             foreach ($disktags as $disk) if ($_SERVER['admin']||getConfig('diskDisplay', $disk)=='') { | ||||||
|                 $diskname = getConfig('diskname', $disk); |                 $diskname = getConfig('diskname', $disk); | ||||||
|                 if ($diskname=='') $diskname = $disk; |                 if ($diskname=='') $diskname = $disk; | ||||||
|                 $MultiDisksStr = str_replace('<!--MultiDisksUrl-->', path_format($_SERVER['base_path'].'/'.$disk.'/'), $MultiDisks); |                 $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']); |         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));
 | ||||||
|  | @ -329,47 +328,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
 | ||||||
|  |             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["content-type"] = "application/json; charset=utf-8"; | ||||||
|             $header['authorization'] = 'Bearer ' . $this->access_token; |             $header['authorization'] = 'Bearer ' . $this->access_token; | ||||||
| 
 |  | ||||||
|             $data['check_name_mode'] = 'auto_rename'; // ignore, auto_rename, refuse.
 |             $data['check_name_mode'] = 'auto_rename'; // ignore, auto_rename, refuse.
 | ||||||
|             $data['content_hash'] = $oldfile['content_hash']; |             $data['content_hash'] = $oldfile['content_hash']; | ||||||
|             $data['content_hash_name'] = 'sha1'; |             $data['content_hash_name'] = 'sha1'; | ||||||
|         $data['content_type'] = $oldfile['content_type']; |  | ||||||
|             $data['drive_id'] = $this->driveId; |             $data['drive_id'] = $this->driveId; | ||||||
|         $data['ignoreError'] = false; |  | ||||||
|             $data['name'] = $oldfile['name']; |             $data['name'] = $oldfile['name']; | ||||||
|             $data['parent_file_id'] = $oldfile['parent_file_id']; |             $data['parent_file_id'] = $oldfile['parent_file_id']; | ||||||
|             $data['part_info_list'][0]['part_number'] = 1; |             $data['part_info_list'][0]['part_number'] = 1; | ||||||
|  |             $data['proof_code'] = $proof_code; | ||||||
|  |             $data['proof_version'] = 'v1'; | ||||||
|             $data['size'] = $oldfile['size']; |             $data['size'] = $oldfile['size']; | ||||||
|             $data['type'] = 'file'; |             $data['type'] = 'file'; | ||||||
| 
 |  | ||||||
|             $result = curl('POST', $url, json_encode($data), $header); |             $result = curl('POST', $url, json_encode($data), $header); | ||||||
| 
 |             /*if ($result['stat']==201) { | ||||||
|         if ($result['stat']==201) { |  | ||||||
|             //error_log1('1,url:' . $url .' res:' . json_encode($result));
 |  | ||||||
|                 $res = json_decode($result['body'], true); |                 $res = json_decode($result['body'], true); | ||||||
|  |                 if ($res['rapid_upload']) return output('rapid upload', 200); | ||||||
|                 $url = $res['part_info_list'][0]['upload_url']; |                 $url = $res['part_info_list'][0]['upload_url']; | ||||||
|                 if (!$url) { // 无url,应该算秒传
 |                 if (!$url) { // 无url,应该算秒传
 | ||||||
|                     return output('no up url', 200); |                     return output('no up url', 200); | ||||||
|                 } else { |                 } else { | ||||||
|                     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']); | ||||||
|                 } |                 } | ||||||
|             /*$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));
 |             //error_log1('2,url:' . $url .' res:' . json_encode($result));
 | ||||||
|             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 { | ||||||
|  |             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'], '/'); | ||||||
|  | @ -564,6 +576,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['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) |     public function bigfileupload($path) | ||||||
|     { |     { | ||||||
|         if (isset($_POST['uploadid'])) { |         if (isset($_POST['uploadid'])) { | ||||||
|  | @ -582,7 +648,6 @@ class Aliyundrive { | ||||||
|                     $i = $_POST['filesize']; |                     $i = $_POST['filesize']; | ||||||
|                     //$o = $i ? bcmod($r, $i) : 0;
 |                     //$o = $i ? bcmod($r, $i) : 0;
 | ||||||
|                     $o = bcmod($r, $i); |                     $o = bcmod($r, $i); | ||||||
|                     //return output(hexdec( substr(md5($this->access_token), 0, 16) ) . ' , ' . $r . ' / ' . $i . ' = ' . $o, 200);
 |  | ||||||
|                     return output($o, 200); |                     return output($o, 200); | ||||||
|                 }*/ |                 }*/ | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  | @ -973,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); | ||||||
|  |  | ||||||
|  | @ -67,7 +67,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;
 | ||||||
|  |  | ||||||
|  | @ -546,3 +546,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']); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -536,3 +536,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); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -902,3 +902,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); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -391,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']); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -662,3 +662,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); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -705,3 +705,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); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -316,7 +316,7 @@ 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.5.1"; | ||||||
|     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); | ||||||
|  | @ -432,7 +432,7 @@ function WaitFunction($deployid = '') { | ||||||
|     } |     } | ||||||
|     $header["Authorization"] = "Bearer " . getConfig('APIKey'); |     $header["Authorization"] = "Bearer " . getConfig('APIKey'); | ||||||
|     $header["Content-Type"] = "application/json"; |     $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); |     $response = curl("GET", $url, "", $header); | ||||||
|     if ($response['stat']==200) { |     if ($response['stat']==200) { | ||||||
|         $result = json_decode($response['body'], true); |         $result = json_decode($response['body'], true); | ||||||
|  | @ -489,3 +489,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']); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -665,6 +665,21 @@ | ||||||
|         disableAutoFetch: 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'); | ||||||
|  | @ -678,7 +693,6 @@ | ||||||
|         pdfContainer.appendChild(pdfnextpagebutton); |         pdfContainer.appendChild(pdfnextpagebutton); | ||||||
|         var pdfWaitNextPage = setInterval(function(){ |         var pdfWaitNextPage = setInterval(function(){ | ||||||
|             //console.log(document.documentElement.scrollTop + ", " + document.body.scrollHeight); |             //console.log(document.documentElement.scrollTop + ", " + document.body.scrollHeight); | ||||||
|             console.log("next page: " + pagepos + " / " + pagenum); |  | ||||||
|             if (pdfnextpagebutton.style.display=='none') { |             if (pdfnextpagebutton.style.display=='none') { | ||||||
|                 for (var i=pagepos;i<=(pagepos+4<pagenum?pagepos+4:pagenum);i++) { |                 for (var i=pagepos;i<=(pagepos+4<pagenum?pagepos+4:pagenum);i++) { | ||||||
|                     var canvasNew = document.createElement('canvas'); |                     var canvasNew = document.createElement('canvas'); | ||||||
|  | @ -688,6 +702,7 @@ | ||||||
|                 } |                 } | ||||||
|                 pagepos = i; |                 pagepos = i; | ||||||
|                 if (pagepos<pagenum) { |                 if (pagepos<pagenum) { | ||||||
|  |                     console.log("next page: " + pagepos + " / " + pagenum); | ||||||
|                     pdfnextpagebutton.innerText = 'Load page ' + pagepos + '-' + (pagepos+4<pagenum?pagepos+4:pagenum) + ' (' + pagenum + ')'; |                     pdfnextpagebutton.innerText = 'Load page ' + pagepos + '-' + (pagepos+4<pagenum?pagepos+4:pagenum) + ' (' + pagenum + ')'; | ||||||
|                     pdfnextpagebutton.style.display =''; |                     pdfnextpagebutton.style.display =''; | ||||||
|                     pdfContainer.appendChild(pdfnextpagebutton); |                     pdfContainer.appendChild(pdfnextpagebutton); | ||||||
|  | @ -713,6 +728,24 @@ | ||||||
|             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--> | ||||||
|  |  | ||||||
|  | @ -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" /> | ||||||
|  | @ -15,8 +15,13 @@ | ||||||
|   content="width=device-width, initial-scale=1.0,maximum-scale=1.0, user-scalable=no" |   content="width=device-width, initial-scale=1.0,maximum-scale=1.0, user-scalable=no" | ||||||
| /> | /> | ||||||
| <title><!--Title--></title> | <title><!--Title--></title> | ||||||
|  | <<<<<<< HEAD | ||||||
| <meta name="description" content="gd1214b's OneManager" /> | <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" /> | <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--> | <!--BackgroundStart--> | ||||||
| <style> | <style> | ||||||
|   body { |   body { | ||||||
|  | @ -510,6 +515,7 @@ | ||||||
|   { "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--> | ||||||
|  | <<<<<<< 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@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@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@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@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/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://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> | </html> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 gd1214b
						gd1214b