package com.wgcloud.controller; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.github.pagehelper.PageInfo; import com.wgcloud.config.CommonConfig; import com.wgcloud.entity.FileSafe; import com.wgcloud.entity.SystemInfo; import com.wgcloud.service.FileSafeService; import com.wgcloud.service.LogInfoService; import com.wgcloud.service.SystemInfoService; import com.wgcloud.util.HostUtil; import com.wgcloud.util.PageUtil; import com.wgcloud.util.ResDataUtils; import com.wgcloud.util.TokenUtils; import com.wgcloud.util.staticvar.StaticKeys; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @version v3.3 * @ClassName:FileSafeController.java * @author: http://www.wgstart.com * @date: 2021年9月21日 * @Description: 文件防篡改监测管理 * @Copyright: 2019-2021 wgcloud. All rights reserved. */ @Controller @RequestMapping("/fileSafe") public class FileSafeController { private static final Logger logger = LoggerFactory.getLogger(FileSafeController.class); @Resource private FileSafeService fileSafeService; @Resource private LogInfoService logInfoService; @Resource private SystemInfoService systemInfoService; @Autowired private TokenUtils tokenUtils; @Autowired private CommonConfig commonConfig; /** * agent查询port列表 * * @param model * @param request * @return */ @ResponseBody @RequestMapping(value = "agentList") public String agentList(@RequestBody String paramBean) { JSONObject agentJsonObject = (JSONObject) JSONUtil.parse(paramBean); if (!tokenUtils.checkAgentToken(agentJsonObject)) { logger.error(StaticKeys.TOKEN_ERROR); return ResDataUtils.resetErrorJson(StaticKeys.TOKEN_ERROR); } Map params = new HashMap(); if (null == agentJsonObject.get("hostname") || StringUtils.isEmpty(agentJsonObject.get("hostname").toString())) { return ""; } params.put("hostname", agentJsonObject.get("hostname").toString()); try { params.put("active", StaticKeys.ON_STATE); List FileSafeList = fileSafeService.selectAllByParams(params); return ResDataUtils.resetSuccessJson(FileSafeList); } catch (Exception e) { logger.error("agent获取文件防篡改信息错误", e); logInfoService.save("agent获取文件防篡改信息错误", e.toString(), StaticKeys.LOG_XTCZ); return ResDataUtils.resetErrorJson(e.toString()); } } /** * 根据条件查询文件防篡改信息列表 * * @param model * @param request * @return */ @RequestMapping(value = "list") public String fileSafeList(FileSafe fileSafe, Model model, HttpServletRequest request) { Map params = new HashMap(); try { StringBuffer url = new StringBuffer(); String hostname = null; if (!StringUtils.isEmpty(fileSafe.getHostname())) { hostname = fileSafe.getHostname(); params.put("hostname", hostname.trim()); url.append("&hostname=").append(hostname); } if (!StringUtils.isEmpty(fileSafe.getAccount())) { params.put("account", fileSafe.getAccount()); url.append("&account=").append(fileSafe.getAccount()); } if (!StringUtils.isEmpty(fileSafe.getState())) { params.put("state", fileSafe.getState()); url.append("&state=").append(fileSafe.getState()); } if (!StringUtils.isEmpty(fileSafe.getOrderBy())) { params.put("orderBy", fileSafe.getOrderBy()); params.put("orderType", fileSafe.getOrderType()); url.append("&orderBy=").append(fileSafe.getOrderBy()); url.append("&orderType=").append(fileSafe.getOrderType()); } //校验是否需要添加过滤用户查询条件 HostUtil.addAccountquery(request, params); PageInfo pageInfo = fileSafeService.selectByParams(params, fileSafe.getPage(), fileSafe.getPageSize()); Map paramsLogInfo = new HashMap(); for (FileSafe FileSafe1 : pageInfo.getList()) { FileSafe1.setHostname(FileSafe1.getHostname() + HostUtil.addRemark(FileSafe1.getHostname())); //设置所属用户账号 begin if (StaticKeys.TRUE_VAL.equals(commonConfig.getUserInfoManage())) { FileSafe1.setAccount(HostUtil.getAccount(FileSafe1.getHostname())); } //设置所属用户账号 begin //设置累积告警次数 begin if (StaticKeys.TRUE_VAL.equals(commonConfig.getShowWarnCount())) { String warnQueryWd = FileSafe1.getFileName() + "," + FileSafe1.getHostname(); paramsLogInfo.clear(); paramsLogInfo.put("hostname", warnQueryWd); paramsLogInfo.put("hostnameNe", "已恢复"); FileSafe1.setWarnCount(logInfoService.countByParams(paramsLogInfo)); FileSafe1.setWarnQueryWd(warnQueryWd); } //设置累积告警次数 end } //设置用户列表 HostUtil.addAccountListModel(model); PageUtil.initPageNumber(pageInfo, model); model.addAttribute("pageUrl", "/fileSafe/list?1=1" + url.toString()); model.addAttribute("page", pageInfo); model.addAttribute("fileSafe", fileSafe); } catch (Exception e) { logger.error("查询文件防篡改信息错误", e); logInfoService.save("查询文件防篡改信息错误", e.toString(), StaticKeys.LOG_XTCZ); } return "fileSafe/list"; } /** * 保存文件防篡改监控信息 * * @param FileSafe * @param model * @param request * @return */ @RequestMapping(value = "save") public String saveFileSafe(FileSafe fileSafe, Model model, HttpServletRequest request) { String errorMsg = "保存文件防篡改信息错误"; try { if (StringUtils.isEmpty(fileSafe.getId())) { fileSafeService.save(fileSafe); fileSafeService.saveLog(request, StaticKeys.LOG_ADD, fileSafe); } else { fileSafeService.updateById(fileSafe); fileSafeService.saveLog(request, StaticKeys.LOG_UPDATE, fileSafe); } } catch (Exception e) { logger.error(errorMsg, e); logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_XTCZ); } return "redirect:/fileSafe/list"; } /** * 批量保存文件防篡改监控信息 * * @param FileSafe * @param model * @param request * @return */ @RequestMapping(value = "saveBatch") public String saveBatchFileSafe(FileSafe fileSafe, Model model, HttpServletRequest request) { String errorMsg = "批量保存文件防篡改信息错误"; try { String[] hostnames = request.getParameterValues("hostnames"); if (null == hostnames || hostnames.length < 1) { return "redirect:/fileSafe/list"; } for (String selectedHost : hostnames) { fileSafe.setHostname(selectedHost); fileSafeService.save(fileSafe); } } catch (Exception e) { logger.error(errorMsg, e); logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_XTCZ); } return "redirect:/fileSafe/list"; } /** * 添加 * * @param model * @param request * @return */ @RequestMapping(value = "edit") public String edit(Model model, HttpServletRequest request) { String errorMsg = "添加文件防篡改信息错误"; String id = request.getParameter("id"); FileSafe fileSafe = new FileSafe(); try { //校验是否需要添加过滤用户查询条件 Map paramsAccount = new HashMap(); HostUtil.addAccountquery(request, paramsAccount); List systemInfoList = systemInfoService.selectAllByParams(paramsAccount); model.addAttribute("systemInfoList", systemInfoList); if (StringUtils.isEmpty(id)) { model.addAttribute("fileSafe", fileSafe); return "fileSafe/add"; } fileSafe = fileSafeService.selectById(id); model.addAttribute("fileSafe", fileSafe); } catch (Exception e) { logger.error(errorMsg, e); logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_XTCZ); } return "fileSafe/add"; } /** * 批量添加 * * @param model * @param request * @return */ @RequestMapping(value = "editBatch") public String editBatch(Model model, HttpServletRequest request) { String errorMsg = "批量添加文件防篡改信息错误"; FileSafe fileSafe = new FileSafe(); try { //校验是否需要添加过滤用户查询条件 Map paramsAccount = new HashMap(); HostUtil.addAccountquery(request, paramsAccount); List systemInfoList = systemInfoService.selectAllByParams(paramsAccount); model.addAttribute("systemInfoList", systemInfoList); model.addAttribute("fileSafe", fileSafe); } catch (Exception e) { logger.error(errorMsg, e); logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_XTCZ); } return "fileSafe/addBatch"; } /** * 删除文件防篡改信息 * * @param id * @param model * @param request * @param redirectAttributes * @return */ @RequestMapping(value = "del") public String delete(Model model, HttpServletRequest request, RedirectAttributes redirectAttributes) { String errorMsg = "删除文件防篡改监测信息错误"; FileSafe fileSafe = new FileSafe(); try { if (!StringUtils.isEmpty(request.getParameter("id"))) { String[] ids = request.getParameter("id").split(","); for (String id : ids) { fileSafe = fileSafeService.selectById(id); fileSafeService.saveLog(request, StaticKeys.LOG_DEL, fileSafe); } fileSafeService.deleteById(ids); } } catch (Exception e) { logger.error(errorMsg, e); logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_XTCZ); } return "redirect:/fileSafe/list"; } }