Merge pull request #77 from qkqpttgf/master

pull
pull/98/head
Mr.Lin 2020-06-23 22:17:36 +08:00 committed by GitHub
commit 72db4c0ac0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 1553 additions and 248 deletions

View File

@ -5,11 +5,14 @@ $Base64Env = [
//'Region', // used in SCF. //'Region', // used in SCF.
//'SecretId', // used in SCF. //'SecretId', // used in SCF.
//'SecretKey', // used in SCF. //'SecretKey', // used in SCF.
//'AccessKeyID', // used in FC.
//'AccessKeySecret', // used in FC.
//'admin', //'admin',
//'adminloginpage', //'adminloginpage',
'background', 'background',
'diskname', 'diskname',
//'disableShowThumb', //'disableShowThumb',
//'disableChangeTheme',
//'disktag', //'disktag',
//'downloadencrypt', //'downloadencrypt',
//'function_name', // used in heroku. //'function_name', // used in heroku.
@ -33,6 +36,7 @@ $Base64Env = [
//'sharecookie', //'sharecookie',
'shareapiurl', 'shareapiurl',
//'siteid', //'siteid',
'domainforproxy',
'public_path', 'public_path',
//'refresh_token', //'refresh_token',
//'token_expires', //'token_expires',
@ -43,11 +47,14 @@ $CommonEnv = [
'Region', // used in SCF. 'Region', // used in SCF.
'SecretId', // used in SCF. 'SecretId', // used in SCF.
'SecretKey', // used in SCF. 'SecretKey', // used in SCF.
'AccessKeyID', // used in FC.
'AccessKeySecret', // used in FC.
'admin', 'admin',
'adminloginpage', 'adminloginpage',
'background', 'background',
'disktag', 'disktag',
'disableShowThumb', 'disableShowThumb',
'disableChangeTheme',
'function_name', // used in heroku. 'function_name', // used in heroku.
'hideFunctionalityFile', 'hideFunctionalityFile',
'timezone', 'timezone',
@ -64,11 +71,14 @@ $ShowedCommonEnv = [
//'Region', // used in SCF. //'Region', // used in SCF.
//'SecretId', // used in SCF. //'SecretId', // used in SCF.
//'SecretKey', // used in SCF. //'SecretKey', // used in SCF.
//'AccessKeyID', // used in FC.
//'AccessKeySecret', // used in FC.
//'admin', //'admin',
'adminloginpage', 'adminloginpage',
'background', 'background',
//'disktag', //'disktag',
'disableShowThumb', 'disableShowThumb',
'disableChangeTheme',
//'function_name', // used in heroku. //'function_name', // used in heroku.
'hideFunctionalityFile', 'hideFunctionalityFile',
'timezone', 'timezone',
@ -95,6 +105,7 @@ $InnerEnv = [
'shareurl', 'shareurl',
//'sharecookie', //'sharecookie',
'shareapiurl', 'shareapiurl',
'domainforproxy',
'public_path', 'public_path',
'refresh_token', 'refresh_token',
'token_expires', 'token_expires',
@ -115,6 +126,7 @@ $ShowedInnerEnv = [
//'shareurl', //'shareurl',
//'sharecookie', //'sharecookie',
//'shareapiurl', //'shareapiurl',
'domainforproxy',
'public_path', 'public_path',
//'refresh_token', //'refresh_token',
//'token_expires', //'token_expires',
@ -277,7 +289,8 @@ function main($path)
$oldname = spurlencode($_GET['filename']); $oldname = spurlencode($_GET['filename']);
$pos = strrpos($oldname, '.'); $pos = strrpos($oldname, '.');
if ($pos>0) $ext = strtolower(substr($oldname, $pos)); if ($pos>0) $ext = strtolower(substr($oldname, $pos));
$oldname = path_format(path_format($_SERVER['list_path'] . path_format($path)) . '/' . $oldname . '.scfupload' ); //$oldname = path_format(path_format($_SERVER['list_path'] . path_format($path)) . '/' . $oldname . '.scfupload' );
$oldname = path_format(path_format($_SERVER['list_path'] . path_format($path)) . '/' . $oldname);
$data = '{"name":"' . $_GET['filemd5'] . $ext . '"}'; $data = '{"name":"' . $_GET['filemd5'] . $ext . '"}';
//echo $oldname .'<br>'. $data; //echo $oldname .'<br>'. $data;
$tmp = MSAPI('PATCH',$oldname,$data,$_SERVER['access_token']); $tmp = MSAPI('PATCH',$oldname,$data,$_SERVER['access_token']);
@ -316,6 +329,10 @@ function main($path)
$files = list_files($path); $files = list_files($path);
//echo json_encode(array_keys($files['children']), JSON_PRETTY_PRINT); //echo json_encode(array_keys($files['children']), JSON_PRETTY_PRINT);
if ($_GET['json']) {
// return a json
return files_json($files);
}
if (isset($_GET['random'])&&$_GET['random']!=='') { if (isset($_GET['random'])&&$_GET['random']!=='') {
if ($_SERVER['ishidden']<4) { if ($_SERVER['ishidden']<4) {
$tmp = []; $tmp = [];
@ -324,14 +341,29 @@ function main($path)
} }
$tmp = array_values($tmp); $tmp = array_values($tmp);
if (count($tmp)>0) { if (count($tmp)>0) {
if (isset($_GET['url'])) return output($tmp[rand(0,count($tmp)-1)], 200); $url = $tmp[rand(0,count($tmp)-1)];
return output('', 302, [ 'Location' => $tmp[rand(0,count($tmp)-1)] ]); if (isset($_GET['url'])) return output($url, 200);
$domainforproxy = '';
$domainforproxy = getConfig('domainforproxy');
if ($domainforproxy!='') {
$url = proxy_replace_domain($url, $domainforproxy);
}
return output('', 302, [ 'Location' => $url ]);
} else return output('',404); } else return output('',404);
} else return output('',401); } else return output('',401);
} }
if (isset($files['file']) && !isset($_GET['preview'])) { if (isset($files['file']) && !isset($_GET['preview'])) {
// is file && not preview mode // is file && not preview mode
if ( $_SERVER['ishidden']<4 || (!!getConfig('downloadencrypt')&&$files['name']!=getConfig('passfile')) ) return output('', 302, [ 'Location' => $files[$_SERVER['DownurlStrName']] ]); if ( $_SERVER['ishidden']<4 || (!!getConfig('downloadencrypt')&&$files['name']!=getConfig('passfile')) ) {
$url = $files[$_SERVER['DownurlStrName']];
$domainforproxy = '';
$domainforproxy = getConfig('domainforproxy');
if ($domainforproxy!='') {
$url = proxy_replace_domain($url, $domainforproxy);
}
if ( strtolower(splitlast($files['name'],'.')[1])=='html' ) return output($files['content']['body'], $files['content']['stat']);
else return output('', 302, [ 'Location' => $url ]);
}
} }
if ( isset($files['folder']) || isset($files['file']) ) { if ( isset($files['folder']) || isset($files['file']) ) {
return render_list($path, $files); return render_list($path, $files);
@ -346,6 +378,54 @@ function main($path)
} }
} }
function proxy_replace_domain($url, $domainforproxy)
{
$tmp = splitfirst($url, '//');
$http = $tmp[0];
$tmp = splitfirst($tmp[1], '/');
$domain = $tmp[0];
$uri = $tmp[1];
if (substr($domainforproxy, 0, 7)=='http://' || substr($domainforproxy, 0, 8)=='https://') $aim = $domainforproxy;
else $aim = $http . '//' . $domainforproxy;
if (substr($aim, -1)=='/') $aim = substr($aim, 0, -1);
return $aim . '/' . $uri . '&Origindomain=' . $domain;
//$url = str_replace($tmp, $domainforproxy, $url).'&Origindomain='.$tmp;
}
function files_json($files)
{
//$tmp = '';
if (isset($files['file'])) {
$tmp['file']['type'] = 0;
$tmp['file']['id'] = $files['id'];
$tmp['file']['name'] = $files['name'];
$tmp['file']['time'] = $files['lastModifiedDateTime'];
$tmp['file']['size'] = $files['size'];
$tmp['file']['mime'] = $files['file']['mimeType'];
$tmp['file']['url'] = $files[$_SERVER['DownurlStrName']];
$tmp['url'] = $files[$_SERVER['DownurlStrName']];
} elseif (isset($files['folder'])) {
$tmp['list'] = [];
foreach ($files['children'] as $file) {
$tmp1 = null;
$tmp1 = [];
if (isset($file['file'])) {
$tmp1['type'] = 0;
$tmp1['url'] = $file[$_SERVER['DownurlStrName']];
} elseif (isset($file['folder'])) {
$tmp1['type'] = 1;
}
$tmp1['id'] = $file['id'];
$tmp1['name'] = $file['name'];
$tmp1['time'] = $file['lastModifiedDateTime'];
$tmp1['size'] = $file['size'];
$tmp1['mime'] = $file['file']['mimeType'];
array_push($tmp['list'], $tmp1);
}
} else return output('', 404);
return output(json_encode($tmp));
}
function get_access_token($refresh_token) function get_access_token($refresh_token)
{ {
if (getConfig('Drive_ver')=='shareurl') { if (getConfig('Drive_ver')=='shareurl') {
@ -801,8 +881,15 @@ function get_thumbnails_url($path = '/', $location = 0)
} }
} }
if ($thumb_url!='') { if ($thumb_url!='') {
if ($location) return output('', 302, [ 'Location' => $thumb_url ]); if ($location) {
else return output($thumb_url); $url = $thumb_url;
$domainforproxy = '';
$domainforproxy = getConfig('domainforproxy');
if ($domainforproxy!='') {
$url = proxy_replace_domain($url, $domainforproxy);
}
return output('', 302, [ 'Location' => $url ]);
} else return output($thumb_url);
} }
return output('', 404); return output('', 404);
} }
@ -830,7 +917,7 @@ function bigfileupload($path)
$getoldupinfo = json_decode($getoldupinfo_j['body'], true); $getoldupinfo = json_decode($getoldupinfo_j['body'], true);
if ( json_decode( curl_request($getoldupinfo['uploadUrl'])['body'], true)['@odata.context']!='' ) return output($getoldupinfo_j['body'], $getoldupinfo_j['stat']); if ( json_decode( curl_request($getoldupinfo['uploadUrl'])['body'], true)['@odata.context']!='' ) return output($getoldupinfo_j['body'], $getoldupinfo_j['stat']);
} }
if (!$_SERVER['admin']) $filename = spurlencode( $fileinfo['name'] ) . '.scfupload'; //if (!$_SERVER['admin']) $filename = spurlencode( $fileinfo['name'] ) . '.scfupload';
$response=MSAPI('createUploadSession',path_format($path1 . '/' . $filename),'{"item": { "@microsoft.graph.conflictBehavior": "fail" }}',$_SERVER['access_token']); $response=MSAPI('createUploadSession',path_format($path1 . '/' . $filename),'{"item": { "@microsoft.graph.conflictBehavior": "fail" }}',$_SERVER['access_token']);
$responsearry = json_decode($response['body'],true); $responsearry = json_decode($response['body'],true);
if (isset($responsearry['error'])) return output($response['body'], $response['stat']); if (isset($responsearry['error'])) return output($response['body'], $response['stat']);
@ -1540,11 +1627,10 @@ function EnvOpt($needUpdate = 0)
}*/ }*/
$response = setConfigResponse( setConfig($tmp, $_SERVER['disk_oprating']) ); $response = setConfigResponse( setConfig($tmp, $_SERVER['disk_oprating']) );
if (api_error($response)) { if (api_error($response)) {
$html = api_error_msg($response); $html = api_error_msg($response);
$title = 'Error'; $title = 'Error';
} else { } else {
//WaitSCFStat(); //WaitSCFStat();
//sleep(3);
$html .= getconstStr('Success') . '!<br> $html .= getconstStr('Success') . '!<br>
<button onclick="location.href = location.href;">'.getconstStr('Refresh').'</button>'; <button onclick="location.href = location.href;">'.getconstStr('Refresh').'</button>';
$title = getconstStr('Setup'); $title = getconstStr('Setup');
@ -1654,16 +1740,30 @@ function EnvOpt($needUpdate = 0)
} }
$html .= ' $html .= '
<a href="?AddDisk">'.getconstStr('AddDisk').'</a><br><br>'; <a href="?AddDisk">'.getconstStr('AddDisk').'</a><br><br>';
if (!((isset($_SERVER['USER'])&&$_SERVER['USER']==='qcloud')||(isset($_SERVER['HEROKU_APP_DIR'])&&$_SERVER['HEROKU_APP_DIR']==='/app'))) {
$canOneKeyUpate = 0;
if (isset($_SERVER['USER'])&&$_SERVER['USER']==='qcloud') {
$canOneKeyUpate = 1;
} elseif (isset($_SERVER['HEROKU_APP_DIR'])&&$_SERVER['HEROKU_APP_DIR']==='/app') {
$canOneKeyUpate = 1;
} elseif (isset($_SERVER['FC_SERVER_PATH'])&&$_SERVER['FC_SERVER_PATH']==='/var/fc/runtime/php7.2') {
$canOneKeyUpate = 1;
} else {
$tmp = time();
if ( mkdir(''.$tmp, 0777) ) {
rmdir(''.$tmp);
$canOneKeyUpate = 1;
}
}
if (!$canOneKeyUpate) {
$html .= ' $html .= '
'.getconstStr('VPSnotupdate').'<br>'; '.getconstStr('CannotOneKeyUpate').'<br>';
} else { } else {
$html .= ' $html .= '
<form name="updateform" action="" method="post"> <form name="updateform" action="" method="post">
<input type="text" name="auth" placeholder="auth" value="qkqpttgf"> <input type="text" name="auth" size="6" placeholder="auth" value="qkqpttgf">
<input type="text" name="project" placeholder="project" value="OneManager-php"> <input type="text" name="project" size="12" placeholder="project" value="OneManager-php">
<button onclick="querybranchs();return false">'.getconstStr('QueryBranchs').'</button> <button name="QueryBranchs" onclick="querybranchs();return false">'.getconstStr('QueryBranchs').'</button>
<!--<input type="text" name="branch" placeholder="branch" value="master">-->
<select name="branch"> <select name="branch">
<option value="master">master</option> <option value="master">master</option>
</select> </select>
@ -1672,7 +1772,6 @@ function EnvOpt($needUpdate = 0)
<script> <script>
function querybranchs() function querybranchs()
{ {
//alert(document.updateform.auth.value);
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
xhr.open("GET", "https://api.github.com/repos/"+document.updateform.auth.value+"/"+document.updateform.project.value+"/branches"); xhr.open("GET", "https://api.github.com/repos/"+document.updateform.auth.value+"/"+document.updateform.project.value+"/branches");
//xhr.setRequestHeader("User-Agent","qkqpttgf/OneManager"); //xhr.setRequestHeader("User-Agent","qkqpttgf/OneManager");
@ -1682,10 +1781,10 @@ function EnvOpt($needUpdate = 0)
if (xhr.status==200) { if (xhr.status==200) {
document.updateform.branch.options.length=0; document.updateform.branch.options.length=0;
JSON.parse(xhr.responseText).forEach( function (e) { JSON.parse(xhr.responseText).forEach( function (e) {
//alert(e.name);
document.updateform.branch.options.add(new Option(e.name,e.name)); document.updateform.branch.options.add(new Option(e.name,e.name));
if ("master"==e.name) document.updateform.branch.options[document.updateform.branch.options.length-1].selected = true; if ("master"==e.name) document.updateform.branch.options[document.updateform.branch.options.length-1].selected = true;
}); });
document.updateform.QueryBranchs.style.display="none";
} else { } else {
alert(xhr.responseText+"\n"+xhr.status); alert(xhr.responseText+"\n"+xhr.status);
} }
@ -1701,9 +1800,9 @@ function EnvOpt($needUpdate = 0)
$html .= '<div style="position:relative;word-wrap: break-word;"> $html .= '<div style="position:relative;word-wrap: break-word;">
' . str_replace("\r", '<br>',$_SERVER['github_version']) . ' ' . str_replace("\r", '<br>',$_SERVER['github_version']) . '
</div>'; </div>';
} else { }/* else {
$html .= getconstStr('NotNeedUpdate'); $html .= getconstStr('NotNeedUpdate');
} }*/
return message($html, getconstStr('Setup')); return message($html, getconstStr('Setup'));
} }
@ -1761,6 +1860,7 @@ function render_list($path = '', $files = '')
OneManager: An index & manager of Onedrive auth by ysun. OneManager: An index & manager of Onedrive auth by ysun.
Github: https://github.com/qkqpttgf/OneManager-php Github: https://github.com/qkqpttgf/OneManager-php
-->'; -->';
//$authinfo = $path . '<br><pre>' . json_encode($files, JSON_PRETTY_PRINT) . '</pre>';
if (isset($_COOKIE['theme'])&&$_COOKIE['theme']!='') $theme = $_COOKIE['theme']; if (isset($_COOKIE['theme'])&&$_COOKIE['theme']!='') $theme = $_COOKIE['theme'];
@ -1898,46 +1998,6 @@ function render_list($path = '', $files = '')
while (strpos($html, '<!--GuestEnd-->')) $html = str_replace('<!--GuestEnd-->', '', $html); while (strpos($html, '<!--GuestEnd-->')) $html = str_replace('<!--GuestEnd-->', '', $html);
} }
if ($_SERVER['is_guestup_path']&&!$_SERVER['admin']) {
$tmp[1] = 'a';
while ($tmp[1]!='') {
$tmp = splitfirst($html, '<!--IsFileStart-->');
$html = $tmp[0];
$tmp = splitfirst($tmp[1], '<!--IsFileEnd-->');
$html .= $tmp[1];
}
$tmp[1] = 'a';
while ($tmp[1]!='') {
$tmp = splitfirst($html, '<!--IsFolderStart-->');
$html = $tmp[0];
$tmp = splitfirst($tmp[1], '<!--IsFolderEnd-->');
$html .= $tmp[1];
}
while (strpos($html, '<!--EncryptedStart-->')) {
$tmp = splitfirst($html, '<!--EncryptedStart-->');
$html = $tmp[0];
$tmp = splitfirst($tmp[1], '<!--EncryptedEnd-->');
$html .= $tmp[1];
}
while (strpos($html, '<!--GuestUploadStart-->')) {
$html = str_replace('<!--GuestUploadStart-->', '', $html);
$html = str_replace('<!--GuestUploadEnd-->', '', $html);
}
}
if ($_SERVER['is_guestup_path']||( $_SERVER['admin']&&isset($files['folder'])&&$_SERVER['ishidden']<4 )) {
while (strpos($html, '<!--UploadJsStart-->')) {
$html = str_replace('<!--UploadJsStart-->', '', $html);
$html = str_replace('<!--UploadJsEnd-->', '', $html);
}
} else {
$tmp[1] = 'a';
while ($tmp[1]!='') {
$tmp = splitfirst($html, '<!--UploadJsStart-->');
$html = $tmp[0];
$tmp = splitfirst($tmp[1], '<!--UploadJsEnd-->');
$html .= $tmp[1];
}
}
if ($_SERVER['ishidden']==4) { if ($_SERVER['ishidden']==4) {
$tmp[1] = 'a'; $tmp[1] = 'a';
while ($tmp[1]!='') { while ($tmp[1]!='') {
@ -1978,8 +2038,79 @@ function render_list($path = '', $files = '')
$tmp = splitfirst($tmp[1], '<!--GuestUploadEnd-->'); $tmp = splitfirst($tmp[1], '<!--GuestUploadEnd-->');
$html .= $tmp[1]; $html .= $tmp[1];
} }
while (strpos($html, '<!--IsNotHiddenStart-->')) {
$tmp = splitfirst($html, '<!--IsNotHiddenStart-->');
$html = $tmp[0];
$tmp = splitfirst($tmp[1], '<!--IsNotHiddenEnd-->');
$html .= $tmp[1];
}
} else {
while (strpos($html, '<!--EncryptedStart-->')) {
$tmp = splitfirst($html, '<!--EncryptedStart-->');
$html = $tmp[0];
$tmp = splitfirst($tmp[1], '<!--EncryptedEnd-->');
$html .= $tmp[1];
}
while (strpos($html, '<!--IsNotHiddenStart-->')) {
$html = str_replace('<!--IsNotHiddenStart-->', '', $html);
$html = str_replace('<!--IsNotHiddenEnd-->', '', $html);
}
} }
while (strpos($html, '<!--constStr@Download-->')) $html = str_replace('<!--constStr@Download-->', getconstStr('Download'), $html);
if ($_SERVER['is_guestup_path']&&!$_SERVER['admin']) {
$tmp[1] = 'a';
while ($tmp[1]!='') {
$tmp = splitfirst($html, '<!--IsFileStart-->');
$html = $tmp[0];
$tmp = splitfirst($tmp[1], '<!--IsFileEnd-->');
$html .= $tmp[1];
}
$tmp[1] = 'a';
while ($tmp[1]!='') {
$tmp = splitfirst($html, '<!--IsFolderStart-->');
$html = $tmp[0];
$tmp = splitfirst($tmp[1], '<!--IsFolderEnd-->');
$html .= $tmp[1];
}
while (strpos($html, '<!--GuestUploadStart-->')) {
$html = str_replace('<!--GuestUploadStart-->', '', $html);
$html = str_replace('<!--GuestUploadEnd-->', '', $html);
}
while (strpos($html, '<!--IsNotHiddenStart-->')) {
$tmp = splitfirst($html, '<!--IsNotHiddenStart-->');
$html = $tmp[0];
$tmp = splitfirst($tmp[1], '<!--IsNotHiddenEnd-->');
$html .= $tmp[1];
}
} else {
while (strpos($html, '<!--GuestUploadStart-->')) {
$tmp = splitfirst($html, '<!--GuestUploadStart-->');
$html = $tmp[0];
$tmp = splitfirst($tmp[1], '<!--GuestUploadEnd-->');
$html .= $tmp[1];
}
while (strpos($html, '<!--IsNotHiddenStart-->')) {
$html = str_replace('<!--IsNotHiddenStart-->', '', $html);
$html = str_replace('<!--IsNotHiddenEnd-->', '', $html);
}
}
if ($_SERVER['is_guestup_path']||( $_SERVER['admin']&&isset($files['folder'])&&$_SERVER['ishidden']<4 )) {
while (strpos($html, '<!--UploadJsStart-->')) {
while (strpos($html, '<!--UploadJsStart-->')) $html = str_replace('<!--UploadJsStart-->', '', $html);
while (strpos($html, '<!--UploadJsEnd-->')) $html = str_replace('<!--UploadJsEnd-->', '', $html);
while (strpos($html, '<!--constStr@Calculate-->')) $html = str_replace('<!--constStr@Calculate-->', getconstStr('Calculate'), $html);
}
} else {
$tmp[1] = 'a';
while ($tmp[1]!='') {
$tmp = splitfirst($html, '<!--UploadJsStart-->');
$html = $tmp[0];
$tmp = splitfirst($tmp[1], '<!--UploadJsEnd-->');
$html .= $tmp[1];
}
}
if (isset($files['children'])) { if (isset($files['children'])) {
while (strpos($html, '<!--GuestUploadStart-->')) { while (strpos($html, '<!--GuestUploadStart-->')) {
$tmp = splitfirst($html, '<!--GuestUploadStart-->'); $tmp = splitfirst($html, '<!--GuestUploadStart-->');
@ -2039,6 +2170,10 @@ function render_list($path = '', $files = '')
$filenum++; $filenum++;
$ext = strtolower(substr($file['name'], strrpos($file['name'], '.') + 1)); $ext = strtolower(substr($file['name'], strrpos($file['name'], '.') + 1));
$FolderListStr = str_replace('<!--FileEncodeReplaceUrl-->', path_format($_SERVER['base_disk_path'] . '/' . $path . '/' . encode_str_replace($file['name'])), $FolderList); $FolderListStr = str_replace('<!--FileEncodeReplaceUrl-->', path_format($_SERVER['base_disk_path'] . '/' . $path . '/' . encode_str_replace($file['name'])), $FolderList);
$FolderListStr = str_replace('<!--FileExt-->', $ext, $FolderListStr);
if (in_array($ext, $exts['music'])) $FolderListStr = str_replace('<!--FileExtType-->', 'audio', $FolderListStr);
elseif (in_array($ext, $exts['video'])) $FolderListStr = str_replace('<!--FileExtType-->', 'iframe', $FolderListStr);
else $FolderListStr = str_replace('<!--FileExtType-->', '', $FolderListStr);
$FolderListStr = str_replace('<!--FileEncodeReplaceName-->', str_replace('&','&amp;', $file['name']), $FolderListStr); $FolderListStr = str_replace('<!--FileEncodeReplaceName-->', str_replace('&','&amp;', $file['name']), $FolderListStr);
//$FolderListStr = str_replace('<!--FileEncodeReplaceUrl-->', path_format($_SERVER['base_disk_path'] . '/' . $path . '/' . str_replace('&','&amp;', $file['name'])), $FolderListStr); //$FolderListStr = str_replace('<!--FileEncodeReplaceUrl-->', path_format($_SERVER['base_disk_path'] . '/' . $path . '/' . str_replace('&','&amp;', $file['name'])), $FolderListStr);
$FolderListStr = str_replace('<!--lastModifiedDateTime-->', time_format($file['lastModifiedDateTime']), $FolderListStr); $FolderListStr = str_replace('<!--lastModifiedDateTime-->', time_format($file['lastModifiedDateTime']), $FolderListStr);
@ -2152,7 +2287,6 @@ function render_list($path = '', $files = '')
} }
$html = str_replace('<!--FileEncodeUrl-->', str_replace('%2523', '%23', str_replace('%26amp%3B','&amp;',spurlencode(path_format($_SERVER['base_disk_path'] . '/' . $path), '/'))), $html); $html = str_replace('<!--FileEncodeUrl-->', str_replace('%2523', '%23', str_replace('%26amp%3B','&amp;',spurlencode(path_format($_SERVER['base_disk_path'] . '/' . $path), '/'))), $html);
$html = str_replace('<!--FileUrl-->', path_format($_SERVER['base_disk_path'] . '/' . $path), $html); $html = str_replace('<!--FileUrl-->', path_format($_SERVER['base_disk_path'] . '/' . $path), $html);
$html = str_replace('<!--constStr@Download-->', getconstStr('Download'), $html);
$ext = strtolower(substr($path, strrpos($path, '.') + 1)); $ext = strtolower(substr($path, strrpos($path, '.') + 1));
if (in_array($ext, $exts['img'])) $ext = 'img'; if (in_array($ext, $exts['img'])) $ext = 'img';
@ -2218,9 +2352,9 @@ function render_list($path = '', $files = '')
//$description .= 'In '.$_SERVER['sitename']; //$description .= 'In '.$_SERVER['sitename'];
$html = str_replace('<!--Description-->', $description, $html); $html = str_replace('<!--Description-->', $description, $html);
while (strpos($html, '<!--base_disk_path-->')) $html = str_replace('<!--base_disk_path-->', $_SERVER['base_disk_path'], $html); while (strpos($html, '<!--base_disk_path-->')) $html = str_replace('<!--base_disk_path-->', (substr($_SERVER['base_disk_path'],-1)=='/'?substr($_SERVER['base_disk_path'],0,-1):$_SERVER['base_disk_path']), $html);
while (strpos($html, '<!--base_path-->')) $html = str_replace('<!--base_path-->', $_SERVER['base_path'], $html); while (strpos($html, '<!--base_path-->')) $html = str_replace('<!--base_path-->', $_SERVER['base_path'], $html);
while (strpos($html, '<!--Path-->')) $html = str_replace('<!--Path-->', str_replace('%23', '#', str_replace('&','&amp;', $path)), $html); while (strpos($html, '<!--Path-->')) $html = str_replace('<!--Path-->', str_replace('%23', '#', str_replace('&','&amp;', path_format($path.'/'))), $html);
while (strpos($html, '<!--constStr@Home-->')) $html = str_replace('<!--constStr@Home-->', getconstStr('Home'), $html); while (strpos($html, '<!--constStr@Home-->')) $html = str_replace('<!--constStr@Home-->', getconstStr('Home'), $html);
$html = str_replace('<!--customCss-->', getConfig('customCss'), $html); $html = str_replace('<!--customCss-->', getConfig('customCss'), $html);
@ -2360,7 +2494,7 @@ function render_list($path = '', $files = '')
$html .= $MultiDiskArea . $tmp[1]; $html .= $MultiDiskArea . $tmp[1];
$diskname = getConfig('diskname'); $diskname = getConfig('diskname');
if ($diskname=='') $diskname = $_SERVER['disktag']; if ($diskname=='') $diskname = $_SERVER['disktag'];
if (strlen($diskname)>15) $diskname = substr($diskname, 0, 12).'...'; //if (strlen($diskname)>15) $diskname = substr($diskname, 0, 12).'...';
while (strpos($html, '<!--DiskNameNow-->')) $html = str_replace('<!--DiskNameNow-->', $diskname, $html); while (strpos($html, '<!--DiskNameNow-->')) $html = str_replace('<!--DiskNameNow-->', $diskname, $html);
$tmp = splitfirst($html, '<!--HeadomfStart-->'); $tmp = splitfirst($html, '<!--HeadomfStart-->');
@ -2491,28 +2625,46 @@ function render_list($path = '', $files = '')
$html .= $tmp[1]; $html .= $tmp[1];
while (strpos($html, '<!--timezone-->')) $html = str_replace('<!--timezone-->', $_SERVER['timezone'], $html); while (strpos($html, '<!--timezone-->')) $html = str_replace('<!--timezone-->', $_SERVER['timezone'], $html);
while (strpos($html, '{{.RawData}}')) {
$str = '[';
$i = 0;
foreach ($files['children'] as $file) if ($_SERVER['admin'] or !isHideFile($file['name'])) {
$tmp = [];
$tmp['name'] = $file['name'];
$tmp['size'] = size_format($file['size']);
$tmp['date'] = time_format($file['lastModifiedDateTime']);
$tmp['@time'] = $file['date'];
$tmp['@type'] = isset($file['folder'])?'folder':'file';
$str .= json_encode($tmp).',';
}
if ($str == '[') {
$str = '';
} else $str = substr($str, 0, -1).']';
$html = str_replace('{{.RawData}}', base64_encode($str), $html);
}
// 最后清除换行 // 最后清除换行
while (strpos($html, "\r\n\r\n")) $html = str_replace("\r\n\r\n", "\r\n", $html); while (strpos($html, "\r\n\r\n")) $html = str_replace("\r\n\r\n", "\r\n", $html);
//while (strpos($html, "\r\r")) $html = str_replace("\r\r", "\r", $html);
while (strpos($html, "\n\n")) $html = str_replace("\n\n", "\n", $html);
//while (strpos($html, PHP_EOL.PHP_EOL)) $html = str_replace(PHP_EOL.PHP_EOL, PHP_EOL, $html); //while (strpos($html, PHP_EOL.PHP_EOL)) $html = str_replace(PHP_EOL.PHP_EOL, PHP_EOL, $html);
$exetime = round(microtime(true)-$_SERVER['php_starttime'],3); $exetime = round(microtime(true)-$_SERVER['php_starttime'],3);
$html = str_replace('<!--FootStr-->', date("Y-m-d H:i:s")." ".getconstStr('Week')[date("w")]." ".$_SERVER['REMOTE_ADDR'].' Runtime:'.$exetime.'s Mem:'.size_format(memory_get_usage()), $html); $html = str_replace('<!--FootStr-->', date("Y-m-d H:i:s")." ".getconstStr('Week')[date("w")]." ".$_SERVER['REMOTE_ADDR'].' Runningtime:'.$exetime.'s Mem:'.size_format(memory_get_usage()), $html);
} }
$theme_arr = scandir('theme'); if ($_SERVER['admin']||!getConfig('disableChangeTheme')) {
$html .= ' $theme_arr = scandir('theme');
$html .= '
<div style="position: fixed;right: 10px;bottom: 10px;/*color: rgba(247,247,249,0);*/"> <div style="position: fixed;right: 10px;bottom: 10px;/*color: rgba(247,247,249,0);*/">
<select name="theme" onchange="changetheme(this.options[this.options.selectedIndex].value)"> <select name="theme" onchange="changetheme(this.options[this.options.selectedIndex].value)">
<option value="">'.getconstStr('Theme').'</option>'; <option value="">'.getconstStr('Theme').'</option>';
foreach ($theme_arr as $v1) { foreach ($theme_arr as $v1) {
if ($v1!='.' && $v1!='..') $html .= ' if ($v1!='.' && $v1!='..') $html .= '
<option value="'.$v1.'" '.($v1==$theme?'selected="selected"':'').'>'.$v1.'</option>'; <option value="'.$v1.'" '.($v1==$theme?'selected="selected"':'').'>'.$v1.'</option>';
} }
//$tmp = getConfig('customTheme'); $html .= '
//if ($tmp!='') $html .= ' </select>
// <option value="" '.($tmp==$theme?'selected="selected"':'').'>customTheme</option>';
$html .= '
</select>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
function changetheme(str) function changetheme(str)
@ -2524,6 +2676,7 @@ function render_list($path = '', $files = '')
location.href = location.href; location.href = location.href;
} }
</script>'; </script>';
}
$html = $authinfo . $html; $html = $authinfo . $html;
if (isset($_SERVER['Set-Cookie'])) return output($html, $statusCode, [ 'Set-Cookie' => $_SERVER['Set-Cookie'], 'Content-Type' => 'text/html' ]); if (isset($_SERVER['Set-Cookie'])) return output($html, $statusCode, [ 'Set-Cookie' => $_SERVER['Set-Cookie'], 'Content-Type' => 'text/html' ]);

View File

@ -1,9 +1,9 @@
<?php <?php
$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', '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', 'json', 'html', 'c', 'md', 'py', 'omf']; $exts['txt'] = ['txt', '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', 'rmvb']; $exts['video'] = ['mp4', 'webm', 'mkv', 'mov', 'flv', 'blv', 'avi', 'wmv', 'm3u8', 'rm', 'rmvb'];
$exts['zip'] = ['zip', 'rar', '7z', 'gz', 'tar']; $exts['zip'] = ['zip', 'rar', '7z', 'gz', 'tar'];
@ -73,13 +73,15 @@ $constStr = [
'diskname' => 'The disk name you want show.', 'diskname' => 'The disk name you want show.',
'disktag' => 'A tag used in store config and url.', 'disktag' => 'A tag used in store config and url.',
'disableShowThumb' => 'if 1, the ShowThumbnail button will not display', 'disableShowThumb' => 'if 1, the ShowThumbnail button will not display',
'disableChangeTheme' => 'if 1, the Theme selection button will not display',
'downloadencrypt' => '0 or 1. if 1, the files in encrypt folder can be downloaded without password', 'downloadencrypt' => '0 or 1. if 1, the files in encrypt folder can be downloaded without password',
'background' => 'Set an url as background photo.', 'background' => 'Set an url as background photo.',
'theme' => 'Select theme.', 'theme' => 'Select theme.',
'timezone' => 'Set default timezone.', 'timezone' => 'Set default timezone.',
'guestup_path' => 'Set guest upload dir, before set this, the files in this dir will show as normal.', 'guestup_path' => 'Set guest upload dir, before set this, the files in this dir will show as normal.',
'hideFunctionalityFile' => '0 or 1. if 1, some file will not show in list to guest, like readme.md', 'hideFunctionalityFile' => '0 or 1. if 1, some file will not show in list to guest, like readme.md',
'passfile' => 'The password of dir will save in this file.', 'passfile' => 'The password of folder(& its childrens) will save in this file.',
'domainforproxy' => 'Will replace the https://xxxxx-my.sharepoint.com with this value.Add &Origindomain=xxxxx-my.sharepoint.com at last',
'public_path' => 'Show this Onedrive dir when through the long url of API Gateway; public show files less than private.', 'public_path' => 'Show this Onedrive dir when through the long url of API Gateway; public show files less than private.',
'sitename' => 'sitename', 'sitename' => 'sitename',
'Onedrive_ver' => 'Onedrive version', 'Onedrive_ver' => 'Onedrive version',
@ -94,6 +96,7 @@ $constStr = [
'diskname' => '这个盘你想显示什么名称。', 'diskname' => '这个盘你想显示什么名称。',
'disktag' => '一个标签用于保存配置多盘时会显示在url中。', 'disktag' => '一个标签用于保存配置多盘时会显示在url中。',
'disableShowThumb' => '如果填 1, ‘显示缩略’按钮将被隐藏。', 'disableShowThumb' => '如果填 1, ‘显示缩略’按钮将被隐藏。',
'disableChangeTheme' => '如果填 1, 主题选择切换将被隐藏',
'downloadencrypt' => '0 或 1。如果 1, 那加密目录内的文件可以不需要密码就能下载。', 'downloadencrypt' => '0 或 1。如果 1, 那加密目录内的文件可以不需要密码就能下载。',
'background' => '设置一个url作为背景。', 'background' => '设置一个url作为背景。',
'theme' => '选择一个主题。', 'theme' => '选择一个主题。',
@ -101,6 +104,7 @@ $constStr = [
'guestup_path' => '设置游客上传路径(图床路径),不设置这个值时该目录内容会正常列文件出来,设置后只有上传界面,不显示其中文件(登录后显示)。', 'guestup_path' => '设置游客上传路径(图床路径),不设置这个值时该目录内容会正常列文件出来,设置后只有上传界面,不显示其中文件(登录后显示)。',
'hideFunctionalityFile' => '0 或 1。如果 1, 某些文件不列表给游客看但它的功能正常比如readme.md', 'hideFunctionalityFile' => '0 或 1。如果 1, 某些文件不列表给游客看但它的功能正常比如readme.md',
'passfile' => '自定义密码文件的名字,可以是\'pppppp\',也可以是\'aaaa.txt\'等等;列目录时不会显示,只有知道密码才能查看或下载此文件。密码是这个文件的内容,可以空格、可以中文;', 'passfile' => '自定义密码文件的名字,可以是\'pppppp\',也可以是\'aaaa.txt\'等等;列目录时不会显示,只有知道密码才能查看或下载此文件。密码是这个文件的内容,可以空格、可以中文;',
'domainforproxy' => '会将https://xxxxx-my.sharepoint.com替换成这个值在目标需要自己设置反代。会加上&Origindomain=原域名',
'public_path' => '使用API长链接访问时显示网盘文件的路径不设置时默认为根目录不能是private_path的上级public看到的不能比private多要么看到的就不一样。', 'public_path' => '使用API长链接访问时显示网盘文件的路径不设置时默认为根目录不能是private_path的上级public看到的不能比private多要么看到的就不一样。',
'sitename' => '网站的名称', 'sitename' => '网站的名称',
'Onedrive_ver' => 'Onedrive版本', 'Onedrive_ver' => 'Onedrive版本',
@ -526,6 +530,10 @@ $constStr = [
'ko-kr' => '업로드 링크 받기', 'ko-kr' => '업로드 링크 받기',
'fa' => 'دریافت لینک آپلود', 'fa' => 'دریافت لینک آپلود',
], ],
'Calculate' => [
'en-us' => 'Calculate',
'zh-cn' => '计算',
],
'UpFileTooLarge' => [ 'UpFileTooLarge' => [
'en-us' => 'The File is too Large!', 'en-us' => 'The File is too Large!',
'zh-cn' => '文件过大,终止上传。', 'zh-cn' => '文件过大,终止上传。',
@ -773,9 +781,9 @@ $constStr = [
'ko-kr' => '캐시 플러시', 'ko-kr' => '캐시 플러시',
'fa' => 'رفرش cache', 'fa' => 'رفرش cache',
], ],
'VPSnotupdate' => [ 'CannotOneKeyUpate' => [
'en-us' => 'In VPS can not update by a click! run update.sh', 'en-us' => 'Can not update by a click! run update.sh',
'zh-cn' => '在VPS中不能一键更新可以运行update.sh', 'zh-cn' => '不能一键更新可以运行update.sh',
], ],
'QueryBranchs' => [ 'QueryBranchs' => [
'en-us' => 'Query Branchs', 'en-us' => 'Query Branchs',

View File

@ -1,14 +1,17 @@
<?php <?php
error_reporting(E_ALL ^ E_NOTICE); error_reporting(E_ALL & ~E_NOTICE);
include 'vendor/autoload.php'; include 'vendor/autoload.php';
include 'conststr.php'; include 'conststr.php';
include 'common.php'; include 'common.php';
//echo '<pre>'. json_encode($_SERVER, JSON_PRETTY_PRINT).'</pre>'; //echo '<pre>'. json_encode($_SERVER, JSON_PRETTY_PRINT).'</pre>';
if (isset($_SERVER['USER'])&&$_SERVER['USER']==='qcloud') { if (isset($_SERVER['USER'])&&$_SERVER['USER']==='qcloud') {
include 'platform/scf.php'; include 'platform/TencentSCF.php';
} elseif (isset($_SERVER['FC_SERVER_PATH'])&&$_SERVER['FC_SERVER_PATH']==='/var/fc/runtime/php7.2') {
//echo '<pre>'. json_encode($_SERVER, JSON_PRETTY_PRINT).'</pre>';
include 'platform/AliyunFC.php';
} elseif (isset($_SERVER['HEROKU_APP_DIR'])&&$_SERVER['HEROKU_APP_DIR']==='/app') { } elseif (isset($_SERVER['HEROKU_APP_DIR'])&&$_SERVER['HEROKU_APP_DIR']==='/app') {
include 'platform/heroku.php'; include 'platform/Heroku.php';
$path = getpath(); $path = getpath();
//echo 'path:'. $path; //echo 'path:'. $path;
$_GET = getGET(); $_GET = getGET();
@ -21,7 +24,7 @@ if (isset($_SERVER['USER'])&&$_SERVER['USER']==='qcloud') {
http_response_code($re['statusCode']); http_response_code($re['statusCode']);
echo $re['body']; echo $re['body'];
} else { } else {
include 'platform/normal.php'; include 'platform/Normal.php';
$path = getpath(); $path = getpath();
//echo 'path:'. $path; //echo 'path:'. $path;
$_GET = getGET(); $_GET = getGET();
@ -36,6 +39,7 @@ if (isset($_SERVER['USER'])&&$_SERVER['USER']==='qcloud') {
echo $re['body']; echo $re['body'];
} }
// Tencent SCF
function main_handler($event, $context) function main_handler($event, $context)
{ {
$event = json_decode(json_encode($event), true); $event = json_decode(json_encode($event), true);
@ -51,3 +55,56 @@ function main_handler($event, $context)
return main($path); return main($path);
} }
// Aliyun FC
function handler($request, $context)
{
set_error_handler("myErrorHandler");
$event = array(
'method' => $request->getMethod(),
'clientIP' => $request->getAttribute("clientIP"),
'requestURI' => $request->getAttribute("requestURI"),
'path' => spurlencode($request->getAttribute("path"), '/'),
'queryString' => $request->getQueryParams(),
'headers' => $request->getHeaders(),
'body' => $request->getBody()->getContents(),
);
$context = json_decode(json_encode($context), true);
printInput($event, $context);
unset($_POST);
unset($_GET);
unset($_COOKIE);
unset($_SERVER);
GetGlobalVariable($event);
$path = GetPathSetting($event, $context);
$re = main($path);
return new RingCentral\Psr7\Response($re['statusCode'], $re['headers'], $re['body']);
}
// used by Aliyun FC
function myErrorHandler($errno, $errstr, $errfile, $errline) {
if (!(error_reporting() & $errno)) {
return false;
}
switch ($errno) {
case E_USER_ERROR:
$errInfo = array(
"errorMessage" => $errstr,
"errorType" => \ServerlessFC\friendly_error_type($errno),
"stackTrace" => array(
"file" => $errfile,
"line" => $errline,
),
);
throw new \ErrorException($errstr, 0, $errno, $errfile, $errline);
break;
default: // E_USER_WARNING | E_USER_NOTICE
break;
}
/* Don't execute PHP internal error handler */
return true;
}

397
platform/AliyunFC.php Normal file
View File

@ -0,0 +1,397 @@
<?php
// https://help.aliyun.com/document_detail/53252.html
// https://github.com/aliyun/fc-php-sdk/blob/master/src/AliyunFC/Client.php
use AliyunFC\Client;
function printInput($event, $context)
{
if (strlen(json_encode($event['body']))>500) $event['body']=substr($event['body'],0,strpos($event['body'],'base64')+30) . '...Too Long!...' . substr($event['body'],-50);
echo urldecode(json_encode($event, JSON_PRETTY_PRINT)) . '
' . urldecode(json_encode($context, JSON_PRETTY_PRINT)) . '
';
}
function GetGlobalVariable($event)
{
$_GET = $event['queryString'];
foreach ($_GET as $k => $v) {
if ($v=='') $_GET[$k] = true;
}
$postbody = explode("&",$event['body']);
foreach ($postbody as $postvalues) {
$pos = strpos($postvalues,"=");
$_POST[urldecode(substr($postvalues,0,$pos))]=urldecode(substr($postvalues,$pos+1));
}
$cookiebody = explode("; ",$event['headers']['Cookie'][0]);
foreach ($cookiebody as $cookievalues) {
$pos = strpos($cookievalues,"=");
$_COOKIE[urldecode(substr($cookievalues,0,$pos))]=urldecode(substr($cookievalues,$pos+1));
}
$_SERVER['FC_SERVER_PATH'] = '/var/fc/runtime/php7.2';
}
function GetPathSetting($event, $context)
{
$_SERVER['firstacceptlanguage'] = strtolower(splitfirst(splitfirst($event['headers']['Accept-Language'][0],';')[0],',')[0]);
$_SERVER['accountId'] = $context['accountId'];
$_SERVER['region'] = $context['region'];
$_SERVER['service_name'] = $context['service']['name'];
$_SERVER['function_name'] = $context['function']['name'];
$_SERVER['base_path'] = '/';
$path = $event['path'];
//$path = spurlencode($path, '/');
if (substr($path,-1)=='/') $path=substr($path,0,-1);
$_SERVER['is_guestup_path'] = is_guestup_path($path);
$_SERVER['PHP_SELF'] = path_format($_SERVER['base_path'] . $path);
$_SERVER['REMOTE_ADDR'] = $event['clientIP'];
$_SERVER['HTTP_X_REQUESTED_WITH'] = $event['headers']['X-Requested-With'][0];
return $path;
}
function getConfig($str, $disktag = '')
{
global $InnerEnv;
global $Base64Env;
if (in_array($str, $InnerEnv)) {
if ($disktag=='') $disktag = $_SERVER['disktag'];
$env = json_decode(getenv($disktag), true);
if (isset($env[$str])) {
if (in_array($str, $Base64Env)) return equal_replace($env[$str],1);
else return $env[$str];
}
} else {
if (in_array($str, $Base64Env)) return equal_replace(getenv($str),1);
else return getenv($str);
}
return '';
}
function setConfig($arr, $disktag = '')
{
global $InnerEnv;
global $Base64Env;
if ($disktag=='') $disktag = $_SERVER['disktag'];
$disktags = explode("|",getConfig('disktag'));
$diskconfig = json_decode(getenv($disktag), true);
$tmp = [];
$indisk = 0;
$oparetdisk = 0;
foreach ($arr as $k => $v) {
if (in_array($k, $InnerEnv)) {
if (in_array($k, $Base64Env)) $diskconfig[$k] = equal_replace($v);
else $diskconfig[$k] = $v;
$indisk = 1;
} elseif ($k=='disktag_add') {
array_push($disktags, $v);
$oparetdisk = 1;
} elseif ($k=='disktag_del') {
$disktags = array_diff($disktags, [ $v ]);
$tmp[$v] = '';
$oparetdisk = 1;
} else {
if (in_array($k, $Base64Env)) $tmp[$k] = equal_replace($v);
else $tmp[$k] = $v;
}
}
if ($indisk) {
$diskconfig = array_filter($diskconfig, 'array_value_isnot_null');
ksort($diskconfig);
$tmp[$disktag] = json_encode($diskconfig);
}
if ($oparetdisk) {
$disktags = array_unique($disktags);
foreach ($disktags as $disktag) if ($disktag!='') $disktag_s .= $disktag . '|';
if ($disktag_s!='') $tmp['disktag'] = substr($disktag_s, 0, -1);
else $tmp['disktag'] = '';
}
// echo '正式设置:'.json_encode($tmp,JSON_PRETTY_PRINT).'
//';
$response = updateEnvironment($tmp, $_SERVER['accountId'], $_SERVER['region'], $_SERVER['service_name'], $_SERVER['function_name'], getConfig('AccessKeyID'), getConfig('AccessKeySecret'));
//WaitSCFStat();
return $response;
}
function install()
{
global $constStr;
if ($_GET['install2']) {
$tmp['admin'] = $_POST['admin'];
setConfig($tmp);
if (needUpdate()) {
OnekeyUpate();
return message('update to github version, reinstall.<script>document.cookie=\'language=; path=/\';</script><meta http-equiv="refresh" content="3;URL=' . $url . '">', 'Program updating', 201);
}
return output('Jump<script>document.cookie=\'language=; path=/\';</script><meta http-equiv="refresh" content="3;URL=' . path_format($_SERVER['base_path'] . '/') . '">', 302);
}
if ($_GET['install1']) {
//if ($_POST['admin']!='') {
$tmp['timezone'] = $_COOKIE['timezone'];
$AccessKeyID = getConfig('AccessKeyID');
if ($AccessKeyID=='') {
$AccessKeyID = $_POST['AccessKeyID'];
$tmp['AccessKeyID'] = $AccessKeyID;
}
$AccessKeySecret = getConfig('AccessKeySecret');
if ($AccessKeySecret=='') {
$AccessKeySecret = $_POST['AccessKeySecret'];
$tmp['AccessKeySecret'] = $AccessKeySecret;
}
$response = SetbaseConfig($tmp, $_SERVER['accountId'], $_SERVER['region'], $_SERVER['service_name'], $_SERVER['function_name'], $AccessKeyID, $AccessKeySecret);
if (api_error($response)) {
$html = api_error_msg($response);
$title = 'Error';
return message($html, $title, 201);
} else {
$html .= '
<form action="?install2" method="post" onsubmit="return notnull(this);">
<label>'.getconstStr('SetAdminPassword').':<input name="admin" type="password" placeholder="' . getconstStr('EnvironmentsDescription')['admin'] . '" size="' . strlen(getconstStr('EnvironmentsDescription')['admin']) . '"></label><br>
<input type="submit" value="'.getconstStr('Submit').'">
</form>
<script>
function notnull(t)
{
if (t.admin.value==\'\') {
alert(\''.getconstStr('SetAdminPassword').'\');
return false;
}
return true;
}
</script>';
$title = getconstStr('SetAdminPassword');
return message($html, $title, 201);
}
//}
}
if ($_GET['install0']) {
$html .= '
<form action="?install1" method="post" onsubmit="return notnull(this);">
language:<br>';
foreach ($constStr['languages'] as $key1 => $value1) {
$html .= '
<label><input type="radio" name="language" value="'.$key1.'" '.($key1==$constStr['language']?'checked':'').' onclick="changelanguage(\''.$key1.'\')">'.$value1.'</label><br>';
}
if (getConfig('AccessKeyID')==''||getConfig('AccessKeySecret')=='') $html .= '
<a href="https://usercenter.console.aliyun.com/?#/manage/ak" target="_blank">'.getconstStr('Create').' AccessKeyID & AccessKeySecret</a><br>
<label>AccessKeyID:<input name="AccessKeyID" type="text" placeholder="" size=""></label><br>
<label>AccessKeySecret:<input name="AccessKeySecret" type="text" placeholder="" size=""></label><br>';
$html .= '
<input type="submit" value="'.getconstStr('Submit').'">
</form>
<script>
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;
function changelanguage(str)
{
document.cookie=\'language=\'+str+\'; path=/\';
location.href = location.href;
}
function notnull(t)
{';
if (getConfig('AccessKeyID')==''||getConfig('AccessKeySecret')=='') $html .= '
if (t.AccessKeyID.value==\'\') {
alert(\'input AccessKeyID\');
return false;
}
if (t.AccessKeySecret.value==\'\') {
alert(\'input SecretKey\');
return false;
}';
$html .= '
return true;
}
</script>';
$title = getconstStr('SelectLanguage');
return message($html, $title, 201);
}
$html .= '<a href="?install0">'.getconstStr('ClickInstall').'</a>, '.getconstStr('LogintoBind');
$title = 'Error';
return message($html, $title, 201);
}
function getfunctioninfo($accountId, $region, $service_name, $function_name, $AccessKeyID, $AccessKeySecret)
{
$fcClient = new Client([
"endpoint" => 'https://'.$accountId.'.'.$region.'.fc.aliyuncs.com',
"accessKeyID" => $AccessKeyID,
"accessKeySecret" => $AccessKeySecret
]);
return $fcClient->getFunction($service_name, $function_name);
}
function updateEnvironment($Envs, $accountId, $region, $service_name, $function_name, $AccessKeyID, $AccessKeySecret)
{
//print_r($Envs);
$fcClient = new Client([
"endpoint" => 'https://'.$accountId.'.'.$region.'.fc.aliyuncs.com',
"accessKeyID" => $AccessKeyID,
"accessKeySecret" => $AccessKeySecret
]);
$tmp = $fcClient->getFunction($service_name, $function_name)['data'];
//$tmp = getfunctioninfo($accountId, $region, $service_name, $function_name, $AccessKeyID, $AccessKeySecret)['data'];
foreach ($tmp['environmentVariables'] as $key => $value ) {
$tmp_env[$key] = $value;
}
foreach ($Envs as $key1 => $value1) {
$tmp_env[$key1] = $value1;
}
$tmp_env = array_filter($tmp_env, 'array_value_isnot_null'); // remove null. 清除空值
ksort($tmp_env);
$tmpdata['functionName'] = $tmp['functionName'];
$tmpdata['description'] = $tmp['description'];
$tmpdata['memorySize'] = $tmp['memorySize'];
$tmpdata['timeout'] = $tmp['timeout'];
$tmpdata['runtime'] = $tmp['runtime'];
$tmpdata['handler'] = $tmp['handler'];
$tmpdata['environmentVariables'] = $tmp_env;
$tmpdata['code']['zipFile'] = base64_encode( file_get_contents($fcClient->getFunctionCode($service_name, $function_name)['data']['url']) );
return $fcClient->updateFunction($service_name, $function_name, $tmpdata);
}
function SetbaseConfig($Envs, $accountId, $region, $service_name, $function_name, $AccessKeyID, $AccessKeySecret)
{
//echo json_encode($Envs,JSON_PRETTY_PRINT);
$fcClient = new Client([
"endpoint" => 'https://'.$accountId.'.'.$region.'.fc.aliyuncs.com',
"accessKeyID" => $AccessKeyID,
"accessKeySecret" => $AccessKeySecret
]);
$tmp = $fcClient->getFunction($service_name, $function_name)['data'];
// $tmp = getfunctioninfo($accountId, $region, $service_name, $function_name, $AccessKeyID, $AccessKeySecret)['data'];
foreach ($tmp['environmentVariables'] as $key => $value ) {
$tmp_env[$key] = $value;
}
foreach ($Envs as $key1 => $value1) {
$tmp_env[$key1] = $value1;
}
$tmp_env = array_filter($tmp_env, 'array_value_isnot_null'); // remove null. 清除空值
ksort($tmp_env);
$tmpdata['functionName'] = $function_name;
$tmpdata['description'] = 'Onedrive index and manager in Ali FC.';
$tmpdata['memorySize'] = 128;
$tmpdata['timeout'] = 30;
$tmpdata['runtime'] = 'php7.2';
$tmpdata['handler'] = 'index.handler';
$tmpdata['environmentVariables'] = $tmp_env;
$tmpdata['code']['zipFile'] = base64_encode( file_get_contents($fcClient->getFunctionCode($service_name, $function_name)['data']['url']) );
return $fcClient->updateFunction($service_name, $function_name, $tmpdata);
}
function updateProgram($accountId, $region, $service_name, $function_name, $AccessKeyID, $AccessKeySecret, $source)
{
//WaitSCFStat();
$fcClient = new Client([
"endpoint" => 'https://'.$accountId.'.'.$region.'.fc.aliyuncs.com',
"accessKeyID" => $AccessKeyID,
"accessKeySecret" => $AccessKeySecret
]);
$tmp = $fcClient->getFunction($service_name, $function_name)['data'];
//$tmp = getfunctioninfo($accountId, $region, $service_name, $function_name, $AccessKeyID, $AccessKeySecret)['data'];
$tmpdata['functionName'] = $tmp['functionName'];
$tmpdata['description'] = $tmp['description'];
$tmpdata['memorySize'] = $tmp['memorySize'];
$tmpdata['timeout'] = $tmp['timeout'];
$tmpdata['runtime'] = $tmp['runtime'];
$tmpdata['handler'] = $tmp['handler'];
$tmpdata['environmentVariables'] = $tmp['environmentVariables'];
$tmpdata['code']['zipFile'] = base64_encode( file_get_contents($source) );
return $fcClient->updateFunction($service_name, $function_name, $tmpdata);
}
function api_error($response)
{
return !isset($response['data']);
}
function api_error_msg($response)
{
return json_encode( $response, JSON_PRETTY_PRINT );
return $response['Error']['Code'] . '<br>
' . $response['Error']['Message'] . '<br><br>
function_name:' . $_SERVER['function_name'] . '<br>
Region:' . $_SERVER['Region'] . '<br>
namespace:' . $_SERVER['namespace'] . '<br>
<button onclick="location.href = location.href;">'.getconstStr('Refresh').'</button>';
}
function setConfigResponse($response)
{
return $response;
}
function OnekeyUpate($auth = 'qkqpttgf', $project = 'OneManager-php', $branch = 'master')
{
$source = '/tmp/code.zip';
$outPath = '/tmp/';
// 从github下载对应tar.gz并解压
$url = 'https://github.com/' . $auth . '/' . $project . '/tarball/' . $branch . '/';
$tarfile = '/tmp/github.tar.gz';
file_put_contents($tarfile, file_get_contents($url));
$phar = new PharData($tarfile);
$html = $phar->extractTo($outPath, null, true);//路径 要解压的文件 是否覆盖
// 获取解压出的目录名
/*
@ob_start();
passthru('ls /tmp | grep '.$auth.'-'.$project.'',$stat);
$html.='状态:' . $stat . '
结果:
';
$archivefolder = ob_get_clean();
if (substr($archivefolder,-1)==PHP_EOL) $archivefolder = substr($archivefolder, 0, -1);
$outPath .= $archivefolder;
$html.=htmlspecialchars($archivefolder);
//return $html;
*/
$tmp = scandir($outPath);
$name = $auth.'-'.$project;
foreach ($tmp as $f) {
if ( substr($f, 0, strlen($name)) == $name) {
$outPath .= $f;
break;
}
}
// 将目录中文件打包成zip
$zip=new ZipArchive();
if($zip->open($source, ZipArchive::CREATE)){
addFileToZip($zip, $outPath); //调用方法对要打包的根目录进行操作并将ZipArchive的对象传递给方法
$zip->close(); //关闭处理的zip文件
}
return updateProgram($_SERVER['accountId'], $_SERVER['region'], $_SERVER['service_name'], $_SERVER['function_name'], getConfig('AccessKeyID'), getConfig('AccessKeySecret'), $source);
}
function addFileToZip($zip, $rootpath, $path = '')
{
if (substr($rootpath,-1)=='/') $rootpath = substr($rootpath, 0, -1);
if (substr($path,0,1)=='/') $path = substr($path, 1);
$handler=opendir(path_format($rootpath.'/'.$path)); //打开当前文件夹由$path指定。
while($filename=readdir($handler)){
if($filename != "." && $filename != ".."){//文件夹文件名字为'.'和‘..’,不要对他们进行操作
$nowname = path_format($rootpath.'/'.$path."/".$filename);
if(is_dir($nowname)){// 如果读取的某个对象是文件夹,则递归
addFileToZip($zip, $rootpath, $path."/".$filename);
}else{ //将文件加入zip对象
$zip->addFile($nowname);
$newname = $path."/".$filename;
if (substr($newname,0,1)=='/') $newname = substr($newname, 1);
$zip->renameName($nowname, $newname);
}
}
}
@closedir($path);
}

View File

@ -252,12 +252,70 @@ Can not write config to file.<br>
<button onclick="location.href = location.href;">'.getconstStr('Refresh').'</button>'; <button onclick="location.href = location.href;">'.getconstStr('Refresh').'</button>';
} }
function OnekeyUpate()
{
return json_decode(updateHerokuapp(getConfig('function_name'), getConfig('APIKey'))['body'], true);
}
function setConfigResponse($response) function setConfigResponse($response)
{ {
return $response; return $response;
} }
function OnekeyUpate($auth = 'qkqpttgf', $project = 'OneManager-php', $branch = 'master')
{
// __DIR__ is xxx/platform
$projectPath = splitlast(__DIR__, '/')[0];
// 从github下载对应tar.gz并解压
$url = 'https://github.com/' . $auth . '/' . $project . '/tarball/' . $branch . '/';
$tarfile = $projectPath.'/github.tar.gz';
$githubfile = file_get_contents($url);
if (!$githubfile) return 0;
file_put_contents($tarfile, $githubfile);
if (splitfirst(PHP_VERSION, '.')[0] == '7') {
$phar = new PharData($tarfile); // need php7
$phar->extractTo($projectPath, null, true);//路径 要解压的文件 是否覆盖
} else {
ob_start();
passthru('tar -xzvf '.$tarfile,$stat);
ob_get_clean();
}
unlink($tarfile);
$outPath = '';
$tmp = scandir($projectPath);
$name = $auth.'-'.$project;
foreach ($tmp as $f) {
if ( substr($f, 0, strlen($name)) == $name) {
$outPath = $projectPath . '/' . $f;
break;
}
}
//error_log($outPath);
if ($outPath=='') return 0;
//unlink($outPath.'/config.php');
rename($projectPath.'/config.php', $outPath.'/config.php');
return moveFolder($outPath, $projectPath);
}
function moveFolder($from, $to)
{
if (substr($from, -1)=='/') $from = substr($from, 0, -1);
if (substr($to, -1)=='/') $to = substr($to, 0, -1);
if (!file_exists($to)) mkdir($to, 0777);
$handler=opendir($from);
while($filename=readdir($handler)) {
if($filename != '.' && $filename != '..'){
$fromfile = $from.'/'.$filename;
$tofile = $to.'/'.$filename;
if(is_dir($fromfile)){// 如果读取的某个对象是文件夹,则递归
moveFolder($fromfile, $tofile);
}else{
//if (file_exists($tofile)) unlink($tofile);
rename($fromfile, $tofile);
if (file_exists($fromfile)) unlink($fromfile);
}
}
}
closedir($handler);
rmdir($from);
return 1;
}

View File

@ -1,14 +1,24 @@
Install program first, then add onedrive in setup after login. Install program first, then add onedrive in setup after login.
先安装程序登录后在设置中添加onedrive。 先安装程序登录后在设置中添加onedrive。
# Deploy to heroku # Deploy to Heroku
Official: https://heroku.com Official: https://heroku.com
Demo: https://herooneindex.herokuapp.com/
How to Install: Click the button [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/qkqpttgf/OneManager-php) to Deploy a new app, or create an app then deploy via connect to your github fork. How to Install: Click the button [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/qkqpttgf/OneManager-php) to Deploy a new app, or create an app then deploy via connect to your github fork.
DEMO: https://herooneindex.herokuapp.com/
# Deploy to VPS(Virtual Private Server) 部署到VPS或空间 # Deploy to Tencent Serverless Cloud Function (SCF 腾讯无服务器云函数)
Official: https://cloud.tencent.com/product/scf
DEMO: https://service-pgxgvop2-1258064400.ap-hongkong.apigateway.myqcloud.com/test/abcdef/
~~How to Install: https://service-pgxgvop2-1258064400.ap-hongkong.apigateway.myqcloud.com/test/abcdef/%E6%97%A0%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%87%BD%E6%95%B0SCF%E6%90%AD%E5%BB%BAOneDrive.mp4?preview~~
添加网盘时SCF反应不过来会添加失败请不要删除再添加一次相同的就可以了。
# Deploy to Virtual Private Server (VPS 或空间)
DEMO: 无
How to Install: How to Install:
1.Start web service on your server (httpd or other), make sure you can visit it. 1.Start web service on your server (httpd or other), make sure you can visit it.
启动web服务器确保你能访问到。 启动web服务器确保你能访问到。
@ -21,15 +31,19 @@ How to Install:
5.View the website in chrome or other. 5.View the website in chrome or other.
在浏览器中访问。 在浏览器中访问。
# Deploy to SCF
Official: https://cloud.tencent.com/product/scf
~~How to Install: https://service-pgxgvop2-1258064400.ap-hongkong.apigateway.myqcloud.com/test/abcdef/%E6%97%A0%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%87%BD%E6%95%B0SCF%E6%90%AD%E5%BB%BAOneDrive.mp4?preview~~ # Deploy to Aliyun Function Compute (FC 阿里函数计算)
Official: https://fc.console.aliyun.com/
DEMO: 无
先手动在环境变量添加Regionap-hongkong或ap-guangzhou之类具体看 https://cloud.tencent.com/document/api/583/17238 最底下,然后再安装。 How to Install:
添加网盘时SCF反应不过来会添加失败请不要删除再添加一次相同的就可以了。 1新建函数 -- HTTP函数
2运行环境选择php7.2
3触发器认证方式选择anonymous请求方式里面点一下GET再点一下POST最终框框里面有这2个
4上传代码
5触发器中点进去找到配置自定义域名点击前往创建路径中填 /* ,其它下拉选择。
6访问你的域名开始安装
DEMO: https://service-pgxgvop2-1258064400.ap-hongkong.apigateway.myqcloud.com/test/abcdef/
# Features 特性 # Features 特性
When downloading files, the program produce a direct url, visitor download files from MS OFFICE via the direct url, the server expend a few bandwidth in produce. When downloading files, the program produce a direct url, visitor download files from MS OFFICE via the direct url, the server expend a few bandwidth in produce.

View File

@ -476,7 +476,10 @@
function changelanguage(str) function changelanguage(str)
{ {
if (str=='Language') str = ''; if (str=='Language') str = '';
document.cookie='language='+str+'; path=/'; var expd = new Date();
expd.setTime(expd.getTime()+(2*60*60*1000));
var expires = "expires="+expd.toGMTString();
document.cookie='language='+str+'; path=/; '+expires;
location.href = location.href; location.href = location.href;
} }
<!--ListStart--> <!--ListStart-->
@ -821,20 +824,55 @@
tr1.setAttribute('data-to',1); tr1.setAttribute('data-to',1);
var td1=document.createElement('td'); var td1=document.createElement('td');
tr1.appendChild(td1); tr1.appendChild(td1);
td1.setAttribute('style','width:30%'); td1.setAttribute('style','width:30%;word-break:break-word;');
td1.setAttribute('id','upfile_td1_'+timea+'_'+i); td1.setAttribute('id','upfile_td1_'+timea+'_'+i);
td1.innerHTML=(file.webkitRelativePath||file.name)+'<br>'+size_format(file.size); td1.innerHTML=(file.webkitRelativePath||file.name)+'<br>'+size_format(file.size);
var td2=document.createElement('td'); var td2=document.createElement('td');
tr1.appendChild(td2); tr1.appendChild(td2);
td2.setAttribute('id','upfile_td2_'+timea+'_'+i); td2.setAttribute('id','upfile_td2_'+timea+'_'+i);
td2.innerHTML='<!--constStr@GetUploadLink--> ...';
if (file.size>100*1024*1024*1024) { if (file.size>100*1024*1024*1024) {
td2.innerHTML='<font color="red"><!--constStr@UpFileTooLarge--></font>'; td2.innerHTML='<font color="red"><!--constStr@UpFileTooLarge--></font>';
uploadbuttonshow(); uploadbuttonshow();
return; return;
} }
upbigfilename = encodeURIComponent((file.webkitRelativePath||file.name));
<!--GuestStart-->
function getext(str) {
strarry=str.split('.');
ext=strarry[strarry.length-1].toLowerCase();
var reg = new RegExp(".","g");
var a = str.replace(reg,"");
if (a == ext) ext = "";
else ext = "." + ext;
return ext;
}
var ext = getext(file.webkitRelativePath||file.name);
var spark = new SparkMD5.ArrayBuffer();
var reader = new FileReader();
var chunksize=10*1024*1024;
var asize = 0;
function readblob(start) {
var end=start+chunksize;
var blob = file.slice(start,end);
reader.readAsArrayBuffer(blob);
}
readblob(asize);
reader.onload = function(e){
td2.innerHTML='<!--constStr@Calculate--> md5: '+(asize*100/file.size).toFixed(2)+'%';
var binary = this.result;
spark.append(binary);
asize += chunksize;
if (asize < file.size) {
readblob(asize);
} else {
var filemd5 = spark.end();
td2.innerHTML='md5: '+filemd5;
upbigfilename = filemd5+ext;
<!--GuestEnd-->
td2.innerHTML='<!--constStr@GetUploadLink--> ...';
var xhr1 = new XMLHttpRequest(); var xhr1 = new XMLHttpRequest();
xhr1.open("GET", '?action=upbigfile&upbigfilename='+ encodeURIComponent((file.webkitRelativePath||file.name)) +'&filesize='+ file.size +'&lastModified='+ file.lastModified); xhr1.open("GET", '?action=upbigfile&upbigfilename='+ upbigfilename +'&filesize='+ file.size +'&lastModified='+ file.lastModified);
xhr1.setRequestHeader('x-requested-with','XMLHttpRequest'); xhr1.setRequestHeader('x-requested-with','XMLHttpRequest');
xhr1.send(null); xhr1.send(null);
xhr1.onload = function(e){ xhr1.onload = function(e){
@ -847,14 +885,23 @@
uploadbuttonshow(); uploadbuttonshow();
} else { } else {
td2.innerHTML='<!--constStr@UploadStart--> ...'; td2.innerHTML='<!--constStr@UploadStart--> ...';
binupfile(file,html['uploadUrl'],timea+'_'+i); binupfile(file,html['uploadUrl'],timea+'_'+i, upbigfilename);
} }
} }
if (xhr1.status==409) {
td2.innerHTML='md5: '+filemd5;
tdnum = timea+'_'+i;
document.getElementById('upfile_td1_'+tdnum).innerHTML='<div style="color:green"><a href="<!--base_disk_path--><!--Path-->'+upbigfilename+'?preview" id="upfile_a_'+tdnum+'" target="_blank">'+document.getElementById('upfile_td1_'+tdnum).innerHTML+'</a><br><a href="<!--base_disk_path--><!--Path-->'+upbigfilename+'" id="upfile_a1_'+tdnum+'"></a><!--constStr@UploadComplete--><button onclick="CopyAllDownloadUrl(\'#upfile_a1_'+tdnum+'\');" id="upfile_cpbt_'+tdnum+'" <!--AdminStart--> style="display:none"<!--AdminEnd--> ><!--constStr@CopyUrl--></button></div>';
}
if (i<files.length-1) { if (i<files.length-1) {
i++; i++;
getuplink(i); getuplink(i);
} }
} }
<!--GuestStart-->
}
}
<!--GuestEnd-->
} }
} }
function size_format(num) { function size_format(num) {
@ -875,7 +922,7 @@
} }
return num.toFixed(2) + ' GB'; return num.toFixed(2) + ' GB';
} }
function binupfile(file,url,tdnum){ function binupfile(file,url,tdnum,filename){
var label=document.getElementById('upfile_td2_'+tdnum); var label=document.getElementById('upfile_td2_'+tdnum);
var reader = new FileReader(); var reader = new FileReader();
var StartStr=''; var StartStr='';
@ -896,9 +943,7 @@
var a = html['nextExpectedRanges'][0]; var a = html['nextExpectedRanges'][0];
newstartsize = Number( a.slice(0,a.indexOf("-")) ); newstartsize = Number( a.slice(0,a.indexOf("-")) );
StartTime = new Date(); StartTime = new Date();
<!--AdminStart-->
asize = newstartsize; asize = newstartsize;
<!--AdminEnd-->
if (newstartsize==0) { if (newstartsize==0) {
StartStr='<!--constStr@UploadStartAt-->:' +StartTime.toLocaleString()+'<br>' ; StartStr='<!--constStr@UploadStartAt-->:' +StartTime.toLocaleString()+'<br>' ;
} else { } else {
@ -912,19 +957,9 @@
reader.readAsArrayBuffer(blob); reader.readAsArrayBuffer(blob);
} }
readblob(asize); readblob(asize);
<!--GuestStart-->
var spark = new SparkMD5.ArrayBuffer();
<!--GuestEnd-->
reader.onload = function(e){ reader.onload = function(e){
var binary = this.result; var binary = this.result;
<!--GuestStart-->
spark.append(binary);
if (asize < newstartsize) {
asize += chunksize;
readblob(asize);
return;
}
<!--GuestEnd-->
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
xhr.open("PUT", url, true); xhr.open("PUT", url, true);
//xhr.setRequestHeader('x-requested-with','XMLHttpRequest'); //xhr.setRequestHeader('x-requested-with','XMLHttpRequest');
@ -945,38 +980,12 @@
if (response['size']>0) { if (response['size']>0) {
// contain size, upload finish. 有size说明是最终返回上传结束 // contain size, upload finish. 有size说明是最终返回上传结束
var xhr3 = new XMLHttpRequest(); var xhr3 = new XMLHttpRequest();
xhr3.open("GET", '?action=del_upload_cache&filelastModified='+file.lastModified+'&filesize='+file.size+'&filename='+encodeURIComponent((file.webkitRelativePath||file.name))); xhr3.open("GET", '?action=del_upload_cache&filelastModified='+file.lastModified+'&filesize='+file.size+'&filename='+filename);
xhr3.setRequestHeader('x-requested-with','XMLHttpRequest'); xhr3.setRequestHeader('x-requested-with','XMLHttpRequest');
xhr3.send(null); xhr3.send(null);
xhr3.onload = function(e){ xhr3.onload = function(e){
console.log(xhr3.responseText+','+xhr3.status); console.log(xhr3.responseText+','+xhr3.status);
} }
<!--GuestStart-->
var filemd5 = spark.end();
var xhr4 = new XMLHttpRequest();
xhr4.open("GET", '?action=uploaded_rename&filename='+encodeURIComponent((file.webkitRelativePath||file.name))+'&filemd5='+filemd5);
xhr4.setRequestHeader('x-requested-with','XMLHttpRequest');
xhr4.send(null);
xhr4.onload = function(e){
console.log(xhr4.responseText+','+xhr4.status);
var filename;
//if (xhr4.status==200) filename = JSON.parse(xhr4.responseText)['name'];
//if (xhr4.status==409) filename = filemd5 + (file.webkitRelativePath||file.name).substr((file.webkitRelativePath||file.name).indexOf('.'));
filename = JSON.parse(xhr4.responseText)['name'];
if (filename=='') {
alert('<!--constStr@UploadErrorUpAgain-->');
uploadbuttonshow();
return;
}
var lasturl = location.href;
if (lasturl.substr(lasturl.length-1)!='/') lasturl += '/';
lasturl += filename + '?preview';
//window.open(lasturl);
document.getElementById('upfile_a_'+tdnum).href = lasturl;
document.getElementById('upfile_a1_'+tdnum).href = filename;
document.getElementById('upfile_cpbt_'+tdnum).style.display = "";
}
<!--GuestEnd-->
EndTime=new Date(); EndTime=new Date();
MiddleStr = '<!--constStr@EndAt-->:'+EndTime.toLocaleString()+'<br>'; MiddleStr = '<!--constStr@EndAt-->:'+EndTime.toLocaleString()+'<br>';
if (newstartsize==0) { if (newstartsize==0) {
@ -1004,7 +1013,7 @@
xhr.send(binary); xhr.send(binary);
} }
} else { } else {
if (window.location.pathname.indexOf('%23')>0||(file.webkitRelativePath||file.name).indexOf('%23')>0) { if (window.location.pathname.indexOf('%23')>0||filename.indexOf('%23')>0) {
label.innerHTML='<font color="red"><!--constStr@UploadFail23--></font>'; label.innerHTML='<font color="red"><!--constStr@UploadFail23--></font>';
} else { } else {
label.innerHTML='<font color="red">'+xhr2.responseText+'</font>'; label.innerHTML='<font color="red">'+xhr2.responseText+'</font>';

View File

@ -21,8 +21,8 @@
<meta name=viewport content="width=device-width,initial-scale=1"> <meta name=viewport content="width=device-width,initial-scale=1">
<meta name="keywords" content="<!--Keywords-->"> <meta name="keywords" content="<!--Keywords-->">
<meta name="description" content="<!--Description-->"> <meta name="description" content="<!--Description-->">
<link rel="icon" href="<!--base_disk_path-->favicon.ico" type="image/x-icon" /> <link rel="icon" href="<!--base_path-->favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="<!--base_disk_path-->favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" href="<!--base_path-->favicon.ico" type="image/x-icon" />
<link href="//cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet"> <link href="//cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet">
<script src="//cdn.bootcdn.net/ajax/libs/jquery/2.0.2/jquery.min.js"></script> <script src="//cdn.bootcdn.net/ajax/libs/jquery/2.0.2/jquery.min.js"></script>

View File

@ -34,14 +34,14 @@
.mdui-list>.th{background-color:initial} .mdui-list>.th{background-color:initial}
.mdui-list-item>a{width:100%;line-height:48px} .mdui-list-item>a{width:100%;line-height:48px}
.mdui-toolbar>a:last-child{opacity:1;background-color:#1e89f2;color:#ffff} .mdui-toolbar>a:last-child{opacity:1;background-color:#1e89f2;color:#ffff}
.more-disk{display: inline-block;} .more-disk{display: inline-block;max-width: 100px;}
.more-disk div{ .more-disk div{
list-style:none; list-style:none;
position:absolute;display:none;background:#ffffff;border-radius:5px;margin:-7px 0 0 0;padding:0 7px;color:#205D67;z-index:1; position:absolute;display:none;background:#ffffff;border-radius:5px;margin:0 0 0 -10px;/*padding:0 7px;*/color:#205D67;z-index:1;
box-shadow: 0 0.5em 3em rgba(161,177,204,.4); box-shadow: 0 0.5em 3em rgba(161,177,204,.4);
} }
.more-disk:hover div{display:block} .more-disk:hover div{display:block}
.more-disk div li{line-height:normal;padding: 5px 5px;} .more-disk div li{line-height:normal;padding: 3px 10px;}
.more-disk div li a{text-decoration: none; color:rgba(0,0,0,.3);} .more-disk div li a{text-decoration: none; color:rgba(0,0,0,.3);}
.more-disk div li a:hover{color:rgba(0,0,0,.87);} .more-disk div li a:hover{color:rgba(0,0,0,.87);}
.more-disk div li a[now]{color:rgba(0,0,0,1);} .more-disk div li a[now]{color:rgba(0,0,0,1);}
@ -51,8 +51,8 @@
/*.mdui-toolbar>*{display:none}*/ /*.mdui-toolbar>*{display:none}*/
.mdui-toolbar>a:last-child,.mdui-toolbar>.mdui-typo-headline,.mdui-toolbar>i:first-child{display:block} .mdui-toolbar>a:last-child,.mdui-toolbar>.mdui-typo-headline,.mdui-toolbar>i:first-child{display:block}
} }
</style>
</style> <!--customCss-->
<script src="//cdnjs.loli.net/ajax/libs/mdui/0.4.1/js/mdui.min.js"></script> <script src="//cdnjs.loli.net/ajax/libs/mdui/0.4.1/js/mdui.min.js"></script>
</head> </head>
<body class="mdui-theme-primary-blue-grey mdui-theme-accent-blue"> <body class="mdui-theme-primary-blue-grey mdui-theme-accent-blue">
@ -135,7 +135,7 @@
<!--IsimgFileEnd--> <!--IsimgFileEnd-->
<!--IstxtFileStart--> <!--IstxtFileStart-->
<div class="nexmoe-item"> <div class="nexmoe-item">
<pre id="editor" ><!--TxtContent--></pre> <pre id="editor" style="white-space: pre-wrap;"><!--TxtContent--></pre>
</div> </div>
<!--IstxtFileEnd--> <!--IstxtFileEnd-->
<!--IsmusicFileStart--> <!--IsmusicFileStart-->
@ -188,7 +188,6 @@
width:100% !important; width:100% !important;
height:230px; height:230px;
} }
.thumb .mdui-list-item .mdui-icon{ .thumb .mdui-list-item .mdui-icon{
font-size:100px; font-size:100px;
display: block; display: block;
@ -203,7 +202,6 @@
position: absolute; position: absolute;
top: 180px; top: 180px;
} }
</style> </style>
<div class="nexmoe-item"> <div class="nexmoe-item">
@ -253,24 +251,23 @@
<!--FileListEnd--> <!--FileListEnd-->
<!--MorePageStart--> <!--MorePageStart-->
<form action="" method="POST" id="nextpageform"> <form action="" method="POST" id="nextpageform">
<input type="hidden" id="pagenum" name="pagenum" value=""> <input type="hidden" id="pagenum" name="pagenum" value="">
<li class="mdui-list-item th"> <li class="mdui-list-item th">
<div class="mdui-col-sm-6 mdui-left mdui-text-left"> <div class="mdui-col-sm-6 mdui-left mdui-text-left">
<!--PrePageStart--> <!--PrePageStart-->
<a onclick="nextpage(<!--PrePageNum-->);" class="mdui-btn mdui-btn-raised"><!--constStr@PrePage--></a> <a onclick="nextpage(<!--PrePageNum-->);" class="mdui-btn mdui-btn-raised"><!--constStr@PrePage--></a>
<!--PrePageEnd--> <!--PrePageEnd-->
<!--NextPageStart--> <!--NextPageStart-->
<a onclick="nextpage(<!--NextPageNum-->);" class="mdui-btn mdui-btn-raised"><!--constStr@NextPage--></a> <a onclick="nextpage(<!--NextPageNum-->);" class="mdui-btn mdui-btn-raised"><!--constStr@NextPage--></a>
<!--NextPageEnd--> <!--NextPageEnd-->
</div> </div>
<div class="mdui-col-sm-6 mdui-right mdui-text-right"> <div class="mdui-col-sm-6 mdui-right mdui-text-right">
<div class="mdui-right mdui-text-right"><span class="mdui-chip-title">Page: <!--MorePageListStart--><!--MorePageListEnd--><!--MorePageListNowStart--><!--PageNum--><!--MorePageListNowEnd-->/<!--MaxPageNum--></span></div> <div class="mdui-right mdui-text-right"><span class="mdui-chip-title">Page: <!--MorePageListStart--><!--MorePageListEnd--><!--MorePageListNowStart--><!--PageNum--><!--MorePageListNowEnd-->/<!--MaxPageNum--></span></div>
</div> </div>
</li> </li>
</form> </form>
<!--MorePageEnd--> <!--MorePageEnd-->
</ul> </ul>
</div> </div>
</div> </div>
@ -302,11 +299,9 @@
} }
<!--MorePageEnd--> <!--MorePageEnd-->
$ = mdui.JQ; $ = mdui.JQ;
$.fn.extend({ $.fn.extend({
sortElements: function (comparator, getSortable) { sortElements: function (comparator, getSortable) {
getSortable = getSortable || function () { return this; }; getSortable = getSortable || function () { return this; };
var placements = this.map(function () { var placements = this.map(function () {
var sortElement = getSortable.call(this), var sortElement = getSortable.call(this),
parentNode = sortElement.parentNode, parentNode = sortElement.parentNode,
@ -314,24 +309,21 @@
document.createTextNode(''), document.createTextNode(''),
sortElement.nextSibling sortElement.nextSibling
); );
return function () { return function () {
parentNode.insertBefore(this, nextSibling); parentNode.insertBefore(this, nextSibling);
parentNode.removeChild(nextSibling); parentNode.removeChild(nextSibling);
}; };
}); });
return [].sort.call(this, comparator).each(function (i) { return [].sort.call(this, comparator).each(function (i) {
placements[i].call(getSortable.call(this)); placements[i].call(getSortable.call(this));
}); });
} }
}); });
function downall() { function downall() {
let dl_link_list = Array.from(document.querySelectorAll("li a")) let dl_link_list = Array.from(document.querySelectorAll("li a"))
.map(x => x.href) // 所有list中的链接 .map(x => x.href) // 所有list中的链接
.filter(x => x.slice(-1) != "/"); // 筛选出非文件夹的文件下载链接 .filter(x => x.slice(-1) != "/"); // 筛选出非文件夹的文件下载链接
let blob = new Blob([dl_link_list.join("\r\n")], { let blob = new Blob([dl_link_list.join("\r\n")], {
type: 'text/plain' type: 'text/plain'
}); // 构造Blog对象 }); // 构造Blog对象
@ -360,7 +352,6 @@
} }
}); });
} }
} }
<!--ShowThumbnailsEnd--> <!--ShowThumbnailsEnd-->
$(function(){ $(function(){
@ -373,23 +364,17 @@
return false; return false;
}); });
}); });
$('.icon-sort').on('click', function () { $('.icon-sort').on('click', function () {
let sort_type = $(this).attr("data-sort"), sort_order = $(this).attr("data-order"); let sort_type = $(this).attr("data-sort"), sort_order = $(this).attr("data-order");
let sort_order_to = (sort_order === "less") ? "more" : "less"; let sort_order_to = (sort_order === "less") ? "more" : "less";
$('li[data-sort]').sortElements(function (a, b) { $('li[data-sort]').sortElements(function (a, b) {
let data_a = $(a).attr("data-sort-" + sort_type), data_b = $(b).attr("data-sort-" + sort_type); let data_a = $(a).attr("data-sort-" + sort_type), data_b = $(b).attr("data-sort-" + sort_type);
let rt = data_a.localeCompare(data_b, undefined, {numeric: true}); let rt = data_a.localeCompare(data_b, undefined, {numeric: true});
return (sort_order === "more") ? 0-rt : rt; return (sort_order === "more") ? 0-rt : rt;
}); });
$(this).attr("data-order", sort_order_to).text("expand_" + sort_order_to); $(this).attr("data-order", sort_order_to).text("expand_" + sort_order_to);
}); });
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@ -191,7 +191,7 @@
<!--IsimgFileEnd--> <!--IsimgFileEnd-->
<!--IstxtFileStart--> <!--IstxtFileStart-->
<div class="nexmoe-item"> <div class="nexmoe-item">
<pre id="editor" ><!--TxtContent--></pre> <pre id="editor" style="white-space: pre-wrap;"><!--TxtContent--></pre>
</div> </div>
<!--IstxtFileEnd--> <!--IstxtFileEnd-->
<!--IsmusicFileStart--> <!--IsmusicFileStart-->
@ -319,8 +319,8 @@
</li> </li>
<!--FolderListEnd--> <!--FolderListEnd-->
<!--FileListStart--> <!--FileListStart-->
<li class="mdui-list-item file mdui-ripple" data-sort data-sort-name="<!--FileEncodeReplaceName-->" data-sort-date="<!--lastModifiedDateTime-->" data-sort-size="<!--size-->"> <li class="mdui-list-item file mdui-ripple" data-sort data-sort-name="<!--FileEncodeReplaceName-->" data-sort-date="<!--lastModifiedDateTime-->" data-sort-size="<!--size-->" data-readypreview="<!--FileExt-->">
<a data-name="<!--FileEncodeReplaceName-->" href="<!--FileEncodeReplaceUrl-->?preview" target="_blank"> <a class="<!--FileExtType-->" data-name="<!--FileEncodeReplaceName-->" href="<!--FileEncodeReplaceUrl-->?preview" target="_blank">
<!--<?php if(isImage($item['name']) and $_COOKIE["image_mode"] == "1"):?> <!--<?php if(isImage($item['name']) and $_COOKIE["image_mode"] == "1"):?>
<img class="mdui-img-fluid" src="<?php echo get_absolute_path($root.$path).rawurlencode($item['name']); ?>"> <img class="mdui-img-fluid" src="<?php echo get_absolute_path($root.$path).rawurlencode($item['name']); ?>">
<?php else:?>--> <?php else:?>-->
@ -331,9 +331,9 @@
<div class="mdui-col-sm-3 mdui-text-right"><!--lastModifiedDateTime--></div> <div class="mdui-col-sm-3 mdui-text-right"><!--lastModifiedDateTime--></div>
<div class="mdui-col-sm-2 mdui-text-right"><!--size--></div> <div class="mdui-col-sm-2 mdui-text-right"><!--size--></div>
</a> </a>
<div class="forcedownload " > <div class="forcedownload " >
<a title="直接下载" href="<!--FileEncodeReplaceUrl-->"> <a title="<!--constStr@Download-->" href="<!--FileEncodeReplaceUrl-->">
<button class="mdui-btn mdui-ripple mdui-btn-icon"><i class="mdui-icon material-icons">file_download</i></button> <button class="mdui-btn mdui-ripple mdui-btn-icon"><i class="mdui-icon material-icons">file_download</i></button>
</a> </a>
</div> </div>
@ -393,15 +393,17 @@ var $$ = mdui.JQ;
$$(function() { $$(function() {
$$('.file .iframe').each(function() { $$('.file .iframe').each(function() {
$$(this).on('click', function() { $$(this).on('click', function() {
url=$$(this).attr('href');
//url=url.substr(0,url.length-8);
layer.open({ layer.open({
type: 2, type: 2,
title: '<a target="_blank" href="'+$$(this).attr('href')+"<?php echo ((config('root_path') == '?')?'&s':'?s'); ?>"+'">'+ $$(this).find('span').text()+'(点击新窗口打开)</a>', //jia, title: '<a target="_blank" href="'+url+'">'+ $$(this).find('span').text()+'(点击新窗口打开)</a>', //jia,
//shadeClose: true, //shadeClose: true,
move: false, move: false,
shade: false, shade: false,
maxmin: true, maxmin: true,
area: ['100%', '100%'], area: ['100%', '100%'],
content: $$(this).attr('href')+"<?php echo ((config('root_path') == '?')?'&s':'?s'); ?>" //le content: url //le
,min: function(layero){ ,min: function(layero){
//zi; //zi;
layero.css({top: '90%'}) layero.css({top: '90%'})
@ -439,7 +441,7 @@ TC.preview_audio = function(aud){
} }
TC.aplayerList.push({ TC.aplayerList.push({
name:n, name:n,
url:this.href, url:this.href.substr(0,this.href.length-8),
artist:" ", artist:" ",
lrc:lrc lrc:lrc
}); });
@ -465,7 +467,7 @@ TC.preview_audio = function(aud){
TC.aplayer.setMode("normal"); TC.aplayer.setMode("normal");
} }
} }
$ = mdui.JQ; $ = mdui.JQ;
$.fn.extend({ $.fn.extend({
sortElements: function (comparator, getSortable) { sortElements: function (comparator, getSortable) {
@ -531,8 +533,6 @@ function thumb(){
} }
<!--ShowThumbnailsEnd--> <!--ShowThumbnailsEnd-->
$(function(){ $(function(){
$('.icon-sort').on('click', function () { $('.icon-sort').on('click', function () {
let sort_type = $(this).attr("data-sort"), sort_order = $(this).attr("data-order"); let sort_type = $(this).attr("data-sort"), sort_order = $(this).attr("data-order");
let sort_order_to = (sort_order === "less") ? "more" : "less"; let sort_order_to = (sort_order === "less") ? "more" : "less";
@ -545,11 +545,8 @@ $(function(){
$(this).attr("data-order", sort_order_to).text("expand_" + sort_order_to); $(this).attr("data-order", sort_order_to).text("expand_" + sort_order_to);
}); });
}); });
var ckname='image_mode'; var ckname='image_mode';
function getCookie(name) function getCookie(name)
{ {
@ -581,7 +578,7 @@ $('#image_view').on('click', function () {
window.location.href=window.location.href; window.location.href=window.location.href;
} }
}); });
</script> </script>
</body> </body>
</html> </html>

606
theme/renexmoe.html Normal file
View File

@ -0,0 +1,606 @@
<!--IconValuesStart-->
{
"music":"audiotrack",
"video":"ondemand_video",
"img":"image",
"default":"insert_drive_file"
}
<!--IconValuesEnd-->
<script>
var primary_color = "orange";
var accent_color = "deep-orange";
var bug = 0;
</script>
<!DOCTYPE html>
<html lang="<!--constStr@language-->">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0, user-scalable=no"/>
<title><!--Title--></title>
<link rel="stylesheet" href="//cdnjs.loli.net/ajax/libs/mdui/0.4.1/css/mdui.css">
<script src="//cdnjs.loli.net/ajax/libs/mdui/0.4.1/js/mdui.min.js"></script>
<script src="https://cdn.my-file.cn/mduilw/MDUILW/jquery.min.js"></script>
<!--<script src="https://cdn.my-file.cn/mduilw/MDUILW/jquery.pjax.js"></script>-->
<script src="//cdn.staticfile.org/layer/2.3/layer.js"></script>
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/glightbox/dist/css/glightbox.min.css">
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css">
<link rel="icon" href="<!--base_path-->favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="<!--base_path-->favicon.ico" type="image/x-icon">
<style>
body{
<!--BackgroundStart-->
background-repeat:no-repeat;
background-size:cover;
background-attachment:fixed;
background-image:url("<!--BackgroundUrl-->");
<!--BackgroundEnd-->
}
.mdui-appbar .mdui-toolbar{
height:64px;
font-size: 15px;
}
.mdui-toolbar>*{
padding: 0 6px;
margin: 0 2px;
opacity:0.5;
}
.mdui-toolbar>.mdui-typo-headline{
padding: 0 1px 0 0;
}
.mdui-toolbar>i{
padding: 0;
}
.mdui-toolbar>a:hover,a.mdui-typo-headline,a.active{
opacity:1;
}
.mdui-container{
max-width:950px;
}
.mdui-list-item{
-webkit-transition:none;
transition:none;
}
.mdui-toolbar>a:last-child{
opacity:1;
}
#instantclick-bar {
background: white;
}
.mdui-video-fluid {
height: -webkit-fill-available;
}
.dplayer-video-wrap .dplayer-video {
height: -webkit-fill-available !important;
}
.gslide iframe, .gslide video {
height: -webkit-fill-available;
}
@media screen and (max-width:950px) {
.mdui-list-item .mdui-text-right{
display: none;
}
.mdui-container{
width:100% !important;
margin:0px;
}
.mdui-toolbar>*{
display: none;
}
.mdui-toolbar>a:last-child,.mdui-toolbar>a:nth-last-of-type(2),.mdui-toolbar>.mdui-typo-headline,.mdui-toolbar>i:first-child,.mdui-toolbar-spacer{
display: block;
}
}
.spec-col{padding:.9em;display:flex;align-items:center;white-space:nowrap;flex:1 50%;min-width:225px}
.spec-type{font-size:1.35em}
.spec-value{font-size:1.25em}
.spec-text{float:left}
.device-section{padding-top:30px}
.spec-device-img{height:auto;height:340px;padding-bottom:30px}
#dl-header{margin:0}
#dl-section{padding-top:10px}
#dl-latest{position:relative;top:50%;transform:translateY(-50%)}
</style>
</head>
<body id="main-body">
<header class="mdui-appbar">
<div class="mdui-toolbar mdui-color-theme mdui-appbar-inset">
<span class="mdui-btn mdui-typo-headline mdui-btn-icon mdui-ripple" mdui-drawer="{target: '#main-drawer', swipe: true}" mdui-tooltip="{content: '菜单'}"><i class="mdui-icon material-icons mdui-text-color-white-icon">menu</i></span>
<a href="<!--base_path-->" class="mdui-typo-headline"><!--Sitename--></a>
<!--PathArrayStart-->
<i class="mdui-icon material-icons mdui-icon-dark" style="margin:0;">chevron_right</i>
<a href="<!--PathArrayLink-->"><!--PathArrayName--></a>
<!--PathArrayEnd-->
<div class="mdui-toolbar-spacer"></div>
<!--ShowThumbnailsStart-->
<a href="javascript:thumb();" id="thumb" class="mdui-btn mdui-btn-icon mdui-ripple" mdui-tooltip="{content: '切换显示'}"><i class="mdui-icon material-icons">format_list_bulleted</i></a>
<!--ShowThumbnailsEnd-->
</div>
</header>
<div class="mdui-drawer mdui-drawer-close" id="main-drawer">
<div class="mdui-list" mdui-collapse="{accordion: true}">
<li class="mdui-list-item mdui-ripple" href="javascript:void(0);" onclick="darkmod_use()">
<a class="mdui-list-item-icon mdui-icon material-icons">brightness_4</a>
<a class="mdui-list-item-content">深色模式</a>
</li>
<li class="mdui-list-item mdui-ripple">
<a href="<!--base_path-->" class="mdui-list-item-icon mdui-icon material-icons">home</a>
<a href="<!--base_path-->" class="mdui-list-item-content"><!--constStr@Home--></a>
</li>
<!--MultiDiskAreaStart-->
<!--MultiDisksStart-->
<a href="<!--MultiDisksUrl-->" class="mdui-list-item mdui-ripple" <!--MultiDisksNow-->>
<i class="mdui-list-item-icon mdui-icon material-icons">cloud</i>
<div class="mdui-list-item-content"><!--MultiDisksName--></div>
</a>
<!--MultiDisksEnd-->
<!--MultiDiskAreaEnd-->
<a href="https://github.com/qkqpttgf/OneManager-php" class="mdui-list-item mdui-ripple">
<i class="mdui-list-item-icon mdui-icon material-icons">code</i>
<div class="mdui-list-item-content">Github</div>
</a>
</div>
</div>
<!--ListStart-->
<!--EncryptedStart-->
<div class="mdui-col-md-6 mdui-col-offset-md-3" id="pjax-main">
<!--<center><h1 class="mdui-typo-display-2-opacity">这是一个受保护的文件夹,您需要提供访问密码才能查看。</h1></center>-->
<form action="" method="post">
<div class="mdui-textfield mdui-textfield-floating-label">
<i class="mdui-icon material-icons">https</i>
<label class="mdui-textfield-label"><!--constStr@InputPassword--></label>
<input name="password1" class="mdui-textfield-input" type="password"/>
</div>
<br>
<button type="submit" class="mdui-center mdui-btn mdui-btn-raised mdui-ripple mdui-color-theme">
<i class="mdui-icon material-icons">fingerprint</i>
<!--constStr@Submit-->
</button>
</form>
</div>
<!--EncryptedEnd-->
<!--GuestUploadStart-->
<!--
<div class="nexmoe-item" style="padding: 100px!important;" id="pjax-main">
<div class="mdui-typo-display-3-opacity" style="text-align:center;">OneImages</div>
<form action="" method="post" enctype="multipart/form-data">
<input class="mdui-center" type="file" style="margin: 50px 0;" name="file" />
<div class="mdui-row-xs-3">
<div class="mdui-col"></div>
<div class="mdui-col">
<button class="mdui-btn mdui-btn-block mdui-color-theme-accent mdui-ripple"><!--constStr@Upload--></button>
</div>
</div>
</form>
</div>
-->
<!--GuestUploadEnd-->
<!--IsFileStart-->
<div class="mdui-container-fluid" id="pjax-main">
<!--IsimgFileStart-->
<div class="nexmoe-item">
<img class="mdui-img-fluid mdui-center mdui-m-t-5 "src="<!--FileDownUrl-->"/>
</div>
<!--IsimgFileEnd-->
<!--IstxtFileStart-->
<div class="nexmoe-item">
<pre id="editor" style="white-space: pre-wrap;"><!--TxtContent--></pre>
</div>
<!--IstxtFileEnd-->
<!--IsmusicFileStart-->
<div class="nexmoe-item">
<audio class="mdui-center" src="<!--FileDownUrl-->" controls autoplay style="width: 100%;" ></audio>
</div>
<!--IsmusicFileEnd-->
<!--IsofficeFileStart-->
<div class="nexmoe-item">
<iframe id="office-a" src="https://view.officeapps.live.com/op/view.aspx?src=<!--FileEncodeDownUrl-->" style="width: 100%;height: 800px" frameborder="0"></iframe>
</div>
<!--IsofficeFileEnd-->
<!--IsvideoFileStart-->
<link class="dplayer-css" rel="stylesheet" href="https://cdn.jsdelivr.net/npm/dplayer/dist/DPlayer.min.css">
<script src="https://cdn.jsdelivr.net/npm/dplayer/dist/DPlayer.min.js"></script>
<div class="nexmoe-item mdui-center" style="width: 70%;height:90%;" >
<div id="dplayer"></div>
</div>
<script>
const dp = new DPlayer({
container: document.getElementById('dplayer'),
lang:'zh-cn',
video: {
url: '<!--FileDownUrl-->',
type: 'auto'
}
});
</script>
<!--IsvideoFileEnd-->
<!--IsOtherFileStart-->
<div class="nexmoe-item"><!--constStr@FileNotSupport--></div>
<!--IsOtherFileEnd-->
</div>
<a href="<!--FileEncodeReplaceUrl-->" class="mdui-fab mdui-fab-fixed mdui-ripple mdui-color-theme-accent"><i class="mdui-icon material-icons">file_download</i></a>
<!--IsFileEnd-->
<!--IsFolderStart-->
<div class="mdui-container">
<div class="mdui-container-fluid"></div>
<div class="mdui-container-fluid">
<!--HeadomfStart-->
<div class="mdui-typo mdui-shadow-3" style="padding: 20px;margin: 20px 0">
<!--HeadomfContent-->
</div>
<!--HeadomfEnd-->
<!--HeadmdStart-->
<div class="mdui-typo mdui-shadow-3" style="padding: 20px;margin: 20px 0">
<!--<div class="mdui-chip">
<span class="mdui-chip-icon"><i class="mdui-icon material-icons">face</i></span>
<span class="mdui-chip-title">HEAD.md</span>
</div>-->
<!--HeadmdContent-->
</div>
<!--HeadmdEnd-->
<style>
.thumb .th{
display: none;
}
.thumb .mdui-text-right{
display: none;
}
.thumb .mdui-list-item a ,.thumb .mdui-list-item {
width:213px;
height: 230px;
float: left;
margin: 10px 10px !important;
}
.thumb .mdui-col-xs-12,.thumb .mdui-col-sm-7{
width:100% !important;
height:230px;
}
.thumb .mdui-list-item .mdui-icon{
font-size:100px;
display: block;
margin-top: 40px;
color: #7ab5ef;
}
.thumb .mdui-list-item span{
float: left;
display: block;
text-align: center;
width:100%;
position: absolute;
top: 180px;
}
.thumb .forcedownload {
display: none;
}
</style>
<div class="nexmoe-item">
<div class="mdui-row">
<ul class="mdui-list">
<li class="mdui-list-item th mdui-ripple" style="padding-right:36px;">
<div class="mdui-col-xs-12 mdui-col-sm-7"><!--constStr@File--> <i class="mdui-icon material-icons icon-sort" data-sort="name" data-order="downward">expand_more</i></div>
<div class="mdui-col-sm-3 mdui-text-right"><!--constStr@EditTime--> <i class="mdui-icon material-icons icon-sort" data-sort="date" data-order="downward">expand_more</i></div>
<div class="mdui-col-sm-2 mdui-text-right"><!--constStr@Size--> <i class="mdui-icon material-icons icon-sort" data-sort="size" data-order="downward">expand_more</i></div>
</li>
<!--BackArrowStart-->
<li class="mdui-list-item mdui-ripple">
<div class="mdui-row mdui-col-sm-12">
<a href="<!--BackArrowUrl-->">
<div class="mdui-col-xs-7">
<i class="mdui-icon material-icons">arrow_upward</i>
..
</div>
<div class="mdui-col-xs-3 mdui-text-right"></div>
<div class="mdui-col-xs-2 mdui-text-right"></div>
</a>
</div>
</li>
<!--BackArrowEnd-->
<!--FolderListStart-->
<li class="mdui-list-item mdui-ripple" data-sort data-sort-name="<!--FileEncodeReplaceName-->" data-sort-date="<!--lastModifiedDateTime-->" data-sort-size="<!--size-->" style="padding-right:36px;">
<div class="mdui-row mdui-col-sm-12">
<a href="<!--FileEncodeReplaceUrl-->/">
<div class="mdui-col-xs-7 mdui-text-truncate">
<i class="mdui-icon material-icons">folder_open</i>
<span><!--FileEncodeReplaceName--></span>
</div>
<div class="mdui-col-xs-3 mdui-text-right"><!--lastModifiedDateTime--></div>
<div class="mdui-col-xs-2 mdui-text-right"><!--size--></div>
</a>
</div>
</li>
<!--FolderListEnd-->
<!--FileListStart-->
<li class="mdui-list-item file mdui-ripple" data-sort data-sort-name="<!--FileEncodeReplaceName-->" data-sort-date="<!--lastModifiedDateTime-->" data-sort-size="<!--size-->" data-readypreview="<!--FileExt-->">
<a class="<!--FileExtType-->" data-name="<!--FileEncodeReplaceName-->" href="<!--FileEncodeReplaceUrl-->?preview" target="_blank">
<!--<?php if(isImage($item['name']) and $_COOKIE["image_mode"] == "1"):?>
<img class="mdui-img-fluid" src="<?php echo get_absolute_path($root.$path).rawurlencode($item['name']); ?>">
<?php else:?>-->
<div class="mdui-row mdui-col-sm-12">
<div class="mdui-col-xs-12 mdui-col-sm-7 mdui-text-truncate">
<i class="mdui-icon material-icons"><!--IconValue--></i>
<span><!--FileEncodeReplaceName--></span>
</div>
<div class="mdui-col-sm-3 mdui-text-right"><!--lastModifiedDateTime--></div>
<div class="mdui-col-sm-2 mdui-text-right"><!--size--></div>
</a>
</div>
<div class="forcedownload " >
<a title="<!--constStr@Download-->" href="<!--FileEncodeReplaceUrl-->">
<button class="mdui-btn mdui-ripple mdui-btn-icon"><i class="mdui-icon material-icons">file_download</i></button>
</a>
</div>
</li>
<!--FileListEnd-->
<!--MorePageStart-->
<form action="" method="POST" id="nextpageform">
<input type="hidden" id="pagenum" name="pagenum" value="">
<li class="mdui-list-item th">
<div class="mdui-col-sm-6 mdui-left mdui-text-left">
<!--PrePageStart-->
<a onclick="nextpage(<!--PrePageNum-->);" class="mdui-btn mdui-btn-raised"><!--constStr@PrePage--></a>
<!--PrePageEnd-->
<!--NextPageStart-->
<a onclick="nextpage(<!--NextPageNum-->);" class="mdui-btn mdui-btn-raised"><!--constStr@NextPage--></a>
<!--NextPageEnd-->
</div>
<div class="mdui-col-sm-6 mdui-right mdui-text-right">
<div class="mdui-right mdui-text-right"><span class="mdui-chip-title">Page: <!--MorePageListStart--><!--MorePageListEnd--><!--MorePageListNowStart--><!--PageNum--><!--MorePageListNowEnd-->/<!--MaxPageNum--></span></div>
</div>
</li>
</form>
<!--MorePageEnd-->
</ul>
</div>
</div>
<!--ReadmemdStart-->
<div class="mdui-typo mdui-shadow-3" style="padding: 20px;margin: 20px 0">
<!--<div class="mdui-chip">
<span class="mdui-chip-icon"><i class="mdui-icon material-icons">face</i></span>
<span class="mdui-chip-title">README.md</span>
</div>-->
<!--ReadmemdContent-->
</div>
<!--ReadmemdEnd-->
<!--FootomfStart-->
<div class="mdui-typo mdui-shadow-3" style="padding: 20px;margin: 20px 0">
<!--FootomfContent-->
</div>
<!--FootomfEnd-->
</div>
</div>
<!--IsFolderEnd-->
<!--ListEnd-->
<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>
<!--MorePageStart-->
function nextpage(num) {
document.getElementById('pagenum').value=num;
document.getElementById('nextpageform').submit();
}
<!--MorePageEnd-->
var $$ = mdui.JQ;
$$(function() {
$$('.file .iframe').each(function() {
$$(this).on('click', function() {
url=$$(this).attr('href');
//url=url.substr(0,url.length-8);
layer.open({
type: 2,
title: '<a target="_blank" href="'+url+'">'+ $$(this).find('span').text()+'(点击新窗口打开)</a>', //jia,
//shadeClose: true,
move: false,
shade: false,
maxmin: true,
area: ['100%', '100%'],
content: url //le
,min: function(layero){
//zi;
layero.css({top: '90%'})
}
});
return false;
});
});
$('.file .dl').each(function () {
$(this).on('click', function () {
var form = $('<form target=_blank method=post></form>').attr('action', $(this).attr('href')).get(0);
$(document.body).append(form);
form.submit();
$(form).remove();
return false;
});
});
});
window.TC=window.TC||{};
jQuery(".file .audio").click(function(e){
e.preventDefault();
TC.preview_audio(this);
});
TC.preview_audio = function(aud){
if(!TC.aplayer){
TC.aplayerList=[];
jQuery(".file .audio").each(function(){
var ext = jQuery(this).data("readypreview");
var n = jQuery(this).find("span").text();
var l = n.replace("."+ext,".lrc");
var la = jQuery('a[data-name="'+l+'"]');
var lrc = undefined;
if(la.length>0){
lrc = la[0].href+"?s";
}
TC.aplayerList.push({
name:n,
url:this.href.substr(0,this.href.length-8),
artist:" ",
lrc:lrc
});
})
jQuery('<div id="aplayer">').appendTo("body");
TC.aplayer = new APlayer({
container: document.getElementById('aplayer'),
fixed: true,
audio: TC.aplayerList,
lrcType: 3
});
}
var k=-1;
for(var i in TC.aplayerList){
if(TC.aplayerList[i].name==jQuery(aud).data("name")){
k=i;
break;
}
}
if(k>=0){
TC.aplayer.list.switch(k);
TC.aplayer.play();
TC.aplayer.setMode("normal");
}
}
$ = mdui.JQ;
$.fn.extend({
sortElements: function (comparator, getSortable) {
getSortable = getSortable || function () { return this; };
var placements = this.map(function () {
var sortElement = getSortable.call(this),
parentNode = sortElement.parentNode,
nextSibling = parentNode.insertBefore(
document.createTextNode(''),
sortElement.nextSibling
);
return function () {
parentNode.insertBefore(this, nextSibling);
parentNode.removeChild(nextSibling);
};
});
return [].sort.call(this, comparator).each(function (i) {
placements[i].call(getSortable.call(this));
});
}
});
var lightbox = GLightbox();
function downall() {
let dl_link_list = Array.from(document.querySelectorAll("li a"))
.map(x => x.href) // 所有list中的链接
.filter(x => x.slice(-1) != "/"); // 筛选出非文件夹的文件下载链接
let blob = new Blob([dl_link_list.join("\r\n")], {
type: 'text/plain'
}); // 构造Blog对象
let a = document.createElement('a'); // 伪造一个a对象
a.href = window.URL.createObjectURL(blob); // 构造href属性为Blob对象生成的链接
a.download = "folder_download_link.txt"; // 文件名称,你可以根据你的需要构造
a.click() // 模拟点击
a.remove();
}
<!--ShowThumbnailsStart-->
function thumb(){
if($('#thumb i').text() == "apps"){
$('#thumb i').text("format_list_bulleted");
$('.nexmoe-item').removeClass('thumb');
$('.nexmoe-item .mdui-icon').show();
$('.nexmoe-item .mdui-list-item').css("background","");
}else{
$('#thumb i').text("apps");
$('.nexmoe-item').addClass('thumb');
$('.mdui-col-xs-12 i.mdui-icon').each(function(){
//if($(this).text() == "image" || $(this).text() == "ondemand_video"){
if($(this).text() == "image"){
var thumbnails = $(this).parent().parent().attr('href');
//var thumb =(href.indexOf('?') == -1)?'?t=220':'&t=220';
thumbnails = thumbnails.substr(0, thumbnails.length-8)+'?thumbnails&location';
$(this).hide();
//$(this).parent().parent().parent().css("background","url("+href+thumb+") no-repeat center top");
$(this).parent().parent().parent().css("background","url("+thumbnails+") no-repeat center top");
}
});
}
}
<!--ShowThumbnailsEnd-->
$(function(){
$('.icon-sort').on('click', function () {
let sort_type = $(this).attr("data-sort"), sort_order = $(this).attr("data-order");
let sort_order_to = (sort_order === "less") ? "more" : "less";
$('li[data-sort]').sortElements(function (a, b) {
let data_a = $(a).attr("data-sort-" + sort_type), data_b = $(b).attr("data-sort-" + sort_type);
let rt = data_a.localeCompare(data_b, undefined, {numeric: true});
return (sort_order === "more") ? 0-rt : rt;
});
$(this).attr("data-order", sort_order_to).text("expand_" + sort_order_to);
});
});
var ckname='image_mode';
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
function setCookie(key,value,day){
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(key);
if(cval!=null)
document.cookie= key + "="+cval+";expires="+exp.toGMTString();
var date = new Date();
var nowDate = date.getDate();
date.setDate(nowDate + day);
var cookie = key+"="+value+"; expires="+date;
document.cookie = cookie;
return cookie;
}
$('#image_view').on('click', function () {
if($(this).prop('checked') == true){
setCookie(ckname,1,1);
window.location.href=window.location.href;
}else{
setCookie(ckname,0,1);
window.location.href=window.location.href;
}
});
var mainbody = document.getElementById("main-body");
var darkmod = 0;
var pri_class = "mdui-theme-primary-"+primary_color;
var acc_class = "mdui-theme-accent-"+accent_color;
mainbody.classList.add(acc_class);
mainbody.classList.add(pri_class);
if (window.matchMedia('(prefers-color-scheme: dark)').matches)
{mainbody.classList.add("mdui-theme-layout-dark");darkmod = 1}
function darkmod_use(){
if (darkmod == 1){
mainbody.classList.remove("mdui-theme-layout-dark");darkmod = 0;
} else {
mainbody.classList.add("mdui-theme-layout-dark");darkmod = 1;
}};
//$(document).pjax('a', '#pjax-main' , {fragment:'#pjax-main', timeout:8000});
</script>
</body>
</html>

View File

@ -2,7 +2,7 @@
<html lang="<?php echo $constStr['language']; ?>"> <html lang="<?php echo $constStr['language']; ?>">
<head> <head>
<title><?php echo $pretitle; if ($_SERVER['base_disk_path']!=$_SERVER['base_path']) { if (getConfig('diskname')!='') $diskname = getConfig('diskname'); else $diskname = $_SERVER['disktag']; echo ' - ' . $diskname; } ?> - <?php echo $_SERVER['sitename'];?></title> <title><?php echo $pretitle; if ($_SERVER['base_disk_path']!=$_SERVER['base_path']) { if (getConfig('diskname')!='') $diskname = getConfig('diskname'); else $diskname = $_SERVER['disktag']; echo ' - ' . $diskname; } ?> - <?php echo $_SERVER['sitename'];?></title>
<meta charset=utf-8> <meta charset="utf-8">
<meta http-equiv=X-UA-Compatible content="IE=edge"> <meta http-equiv=X-UA-Compatible content="IE=edge">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,initial-scale=1.0"> <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,initial-scale=1.0">
<meta name="keywords" content="<?php echo $n_path;?>,<?php if ($p_path!='') echo $p_path.','; echo $_SERVER['sitename'];?>"> <meta name="keywords" content="<?php echo $n_path;?>,<?php if ($p_path!='') echo $p_path.','; echo $_SERVER['sitename'];?>">
@ -16,9 +16,9 @@
ion-icon{font-size:16px;vertical-align:middle} ion-icon{font-size:16px;vertical-align:middle}
::selection{background-color:rgba(200,200,200,0.6)} ::selection{background-color:rgba(200,200,200,0.6)}
input{cursor:pointer;padding: 0 8px;height:24px;font-weight:bold;border:1px solid rgba(27,31,35,0);transition-duration: 0.3s;border-radius:16px;background-color:transparent;color:#24292e} input{cursor:pointer;padding: 0 8px;height:24px;font-weight:bold;border:1px solid rgba(27,31,35,0);transition-duration: 0.3s;border-radius:16px;background-color:transparent;color:#24292e}
input:hover{background:rgb(3,102,214,0.6);color:#FFF;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);} input:focus{background:rgb(3,102,214,0.6);color:#FFF;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);}
textarea{font-weight:bold;border:1px solid rgba(27,31,35,0);transition-duration: 0.3s;border-radius:6px;background-color:transparent;color:#24292e} textarea{font-weight:bold;border:1px solid rgba(27,31,35,0);transition-duration: 0.3s;border-radius:6px;background-color:transparent;color:#24292e}
textarea:hover{background:rgba(3,102,214,0.6);color:#FFF;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);} textarea:focus{background:rgba(3,102,214,0.6);color:#FFF;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);}
.changelanguage{position:absolute;right:5px;} .changelanguage{position:absolute;right:5px;}
.title{text-shadow:0 1px 15px rgba(27,31,35,1);text-decoration:none;transition-duration: 0.3s;border:1px solid rgba(27,31,35,0);text-align:center;letter-spacing:1px;height: 10px;margin:1rem auto;padding: 16px 16px;white-space:nowrap;overflow:hidden;width:fit-content;border-radius:36px;} .title{text-shadow:0 1px 15px rgba(27,31,35,1);text-decoration:none;transition-duration: 0.3s;border:1px solid rgba(27,31,35,0);text-align:center;letter-spacing:1px;height: 10px;margin:1rem auto;padding: 16px 16px;white-space:nowrap;overflow:hidden;width:fit-content;border-radius:36px;}
.title:hover{text-shadow:0 1px 15px rgba(27,31,35,0);background-color:rgba(200,200,200,1);box-shadow:0 1px 15px rgba(27,31,35,.15);} .title:hover{text-shadow:0 1px 15px rgba(27,31,35,0);background-color:rgba(200,200,200,1);box-shadow:0 1px 15px rgba(27,31,35,.15);}
@ -34,7 +34,7 @@
.more-disk a{border:1px solid rgba(27,31,35,0);font-weight:bold;margin:0 2px;padding:5px;transition-duration: 0.3s;border-radius: 18px;background-color:transparent;color: #24292e} .more-disk a{border:1px solid rgba(27,31,35,0);font-weight:bold;margin:0 2px;padding:5px;transition-duration: 0.3s;border-radius: 18px;background-color:transparent;color: #24292e}
.more-disk a:hover, .more-disk a[now]{color:#FFF;background:rgba(205,205,205);border:1px solid rgba(27,31,35,.15);box-shadow:0 1px 15px rgba(27,31,35,.15)} .more-disk a:hover, .more-disk a[now]{color:#FFF;background:rgba(205,205,205);border:1px solid rgba(27,31,35,.15);box-shadow:0 1px 15px rgba(27,31,35,.15)}
.list-table{width:100%;padding:0 20px 20px 20px;border-spacing:0;overflow:hidden;table-layout:fixed} .list-table{width:100%;padding:0 20px 20px 20px;border-spacing:0;overflow:hidden;table-layout:fixed}
.list-table tr{height:32px;float:left;width:100%;transition-duration: 0.3s;border-radius:16px} .list-table tr{height:fit-content;float:left;width:100%;transition-duration: 0.3s;border-radius:16px}
.list-table tr[data-to]:hover{background:linear-gradient(to right, rgb(3,102,214,0.9) , rgba(3,102,214,0.3));color:white;box-shadow:0 1px 15px rgba(27,31,35,.15)} .list-table tr[data-to]:hover{background:linear-gradient(to right, rgb(3,102,214,0.9) , rgba(3,102,214,0.3));color:white;box-shadow:0 1px 15px rgba(27,31,35,.15)}
.list-table tr[data-to]:hover a{color:white} .list-table tr[data-to]:hover a{color:white}
.list-table tr:first-child{background:rgba(245,245,245,0)} .list-table tr:first-child{background:rgba(245,245,245,0)}
@ -42,10 +42,10 @@
.list-table td.file,.list-table th.file{width:70%;} .list-table td.file,.list-table th.file{width:70%;}
.list-table td.size,.list-table th.size{width:10%;} .list-table td.size,.list-table th.size{width:10%;}
.list-table td,.list-table th{padding:0 8px;text-align:left;float:left;line-height:32px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .list-table td,.list-table th{padding:0 8px;text-align:left;float:left;line-height:32px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.list-table td button,.list-table th button{border-radius:16px;transition-duration: 0.3s;cursor:pointer;color:#24292e;height:24px;padding: 0 8px;background:transparent;border:1px solid rgba(27,31,35,0);font-weight:bold;} .list-table td button,.list-table th button,.swal-button{border-radius:16px;transition-duration: 0.3s;cursor:pointer;color:#24292e;height:24px;padding: 0 8px;background:transparent;border:1px solid rgba(27,31,35,0);font-weight:bold;}
.list-table td button:hover,.list-table th button:hover{color:#FFF;background:rgba(3,102,214,0.6);border:1px solid rgba(27,31,35,.15);box-shadow:0 1px 15px rgba(27,31,35,.15);} .list-table td button:hover,.list-table th button:hover,.swal-button:hover{color:#FFF;background:rgba(3,102,214,0.6);border:1px solid rgba(27,31,35,.15);box-shadow:0 1px 15px rgba(27,31,35,.15);}
.list-table .size,.list-table .updated_at{text-align:right} .list-table .size,.list-table .updated_at{text-align:right}
.mask{position:absolute;left:0px;top:0px;width:100%;background-color:#000;filter:alpha(opacity=20);opacity:0.2;z-index:2;} .mask{position:absolute;left:0px;top:0px;width:100%;background-color:#000;filter:alpha(opacity=30);opacity:0.3;z-index:2;}
<?php if ($_SERVER['admin']) { ?> <?php if ($_SERVER['admin']) { ?>
.operate{display:inline-table;margin:0;margin-right:5px;list-style:none} .operate{display:inline-table;margin:0;margin-right:5px;list-style:none}
.operate ul{position:absolute;display:none;background:white;transition-duration: 0.3s;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);border-radius:32px;margin:-7px 0 0 0;padding:0 3px;color:#205D67;z-index:3;} .operate ul{position:absolute;display:none;background:white;transition-duration: 0.3s;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);border-radius:32px;margin:-7px 0 0 0;padding:0 3px;color:#205D67;z-index:3;}
@ -398,7 +398,7 @@ echo '</script>';
if ($_SERVER['admin']) { ?> if ($_SERVER['admin']) { ?>
<div id="upload_div" style="margin:0 0 16px 0"> <div id="upload_div" style="margin:0 0 16px 0">
<center> <center>
<input id="upload_file" type="file" name="upload_filename" multiple="multiple"> <input style="width:60%" id="upload_file" type="file" name="upload_filename" multiple="multiple">
<input id="upload_submit" onclick="preup();" value="<?php echo getconstStr('Upload'); ?>" type="button"> <input id="upload_submit" onclick="preup();" value="<?php echo getconstStr('Upload'); ?>" type="button">
</center> </center>
</div> </div>
@ -429,7 +429,7 @@ echo '</script>';
<div style="padding:20px"> <div style="padding:20px">
<center> <center>
<form action="" method="post"> <form action="" method="post">
<input name="password1" type="password" placeholder="'.getconstStr('InputPassword').'"> <input style="width: 60%" name="password1" type="password" placeholder="'.getconstStr('InputPassword').'">
<input type="submit" value="'.getconstStr('Submit').'"> <input type="submit" value="'.getconstStr('Submit').'">
</form> </form>
</center> </center>
@ -531,7 +531,7 @@ echo '</script>';
</tr> </tr>
<tr> <tr>
<td><?php echo getconstStr('Name'); ?></td> <td><?php echo getconstStr('Name'); ?></td>
<td><input id="create_input" name="create_name" type="text" value=""></td> <td><input style="width: 94%" id="create_input" name="create_name" type="text" value=""></td>
</tr> </tr>
<tr id="create_text_div"> <tr id="create_text_div">
<td><?php echo getconstStr('Content'); ?></td> <td><?php echo getconstStr('Content'); ?></td>
@ -562,7 +562,9 @@ echo '</script>';
</div> </div>
<?php } <?php }
} ?> } ?>
<div style="color: rgba(247,247,249,0);"><?php echo date("Y-m-d H:i:s")." ".getconstStr('Week')[date("w")]." ".$_SERVER['REMOTE_ADDR'];?></div> <div style="color: rgba(247,247,249,1);text-align:center;text-shadow:0 1px 15px rgba(27,31,35,1);font-weight:bold">Power by<a style="color:rgb(3,102,214)" href="https://github.com/BingoKingo/Tfo">Tfo</a>'s Theme for <a style="color:rgb(3,102,214)" href="https://github.com/qkqpttgf/OneManager-php">OneManager-php</a></div>
<div style="color: rgba(247,247,249,0);text-align:center;text-shadow:0 1px 15px rgba(27,31,35,0);font-weight:bold;margin-top:6px"><?php echo date("Y-m-d H:i:s")." ".getconstStr('Week')[date("w")]." ".$_SERVER['REMOTE_ADDR'];?></div>
<script src="https://cdn.jsdelivr.net/npm/sweetalert@2.1.2/dist/sweetalert.min.js"></script>
</body> </body>
<?php if ($files) { ?> <?php if ($files) { ?>
<?php if (isset($files['children']['head.md'])||isset($files['children']['readme.md'])) { ?><link rel="stylesheet" href="//unpkg.zhimg.com/github-markdown-css@3.0.1/github-markdown.css"> <?php if (isset($files['children']['head.md'])||isset($files['children']['readme.md'])) { ?><link rel="stylesheet" href="//unpkg.zhimg.com/github-markdown-css@3.0.1/github-markdown.css">
@ -721,6 +723,10 @@ echo '</script>';
$readme.innerHTML = marked(document.getElementById('readme-md').innerText); $readme.innerHTML = marked(document.getElementById('readme-md').innerText);
} }
function showthumbnails(obj) { function showthumbnails(obj) {
swal("Loading Thumbnails", {
buttons: false,
timer: 1000,
});
var files=document.getElementsByName('filelist'); var files=document.getElementsByName('filelist');
for ($i=0;$i<files.length;$i++) { for ($i=0;$i<files.length;$i++) {
str=files[$i].innerText; str=files[$i].innerText;
@ -757,7 +763,7 @@ echo '</script>';
tmptextarea.select(); tmptextarea.select();
tmptextarea.setSelectionRange(0, tmptextarea.value.length); tmptextarea.setSelectionRange(0, tmptextarea.value.length);
document.execCommand("copy"); document.execCommand("copy");
alert(tmptextarea.innerHTML+"<?php echo getconstStr('Success');?>"); swal(tmptextarea.innerHTML+'<?php echo getconstStr('Success'); ?>');
} }
var sort=0; var sort=0;
function sortby(string) { function sortby(string) {
@ -895,7 +901,6 @@ echo '</script>';
var tr1=document.createElement('tr'); var tr1=document.createElement('tr');
table1.appendChild(tr1); table1.appendChild(tr1);
tr1.setAttribute('data-to',1); tr1.setAttribute('data-to',1);
tr1.setAttribute('style','height:fit-content');
var td1=document.createElement('td'); var td1=document.createElement('td');
tr1.appendChild(td1); tr1.appendChild(td1);
td1.setAttribute('style','width:fit-content'); td1.setAttribute('style','width:fit-content');
@ -1043,7 +1048,7 @@ echo '</script>';
//if (xhr4.status==409) filename = filemd5 + file.name.substr(file.name.indexOf('.')); //if (xhr4.status==409) filename = filemd5 + file.name.substr(file.name.indexOf('.'));
filename = JSON.parse(xhr4.responseText)['name']; filename = JSON.parse(xhr4.responseText)['name'];
if (filename=='') { if (filename=='') {
alert('<?php echo getconstStr('UploadErrorUpAgain'); ?>'); swal('<?php echo getconstStr('UploadErrorUpAgain'); ?>');
uploadbuttonshow(); uploadbuttonshow();
return; return;
} }
@ -1177,7 +1182,7 @@ echo '</script>';
html=JSON.parse(xhr.responseText); html=JSON.parse(xhr.responseText);
addelement(html); addelement(html);
} }
} else alert(xhr.status+'\n'+xhr.responseText); } else swal(xhr.status+'\n'+xhr.responseText);
document.getElementById(str+'_div').style.display='none'; document.getElementById(str+'_div').style.display='none';
document.getElementById('mask').style.display='none'; document.getElementById('mask').style.display='none';
} }

View File

@ -2,7 +2,7 @@
<html lang="<?php echo $constStr['language']; ?>"> <html lang="<?php echo $constStr['language']; ?>">
<head> <head>
<title><?php echo $pretitle; if ($_SERVER['base_disk_path']!=$_SERVER['base_path']) { if (getConfig('diskname')!='') $diskname = getConfig('diskname'); else $diskname = $_SERVER['disktag']; echo ' - ' . $diskname; } ?> - <?php echo $_SERVER['sitename'];?></title> <title><?php echo $pretitle; if ($_SERVER['base_disk_path']!=$_SERVER['base_path']) { if (getConfig('diskname')!='') $diskname = getConfig('diskname'); else $diskname = $_SERVER['disktag']; echo ' - ' . $diskname; } ?> - <?php echo $_SERVER['sitename'];?></title>
<meta charset=utf-8> <meta charset="utf-8">
<meta http-equiv=X-UA-Compatible content="IE=edge"> <meta http-equiv=X-UA-Compatible content="IE=edge">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,initial-scale=1.0"> <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,initial-scale=1.0">
<meta name="keywords" content="<?php echo $n_path;?>,<?php if ($p_path!='') echo $p_path.','; echo $_SERVER['sitename'];?>"> <meta name="keywords" content="<?php echo $n_path;?>,<?php if ($p_path!='') echo $p_path.','; echo $_SERVER['sitename'];?>">
@ -16,9 +16,9 @@
ion-icon{font-size:16px;vertical-align:middle} ion-icon{font-size:16px;vertical-align:middle}
::selection{background-color:rgba(200,200,200,0.6)} ::selection{background-color:rgba(200,200,200,0.6)}
input{cursor:pointer;padding: 0 8px;height:24px;font-weight:bold;border:1px solid rgba(27,31,35,0);transition-duration: 0.3s;border-radius:16px;background-color:transparent;color:#24292e} input{cursor:pointer;padding: 0 8px;height:24px;font-weight:bold;border:1px solid rgba(27,31,35,0);transition-duration: 0.3s;border-radius:16px;background-color:transparent;color:#24292e}
input:hover{background:rgba(3,102,214,0.6);color:#FFF;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);} input:focus{background:rgba(3,102,214,0.6);color:#FFF;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);}
textarea{font-weight:bold;border:1px solid rgba(27,31,35,0);transition-duration: 0.3s;border-radius:6px;background-color:transparent;color:#24292e} textarea{font-weight:bold;border:1px solid rgba(27,31,35,0);transition-duration: 0.3s;border-radius:6px;background-color:transparent;color:#24292e}
textarea:hover{background:rgba(3,102,214,0.6);color:#FFF;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);} textarea:focus{background:rgba(3,102,214,0.6);color:#FFF;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);}
.changelanguage{position:absolute;right:5px;} .changelanguage{position:absolute;right:5px;}
.title{text-shadow:0 1px 15px rgba(27,31,35,1);text-decoration:none;transition-duration: 0.3s;border:1px solid rgba(27,31,35,0);text-align:center;letter-spacing:1px;height: 10px;margin:1rem auto;padding: 16px 16px;white-space:nowrap;overflow:hidden;width:fit-content;border-radius:36px;} .title{text-shadow:0 1px 15px rgba(27,31,35,1);text-decoration:none;transition-duration: 0.3s;border:1px solid rgba(27,31,35,0);text-align:center;letter-spacing:1px;height: 10px;margin:1rem auto;padding: 16px 16px;white-space:nowrap;overflow:hidden;width:fit-content;border-radius:36px;}
.title:hover{text-shadow:0 1px 15px rgba(27,31,35,0);background-color:rgba(200,200,200,.6);box-shadow:0 1px 15px rgba(27,31,35,.15);} .title:hover{text-shadow:0 1px 15px rgba(27,31,35,0);background-color:rgba(200,200,200,.6);box-shadow:0 1px 15px rgba(27,31,35,.15);}
@ -34,7 +34,7 @@
.more-disk a{border:1px solid rgba(27,31,35,0);font-weight:bold;margin:0 2px;padding:5px;transition-duration: 0.3s;border-radius: 18px;background-color:transparent;color: #24292e} .more-disk a{border:1px solid rgba(27,31,35,0);font-weight:bold;margin:0 2px;padding:5px;transition-duration: 0.3s;border-radius: 18px;background-color:transparent;color: #24292e}
.more-disk a:hover, .more-disk a[now]{color:#FFF;background:rgba(245,245,245,0.3);border:1px solid rgba(27,31,35,.15);box-shadow:0 1px 15px rgba(27,31,35,.15)} .more-disk a:hover, .more-disk a[now]{color:#FFF;background:rgba(245,245,245,0.3);border:1px solid rgba(27,31,35,.15);box-shadow:0 1px 15px rgba(27,31,35,.15)}
.list-table{width:100%;padding:0 20px 20px 20px;border-spacing:0;overflow:hidden;table-layout:fixed} .list-table{width:100%;padding:0 20px 20px 20px;border-spacing:0;overflow:hidden;table-layout:fixed}
.list-table tr{height:32px;float:left;width:100%;transition-duration: 0.3s;border-radius:16px} .list-table tr{height:fit-content;float:left;width:100%;transition-duration: 0.3s;border-radius:16px}
.list-table tr[data-to]:hover{background:linear-gradient(to right, rgb(3,102,214,0.9) , rgba(3,102,214,0.3));color:white;box-shadow:0 1px 15px rgba(27,31,35,.15)} .list-table tr[data-to]:hover{background:linear-gradient(to right, rgb(3,102,214,0.9) , rgba(3,102,214,0.3));color:white;box-shadow:0 1px 15px rgba(27,31,35,.15)}
.list-table tr[data-to]:hover a{color:white} .list-table tr[data-to]:hover a{color:white}
.list-table tr:first-child{background:rgba(245,245,245,0)} .list-table tr:first-child{background:rgba(245,245,245,0)}
@ -42,9 +42,10 @@
.list-table td.file,.list-table th.file{width:70%;} .list-table td.file,.list-table th.file{width:70%;}
.list-table td.size,.list-table th.size{width:10%;} .list-table td.size,.list-table th.size{width:10%;}
.list-table td,.list-table th{padding:0 8px;text-align:left;float:left;line-height:32px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .list-table td,.list-table th{padding:0 8px;text-align:left;float:left;line-height:32px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.list-table td button,.list-table th button{border-radius:16px;transition-duration: 0.3s;cursor:pointer;color:#24292e;height:24px;padding: 0 8px;background:transparent;border:1px solid rgba(27,31,35,0);font-weight:bold;} .list-table td button,.list-table th button,.swal-button{border-radius:16px;transition-duration: 0.3s;cursor:pointer;color:#24292e;height:24px;padding: 0 8px;background:transparent;border:1px solid rgba(27,31,35,0);font-weight:bold;}
.list-table td button:hover,.list-table th button:hover{color:#FFF;background:rgba(3,102,214,0.6);border:1px solid rgba(27,31,35,.15);box-shadow:0 1px 15px rgba(27,31,35,.15);} .list-table .size,.list-table .updated_at{text-align:right} .list-table td button:hover,.list-table th button:hover,.swal-button:hover{color:#FFF;background:rgba(3,102,214,0.6);border:1px solid rgba(27,31,35,.15);box-shadow:0 1px 15px rgba(27,31,35,.15);}
.mask{position:absolute;left:0px;top:0px;width:100%;background-color:#000;filter:alpha(opacity=20);opacity:0.2;z-index:2;} .list-table .size,.list-table .updated_at{text-align:right}
.mask{position:absolute;left:0px;top:0px;width:100%;background-color:#000;filter:alpha(opacity=30);opacity:0.3;z-index:2;}
<?php if ($_SERVER['admin']) { ?> <?php if ($_SERVER['admin']) { ?>
.operate{display:inline-table;margin:0;margin-right:5px;list-style:none} .operate{display:inline-table;margin:0;margin-right:5px;list-style:none}
.operate ul{position:absolute;display:none;background:white;transition-duration: 0.3s;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);border-radius:32px;margin:-7px 0 0 0;padding:0 3px;color:#205D67;z-index:3;} .operate ul{position:absolute;display:none;background:white;transition-duration: 0.3s;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);border-radius:32px;margin:-7px 0 0 0;padding:0 3px;color:#205D67;z-index:3;}
@ -397,7 +398,7 @@ echo '</script>';
if ($_SERVER['admin']) { ?> if ($_SERVER['admin']) { ?>
<div id="upload_div" style="margin:0 0 16px 0"> <div id="upload_div" style="margin:0 0 16px 0">
<center> <center>
<input id="upload_file" type="file" name="upload_filename" multiple="multiple"> <input style="width:60%" id="upload_file" type="file" name="upload_filename" multiple="multiple">
<input id="upload_submit" onclick="preup();" value="<?php echo getconstStr('Upload'); ?>" type="button"> <input id="upload_submit" onclick="preup();" value="<?php echo getconstStr('Upload'); ?>" type="button">
</center> </center>
</div> </div>
@ -428,8 +429,8 @@ echo '</script>';
<div style="padding:20px"> <div style="padding:20px">
<center> <center>
<form action="" method="post"> <form action="" method="post">
<input name="password1" type="password" placeholder="'.getconstStr('InputPassword').'"> <input style="width: 60%" name="password1" type="password" placeholder="'.getconstStr('InputPassword').'">
<input type="submit" value="'.getconstStr('Submit').'"> <input type="submit" value="'.getconstStr('Submit').'">
</form> </form>
</center> </center>
</div>'; </div>';
@ -530,8 +531,8 @@ echo '</script>';
</tr> </tr>
<tr> <tr>
<td><?php echo getconstStr('Name'); ?></td> <td><?php echo getconstStr('Name'); ?></td>
<td><input id="create_input" name="create_name" type="text" value=""></td> <td><input style="width: 94%" id="create_input" name="create_name" type="text" value=""></td>
</tr> </tr>
<tr id="create_text_div"> <tr id="create_text_div">
<td><?php echo getconstStr('Content'); ?></td> <td><?php echo getconstStr('Content'); ?></td>
<td><textarea id="create_text" name="create_text" rows="6" cols="40"></textarea></td> <td><textarea id="create_text" name="create_text" rows="6" cols="40"></textarea></td>
@ -561,7 +562,9 @@ echo '</script>';
</div> </div>
<?php } <?php }
} ?> } ?>
<div style="color: rgba(247,247,249,0);"><?php echo date("Y-m-d H:i:s")." ".getconstStr('Week')[date("w")]." ".$_SERVER['REMOTE_ADDR'];?></div> <div style="color: rgba(247,247,249,1);text-align:center;text-shadow:0 1px 15px rgba(27,31,35,1);font-weight:bold">Power by<a style="color:rgb(3,102,214)" href="https://github.com/BingoKingo/Tfo">Tfo</a>'s Theme for <a style="color:rgb(3,102,214)" href="https://github.com/qkqpttgf/OneManager-php">OneManager-php</a></div>
<div style="color: rgba(247,247,249,0);text-align:center;text-shadow:0 1px 15px rgba(27,31,35,0);font-weight:bold;margin-top:6px"><?php echo date("Y-m-d H:i:s")." ".getconstStr('Week')[date("w")]." ".$_SERVER['REMOTE_ADDR'];?></div>
<script src="https://cdn.jsdelivr.net/npm/sweetalert@2.1.2/dist/sweetalert.min.js"></script>
</body> </body>
<?php if ($files) { ?> <?php if ($files) { ?>
<?php if (isset($files['children']['head.md'])||isset($files['children']['readme.md'])) { ?><link rel="stylesheet" href="//unpkg.zhimg.com/github-markdown-css@3.0.1/github-markdown.css"> <?php if (isset($files['children']['head.md'])||isset($files['children']['readme.md'])) { ?><link rel="stylesheet" href="//unpkg.zhimg.com/github-markdown-css@3.0.1/github-markdown.css">
@ -720,6 +723,10 @@ echo '</script>';
$readme.innerHTML = marked(document.getElementById('readme-md').innerText); $readme.innerHTML = marked(document.getElementById('readme-md').innerText);
} }
function showthumbnails(obj) { function showthumbnails(obj) {
swal("Loading Thumbnails", {
buttons: false,
timer: 1000,
});
var files=document.getElementsByName('filelist'); var files=document.getElementsByName('filelist');
for ($i=0;$i<files.length;$i++) { for ($i=0;$i<files.length;$i++) {
str=files[$i].innerText; str=files[$i].innerText;
@ -756,7 +763,7 @@ echo '</script>';
tmptextarea.select(); tmptextarea.select();
tmptextarea.setSelectionRange(0, tmptextarea.value.length); tmptextarea.setSelectionRange(0, tmptextarea.value.length);
document.execCommand("copy"); document.execCommand("copy");
alert(tmptextarea.innerHTML+"<?php echo getconstStr('Success');?>"); swal(tmptextarea.innerHTML+'<?php echo getconstStr('Success'); ?>');
} }
var sort=0; var sort=0;
function sortby(string) { function sortby(string) {
@ -894,7 +901,6 @@ echo '</script>';
var tr1=document.createElement('tr'); var tr1=document.createElement('tr');
table1.appendChild(tr1); table1.appendChild(tr1);
tr1.setAttribute('data-to',1); tr1.setAttribute('data-to',1);
tr1.setAttribute('style','height:fit-content');
var td1=document.createElement('td'); var td1=document.createElement('td');
tr1.appendChild(td1); tr1.appendChild(td1);
td1.setAttribute('style','width:fit-content'); td1.setAttribute('style','width:fit-content');
@ -1042,7 +1048,7 @@ echo '</script>';
//if (xhr4.status==409) filename = filemd5 + file.name.substr(file.name.indexOf('.')); //if (xhr4.status==409) filename = filemd5 + file.name.substr(file.name.indexOf('.'));
filename = JSON.parse(xhr4.responseText)['name']; filename = JSON.parse(xhr4.responseText)['name'];
if (filename=='') { if (filename=='') {
alert('<?php echo getconstStr('UploadErrorUpAgain'); ?>'); swal('<?php echo getconstStr('UploadErrorUpAgain'); ?>');
uploadbuttonshow(); uploadbuttonshow();
return; return;
} }
@ -1120,7 +1126,7 @@ echo '</script>';
if (str=='') { if (str=='') {
str=document.getElementById('file_a'+num).getElementsByTagName("img")[0].alt; str=document.getElementById('file_a'+num).getElementsByTagName("img")[0].alt;
if (str=='') { if (str=='') {
alert('<?php echo getconstStr('GetFileNameFail'); ?>'); swal('<?php echo getconstStr('GetFileNameFail'); ?>');
operatediv_close(action); operatediv_close(action);
return; return;
} }
@ -1176,7 +1182,7 @@ echo '</script>';
html=JSON.parse(xhr.responseText); html=JSON.parse(xhr.responseText);
addelement(html); addelement(html);
} }
} else alert(xhr.status+'\n'+xhr.responseText); } else swal(xhr.status+'\n'+xhr.responseText);
document.getElementById(str+'_div').style.display='none'; document.getElementById(str+'_div').style.display='none';
document.getElementById('mask').style.display='none'; document.getElementById('mask').style.display='none';
} }

View File

@ -2,7 +2,7 @@
<html lang="<?php echo $constStr['language']; ?>"> <html lang="<?php echo $constStr['language']; ?>">
<head> <head>
<title><?php echo $pretitle; if ($_SERVER['base_disk_path']!=$_SERVER['base_path']) { if (getConfig('diskname')!='') $diskname = getConfig('diskname'); else $diskname = $_SERVER['disktag']; echo ' - ' . $diskname; } ?> - <?php echo $_SERVER['sitename'];?></title> <title><?php echo $pretitle; if ($_SERVER['base_disk_path']!=$_SERVER['base_path']) { if (getConfig('diskname')!='') $diskname = getConfig('diskname'); else $diskname = $_SERVER['disktag']; echo ' - ' . $diskname; } ?> - <?php echo $_SERVER['sitename'];?></title>
<meta charset=utf-8> <meta charset="utf-8">
<meta http-equiv=X-UA-Compatible content="IE=edge"> <meta http-equiv=X-UA-Compatible content="IE=edge">
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,initial-scale=1.0"> <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,initial-scale=1.0">
<meta name="keywords" content="<?php echo $n_path;?>,<?php if ($p_path!='') echo $p_path.','; echo $_SERVER['sitename'];?>"> <meta name="keywords" content="<?php echo $n_path;?>,<?php if ($p_path!='') echo $p_path.','; echo $_SERVER['sitename'];?>">
@ -17,9 +17,9 @@
ion-icon{font-size:16px;vertical-align:middle} ion-icon{font-size:16px;vertical-align:middle}
::selection{background-color:rgba(200,200,200,0.6)} ::selection{background-color:rgba(200,200,200,0.6)}
input{cursor:pointer;padding: 0 8px;height:24px;font-weight:bold;border:1px solid rgba(27,31,35,0);transition-duration: 0.3s;border-radius:16px;background-color:transparent;color:#24292e} input{cursor:pointer;padding: 0 8px;height:24px;font-weight:bold;border:1px solid rgba(27,31,35,0);transition-duration: 0.3s;border-radius:16px;background-color:transparent;color:#24292e}
input:hover{background:rgb(3,102,214,0.6);color:#FFF;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);} input:focus{background:rgba(3,102,214,0.6);color:#FFF;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);}
textarea{font-weight:bold;border:1px solid rgba(27,31,35,0);transition-duration: 0.3s;border-radius:6px;background-color:transparent;color:#24292e} textarea{font-weight:bold;border:1px solid rgba(27,31,35,0);transition-duration: 0.3s;border-radius:6px;background-color:transparent;color:#24292e}
textarea:hover{background:rgba(3,102,214,0.6);color:#FFF;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);} textarea:focus{background:rgba(3,102,214,0.6);color:#FFF;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);}
.changelanguage{position:absolute;right:5px;} .changelanguage{position:absolute;right:5px;}
.title{text-shadow:0 1px 15px rgba(27,31,35,1);text-decoration:none;transition-duration: 0.3s;border:1px solid rgba(27,31,35,0);text-align:center;letter-spacing:1px;height: 10px;margin:1rem auto;padding: 16px 16px;white-space:nowrap;overflow:hidden;width:fit-content;border-radius:36px;} .title{text-shadow:0 1px 15px rgba(27,31,35,1);text-decoration:none;transition-duration: 0.3s;border:1px solid rgba(27,31,35,0);text-align:center;letter-spacing:1px;height: 10px;margin:1rem auto;padding: 16px 16px;white-space:nowrap;overflow:hidden;width:fit-content;border-radius:36px;}
.title:hover{text-shadow:0 1px 15px rgba(27,31,35,0);background-color:rgba(200,200,200,.6);box-shadow:0 1px 15px rgba(27,31,35,.15);} .title:hover{text-shadow:0 1px 15px rgba(27,31,35,0);background-color:rgba(200,200,200,.6);box-shadow:0 1px 15px rgba(27,31,35,.15);}
@ -35,7 +35,7 @@
.more-disk a{border:1px solid rgba(27,31,35,0);font-weight:bold;margin:0 2px;padding:5px;transition-duration: 0.3s;border-radius: 18px;background-color:transparent;color: #24292e} .more-disk a{border:1px solid rgba(27,31,35,0);font-weight:bold;margin:0 2px;padding:5px;transition-duration: 0.3s;border-radius: 18px;background-color:transparent;color: #24292e}
.more-disk a:hover, .more-disk a[now]{color:#FFF;background:rgba(245,245,245,0.3);border:1px solid rgba(27,31,35,.15);box-shadow:0 1px 15px rgba(27,31,35,.15)} .more-disk a:hover, .more-disk a[now]{color:#FFF;background:rgba(245,245,245,0.3);border:1px solid rgba(27,31,35,.15);box-shadow:0 1px 15px rgba(27,31,35,.15)}
.list-table{width:100%;padding:0 20px 20px 20px;border-spacing:0;overflow:hidden;table-layout:fixed} .list-table{width:100%;padding:0 20px 20px 20px;border-spacing:0;overflow:hidden;table-layout:fixed}
.list-table tr{height:32px;float:left;width:100%;transition-duration: 0.3s;border-radius:16px} .list-table tr{height:fit-content;float:left;width:100%;transition-duration: 0.3s;border-radius:16px}
.list-table tr[data-to]:hover{background:linear-gradient(to right, rgb(3,102,214,0.9) , rgba(3,102,214,0.3));color:white;box-shadow:0 1px 15px rgba(27,31,35,.15)} .list-table tr[data-to]:hover{background:linear-gradient(to right, rgb(3,102,214,0.9) , rgba(3,102,214,0.3));color:white;box-shadow:0 1px 15px rgba(27,31,35,.15)}
.list-table tr[data-to]:hover a{color:white} .list-table tr[data-to]:hover a{color:white}
.list-table tr:first-child{background:rgba(245,245,245,0)} .list-table tr:first-child{background:rgba(245,245,245,0)}
@ -43,8 +43,10 @@
.list-table td.file,.list-table th.file{width:70%;} .list-table td.file,.list-table th.file{width:70%;}
.list-table td.size,.list-table th.size{width:10%;} .list-table td.size,.list-table th.size{width:10%;}
.list-table td,.list-table th{padding:0 8px;text-align:left;float:left;line-height:32px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .list-table td,.list-table th{padding:0 8px;text-align:left;float:left;line-height:32px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.list-table td button,.list-table th button{border-radius:16px;transition-duration: 0.3s;cursor:pointer;color:#24292e;height:24px;padding: 0 8px;background:transparent;border:1px solid rgba(27,31,35,0);font-weight:bold;} .list-table td button,.list-table th button,.swal-button{border-radius:16px;transition-duration: 0.3s;cursor:pointer;color:#24292e;height:24px;padding: 0 8px;background:transparent;border:1px solid rgba(27,31,35,0);font-weight:bold;}
.list-table td button:hover,.list-table th button:hover{color:#FFF;background:rgba(3,102,214,0.6);border:1px solid rgba(27,31,35,.15);box-shadow:0 1px 15px rgba(27,31,35,.15);} .mask{position:absolute;left:0px;top:0px;width:100%;background-color:#000;filter:alpha(opacity=20);opacity:0.2;z-index:2;} .list-table td button:hover,.list-table th button:hover,.swal-button:hover{color:#FFF;background:rgba(3,102,214,0.6);border:1px solid rgba(27,31,35,.15);box-shadow:0 1px 15px rgba(27,31,35,.15);}
.list-table .size,.list-table .updated_at{text-align:right}
.mask{position:absolute;left:0px;top:0px;width:100%;background-color:#000;filter:alpha(opacity=30);opacity:0.3;z-index:2;}
<?php if ($_SERVER['admin']) { ?> <?php if ($_SERVER['admin']) { ?>
.operate{display:inline-table;margin:0;margin-right:5px;list-style:none} .operate{display:inline-table;margin:0;margin-right:5px;list-style:none}
.operate ul{position:absolute;display:none;background:white;transition-duration: 0.3s;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);border-radius:32px;margin:-7px 0 0 0;padding:0 3px;color:#205D67;z-index:3;} .operate ul{position:absolute;display:none;background:white;transition-duration: 0.3s;box-shadow:0 1px 15px rgba(27,31,35,.15);border:1px solid rgba(27,31,35,.15);border-radius:32px;margin:-7px 0 0 0;padding:0 3px;color:#205D67;z-index:3;}
@ -397,7 +399,7 @@ echo '</script>';
if ($_SERVER['admin']) { ?> if ($_SERVER['admin']) { ?>
<div id="upload_div" style="margin:0 0 16px 0"> <div id="upload_div" style="margin:0 0 16px 0">
<center> <center>
<input id="upload_file" type="file" name="upload_filename" multiple="multiple"> <input style="width:60%" id="upload_file" type="file" name="upload_filename" multiple="multiple">
<input id="upload_submit" onclick="preup();" value="<?php echo getconstStr('Upload'); ?>" type="button"> <input id="upload_submit" onclick="preup();" value="<?php echo getconstStr('Upload'); ?>" type="button">
</center> </center>
</div> </div>
@ -428,7 +430,7 @@ echo '</script>';
<div style="padding:20px"> <div style="padding:20px">
<center> <center>
<form action="" method="post"> <form action="" method="post">
<input name="password1" type="password" placeholder="'.getconstStr('InputPassword').'"> <input style="width: 60%" name="password1" type="password" placeholder="'.getconstStr('InputPassword').'">
<input type="submit" value="'.getconstStr('Submit').'"> <input type="submit" value="'.getconstStr('Submit').'">
</form> </form>
</center> </center>
@ -530,7 +532,7 @@ echo '</script>';
</tr> </tr>
<tr> <tr>
<td><?php echo getconstStr('Name'); ?></td> <td><?php echo getconstStr('Name'); ?></td>
<td><input id="create_input" name="create_name" type="text" value=""></td> <td><input style="width: 94%" id="create_input" name="create_name" type="text" value=""></td>
</tr> </tr>
<tr id="create_text_div"> <tr id="create_text_div">
<td><?php echo getconstStr('Content'); ?></td> <td><?php echo getconstStr('Content'); ?></td>
@ -561,7 +563,9 @@ echo '</script>';
</div> </div>
<?php } <?php }
} ?> } ?>
<div style="color: rgba(247,247,249,0);"><?php echo date("Y-m-d H:i:s")." ".getconstStr('Week')[date("w")]." ".$_SERVER['REMOTE_ADDR'];?></div> <div style="color: rgba(247,247,249,1);text-align:center;text-shadow:0 1px 15px rgba(27,31,35,1);font-weight:bold">Power by<a style="color:rgb(3,102,214)" href="https://github.com/BingoKingo/Tfo">Tfo</a>'s Theme for <a style="color:rgb(3,102,214)" href="https://github.com/qkqpttgf/OneManager-php">OneManager-php</a></div>
<div style="color: rgba(247,247,249,0);text-align:center;text-shadow:0 1px 15px rgba(27,31,35,0);font-weight:bold;margin-top:6px"><?php echo date("Y-m-d H:i:s")." ".getconstStr('Week')[date("w")]." ".$_SERVER['REMOTE_ADDR'];?></div>
<script src="https://cdn.jsdelivr.net/npm/sweetalert@2.1.2/dist/sweetalert.min.js"></script>
</body> </body>
<?php if ($files) { ?> <?php if ($files) { ?>
<?php if (isset($files['children']['head.md'])||isset($files['children']['readme.md'])) { ?><link rel="stylesheet" href="//unpkg.zhimg.com/github-markdown-css@3.0.1/github-markdown.css"> <?php if (isset($files['children']['head.md'])||isset($files['children']['readme.md'])) { ?><link rel="stylesheet" href="//unpkg.zhimg.com/github-markdown-css@3.0.1/github-markdown.css">
@ -720,6 +724,10 @@ echo '</script>';
$readme.innerHTML = marked(document.getElementById('readme-md').innerText); $readme.innerHTML = marked(document.getElementById('readme-md').innerText);
} }
function showthumbnails(obj) { function showthumbnails(obj) {
swal("Loading Thumbnails", {
buttons: false,
timer: 1000,
});
var files=document.getElementsByName('filelist'); var files=document.getElementsByName('filelist');
for ($i=0;$i<files.length;$i++) { for ($i=0;$i<files.length;$i++) {
str=files[$i].innerText; str=files[$i].innerText;
@ -756,7 +764,7 @@ echo '</script>';
tmptextarea.select(); tmptextarea.select();
tmptextarea.setSelectionRange(0, tmptextarea.value.length); tmptextarea.setSelectionRange(0, tmptextarea.value.length);
document.execCommand("copy"); document.execCommand("copy");
alert(tmptextarea.innerHTML+"<?php echo getconstStr('Success');?>"); swal(tmptextarea.innerHTML+'<?php echo getconstStr('Success'); ?>');
} }
var sort=0; var sort=0;
function sortby(string) { function sortby(string) {
@ -894,7 +902,6 @@ echo '</script>';
var tr1=document.createElement('tr'); var tr1=document.createElement('tr');
table1.appendChild(tr1); table1.appendChild(tr1);
tr1.setAttribute('data-to',1); tr1.setAttribute('data-to',1);
tr1.setAttribute('style','height:fit-content');
var td1=document.createElement('td'); var td1=document.createElement('td');
tr1.appendChild(td1); tr1.appendChild(td1);
td1.setAttribute('style','width:fit-content'); td1.setAttribute('style','width:fit-content');
@ -1042,7 +1049,7 @@ echo '</script>';
//if (xhr4.status==409) filename = filemd5 + file.name.substr(file.name.indexOf('.')); //if (xhr4.status==409) filename = filemd5 + file.name.substr(file.name.indexOf('.'));
filename = JSON.parse(xhr4.responseText)['name']; filename = JSON.parse(xhr4.responseText)['name'];
if (filename=='') { if (filename=='') {
alert('<?php echo getconstStr('UploadErrorUpAgain'); ?>'); swal('<?php echo getconstStr('UploadErrorUpAgain'); ?>');
uploadbuttonshow(); uploadbuttonshow();
return; return;
} }
@ -1176,7 +1183,7 @@ echo '</script>';
html=JSON.parse(xhr.responseText); html=JSON.parse(xhr.responseText);
addelement(html); addelement(html);
} }
} else alert(xhr.status+'\n'+xhr.responseText); } else swal(xhr.status+'\n'+xhr.responseText);
document.getElementById(str+'_div').style.display='none'; document.getElementById(str+'_div').style.display='none';
document.getElementById('mask').style.display='none'; document.getElementById('mask').style.display='none';
} }

View File

@ -1,7 +1,10 @@
20200607-1856.19
add platform: Aliyun Function Compute. add setting: replace sharepoint.com to a proxy server name. add setting: disableShowThumb,customTheme. add function: php hosting website can update by a click
现在可以安装到阿里函数计算FC了。php空间可以一键更新了。可以设置某个盘替换sharpoint.com域名为你的反代域名。新增disableShowThumb,customTheme。
20200503-1848.18 20200503-1848.18
Rebuild theme. Add custom Css & custom Script, add FunctionalityFile: head.omf & foot.omf. Rebuild theme. Add custom Css & custom Script, add FunctionalityFile: head.omf & foot.omf.
重建主题文件结构。增加自定义css与自定义script。增加2个功能文件head.omf、foot.omf。 重建主题文件结构。增加自定义css与自定义script。增加2个功能文件head.omf、foot.omf。
20200402-1830.17 20200402-1830.17
Oneclick update can select which branch to update. Now use the accept language instead of the language config. Oneclick update can select which branch to update. Now use the accept language instead of the language config.
一键更新可以选择哪个分支了。现在开始使用浏览器语言抛弃language设置。 一键更新可以选择哪个分支了。现在开始使用浏览器语言抛弃language设置。