4.45 release

pull/479/head
warlee 2021-04-07 22:19:50 +08:00
parent 85ebde1e7a
commit 005c0dc053
1333 changed files with 3103 additions and 6121 deletions

18
ChangeLog.md Executable file → Normal file
View File

@ -1,13 +1,9 @@
### ver4.45 `2021/04/07`
- 更新检测文件多种引入方式;
- php7.4,php8兼容
- x-senffile 下载加速支持
- 对话框打开url; https协议不同时新窗口打开;
- 上传合并优化加速处理;
- 解压 构造漏洞修复;
后端加密方式优化
文件名特殊符号处理:\ / : * ? " < > |
设置壁纸图片检测url header 检测必须是图片
去掉title 权限内容,属性中权限信息;
onlyoffice编辑提示保存时连接跳转到35
psd 分享单独文件可以预览分享文件夹中psd无法预览
### ver4.40 `2019/3/21`
-----
@ -842,7 +838,7 @@
- 新建office文档office文档预览所有支持的列表内网实现预览服务端转换——pdf
- 虚拟目录多选操作右键菜单:收藏夹;我所在的组、全部组;我的共享
- 虚拟目录选中(多选)快捷键操作:屏蔽删除、复制、剪切、重命名
- 文件图标排列时,高度自适应,文件名最高四行文字;(桌面特殊处理);拖动到指定文件夹放大效果
- 文件图标排列时,高度自适应,文件名最高四行文字;(桌面特殊处理);拖动到指定文件夹放大效果
- xxs问题优化文件名特殊处理对应地址栏、树目录、重命名展示、分享等展示的地方统一做处理
- 新建文件重命名文件icon自动高度后 优化;图标和列表模式)
- 不同类型目录之间切换:单选、多选;右键菜单还原(目录、回收站、分享目录、收藏夹、所有群组、我的群组等)
@ -1011,7 +1007,7 @@
- 全局字体调整用em作单位
- 各种错误提示优化更好的兼容php各种环境
- 首次登陆目录不可写提示,登陆页面多语言选择
- 登陆页面密码找回提示;管理员密码快速找回;
- 登陆页面密码找回提示;管理员密码快速找回;
- 验证码复杂性增强
- 没有GD库则【关闭验证码图片直接输出-不生成缩略图】
- 登陆ajax方式成功&失败)[失败原因码——验证码:换图片;输入框焦点设置]

0
app/api/sso.class.php Executable file → Normal file
View File

0
app/controller/api.class.php Executable file → Normal file
View File

2
app/controller/app.class.php Executable file → Normal file
View File

@ -119,7 +119,7 @@ class app extends Controller{
public function getUrlTitle(){
$html = curl_get_contents($this->in['url']);
$result = match_text($html,"<title>(.*)<\/title>");
$result = match($html,"<title>(.*)<\/title>");
if (strlen($result)>50) {
$result = mb_substr($result,0,50,'utf-8');
}

0
app/controller/desktop.class.php Executable file → Normal file
View File

0
app/controller/editor.class.php Executable file → Normal file
View File

17
app/controller/explorer.class.php Executable file → Normal file
View File

@ -89,11 +89,7 @@ class explorer extends Controller{
unset($data['downloadPath']);
}
if($data['size'] < 100*1024|| isset($this->in['getMd5'])){//100kb
if($data['size'] <= 1024*1024*100){
$data['fileMd5'] = @md5_file($file);
}else{
$data['fileMd5'] = "---";
}
$data['fileMd5'] = @md5_file($file);
}else{
$data['fileMd5'] = "...";
}
@ -952,7 +948,7 @@ class explorer extends Controller{
}
}
}
$zipFile = $this->zip($userTemp,rand_string(9).'-',false);//下载文件夹删除;不检测和记录空间变更
$zipFile = $this->zip($userTemp,rand_string(9).'-',fasle);//下载文件夹删除;不检测和记录空间变更
show_json(LNG('zip_success'),true,get_path_this($zipFile));
}
public function zip($zipPath='',$namePre = "",$checkSpaceChange = true){
@ -1002,7 +998,7 @@ class explorer extends Controller{
$info = LNG('zip_success').LNG('size').":".size_format(filesize($zipname));
show_json($info,true,_DIR_OUT(iconv_app($zipname)) );
}else{
show_json(LNG('error'),false);
show_json(LNG.error,false);
}
}else{
return iconv_app($zipname);
@ -1276,6 +1272,13 @@ class explorer extends Controller{
$GLOBALS['kodPathAuthCheck'] = true;//组权限发生变更。导致访问groupPath 无权限退出问题
foreach($favList as $key => $val){
$thePath = _DIR($val['path']);
$hasChildren = path_haschildren($thePath,$checkFile);
if( !isset($val['type'])){
$val['type'] = 'folder';
}
if( $val['type'] == 'folder' && $val['ext'] != 'tree-fav'){
$hasChildren = true;
}
$cell = array(
'name' => $val['name'],
'ext' => $val['ext'],

0
app/controller/fav.class.php Executable file → Normal file
View File

0
app/controller/pluginApp.class.php Executable file → Normal file
View File

2
app/controller/setting.class.php Executable file → Normal file
View File

@ -89,7 +89,7 @@ class setting extends Controller{
}
show_json(LNG('success'),true);
}
private function _clearSession(){
private function clearSession(){
del_dir(KOD_SESSION);
}
private function _clearCache(){

21
app/controller/share.class.php Executable file → Normal file
View File

@ -15,7 +15,7 @@ class share extends Controller{
parent::__construct();
$auth = systemRole::getInfo(1);//经过role检测
$arrNotCheck = array('commonJs','manifest','manifestJS');
$arrNotCheck = array('commonJs');
if(substr($this->in['fileUrl'],0,4) == 'http'){
$arrNotCheck[] = 'fileGet';
}
@ -278,24 +278,7 @@ class share extends Controller{
}
echo 'LNG='.$lang.';G.useTime='.$useTime.';';
}
//chrome安装: 必须https;serviceWorker引入处理;manifest配置; [manifest.json配置目录同sw.js引入];
public function manifest(){
$json = file_get_contents(BASIC_PATH.'static/others/app/manifest.json');
$name = stristr(I18n::getType(),'zh') ? '可道云':'kodExplorer';
$static = STATIC_PATH == './static/' ? APP_HOST.'static/':STATIC_PATH;
$assign = array(
"{{name}}" => $name,
"{{appDesc}}" => LNG('common.copyright.name'),
"{{static}}" => $static,
);
$json = str_replace(array_keys($assign),array_values($assign),$json);
header("Content-Type: application/javascript; charset=utf-8");
echo $json;
}
public function manifestJS(){
header("Content-Type: application/javascript; charset=utf-8");
echo file_get_contents(BASIC_PATH.'static/others/app/sw.js');
}
//========ajax function============

0
app/controller/systemGroup.class.php Executable file → Normal file
View File

0
app/controller/systemMember.class.php Executable file → Normal file
View File

0
app/controller/systemRole.class.php Executable file → Normal file
View File

42
app/controller/user.class.php Executable file → Normal file
View File

@ -28,7 +28,7 @@ class user extends Controller{
$this->notCheckST = array('share','debug');
$this->notCheckACT = array(
'loginFirst','login','logout','loginSubmit',
'checkCode','publicLink','qrcode','sso','appConfig');
'checkCode','publicLink','qrcode','sso');
$this->notCheckApp = array();//'pluginApp.to'
if(!$this->user){
@ -42,7 +42,6 @@ class user extends Controller{
public function bindHook(){
$this->loadModel('Plugin')->init();
$this->bindCheckPassword();
}
/**
@ -155,42 +154,6 @@ class user extends Controller{
}
}
}
private function _loginCheckPassword($user,$password){
if($this->checkPassword($password)) return;
if($user['role'] == '1'){ // 管理员,提示修改;
if(isset($_SESSION['adminPasswordTips'])) return;
@session_start();
$_SESSION['adminPasswordTips']= 1;
@session_write_close();
show_tips("安全提示:<br/><br/>密码长度必须大于6,同时包含英文和数字;<br/>强烈建议登陆后修改密码!",false);
}
show_tips("密码长度必须大于6,同时包含英文和数字;<br/>请联系管理员修改后再试!",false);
}
private function checkPassword($password){
if(INSTALL_CHANNEL =='hikvision.com'){
$this->config['settingSystemDefault']['passwordCheck'] = '1';
}
if($this->config['settingSystemDefault']['passwordCheck'] == '0') return true;
$hasNumber = preg_match('/\d/',$password);
$hasChar = preg_match('/[A-Za-z]/',$password);
if( strlen($password) >= 6 && $hasNumber && $hasChar) return true;
return false;
}
private function bindCheckPassword(){
$action = strtolower(ST.'.'.ACT);
$check = array(
'user.changepassword' => 'passwordNew',
'systemmember.edit' => 'password',
'systemmember.add' => 'password',
);
if(!isset($check[$action])) return;
$password = $this->in[$check[$action]];
if($this->checkPassword($password)) return;
show_json("密码长度必须大于6,同时包含英文和数字;<br/>请联系管理员修改后再试!",false);
}
/**
* 共享kod登陆并跳转
@ -480,7 +443,6 @@ class user extends Controller{
}
//首次登陆初始化app 没有最后登录时间
$this->_loginCheckPassword($user,$password);
$this->_loginSuccess($user);//登陆成功
if(!$user['lastLogin']){
$app = init_controller('app');
@ -644,7 +606,7 @@ class user extends Controller{
ob_get_clean();
QRcode::png($this->in['url']);
}else{
header('location: https://demo.kodcloud.com/?user/view/qrcode&url='.rawurlencode($url));
header('location: http://qr.topscan.com/api.php?text='.rawurlencode($url));
}
}
}

0
app/controller/userShare.class.php Executable file → Normal file
View File

2
app/controller/utils.php Executable file → Normal file

File diff suppressed because one or more lines are too long

0
app/core/Application.class.php Executable file → Normal file
View File

0
app/core/Controller.class.php Executable file → Normal file
View File

0
app/core/Model.class.php Executable file → Normal file
View File

View File

@ -1,59 +0,0 @@
<?php
$desktopApps = array(
'my_computer' => array(
"type" => "app",
"content" => "core.explorer('','".LNG('my_computer')."');",
"icon" => STATIC_PATH."images/file_icon/icon_others/computer.png",
"name" => LNG('my_computer'),
"menuType" => "systemBox menu-default",
"ext" => 'oexe',
"path" => "",
"resize" => 1
),
'recycle' => array(
"type" => "app",
"content" => "core.explorer('".KOD_USER_RECYCLE."','".LNG('recycle')."');",
"icon" => STATIC_PATH."images/file_icon/icon_others/recycle.png",
"name" => LNG('recycle'),
"menuType" => "systemBox menu-recycle-button",
"ext" => 'oexe',
"path" => "",
"resize" => 1
),
'PluginCenter' => array(
"type" => "app",
"content" => "core.openWindowBig('./index.php?pluginApp/index','".LNG('PluginCenter')."');",
"icon" => STATIC_PATH."images/file_icon/icon_others/plugins.png",
"name" => LNG('PluginCenter'),
"menuType" => "systemBox menu-default",
"ext" => 'oexe',
"path" => "",
"resize" => 1
),
'setting' => array(
"type" => "app",
"content" => "core.setting();",
"icon" => STATIC_PATH."images/file_icon/icon_others/setting.png",
"name" => LNG('setting'),
"menuType" => "systemBox menu-default",
"ext" => 'oexe',
"path" => "/",
"resize" => 1
),
'appStore' => array(
"type" => "app",
"content" => "core.appStore();",
"icon" => STATIC_PATH."images/file_icon/icon_others/appStore.png",
"name" => LNG('app_store'),
"menuType" => "systemBox menu-default",
"ext" => 'oexe',
"path" => "",
"resize" => 1
)
);
//管理员插件中心
if(!$GLOBALS['isRoot']){
unset($desktopApps['PluginCenter']);
}
return $desktopApps;

49
app/function/common.function.php Executable file → Normal file
View File

@ -348,6 +348,24 @@ function array_try($array, $callback){
}
}
return false;
}
// 求多个数组的并集
function array_union(){
$argsCount = func_num_args();
if ($argsCount < 2) {
return false;
} else if (2 === $argsCount) {
list($arr1, $arr2) = func_get_args();
while ((list($k, $v) = each($arr2))) {
if (!in_array($v, $arr1)) $arr1[] = $v;
}
return $arr1;
} else { // 三个以上的数组合并
$arg_list = func_get_args();
$all = call_user_func_array('array_union', $arg_list);
return array_union($arg_list[0], $all);
}
}
// 取出数组中第n项
function array_get_index($arr,$index){
@ -428,7 +446,7 @@ function fatalErrorHandler(){
}
function show_tips($message,$url= '', $time = 3,$title = '',$exit = true){
ob_get_clean();$time=500;
ob_get_clean();
header('Content-Type: text/html; charset=utf-8');
$goto = "content='$time;url=$url'";
$info = "{$time}s 后自动跳转, <a href='$url'>立即跳转</a>";
@ -651,9 +669,9 @@ function show_json($data,$code = true,$info=''){
function show_trace(){
echo '<pre>';
var_dump(json_encode(func_get_args()));
var_dump(func_get_args());
echo '<hr/>';
print_r(get_caller_info());
echo get_caller_info();
echo '</pre>';
exit;
}
@ -741,7 +759,7 @@ function html2txt($document){
}
// 获取内容第一条
function match_text($content, $preg){
function match($content, $preg){
$preg = "/" . $preg . "/isU";
preg_match($preg, $content, $result);
return $result[1];
@ -894,12 +912,25 @@ function dump(){call_user_func('pr',func_get_args());}
function debug_out(){call_user_func('pr',func_get_args());}
/**
* $from~$to范围内的随机数,包含$from,$to;
* $from~$to范围内的随机数
*
* @param $from 下限
* @param $to 上限
* @return unknown_type
*/
function rand_from_to($from, $to){
return mt_rand($from,$to);
// return $from + mt_rand(0, $to - $from);
}
$size = $to - $from; //数值区间
$max = 30000; //最大
if ($size < $max) {
return $from + mt_rand(0, $size);
} else {
if ($size % $max) {
return $from + random_from_to(0, $size / $max) * $max + mt_rand(0, $size % $max);
} else {
return $from + random_from_to(0, $size / $max) * $max + mt_rand(0, $max);
}
}
}
/**
* 产生随机字串,可用来自动生成密码 默认长度6位 字母和数字混合
@ -997,7 +1028,7 @@ function des_encode($key, $text){
return base64_encode($encrypted);
}
function pkcs5_unpad($text){
$pad = ord($text[strlen($text)-1]);
$pad = ord($text{strlen($text)-1});
if ($pad > strlen($text)) return $text;
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return $text;
return substr($text, 0, -1 * $pad);

110
app/function/file.function.php Executable file → Normal file
View File

@ -80,50 +80,51 @@ function path_filter($path){
//filesize 解决大于2G 大小问题
//http://stackoverflow.com/questions/5501451/php-x86-how-to-get-filesize-of-2-gb-file-without-external-program
function get_filesize($path){
if(PHP_INT_SIZE >= 8 ){ //64bit
return (float)(abs(sprintf("%u",@filesize($path))));
}
$result = false;
$fp = fopen($path,"r");
if(!$fp) return $result;
if (fseek($fp, 0, SEEK_END) === 0) {
$result = 0.0;
$step = 0x7FFFFFFF;
while ($step > 0) {
if (fseek($fp, - $step, SEEK_CUR) === 0) {
$result += floatval($step);
} else {
$step >>= 1;
}
}
if(! $fp = fopen($path,"r")) return $result;
if(PHP_INT_SIZE >= 8 ){ //64bit
$result = (float)(abs(sprintf("%u",@filesize($path))));
}else{
static $iswin;
if (!isset($iswin)) {
$iswin = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN');
}
static $exec_works;
if (!isset($exec_works)) {
$exec_works = (function_exists('exec') && !ini_get('safe_mode') && @exec('echo EXEC') == 'EXEC');
}
if ($iswin && class_exists("COM")) {
try {
$fsobj = new COM('Scripting.FileSystemObject');
$f = $fsobj->GetFile( realpath($path) );
$size = $f->Size;
} catch (Exception $e) {
$size = null;
}
if (is_numeric($size)) {
$result = $size;
}
}else if ($exec_works){
$cmd = ($iswin) ? "for %F in (\"$path\") do @echo %~zF" : "stat -c%s \"$path\"";
@exec($cmd, $output);
if (is_array($output) && is_numeric($size = trim(implode("\n", $output)))) {
$result = $size;
if (fseek($fp, 0, SEEK_END) === 0) {
$result = 0.0;
$step = 0x7FFFFFFF;
while ($step > 0) {
if (fseek($fp, - $step, SEEK_CUR) === 0) {
$result += floatval($step);
} else {
$step >>= 1;
}
}
}else{
$result = filesize($path);
static $iswin;
if (!isset($iswin)) {
$iswin = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN');
}
static $exec_works;
if (!isset($exec_works)) {
$exec_works = (function_exists('exec') && !ini_get('safe_mode') && @exec('echo EXEC') == 'EXEC');
}
if ($iswin && class_exists("COM")) {
try {
$fsobj = new COM('Scripting.FileSystemObject');
$f = $fsobj->GetFile( realpath($path) );
$size = $f->Size;
} catch (Exception $e) {
$size = null;
}
if (is_numeric($size)) {
$result = $size;
}
}else if ($exec_works){
$cmd = ($iswin) ? "for %F in (\"$path\") do @echo %~zF" : "stat -c%s \"$path\"";
@exec($cmd, $output);
if (is_array($output) && is_numeric($size = trim(implode("\n", $output)))) {
$result = $size;
}
}else{
$result = filesize($path);
}
}
}
fclose($fp);
@ -423,12 +424,10 @@ function path_haschildren($dir,$checkFile=false){
$fullpath = $dir.$file;
if ($checkFile) {//有子目录或者文件都说明有子内容
if(@is_file($fullpath) || is_dir($fullpath.'/')){
closedir($dh);
return true;
}
}else{//只检查有没有文件
if(@is_dir($fullpath.'/')){//解决部分主机报错问题
closedir($dh);
return true;
}
}
@ -600,7 +599,7 @@ function move_path($source,$dest,$repeat_add='',$repeat_type='replace'){
$file_success += move_file($f,$path,$repeat_add,$repeat_type);
}
foreach($dirs as $f){
@rmdir($f);
rmdir($f);
}
@rmdir($source);
if($file_success == count($files)){
@ -1039,26 +1038,23 @@ function file_put_out($file,$download=-1,$downFilename=false){
header("X-Powered-By: kodExplorer.");
header("X-FileSize: ".$file_size);
//调用webserver下载
$server = strtolower($_SERVER['SERVER_SOFTWARE']);
if($server && $GLOBALS['config']['settings']['httpSendFile']){
if(strstr($server,'nginx')){//nginx
header('X-Accel-Redirect: '.$file);
}else{ //apache Lighttpd Cherokee
header("X-Sendfile: ".$file);
}
return;
}
//远程路径不支持断点续传打开zip内部文件
if(!file_exists($file)){
header('HTTP/1.1 200 OK');
header('Content-Length: '.($end+1));
return;
}
//调用webserver下载
$server = strtolower($_SERVER['SERVER_SOFTWARE']);
if($server && $GLOBALS['config']['settings']['httpSendFile']){
if(strstr($server,'nginx')){//nginx
header("X-Accel-Redirect: ".$file);
}else if(strstr($server,'apache')){ //apache
header('X-Sendfile: '.$file);
}else if(strstr($server,'http')){//light http
header( "X-LIGHTTPD-send-file: " . $file);
}
return;
}
header("Accept-Ranges: bytes");
if (isset($_SERVER['HTTP_RANGE'])){
if (preg_match('/bytes=\h*(\d+)-(\d*)[\D.*]?/i', $_SERVER['HTTP_RANGE'], $matches)){

11
app/function/helper.function.php Executable file → Normal file
View File

@ -59,19 +59,16 @@ function zip_pre_name($fileName,$toCharset=false){
return $result;
}
//解压缩文件名检测
function unzip_filter_ext($name){
$add = '.txt';
if( checkExt($name) &&
!stristr($name,'user.ini') &&
!stristr($name,'.htaccess')
){//允许
if(checkExt($name)){//允许
return $name;
}
return $name.$add;
}
//解压到kod文件名处理;识别编码并转换到当前系统编码
function unzip_pre_name($fileName){
$fileName = str_replace(array('../','..\\',''),'',$fileName);
if (!function_exists('iconv')){
return unzip_filter_ext($fileName);
}
@ -229,7 +226,7 @@ function file_upload_size(){
}
function check_list_dir(){
$url = APP_HOST.'app/core/';
$url = APP_HOST.'lib/core/';
$find = "Application.class.php";
@ini_set('default_socket_timeout',1);
@ -278,7 +275,7 @@ function php_env_check(){
function check_cache(){
//检查是否更新失效
$content = file_get_contents(BASIC_PATH.'config/version.php');
$result = match_text($content,"'KOD_VERSION','(.*)'");
$result = match($content,"'KOD_VERSION','(.*)'");
if($result != KOD_VERSION){
show_tips("您服务器开启了php缓存,文件更新尚未生效;
请关闭缓存或稍后1分钟刷新页面再试

18
app/function/others/JSON.php Executable file → Normal file
View File

@ -153,7 +153,7 @@ class Services_JSON
return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
}
$bytes = (ord($utf16[0]) << 8) | ord($utf16[1]);
$bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
switch(true) {
case ((0x7F & $bytes) == $bytes):
@ -206,17 +206,17 @@ class Services_JSON
case 2:
// return a UTF-16 character from a 2-byte UTF-8 char
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0x07 & (ord($utf8[0]) >> 2))
. chr((0xC0 & (ord($utf8[0]) << 6))
| (0x3F & ord($utf8[1])));
return chr(0x07 & (ord($utf8{0}) >> 2))
. chr((0xC0 & (ord($utf8{0}) << 6))
| (0x3F & ord($utf8{1})));
case 3:
// return a UTF-16 character from a 3-byte UTF-8 char
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr((0xF0 & (ord($utf8[0]) << 4))
| (0x0F & (ord($utf8[1]) >> 2)))
. chr((0xC0 & (ord($utf8[1]) << 6))
| (0x7F & ord($utf8[2])));
return chr((0xF0 & (ord($utf8{0}) << 4))
| (0x0F & (ord($utf8{1}) >> 2)))
. chr((0xC0 & (ord($utf8{1}) << 6))
| (0x7F & ord($utf8{2})));
}
// ignoring UTF-32 for now, sorry
@ -609,7 +609,7 @@ class Services_JSON
} elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
// array, or object notation
if ($str[0]== '[') {
if ($str{0} == '[') {
$stk = array(SERVICES_JSON_IN_ARR);
$arr = array();
} else {

3
app/function/web.function.php Executable file → Normal file
View File

@ -663,8 +663,7 @@ function parse_url_query($url){
$params = array();
foreach ($queryParts as $param) {
$item = explode('=', $param);
$key = $item[0]; unset($item[0]);
$params[$key] = implode('=', $item);
$params[$item[0]] = $item[1];
}
return $params;
}

0
app/kod/Downloader.class.php Executable file → Normal file
View File

0
app/kod/FileCache.class.php Executable file → Normal file
View File

0
app/kod/Hook.class.php Executable file → Normal file
View File

0
app/kod/I18n.class.php Executable file → Normal file
View File

0
app/kod/ImageThumb.class.php Executable file → Normal file
View File

0
app/kod/KodArchive.class.php Executable file → Normal file
View File

0
app/kod/Mcrypt.class.php Executable file → Normal file
View File

2
app/kod/PluginBase.class.php Executable file → Normal file
View File

@ -50,7 +50,7 @@ class PluginBase{
if(!is_array($systemConfig['pluginList'])){
$systemConfig['pluginList'] = array();
}
if(is_array($systemConfig['pluginList'][$id])){
if(is_array($systemConfig['pluginList'][$name])){
$systemConfig['pluginList'][$id]['regiest'] = $array;
}else{
$systemConfig['pluginList'][$id] = array(

0
app/kod/archiveLib/bin/7z Executable file → Normal file
View File

0
app/kod/archiveLib/bin/7z.exe Executable file → Normal file
View File

0
app/kod/archiveLib/bin/rar Executable file → Normal file
View File

0
app/kod/archiveLib/bin/rar.exe Executable file → Normal file
View File

0
app/kod/archiveLib/kodRarArchive.class.php Executable file → Normal file
View File

0
app/kod/archiveLib/kodZipArchive.class.php Executable file → Normal file
View File

0
app/kod/archiveLib/pclerror.lib.php Executable file → Normal file
View File

0
app/kod/archiveLib/pcltar.lib.php Executable file → Normal file
View File

0
app/kod/archiveLib/pcltrace.lib.php Executable file → Normal file
View File

0
app/kod/archiveLib/pclzip.class.php Executable file → Normal file
View File

0
app/kod/imageGdBMP.class.php Executable file → Normal file
View File

0
app/model/ConfigModel.class .php Executable file → Normal file
View File

0
app/model/PluginModel.class.php Executable file → Normal file
View File

0
app/sdks/MyCaptcha.class.php Executable file → Normal file
View File

0
app/sdks/MyCaptcha_fonts/font_1.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

0
app/sdks/MyCaptcha_fonts/font_2.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

0
app/sdks/MyCaptcha_fonts/font_3.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

0
app/sdks/QRcode.class.php Executable file → Normal file
View File

0
app/sdks/lessc.class.php Executable file → Normal file
View File

0
app/template/api/view.html Executable file → Normal file
View File

0
app/template/app/index.html Executable file → Normal file
View File

0
app/template/common/footer.html Executable file → Normal file
View File

1
app/template/common/footerCommon.html Executable file → Normal file
View File

@ -43,6 +43,5 @@
[ /^(.*\.(?:css|js))(.*)$/i,'$1$2?ver='+G.version]
]
});
if(navigator.serviceWorker){navigator.serviceWorker.register('./?share/manifestJS');}
</script>
<?php Hook::trigger('templateCommonFooter');?>

1
app/template/common/header.html Executable file → Normal file
View File

@ -18,7 +18,6 @@
<link href="<?php echo STATIC_PATH;?>images/common/ico.png?ver=<?php echo KOD_VERSION;?>" rel="icon" type="image/x-icon">
<link href="<?php echo STATIC_PATH;?>style/common.css?ver=<?php echo KOD_VERSION;?>" rel="stylesheet"/>
<link href="./static/style/font-awesome/css/font-awesome.css?ver=<?php echo KOD_VERSION;?>" rel="stylesheet">
<link href="./?share/manifest" rel="manifest" />
<!--[if IE 7]>
<link rel="stylesheet" href="./static/style/font-awesome/css/font-awesome-ie7.css">
<![endif]-->

0
app/template/common/navbar.html Executable file → Normal file
View File

0
app/template/common/navbarShare.html Executable file → Normal file
View File

0
app/template/common/showTips.html Executable file → Normal file
View File

0
app/template/desktop/index.html Executable file → Normal file
View File

0
app/template/editor/edit.html Executable file → Normal file
View File

0
app/template/editor/editor.html Executable file → Normal file
View File

0
app/template/explorer/content.html Executable file → Normal file
View File

0
app/template/explorer/explorerWap.html Executable file → Normal file
View File

0
app/template/explorer/index.html Executable file → Normal file
View File

0
app/template/pluginApp/index.html Executable file → Normal file
View File

0
app/template/setting/index.html Executable file → Normal file
View File

0
app/template/share/edit.html Executable file → Normal file
View File

0
app/template/share/editor.html Executable file → Normal file
View File

0
app/template/share/explorer.html Executable file → Normal file
View File

0
app/template/share/explorerWap.html Executable file → Normal file
View File

0
app/template/share/file.html Executable file → Normal file
View File

0
app/template/share/tips.html Executable file → Normal file
View File

2
app/template/user/install.html Executable file → Normal file
View File

@ -40,7 +40,7 @@
}
$login_info = str_replace(array("{0}","{1}","{2}"),array('admin','demo/demo','guest/guest'),LNG('install_user_default'));
echo LNG('install_login'),'<br/>'.$login_info.'</div>';
echo '<div class="inputs admin-password"><input type="password" placeholder="'.LNG('login_root_password').'"/></div><div class="inputs admin-password-repeat"><input type="password" placeholder="'.LNG('login_root_password_repeat').'"/></div>';
echo '<div class="inputs admin-password"><input type="password" placeholder="'.LNG('login_root_password').'" autocomplete="off"/></div><div class="inputs admin-password-repeat"><input type="password" placeholder="'.LNG('login_root_password_repeat').'" autocomplete="off"/></div>';
echo '<div class="guest"><a href="javascript:void(0);" class="start">'.$login.'</a></div>';
?>
</div>

2
app/template/user/license.html Executable file → Normal file
View File

@ -12,7 +12,7 @@
<div class='info'><?php echo LNG('copyright_contact');?></div>
</div>
<div class="form" style="padding: 10px 20px;">
<div class="inputs admin-password"><input type="text" placeholder="LICENSE KEY"/></div>
<div class="inputs admin-password"><input type="text" placeholder="LICENSE KEY" autocomplete="off"/></div>
<a href="javascript:void(0);" class="LICENSE_SUBMIT btn btn-primary">注册授权</a>
<div class="links">
<a href="./index.php?user/versionInstall&reset=1" class="btn btn-link license-use-free"><?php echo LNG('use_free');?></a>

3
app/template/user/login.html Executable file → Normal file
View File

@ -43,12 +43,11 @@
<i class="font-icon icon-key"></i>
<input id="password" name='password' type="password" placeholder="<?php echo LNG('password');?>"
required autocomplete="on" disabled/>
<input type='hidden' name='csrfLogin' value="<?php echo $_SESSION['csrfLogin'];?>"/>
</div>
<?php if(need_check_code()){?>
<div class='check-code'>
<i class="font-icon icon-unlock-alt"></i>
<input name='checkCode' class="check-code" type="text" placeholder="<?php echo LNG('login_code');?>" required/>
<input name='checkCode' class="check-code" type="text" placeholder="<?php echo LNG('login_code');?>" required autocomplete="off"/>
<img src='./index.php?user/checkCode' onclick="this.src='./index.php?user/checkCode'" />
</div>
<?php }?>

3
app/template/user/loginWap.html Executable file → Normal file
View File

@ -26,13 +26,12 @@
<i class="font-icon icon-key"></i>
<input id="password" name='password' type="password" placeholder="<?php echo LNG('password');?>"
required disabled/>
<input type='hidden' name='csrfLogin' value="<?php echo $_SESSION['csrfLogin'];?>"/>
</div>
<?php if(need_check_code()){?>
<div class='check-code'>
<i class="font-icon icon-unlock-alt"></i>
<input name='checkCode' class="check-code" type="text" placeholder="<?php echo LNG('login_code');?>" required/>
<input name='checkCode' class="check-code" type="text" placeholder="<?php echo LNG('login_code');?>" required autocomplete="off"/>
<img src='./index.php?user/checkCode' onclick="this.src='./index.php?user/checkCode'" />
</div>
<?php }?>

File diff suppressed because one or more lines are too long

8
config/config.php Executable file → Normal file
View File

@ -18,12 +18,12 @@ if(GLOBAL_DEBUG){
define('STATIC_JS','_dev'); //_dev||app
define('STATIC_LESS','less');//less||css
@ini_set("display_errors","on");
@error_reporting(E_ALL^E_NOTICE^E_WARNING^E_DEPRECATED);//
@error_reporting(E_ALL^E_NOTICE);//
}else{
define('STATIC_JS','app'); //app
define('STATIC_LESS','css');//css
@ini_set("display_errors","on");//on off
@error_reporting(E_ALL^E_NOTICE^E_WARNING^E_DEPRECATED);// 0
@error_reporting(E_ALL^E_NOTICE^E_WARNING);// 0
}
//header('HTTP/1.1 200 Ok');//兼容部分lightHttp服务器环境; php5.1以下会输出异常;暂屏蔽
@ -38,13 +38,13 @@ define('FUNCTION_DIR', LIB_DIR .'function/'); //函数库目录
define('CLASS_DIR', LIB_DIR .'kod/'); //工具类目录
define('CORER_DIR', LIB_DIR .'core/'); //核心目录
define('SDK_DIR', LIB_DIR .'sdks/'); //
define('DEFAULT_PERRMISSIONS',0755); //新建文件、解压文件默认权限777 部分虚拟主机限制了777;
define('DEFAULT_PERRMISSIONS',0755); //新建文件、解压文件默认权限777 部分虚拟主机限制了777
/*
* 可以数据目录;移到web目录之外可以使程序更安全, 就不用限制用户的扩展名权限了;
* 1. 需要先将data文件夹移到别的地方 例如将data文件夹拷贝到D:/
* 2. 在config文件夹下新建define.php 新增一行 <?php define('DATA_PATH','D:/data/');
* 注意:路径不能写错;其次php需要有权限访问移动后的目录(设置了防跨站需要关闭) 路径结尾/斜杠绝对不能缺少
* 注意:路径不能写错;其次php需要有权限访问移动后的目录(设置了防跨站需要关闭)
*/
if(file_exists(BASIC_PATH.'config/define.php')){
include(BASIC_PATH.'config/define.php');

0
config/i18n/ar/about.html Executable file → Normal file
View File

0
config/i18n/ar/edit.html Executable file → Normal file
View File

0
config/i18n/ar/help.html Executable file → Normal file
View File

0
config/i18n/ar/main.php Executable file → Normal file
View File

0
config/i18n/bg/about.html Executable file → Normal file
View File

0
config/i18n/bg/edit.html Executable file → Normal file
View File

0
config/i18n/bg/help.html Executable file → Normal file
View File

0
config/i18n/bg/main.php Executable file → Normal file
View File

0
config/i18n/bn/about.html Executable file → Normal file
View File

0
config/i18n/bn/edit.html Executable file → Normal file
View File

0
config/i18n/bn/help.html Executable file → Normal file
View File

0
config/i18n/bn/main.php Executable file → Normal file
View File

0
config/i18n/ca/about.html Executable file → Normal file
View File

0
config/i18n/ca/edit.html Executable file → Normal file
View File

0
config/i18n/ca/help.html Executable file → Normal file
View File

0
config/i18n/ca/main.php Executable file → Normal file
View File

0
config/i18n/cs/about.html Executable file → Normal file
View File

0
config/i18n/cs/edit.html Executable file → Normal file
View File

0
config/i18n/cs/help.html Executable file → Normal file
View File

Some files were not shown because too many files have changed in this diff Show More