⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 systemfileaction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
字号:
package cn.jsprun.struts.action;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import cn.jsprun.service.system.CheckFile;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.Md5Token;
import cn.jsprun.vo.logs.FilesVo;

public class SystemFileAction extends DispatchAction {
	public ActionForward checkFileperms(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		CheckFile chekfile = new CheckFile();
		String path = servlet.getServletContext().getRealPath("/");
		String filepath1 = path+ "forumdata/cache";
		String filepath2 = path+ "forumdata/logs";
		String filepath3 = path+ "forumdata/templates";
		String filepath4 = path+ "templates";
		List<String> fallfile = new ArrayList<String>();
		fallfile = chekfile.checkFilePopedom(filepath1, fallfile,path);
		fallfile = chekfile.checkFilePopedom(filepath2, fallfile,path);
		fallfile = chekfile.checkFilePopedom(filepath3, fallfile,path);
		fallfile = chekfile.checkFilePopedom(filepath4, fallfile,path);
		request.setAttribute("fallfilelist", fallfile);
		if (fallfile == null || fallfile.size() == 0) {
			request.setAttribute("fallfilelist", null);
		}
		return mapping.findForward("fileperms");
	}
	@SuppressWarnings({ "deprecation", "unchecked" })
	public ActionForward checkFileIntegrity(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) {
		HttpSession session = request.getSession();
		boolean isfounder = (Boolean)session.getAttribute("isfounder");
		boolean ishavefounder = (Boolean)session.getAttribute("ishavefounder");
		if(ishavefounder && !isfounder){
			request.setAttribute("resultInfo", "您没有权限访问该设置,出于安全考虑此设置只有论坛创始人可以使用。");
			return mapping.findForward("result");
		}
		String filechek = request.getParameter("filechek");
		if(filechek!=null && filechek.equals("yes")){
			request.setAttribute("successInfo", "正在进行文件校验,请稍候......");
			request.setAttribute("requestPath", request.getContextPath()+"/sysfile.do?fileaction=checkFileIntegrity&filechek=no");
			return mapping.findForward("success");
		}else{
			String dateformat = (String)session.getAttribute("dateformat");
			String timeformat = (String)session.getAttribute("timeformat");
			float timeoffset= (Float)session.getAttribute("timeoffset");
			int timestamp = (Integer)(request.getAttribute("timestamp"));
		List listresult = new ArrayList();
		CheckFile chekfile = new CheckFile();
		int delcount = 0;
		int addcount = 0;
		int modifycount = 0;
		String realPath=servlet.getServletContext().getRealPath("/");
		String filepath =realPath + "admin/jsprunfiles.md5";
		List<String> filelist = chekfile.displist(filepath);
		if (filelist == null) {
			request.setAttribute("resultInfo", "没有核对的文件,无法操作。");
			return mapping.findForward("result");
		}
		String[] filedirs = { "./","templates/default/","admin/", "admin/page/",
				"admin/page/announcements/", "admin/page/basicsetting/",
				"admin/page/basicsetting/creditwizard/", "admin/page/counter/",
				"admin/page/forumsedit/", "admin/page/members/", "admin/page/modthreads/",
				"admin/page/pluginsconfig/" };
		for (String filedir : filedirs) {
			int modifynum = 0;
			int addnum = 0;
			int delnum = 0;
			List<FilesVo> resultlist = new ArrayList<FilesVo>();
			List<String> targetlist = chekfile.displistBydir(filelist, filedir);
			String source = realPath+ filedir;
			File file = new File(source);
			File[] sourcelist = null;
			if (file.isDirectory()) {
				sourcelist = file.listFiles();
			}
			for (int i = 0; i < targetlist.size(); i++) {
				String files = (String) targetlist.get(i);
				String[] filearray = files.split("\\s\\*");
				if (filearray != null && filearray.length > 1) {
					filearray[1] = filearray[1];
				}
				String filespath = realPath+ filearray[1];
				File filenew = new File(filespath);
				boolean flag = false;
				boolean modify = false;
				for (File fi : sourcelist) {
					if (filenew.equals(fi)) {
						String targetlength = Md5Token.getInstance().getLongToken(fi.length() + "");
						if (!targetlength.equals(filearray[0])) {
							FilesVo filevo = new FilesVo();
							filevo.setFilename(fi.getName());
							filevo.setFilebyte(fi.length() + "");
							long lastModified = fi.lastModified();
							String date = Common.gmdate(dateformat+" "+timeformat, (int)(lastModified/1000), String.valueOf(timeoffset));
							if(timestamp-(lastModified/1000)<7*86400){
								filevo.setModifyDate("<b>"+date+"</b>");
							}else{
								filevo.setModifyDate(date);
							}
							filevo.setStatus("<font color='red'>文件被修改</font>");
							modifycount++;
							modifynum++;
							resultlist.add(filevo);
							modify = true;
						}else{
							flag = true;
						}
					}
				}
				if (flag) {
					FilesVo filevo = new FilesVo();
					filevo.setFilename(filenew.getName());
					filevo.setFilebyte(filenew.length() + "");
					long lastModified = filenew.lastModified();
					String date = Common.gmdate(dateformat+" "+timeformat, (int)(lastModified/1000), String.valueOf(timeoffset));
					if(timestamp-(lastModified/1000)<7*86400){
						filevo.setModifyDate("<b>"+date+"</b>");
					}else{
						filevo.setModifyDate(date);
					}
					filevo.setStatus("文件正确");
					resultlist.add(filevo);
				} else if(!modify){
					delcount++;
					delnum++;
					FilesVo filevo = new FilesVo();
					filevo.setFilename(filenew.getName());
					filevo.setStatus("文件被删除");
					resultlist.add(filevo);
				}
			}
			for (File fi : sourcelist) {
				boolean flag = false;
				for (int i = 0; i < targetlist.size(); i++) {
					String files = (String) targetlist.get(i);
					String[] filearray = files.split("\\s\\*");
					filearray[1] = filearray[1];
					String filespath = realPath+ filearray[1];
					File filenew = new File(filespath);
					if (fi.equals(filenew)) {
						flag = true;
					}
				}
				if (!flag && !fi.isDirectory()) {
					if(Common.matches(fi.getName(), "(jsp|js|htm)$")){
						addcount++;
						addnum++;
						FilesVo filevo = new FilesVo();
						filevo.setFilename(fi.getName());
						filevo.setFilebyte(fi.length() + "");
						long lastModified = fi.lastModified();
						String date = Common.gmdate(dateformat+" "+timeformat, (int)(lastModified/1000), String.valueOf(timeoffset));
						if(timestamp-(lastModified/1000)<7*86400){
							filevo.setModifyDate("<b>"+date+"</b>");
						}else{
							filevo.setModifyDate(date);
						}
						filevo.setStatus("<font color='green'>文件未知</font>");
						resultlist.add(filevo);
					}
				}
			}
			String propeter = "";
			if (addnum > 0) {
				propeter = propeter + "文件未知:" + addnum;
			}
			if (delnum > 0) {
				propeter = propeter + "文件被删除:" + delnum;
			}
			if (modifynum > 0) {
				propeter = propeter + "文件被修改:" + modifynum;
			}
			if(filedir.equals("")){
				filedir = "./";
			}
			listresult.add("<td>" + filedir+ "</td><td colspan='3' style='text-align:right'>"+ propeter + "</td>");
			listresult.add(resultlist);
		}
		request.setAttribute("listresult", listresult);
		request.setAttribute("result", "文件被修改: " + modifycount + "&nbsp; 文件被删除: " + delcount + "&nbsp;文件未知:" + addcount);
		return mapping.findForward("fileintegrity");
	}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -