update to v1.0.20 进一步增强文件系统的安全性

This commit is contained in:
kohgylw 2019-08-16 15:34:23 +08:00
parent 617995a8b3
commit d08aafa669
4 changed files with 17 additions and 7 deletions

View File

@ -48,15 +48,14 @@ kiftd项目 计划表-2019-08-05 by 青阳龙野
计划中 v1.0.20
--------------
【已完成】设置扩展存储区——允许用户最多挂载31个额外存储区以便在不使用磁盘阵列的情况下将多个硬盘分区作为kiftd的扩展存储空间使用。
【已完成】上传文件夹——允许用户直接“上传”文件夹,在保留目录结构的情况下一次性上传文件夹内的所有文件。
该功能是新建文件夹和上传文件的结合版,仅当用户同时具备“上传”和“新建文件夹”权限时才可使用该功能。
【已完成】设置扩展存储区——允许用户最多挂载31个额外存储区以便在不使用磁盘阵列的情况下将多个硬盘分区作为kiftd的扩展存储空间使用。
【已完成】PPT预览——ppt/pptx幻灯片预览功能现已加入kiftd豪华预览午餐是否能正确处理未安装的中文字体仍待验证
【已完成】优化了配置检查机制,当配置出现错误时不再自动还原初始配置,方便用户对其进行检查和修改操作。
【已完成】优化了文件列表显示逻辑,将最新上传的文件显示在最上方,便于用户查找。
【已完成】升级文件列表的排序功能——文件列表可以对文件的各项属性进行切换式的双向(升序/降序)排序。
【已完成】进一步完善了文件上传操作的合法性检查流程,提高文件系统的安全性。
【已完成】其他一些细节优化。
【已完成】进一步增强了文件系统的安全性和稳定性。

View File

@ -104,22 +104,27 @@ public class FolderServiceImpl implements FolderService {
return "cannotCreateFolder";
}
// 删除文件夹的实现方法
public String deleteFolder(final HttpServletRequest request) {
final String folderId = request.getParameter("folderId");
final String account = (String) request.getSession().getAttribute("ACCOUNT");
// 检查权限
if (!ConfigureReader.instance().authorized(account, AccountAuth.DELETE_FILE_OR_FOLDER)) {
return "noAuthorized";
}
if (folderId == null || folderId.length() <= 0) {
// 检查删除目标的ID参数是否正确
if (folderId == null || folderId.length() == 0 || "root".equals(folderId)) {
return "errorParameter";
}
final Folder folder = this.fm.queryById(folderId);
if (folder == null) {
return "deleteFolderSuccess";
}
// 检查删除者是否具备删除目标的访问许可
if (!ConfigureReader.instance().accessFolder(folder, account)) {
return "noAuthorized";
}
// 执行迭代删除
final List<Folder> l = this.fu.getParentList(folderId);
if (this.fu.deleteAllChildFolder(folderId) > 0) {
this.lu.writeDeleteFolderEvent(request, folder, l);
@ -128,6 +133,7 @@ public class FolderServiceImpl implements FolderService {
return "cannotDeleteFolder";
}
// 对编辑文件夹的实现
public String renameFolder(final HttpServletRequest request) {
final String folderId = request.getParameter("folderId");
final String newName = request.getParameter("newName");
@ -136,7 +142,8 @@ public class FolderServiceImpl implements FolderService {
if (!ConfigureReader.instance().authorized(account, AccountAuth.RENAME_FILE_OR_FOLDER)) {
return "noAuthorized";
}
if (folderId == null || folderId.length() <= 0 || newName == null || newName.length() <= 0) {
if (folderId == null || folderId.length() == 0 || newName == null || newName.length() == 0
|| "root".equals(folderId)) {
return "errorParameter";
}
if (!TextFormateUtil.instance().matcherFolderName(newName) || newName.indexOf(".") == 0) {
@ -224,7 +231,11 @@ public class FolderServiceImpl implements FolderService {
if (!ConfigureReader.instance().authorized(account, AccountAuth.DELETE_FILE_OR_FOLDER)) {
return "deleteError";
}
if (parentId == null || parentId.length() <= 0) {
if (parentId == null || parentId.length() == 0) {
return "deleteError";
}
Folder p = fm.queryById(parentId);
if (p == null) {
return "deleteError";
}
final Folder[] repeatFolders = this.fm.queryByParentId(parentId).parallelStream()

View File

@ -1,5 +1,5 @@
#Generated by Maven Integration for Eclipse
#Thu Aug 15 16:34:49 CST 2019
#Fri Aug 16 15:33:56 CST 2019
version=1.0.20-SNAPSHOT
groupId=kohgylw
m2e.projectName=kiftd