新增劫持文件、注入脚本文件、流量转发目的地菜单,完善文件劫持菜单。

This commit is contained in:
wangwei
2019-05-21 09:51:19 +08:00
parent c44ddb9ffc
commit f30acfdbbd
43 changed files with 5694 additions and 362 deletions

View File

@@ -19,8 +19,10 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.function.Predicate;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -48,6 +50,10 @@ import com.nis.domain.basics.AsnGroupInfo;
import com.nis.domain.basics.AsnIpCfg;
import com.nis.domain.basics.ServiceDictInfo;
import com.nis.domain.basics.SysDictInfo;
import com.nis.domain.callback.ProxyFileHijackCfg;
import com.nis.domain.callback.ProxyFileInsertScriptCfg;
import com.nis.domain.callback.ProxyFileStrategyCfg;
import com.nis.domain.callback.ProxyFileTrafficMirrorCfg;
import com.nis.domain.configuration.AppComplexFeatureCfg;
import com.nis.domain.configuration.AppDomainCfg;
import com.nis.domain.configuration.AppFeatureIndex;
@@ -183,7 +189,10 @@ import com.nis.web.service.configuration.IpCfgService;
import com.nis.web.service.configuration.IpMultiplexPoolCfgService;
import com.nis.web.service.configuration.MailCfgService;
import com.nis.web.service.configuration.NumCfgService;
import com.nis.web.service.configuration.ProxyFileHijackService;
import com.nis.web.service.configuration.ProxyFileInsertScriptService;
import com.nis.web.service.configuration.ProxyFileStrategyService;
import com.nis.web.service.configuration.ProxyFileTrafficMirrorService;
import com.nis.web.service.configuration.PxyObjKeyringService;
import com.nis.web.service.configuration.PxyObjSpoofingIpPoolService;
import com.nis.web.service.configuration.RequestInfoService;
@@ -299,6 +308,12 @@ public class BaseController {
@Autowired
protected PxyObjKeyringService pxyObjKeyringService;// 拦截策略service
@Autowired
protected ProxyFileHijackService proxyFileHijackService;// 劫持文件service
@Autowired
protected ProxyFileInsertScriptService proxyFileInsertScriptService;//注入脚本文件service
@Autowired
protected ProxyFileTrafficMirrorService proxyFileTrafficMirrorService;//注入流量镜像文件ervice
@Autowired
protected AppBuiltInFeatureService appBuiltInFeatureService;// 拦截策略service
@Autowired
protected AsnIpCfgService asnIpCfgService;// asn ip service
@@ -2667,6 +2682,10 @@ public class BaseController {
AppFeatureIndex searchAppFeatureIndex=new AppFeatureIndex();
AppSslCertCfg searchAppSslCertCfg=new AppSslCertCfg();
AsnIpCfg searchAsnIpCfg=new AsnIpCfg();
ProxyFileHijackCfg searFileHijackCfg = new ProxyFileHijackCfg();
ProxyFileInsertScriptCfg searFileInsertScriptCfg = new ProxyFileInsertScriptCfg();
ProxyFileTrafficMirrorCfg searFileTrafficMirrorCfg = new ProxyFileTrafficMirrorCfg();
ProxyFileStrategyCfg searFileStrategyCfg = new ProxyFileStrategyCfg();
if(entity != null && (entity instanceof CfgIndexInfo)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchCfg);
@@ -2743,8 +2762,21 @@ public class BaseController {
if(entity != null && (entity instanceof AsnIpCfg)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchAsnIpCfg);
}if(entity != null && (entity instanceof ProxyFileHijackCfg)){
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searFileHijackCfg);
}if(entity != null && (entity instanceof ProxyFileInsertScriptCfg)){
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searFileInsertScriptCfg);
}if(entity != null && (entity instanceof ProxyFileTrafficMirrorCfg)){
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searFileTrafficMirrorCfg);
}if(entity != null && (entity instanceof ProxyFileStrategyCfg)){
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searFileStrategyCfg);
}
auditType = (Integer)Reflections.invokeGetter(entity, "isAudit");
//全部审核通过,只查询当前条件下的所有未审核的配置 -批量审核通过/不通过
@@ -2815,6 +2847,14 @@ public class BaseController {
searchAppFeatureIndex.setTableName(tableNameXml);
searchAppSslCertCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchAppSslCertCfg.setTableName(tableNameXml);
searFileHijackCfg.setServiceId(Integer.valueOf(serviceIdXml));
searFileHijackCfg.setTableName(tableNameXml);
searFileInsertScriptCfg.setServiceId(Integer.valueOf(serviceIdXml));
searFileInsertScriptCfg.setTableName(tableNameXml);
searFileTrafficMirrorCfg.setServiceId(Integer.valueOf(serviceIdXml));
searFileTrafficMirrorCfg.setTableName(tableNameXml);
searFileStrategyCfg.setServiceId(Integer.valueOf(serviceIdXml));
searFileStrategyCfg.setTableName(tableNameXml);
if("1".equals(serviceTypeXml)){//maat类配置
// 存放域配置类型 及 对应表名
@@ -3210,7 +3250,11 @@ public class BaseController {
, searchDnsResStrategy
, searchDnsIpCfg
, searchIpPortCfg
, searchSignSampleCfg);
, searchSignSampleCfg
, searFileHijackCfg
, searFileInsertScriptCfg
, searFileTrafficMirrorCfg
, searFileStrategyCfg);
}
}
}
@@ -3290,6 +3334,10 @@ public class BaseController {
PxyObjKeyring searchObjKeyringCfg=new PxyObjKeyring();
PxyObjTrustedCaCert searchTrustedCaCertCfg=new PxyObjTrustedCaCert();
AsnIpCfg searchAsnIpCfg=new AsnIpCfg();
ProxyFileHijackCfg searchFileHijackCfg = new ProxyFileHijackCfg();
ProxyFileInsertScriptCfg searchFileInsertScriptCfg = new ProxyFileInsertScriptCfg();
ProxyFileTrafficMirrorCfg searchFileTrafficMirrorCfg = new ProxyFileTrafficMirrorCfg();
ProxyFileStrategyCfg searchFileStrategyCfg = new ProxyFileStrategyCfg();
// 传递检索条件
if(entity != null && (entity instanceof CfgIndexInfo)) {
@@ -3360,6 +3408,19 @@ public class BaseController {
BeanUtils.copyProperties(entity, searchAsnIpCfg);
searchAsnIpCfg.setFunctionId(functionId);
}
if(entity != null && (entity instanceof ProxyFileHijackCfg)){
BeanUtils.copyProperties(entity, searchFileHijackCfg);
searchFileHijackCfg.setFunctionId(functionId);
}if(entity != null && (entity instanceof ProxyFileInsertScriptCfg)){
BeanUtils.copyProperties(entity, searchFileInsertScriptCfg);
searchFileInsertScriptCfg.setFunctionId(functionId);
}if(entity != null && (entity instanceof ProxyFileTrafficMirrorCfg)){
BeanUtils.copyProperties(entity, searchFileTrafficMirrorCfg);
searchFileTrafficMirrorCfg.setFunctionId(functionId);
}if(entity != null && (entity instanceof ProxyFileStrategyCfg)){
BeanUtils.copyProperties(entity, searchFileStrategyCfg);
searchFileStrategyCfg.setFunctionId(functionId);
}
BaseCfg batchCfg = new BaseCfg();
batchCfg.setIsValid(-1);
@@ -3569,6 +3630,71 @@ public class BaseController {
}
}
}else if("pxy_profile_hijack_files".equals(tableNameXml)) {
boolean hasData = true;
while(hasData){
page.setPageNo(1);
page.setLastPage(false);
List list = proxyFileHijackService.findPage(page, searchFileHijackCfg).getList();
List<BaseCfg> result = new ArrayList();
for(int i=0;i<list.size();i++){
ProxyFileHijackCfg temp=(ProxyFileHijackCfg)list.get(i);
if(temp.getQuote() == -1 || temp.getQuote() ==0){
result.add(temp);
}
}
if(!StringUtil.isEmpty(list)){
hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, result, hasData);
}else{
hasData = false;
}
}
}else if("pxy_profile_insert_scripts".equals(tableNameXml)) {
boolean hasData = true;
while(hasData){
page.setPageNo(1);
page.setLastPage(false);
List list = proxyFileInsertScriptService.findPage(page,searchFileInsertScriptCfg).getList();
List<BaseCfg> result = new ArrayList();
for(int i=0;i<list.size();i++){
ProxyFileInsertScriptCfg temp=(ProxyFileInsertScriptCfg)list.get(i);
if(temp.getQuote() == -1 || temp.getQuote() ==0){
result.add(temp);
}
}
if(!StringUtil.isEmpty(list)){
hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, result, hasData);
}else{
hasData = false;
}
}
}else if("pxy_profile_traffic_mirror".equals(tableNameXml)) {
boolean hasData = true;
while(hasData){
page.setPageNo(1);
page.setLastPage(false);
List list = proxyFileTrafficMirrorService.findPage(page,searchFileTrafficMirrorCfg).getList();
if(!StringUtil.isEmpty(list)){
hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, list, hasData);
}else{
hasData = false;
}
}
}else if("proxy_file_strategy_cfg".equals(tableNameXml)) {
boolean hasData = true;
while(hasData){
page.setPageNo(1);
page.setLastPage(false);
List list = proxyFileStrategyService.findPage(page,searchFileStrategyCfg).getList();
if(!StringUtil.isEmpty(list)){
hasData = commonPolicyService.batchDeleteMaatData(cfgList, page, batchCfg, list, hasData);
}else{
hasData = false;
}
}
}else {
boolean hasData = true;
while(hasData){
@@ -3703,7 +3829,11 @@ public class BaseController {
,DnsResStrategy searchDnsResStrategy
,DnsIpCfg searchDnsIpCfg
,IpPortCfg searchIpPortCfg
,AvSignSampleCfg searchSignSampleCfg) {
,AvSignSampleCfg searchSignSampleCfg
,ProxyFileHijackCfg searFileHijackCfg
,ProxyFileInsertScriptCfg searFileInsertScriptCfg
,ProxyFileTrafficMirrorCfg searFileTrafficMirrorCfg
,ProxyFileStrategyCfg searFileStrategyCfg) {
ToMaatBean maatBean;
MaatCfg maatCfg;
List<MaatCfg> configCompileList;
@@ -3792,6 +3922,82 @@ public class BaseController {
notAuditList.add(cfg);
}
}
}else if(className.equals("ProxyFileTrafficMirrorCfg")){
list = proxyFileTrafficMirrorService.findPage(page, searFileTrafficMirrorCfg).getList();
for(int i=0;i<list.size();i++){
ProxyFileTrafficMirrorCfg cfg = (ProxyFileTrafficMirrorCfg) list.get(i);
ids.add(cfg.getCompileId());
if(cfg.getIsValid()==1) {
cfg.setIsValid(entity.getIsValid());
cfg.setIsAudit(entity.getIsAudit());
cfg.setAuditTime(entity.getAuditTime());
cfg.setAuditorId(entity.getAuditorId());
auditList.add(cfg);
}else {
cfg.setIsValid(entity.getIsValid());
cfg.setIsAudit(entity.getIsAudit());
cfg.setAuditTime(entity.getAuditTime());
cfg.setAuditorId(entity.getAuditorId());
notAuditList.add(cfg);
}
}
}else if(className.equals("ProxyFileStrategyCfg")){
list = proxyFileStrategyService.findPage(page, searFileStrategyCfg).getList();
for(int i=0;i<list.size();i++){
ProxyFileStrategyCfg cfg = (ProxyFileStrategyCfg) list.get(i);
ids.add(cfg.getCompileId());
if(cfg.getIsValid()==1) {
cfg.setIsValid(entity.getIsValid());
cfg.setIsAudit(entity.getIsAudit());
cfg.setAuditTime(entity.getAuditTime());
cfg.setAuditorId(entity.getAuditorId());
auditList.add(cfg);
}else {
cfg.setIsValid(entity.getIsValid());
cfg.setIsAudit(entity.getIsAudit());
cfg.setAuditTime(entity.getAuditTime());
cfg.setAuditorId(entity.getAuditorId());
notAuditList.add(cfg);
}
}
}else if(className.equals("ProxyFileHijackCfg")){
list = proxyFileHijackService.findPage(page, searFileHijackCfg).getList();
for(int i=0;i<list.size();i++){
ProxyFileHijackCfg cfg = (ProxyFileHijackCfg) list.get(i);
ids.add(cfg.getCompileId());
if(cfg.getIsValid()==1) {
cfg.setIsValid(entity.getIsValid());
cfg.setIsAudit(entity.getIsAudit());
cfg.setAuditTime(entity.getAuditTime());
cfg.setAuditorId(entity.getAuditorId());
auditList.add(cfg);
}else {
cfg.setIsValid(entity.getIsValid());
cfg.setIsAudit(entity.getIsAudit());
cfg.setAuditTime(entity.getAuditTime());
cfg.setAuditorId(entity.getAuditorId());
notAuditList.add(cfg);
}
}
}else if(className.equals("ProxyFileInsertScriptCfg")){
list = proxyFileInsertScriptService.findPage(page, searFileInsertScriptCfg).getList();
for(int i=0;i<list.size();i++){
ProxyFileInsertScriptCfg cfg = (ProxyFileInsertScriptCfg) list.get(i);
ids.add(cfg.getCompileId());
if(cfg.getIsValid()==1) {
cfg.setIsValid(entity.getIsValid());
cfg.setIsAudit(entity.getIsAudit());
cfg.setAuditTime(entity.getAuditTime());
cfg.setAuditorId(entity.getAuditorId());
auditList.add(cfg);
}else {
cfg.setIsValid(entity.getIsValid());
cfg.setIsAudit(entity.getIsAudit());
cfg.setAuditTime(entity.getAuditTime());
cfg.setAuditorId(entity.getAuditorId());
notAuditList.add(cfg);
}
}
}else if(className.equals("PxyObjKeyring")){
list = pxyObjKeyringService.findPage(page, searchObjKeyringCfg).getList();
for(int i=0;i<list.size();i++){

View File

@@ -0,0 +1,255 @@
package com.nis.web.controller.configuration.proxy;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.google.common.collect.Maps;
import com.nis.domain.Page;
import com.nis.domain.callback.ProxyFileHijackCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.maat.ToMaatResult;
import com.nis.domain.maat.ToMaatResult.ResponseData;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.FileUtils;
import com.nis.util.JsonMapper;
import com.nis.util.LogUtils;
import com.nis.util.StringUtil;
import com.nis.web.controller.configuration.CommonController;
@Controller
@RequestMapping("${adminPath}/proxy/fileHijack")
public class FileHijackController extends CommonController{
@RequestMapping(value = {"list"})
public String fileHijackList(ProxyFileHijackCfg cfg,Model model,HttpServletRequest request,HttpServletResponse response) {
Page<ProxyFileHijackCfg> page = proxyFileHijackService.findPage(new Page<ProxyFileHijackCfg>(request, response,"a"), cfg);
model.addAttribute("page", page);
model.addAttribute("cfg", cfg);
initPageCondition(model);
return "/cfg/proxy/fileHijack/list";
}
@RequestMapping(value = {"form"})
@RequiresPermissions(value={"proxy:fileHijack:config"})
public String fileform(Model model,HttpServletRequest request
,HttpServletResponse response
,@ModelAttribute("cfg")ProxyFileHijackCfg cfg
,String ids
,RedirectAttributes redirectAttributes) {
if(!StringUtil.isEmpty(ids)){
cfg = proxyFileHijackService.getCfgById(Long.valueOf(ids));
}
//初始化各字典
initFormCondition(model, cfg);
model.addAttribute("_cfg", cfg);
return "/cfg/proxy/fileHijack/form";
}
@RequiresPermissions(value={"proxy:fileHijack:config"})
@RequestMapping(value = {"saveOrUpdate"})
public String saveOrUpdate(Model model,HttpServletRequest request
,HttpServletResponse response,MultipartFile cfgFile,
@ModelAttribute("cfg")ProxyFileHijackCfg cfg,
RedirectAttributes redirectAttributes){
File file = null;
try{
if(cfgFile != null) {
String filename = cfgFile.getOriginalFilename();
String prefix = FileUtils.getPrefix(filename, false);
String suffix = FileUtils.getSuffix(filename, false);
file = File.createTempFile("file_" + prefix, suffix);
cfgFile.transferTo(file);// 复制文件
String md5 = FileUtils.getFileMD5(file);
Map<String, Object> srcMap = Maps.newHashMap();
srcMap.put("filetype", suffix);
srcMap.put("datatype", "dbSystem");// 源文件存入数据中心
srcMap.put("createTime", new Date());
srcMap.put("key", prefix);
srcMap.put("fileName", filename);
srcMap.put("checksum", md5);
ToMaatResult result = ConfigServiceUtil.postFileCfg(null, file, JsonMapper.toJsonString(srcMap));
logger.info("proxy 劫持文件 上传响应信息:" + JsonMapper.toJsonString(result));
String path = null;
if (!StringUtil.isEmpty(result)) {
ResponseData data = result.getData();
path = data.getAccessUrl();
cfg.setPath(path);
}
}
proxyFileHijackService.saveOrUpdate(cfg);
//配置仅保存
if(StringUtil.isEmpty(cfg.getIsValid()) || cfg.getIsValid()!=1) {
addMessage(redirectAttributes, "success", "save_success");
}else {
//配置直接生效
addMessage(redirectAttributes, "success", "audit_success");
}
}catch(Exception e){
logger.error("信息保存失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
LogUtils.saveLog(request, null, e, null);
}else {
addMessage(redirectAttributes,"error","save_failed");
LogUtils.saveLog(request, null, e, null);
}
}finally {
if(file != null) {
file.delete();//删除临时文件
}
}
return "redirect:" + adminPath +"/proxy/fileHijack/list?functionId="+cfg.getFunctionId();
}
@RequestMapping(value = {"delete"})
@RequiresPermissions(value={"proxy:fileStrategy:config"})
public String delete(Integer isAudit, Integer isValid, String ids, Integer functionId, Model model, @ModelAttribute("cfg")ProxyFileHijackCfg cfg,
HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes){
try {
if (!StringUtil.isEmpty(ids)) {
proxyFileHijackService.update(isAudit, isValid, ids, functionId);
addMessage(redirectAttributes, "success", "delete_success");
}else {
// 批量删除
Page<ProxyFileHijackCfg> searchPage = new Page<ProxyFileHijackCfg>(request, response, "a");
deleteAll(searchPage, functionId, cfg);
}
} catch (Exception e) {
logger.error("配置删除失败:", e);
if (e instanceof MaatConvertException) {
addMessage(redirectAttributes, "error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
} else {
addMessage(redirectAttributes, "error", "delete_failed");
LogUtils.saveLog(request, null, e, null);
}
}
return "redirect:" + adminPath +"/proxy/fileHijack/list?functionId="+functionId;
}
@RequestMapping(value = {"audit"})
@RequiresPermissions(value={"proxy:fileHijack:confirm"})
public String audit(Model model, @ModelAttribute("cfg") ProxyFileHijackCfg cfg, Integer isValid, Integer isAudit,
String ids, Integer functionId, RedirectAttributes redirectAttributes, HttpServletResponse response,
HttpServletRequest request) {
if (!StringUtil.isEmpty(ids)) {
String[] idArray = ids.split(",");
for (String id : idArray) {
try {
proxyFileHijackService.audit(isAudit, isValid, functionId, id);
addMessage(redirectAttributes, "success", "audit_success");
} catch (MaatConvertException e) {
logger.error(e);
addMessage(redirectAttributes, "error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
} catch (Exception e) {
logger.error(e);
addMessage(redirectAttributes, "error", "audit_failed");
LogUtils.saveLog(request, null, e, null);
}
}
} else {
Page<ProxyFileHijackCfg> searchPage = new Page<ProxyFileHijackCfg>(request, response, "a");
Page<ProxyFileHijackCfg> auditPage = new Page<ProxyFileHijackCfg>(request, response, "a");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage, isValid, cfg);
addMessage(redirectAttributes, "success", "audit_success");
} catch (Exception e) {
logger.error("配置下发失败:", e);
if (e instanceof MaatConvertException) {
addMessage(redirectAttributes, "error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
} else {
addMessage(redirectAttributes, "error", "audit_failed");
LogUtils.saveLog(request, null, e, null);
}
}
return fileHijackList(cfg, model, request, response);
}
return "redirect:" + adminPath +"/proxy/fileHijack/list?functionId="+functionId;
}
@RequestMapping(value = "exportFileHijack")
public void exportPxy(Model model, HttpServletRequest request, HttpServletResponse response,
@ModelAttribute("cfg") ProxyFileHijackCfg entity, String ids, RedirectAttributes redirectAttributes) {
try {
// export data info
List<String> titleList = new ArrayList<String>();
Map<String, Class<?>> classMap = new HashMap<String, Class<?>>();
Map<String, List> dataMap = new HashMap<String, List>();
Map<String, String> noExportMap = new HashMap<String, String>();
List<ProxyFileHijackCfg> ipLists = new ArrayList<ProxyFileHijackCfg>();
// 导出选中记录
if (!StringUtil.isEmpty(ids)) {
ipLists = proxyFileHijackService.findByList(ids);
} else {
entity.setTableName(IpPortCfg.getTablename());
Page<ProxyFileHijackCfg> pageInfo = new Page<ProxyFileHijackCfg>(request, response, "a");
pageInfo.setPageNo(1);
pageInfo.setPageSize(Constants.MAX_EXPORT_SIZE);
Page<ProxyFileHijackCfg> page = proxyFileHijackService.findPage(pageInfo, entity);
ipLists = page.getList();
}
for (int i = 0; i < ipLists.size(); i++) {
ipLists.get(i).setProfileName(ipLists.get(i).getCfgDesc());
}
titleList.add(entity.getMenuNameCode());
classMap.put(entity.getMenuNameCode(), ProxyFileHijackCfg.class);
String cfgIndexInfoNoExport = ",config_describe,whether_area_block,block_type,do_log,client_port,ir_type,group_name,userregion1,userregion2,userregion3,userregion4,userregion5,";
// 时间过滤
if (entity.getSearch_create_time_start() == null && entity.getSearch_create_time_end() == null) {
cfgIndexInfoNoExport = ",config_time" + cfgIndexInfoNoExport;
}
if (entity.getSearch_edit_time_start() == null && entity.getSearch_edit_time_end() == null) {
cfgIndexInfoNoExport = ",edit_time" + cfgIndexInfoNoExport;
}
if (entity.getSearch_audit_time_start() == null && entity.getSearch_audit_time_end() == null) {
cfgIndexInfoNoExport = ",audit_time" + cfgIndexInfoNoExport;
}
if (!StringUtil.isEmpty(entity.gethColumns())) {
cfgIndexInfoNoExport = "," + entity.gethColumns() + "," + cfgIndexInfoNoExport;
}
noExportMap.put(entity.getMenuNameCode(), cfgIndexInfoNoExport);
dataMap.put(entity.getMenuNameCode(), ipLists);
String timeRange = initTimeMap(entity);
noExportMap.put("timeRange", timeRange);
if ("csv".equals(entity.getExType())) {
this._exportCsv(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList,
classMap, dataMap, noExportMap);
} else {
this._export(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList,
classMap, dataMap, noExportMap);
}
} catch (Exception e) {
logger.error("proxyFileHijack export failed", e);
addMessage(redirectAttributes, "error", "export_failed");
LogUtils.saveLog(request, null, e, null);
}
}
}

View File

@@ -0,0 +1,248 @@
package com.nis.web.controller.configuration.proxy;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.google.common.collect.Maps;
import com.nis.domain.Page;
import com.nis.domain.callback.ProxyFileHijackCfg;
import com.nis.domain.callback.ProxyFileInsertScriptCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.maat.ToMaatResult;
import com.nis.domain.maat.ToMaatResult.ResponseData;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.FileUtils;
import com.nis.util.JsonMapper;
import com.nis.util.LogUtils;
import com.nis.util.StringUtil;
import com.nis.web.controller.configuration.CommonController;
@Controller
@RequestMapping("${adminPath}/proxy/fileInsertScript")
public class FileInsertScriptController extends CommonController{
@RequestMapping(value = {"list"})
public String fileInsertScriptList(ProxyFileInsertScriptCfg cfg,Model model,HttpServletRequest request,HttpServletResponse response) {
Page<ProxyFileInsertScriptCfg> page = proxyFileInsertScriptService.findPage(new Page<ProxyFileInsertScriptCfg>(request, response,"a"), cfg);
model.addAttribute("page", page);
model.addAttribute("cfg", cfg);
initPageCondition(model);
return "/cfg/proxy/fileInsertScript/list";
}
@RequestMapping(value = {"form"})
@RequiresPermissions(value={"proxy:fileInsertScript:config"})
public String fileform(Model model,HttpServletRequest request
,HttpServletResponse response
,@ModelAttribute("cfg")ProxyFileInsertScriptCfg cfg
,String ids
,RedirectAttributes redirectAttributes) {
if(!StringUtil.isEmpty(ids)){
cfg = proxyFileInsertScriptService.getCfgById(Long.valueOf(ids));
}
initFormCondition(model, cfg);
model.addAttribute("_cfg", cfg);
return "/cfg/proxy/fileInsertScript/form";
}
@RequiresPermissions(value={"proxy:fileInsertScript:config"})
@RequestMapping(value = {"saveOrUpdate"})
public String saveOrUpdate(Model model,HttpServletRequest request
,HttpServletResponse response,MultipartFile cfgFile,
@ModelAttribute("cfg")ProxyFileInsertScriptCfg cfg,
RedirectAttributes redirectAttributes){
File file = null;
try{
if(cfgFile != null) {
String filename = cfgFile.getOriginalFilename();
String prefix = FileUtils.getPrefix(filename, false);
String suffix = FileUtils.getSuffix(filename, false);
file = File.createTempFile("file_"+ prefix, suffix);
cfgFile.transferTo(file);//复制文件
String md5 = FileUtils.getFileMD5(file);
Map<String,Object> srcMap = Maps.newHashMap();
srcMap.put("filetype", suffix);
srcMap.put("datatype", "dbSystem");//源文件存入数据中心
srcMap.put("createTime",new Date());
srcMap.put("key",prefix);
srcMap.put("fileName", filename);
srcMap.put("checksum", md5);
ToMaatResult result = ConfigServiceUtil.postFileCfg(null, file, JsonMapper.toJsonString(srcMap));
logger.info("注入脚本文件上传响应信息:"+JsonMapper.toJsonString(result));
String srcAccessUrl = null;
if(!StringUtil.isEmpty(result)){
ResponseData data = result.getData();
srcAccessUrl=data.getAccessUrl();
cfg.setPath(srcAccessUrl);
}
}
proxyFileInsertScriptService.saveOrUpdate(cfg);
addMessage(redirectAttributes,"success","save_success");
}catch(Exception e){
logger.error("信息保存失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
LogUtils.saveLog(request, null, e, null);
}else {
addMessage(redirectAttributes,"error","save_failed");
LogUtils.saveLog(request, null, e, null);
}
}finally {
if(file != null) {
file.delete();//删除临时文件
}
}
return "redirect:" + adminPath +"/proxy/fileInsertScript/list?functionId="+cfg.getFunctionId();
}
@RequestMapping(value = {"audit"})
@RequiresPermissions(value={"proxy:fileInsertScript:confirm"})
public String audit(Model model, @ModelAttribute("cfg") ProxyFileInsertScriptCfg cfg, Integer isValid, Integer isAudit,
String ids, Integer functionId, RedirectAttributes redirectAttributes, HttpServletResponse response,
HttpServletRequest request) {
if (!StringUtil.isEmpty(ids)) {
String[] idArray = ids.split(",");
for (String id : idArray) {
try {
proxyFileInsertScriptService.audit(isAudit, isValid, functionId, id);
addMessage(redirectAttributes, "success", "audit_success");
} catch (MaatConvertException e) {
logger.error(e);
addMessage(redirectAttributes, "error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
} catch (Exception e) {
logger.error(e);
addMessage(redirectAttributes, "error", "audit_failed");
LogUtils.saveLog(request, null, e, null);
}
}
} else {
Page<ProxyFileInsertScriptCfg> searchPage = new Page<ProxyFileInsertScriptCfg>(request, response, "a");
Page<ProxyFileInsertScriptCfg> auditPage = new Page<ProxyFileInsertScriptCfg>(request, response, "a");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage, isValid, cfg);
addMessage(redirectAttributes, "success", "audit_success");
} catch (Exception e) {
logger.error("批量配置下发失败:", e);
if (e instanceof MaatConvertException) {
addMessage(redirectAttributes, "error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
} else {
addMessage(redirectAttributes, "error", "audit_failed");
LogUtils.saveLog(request, null, e, null);
}
}
return fileInsertScriptList(cfg, model, request, response);
}
return "redirect:" + adminPath +"/proxy/fileInsertScript/list?functionId="+functionId;
}
@RequestMapping(value = {"delete"})
@RequiresPermissions(value={"proxy:fileInsertScript:config"})
public String delete(Integer isAudit, Integer isValid, String ids, Integer functionId, Model model, @ModelAttribute("cfg")ProxyFileInsertScriptCfg cfg,
HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes){
try {
if (!StringUtil.isEmpty(ids)) {
proxyFileInsertScriptService.delete(isAudit, isValid, ids, functionId);
addMessage(redirectAttributes, "success", "delete_success");
}else {
// 批量删除
Page<ProxyFileInsertScriptCfg> searchPage = new Page<ProxyFileInsertScriptCfg>(request, response, "a");
deleteAll(searchPage, functionId, cfg);
}
} catch (Exception e) {
logger.error("配置删除失败:", e);
if (e instanceof MaatConvertException) {
addMessage(redirectAttributes, "error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
} else {
addMessage(redirectAttributes, "error", "delete_failed");
LogUtils.saveLog(request, null, e, null);
}
}
return "redirect:" + adminPath +"/proxy/fileInsertScript/list?functionId="+functionId;
}
@RequestMapping(value = "exportFileInsertScript")
public void exportFileHijack(Model model, HttpServletRequest request, HttpServletResponse response,
@ModelAttribute("cfg") ProxyFileInsertScriptCfg entity, String ids, RedirectAttributes redirectAttributes){
try {
// export data info
List<String> titleList = new ArrayList<String>();
Map<String, Class<?>> classMap = new HashMap<String, Class<?>>();
Map<String, List> dataMap = new HashMap<String, List>();
Map<String, String> noExportMap = new HashMap<String, String>();
List<ProxyFileInsertScriptCfg> ipLists = new ArrayList<ProxyFileInsertScriptCfg>();
// 导出选中记录
if (!StringUtil.isEmpty(ids)) {
ipLists = proxyFileInsertScriptService.findByList(ids);
} else {
entity.setTableName(IpPortCfg.getTablename());
Page<ProxyFileInsertScriptCfg> pageInfo = new Page<ProxyFileInsertScriptCfg>(request, response, "a");
pageInfo.setPageNo(1);
pageInfo.setPageSize(Constants.MAX_EXPORT_SIZE);
Page<ProxyFileInsertScriptCfg> page = proxyFileInsertScriptService.findPage(pageInfo, entity);
ipLists = page.getList();
}
for (int i = 0; i < ipLists.size(); i++) {
ipLists.get(i).setProfileName(ipLists.get(i).getCfgDesc());
}
titleList.add(entity.getMenuNameCode());
classMap.put(entity.getMenuNameCode(), ProxyFileInsertScriptCfg.class);
String cfgIndexInfoNoExport = ",config_describe,whether_area_block,block_type,do_log,client_port,ir_type,group_name,userregion1,userregion2,userregion3,userregion4,userregion5,";
// 时间过滤
if (entity.getSearch_create_time_start() == null && entity.getSearch_create_time_end() == null) {
cfgIndexInfoNoExport = ",config_time" + cfgIndexInfoNoExport;
}
if (entity.getSearch_edit_time_start() == null && entity.getSearch_edit_time_end() == null) {
cfgIndexInfoNoExport = ",edit_time" + cfgIndexInfoNoExport;
}
if (entity.getSearch_audit_time_start() == null && entity.getSearch_audit_time_end() == null) {
cfgIndexInfoNoExport = ",audit_time" + cfgIndexInfoNoExport;
}
if (!StringUtil.isEmpty(entity.gethColumns())) {
cfgIndexInfoNoExport = "," + entity.gethColumns() + "," + cfgIndexInfoNoExport;
}
noExportMap.put(entity.getMenuNameCode(), cfgIndexInfoNoExport);
dataMap.put(entity.getMenuNameCode(), ipLists);
String timeRange = initTimeMap(entity);
noExportMap.put("timeRange", timeRange);
if ("csv".equals(entity.getExType())) {
this._exportCsv(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList,
classMap, dataMap, noExportMap);
} else {
this._export(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList,
classMap, dataMap, noExportMap);
}
} catch (Exception e) {
logger.error("proxyFileInsertScript export failed", e);
addMessage(redirectAttributes, "error", "export_failed");
LogUtils.saveLog(request, null, e, null);
}
}
}

View File

@@ -15,6 +15,7 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -25,6 +26,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.google.common.collect.Maps;
import com.nis.domain.Page;
import com.nis.domain.callback.ProxyFileHijackCfg;
import com.nis.domain.callback.ProxyFileStrategyCfg;
import com.nis.domain.maat.ToMaatResult;
import com.nis.domain.maat.ToMaatResult.ResponseData;
@@ -118,6 +120,13 @@ public class FileStrategyController extends CommonController {
cfg.setContentLength(file.length());//文件长度
}
proxyFileStrategyService.saveOrUpdate(cfg);
//配置仅保存
if(StringUtil.isEmpty(cfg.getIsValid()) || cfg.getIsValid()!=1) {
addMessage(redirectAttributes, "success", "save_success");
}else {
//配置直接生效
addMessage(redirectAttributes, "success", "audit_success");
}
addMessage(redirectAttributes,"success","save_success");
}catch(Exception e){
logger.error("信息保存失败",e);
@@ -133,27 +142,81 @@ public class FileStrategyController extends CommonController {
file.delete();//删除临时文件
}
}
return "redirect:" + adminPath +"/proxy/fileStrategy/list?functionId="+cfg.getFunctionId();
}
@RequestMapping(value = {"delete"})
@RequiresPermissions(value={"proxy:fileStrategy:config"})
public String delete(Integer isAudit,Integer isValid,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes){
proxyFileStrategyService.update(isAudit,isValid,ids,functionId);
public String delete(Integer isAudit, Integer isValid, String ids, Integer functionId, Model model, @ModelAttribute("cfg")ProxyFileStrategyCfg cfg,
HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes){
try {
if (!StringUtil.isEmpty(ids)) {
proxyFileStrategyService.update(isAudit, isValid, ids, functionId);
addMessage(redirectAttributes, "success", "delete_success");
}else {
// 批量删除
Page<ProxyFileStrategyCfg> searchPage = new Page<ProxyFileStrategyCfg>(request, response, "a");
deleteAll(searchPage, functionId, cfg);
}
} catch (Exception e) {
logger.error("配置删除失败:", e);
if (e instanceof MaatConvertException) {
addMessage(redirectAttributes, "error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
} else {
addMessage(redirectAttributes, "error", "delete_failed");
LogUtils.saveLog(request, null, e, null);
}
}
return "redirect:" + adminPath +"/proxy/fileStrategy/list?functionId="+functionId;
}
@RequestMapping(value = {"audit"})
@RequiresPermissions(value={"proxy:fileStrategy:confirm"})
public String audit(Integer isAudit,Integer isValid,String ids
,Integer functionId, RedirectAttributes redirectAttributes) {
if(!StringUtil.isEmpty(ids)){
proxyFileStrategyService.audit(isAudit, isValid, functionId, ids);
addMessage(redirectAttributes,"success", "audit_success");
public String audit(Model model, @ModelAttribute("cfg") ProxyFileStrategyCfg cfg, Integer isValid, Integer isAudit,
String ids, Integer functionId, RedirectAttributes redirectAttributes, HttpServletResponse response,
HttpServletRequest request) {
if (!StringUtil.isEmpty(ids)) {
String[] idArray = ids.split(",");
for (String id : idArray) {
try {
proxyFileStrategyService.audit(isAudit, isValid, functionId, id);
addMessage(redirectAttributes, "success", "audit_success");
} catch (MaatConvertException e) {
logger.error(e);
addMessage(redirectAttributes, "error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
} catch (Exception e) {
logger.error(e);
addMessage(redirectAttributes, "error", "audit_failed");
LogUtils.saveLog(request, null, e, null);
}
}
} else {
Page<ProxyFileStrategyCfg> searchPage = new Page<ProxyFileStrategyCfg>(request, response, "a");
Page<ProxyFileStrategyCfg> auditPage = new Page<ProxyFileStrategyCfg>(request, response, "a");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage, isValid, cfg);
addMessage(redirectAttributes, "success", "audit_success");
} catch (Exception e) {
logger.error("配置下发失败:", e);
if (e instanceof MaatConvertException) {
addMessage(redirectAttributes, "error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
} else {
addMessage(redirectAttributes, "error", "audit_failed");
LogUtils.saveLog(request, null, e, null);
}
}
return fileStrategyList(cfg, model, request, response);
}
return "redirect:" + adminPath +"/proxy/fileStrategy/list?functionId="+functionId;
}

View File

@@ -0,0 +1,240 @@
package com.nis.web.controller.configuration.proxy;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.google.common.collect.Maps;
import com.nis.domain.Page;
import com.nis.domain.callback.ProxyFileTrafficMirrorCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.maat.ToMaatResult;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.FileUtils;
import com.nis.util.JsonMapper;
import com.nis.util.LogUtils;
import com.nis.util.StringUtil;
import com.nis.web.controller.configuration.CommonController;
@Controller
@RequestMapping("${adminPath}/proxy/fileTrafficMirror")
public class FileTrafficMirrorController extends CommonController {
@RequestMapping(value = {"list"})
public String fileTrafficMirrorList(ProxyFileTrafficMirrorCfg cfg,Model model,HttpServletRequest request,HttpServletResponse response) {
Page<ProxyFileTrafficMirrorCfg> page = proxyFileTrafficMirrorService.findPage(new Page<ProxyFileTrafficMirrorCfg>(request, response,"a"), cfg);
model.addAttribute("page", page);
model.addAttribute("cfg", cfg);
initPageCondition(model);
return "/cfg/proxy/fileTrafficMirror/list";
}
@RequestMapping(value = {"form"})
@RequiresPermissions(value={"proxy:fileTrafficMirror:config"})
public String fileform(Model model,HttpServletRequest request
,HttpServletResponse response
,@ModelAttribute("cfg")ProxyFileTrafficMirrorCfg cfg
,String ids
,RedirectAttributes redirectAttributes) {
if(!StringUtil.isEmpty(ids)){
cfg = proxyFileTrafficMirrorService.getCfgById(Long.valueOf(ids));
}
initFormCondition(model, cfg);
model.addAttribute("_cfg", cfg);
return "/cfg/proxy/fileTrafficMirror/form";
}
@RequiresPermissions(value={"proxy:fileTrafficMirror:config"})
@RequestMapping(value = {"saveOrUpdate"})
public String saveOrUpdate(Model model,HttpServletRequest request
,HttpServletResponse response,MultipartFile cfgFile,
@ModelAttribute("cfg")ProxyFileTrafficMirrorCfg cfg,
RedirectAttributes redirectAttributes){
File file = null;
try{
if(cfgFile != null) {
String filename = cfgFile.getOriginalFilename();
String prefix = FileUtils.getPrefix(filename, false);
String suffix = FileUtils.getSuffix(filename, false);
file = File.createTempFile("file_"+ prefix, suffix);
cfgFile.transferTo(file);//复制文件
String md5 = FileUtils.getFileMD5(file);
Map<String,Object> srcMap = Maps.newHashMap();
srcMap.put("filetype", suffix);
srcMap.put("datatype", "dbSystem");//源文件存入数据中心
srcMap.put("createTime",new Date());
srcMap.put("key",prefix);
srcMap.put("fileName", filename);
srcMap.put("checksum", md5);
ToMaatResult result = ConfigServiceUtil.postFileCfg(null, file, JsonMapper.toJsonString(srcMap));
logger.info("注入脚本文件上传响应信息:"+JsonMapper.toJsonString(result));
}
proxyFileTrafficMirrorService.saveOrUpdate(cfg);
addMessage(redirectAttributes,"success","save_success");
}catch(Exception e){
logger.error("信息保存失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
LogUtils.saveLog(request, null, e, null);
}else {
addMessage(redirectAttributes,"error","save_failed");
LogUtils.saveLog(request, null, e, null);
}
}finally {
if(file != null) {
file.delete();//删除临时文件
}
}
return "redirect:" + adminPath +"/proxy/fileTrafficMirror/list?functionId="+cfg.getFunctionId();
}
@RequestMapping(value = {"audit"})
@RequiresPermissions(value={"proxy:fileTrafficMirror:confirm"})
public String audit(Model model, @ModelAttribute("cfg") ProxyFileTrafficMirrorCfg cfg, Integer isValid, Integer isAudit,
String ids, Integer functionId, RedirectAttributes redirectAttributes, HttpServletResponse response,
HttpServletRequest request) {
if (!StringUtil.isEmpty(ids)) {
String[] idArray = ids.split(",");
for (String id : idArray) {
try {
proxyFileTrafficMirrorService.audit(isAudit, isValid, functionId, id);
addMessage(redirectAttributes, "success", "audit_success");
} catch (MaatConvertException e) {
logger.error(e);
addMessage(redirectAttributes, "error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
} catch (Exception e) {
logger.error(e);
addMessage(redirectAttributes, "error", "audit_failed");
LogUtils.saveLog(request, null, e, null);
}
}
} else {
Page<ProxyFileTrafficMirrorCfg> searchPage = new Page<ProxyFileTrafficMirrorCfg>(request, response, "a");
Page<ProxyFileTrafficMirrorCfg> auditPage = new Page<ProxyFileTrafficMirrorCfg>(request, response, "a");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage, isValid, cfg);
addMessage(redirectAttributes, "success", "audit_success");
} catch (Exception e) {
logger.error("批量配置下发失败:", e);
if (e instanceof MaatConvertException) {
addMessage(redirectAttributes, "error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
} else {
addMessage(redirectAttributes, "error", "audit_failed");
LogUtils.saveLog(request, null, e, null);
}
}
return fileTrafficMirrorList(cfg, model, request, response);
}
return "redirect:" + adminPath +"/proxy/fileTrafficMirror/list?functionId="+functionId;
}
@RequestMapping(value = {"delete"})
@RequiresPermissions(value={"proxy:fileTrafficMirror:config"})
public String delete(Integer isAudit, Integer isValid, String ids, Integer functionId, Model model, @ModelAttribute("cfg")ProxyFileTrafficMirrorCfg cfg,
HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes){
try {
if (!StringUtil.isEmpty(ids)) {
proxyFileTrafficMirrorService.delete(isAudit, isValid, ids, functionId);
addMessage(redirectAttributes, "success", "delete_success");
}else {
// 批量删除
Page<ProxyFileTrafficMirrorCfg> searchPage = new Page<ProxyFileTrafficMirrorCfg>(request, response, "d");
deleteAll(searchPage, functionId, cfg);
}
} catch (Exception e) {
logger.error("配置删除失败:", e);
if (e instanceof MaatConvertException) {
addMessage(redirectAttributes, "error", "request_service_failed");
LogUtils.saveLog(request, null, e, null);
} else {
addMessage(redirectAttributes, "error", "delete_failed");
LogUtils.saveLog(request, null, e, null);
}
}
return "redirect:" + adminPath +"/proxy/fileTrafficMirror/list?functionId="+functionId;
}
@RequestMapping(value = "exportFileTrafficMirror")
public void exportFileHijack(Model model, HttpServletRequest request, HttpServletResponse response,
@ModelAttribute("cfg") ProxyFileTrafficMirrorCfg entity, String ids, RedirectAttributes redirectAttributes){
try {
// export data info
List<String> titleList = new ArrayList<String>();
Map<String, Class<?>> classMap = new HashMap<String, Class<?>>();
Map<String, List> dataMap = new HashMap<String, List>();
Map<String, String> noExportMap = new HashMap<String, String>();
List<ProxyFileTrafficMirrorCfg> ipLists = new ArrayList<ProxyFileTrafficMirrorCfg>();
// 导出选中记录
if (!StringUtil.isEmpty(ids)) {
ipLists = proxyFileTrafficMirrorService.findByList(ids);
} else {
entity.setTableName(IpPortCfg.getTablename());
Page<ProxyFileTrafficMirrorCfg> pageInfo = new Page<ProxyFileTrafficMirrorCfg>(request, response, "r");
pageInfo.setPageNo(1);
pageInfo.setPageSize(Constants.MAX_EXPORT_SIZE);
Page<ProxyFileTrafficMirrorCfg> page = proxyFileTrafficMirrorService.findPage(pageInfo, entity);
ipLists = page.getList();
}
titleList.add(entity.getMenuNameCode());
classMap.put(entity.getMenuNameCode(), ProxyFileTrafficMirrorCfg.class);
String cfgIndexInfoNoExport = ",config_describe,whether_area_block,block_type,do_log,client_port,ir_type,group_name,userregion1,userregion2,userregion3,userregion4,userregion5,";
// 时间过滤
if (entity.getSearch_create_time_start() == null && entity.getSearch_create_time_end() == null) {
cfgIndexInfoNoExport = ",config_time" + cfgIndexInfoNoExport;
}
if (entity.getSearch_edit_time_start() == null && entity.getSearch_edit_time_end() == null) {
cfgIndexInfoNoExport = ",edit_time" + cfgIndexInfoNoExport;
}
if (entity.getSearch_audit_time_start() == null && entity.getSearch_audit_time_end() == null) {
cfgIndexInfoNoExport = ",audit_time" + cfgIndexInfoNoExport;
}
if (!StringUtil.isEmpty(entity.gethColumns())) {
cfgIndexInfoNoExport = "," + entity.gethColumns() + "," + cfgIndexInfoNoExport;
}
noExportMap.put(entity.getMenuNameCode(), cfgIndexInfoNoExport);
dataMap.put(entity.getMenuNameCode(), ipLists);
String timeRange = initTimeMap(entity);
noExportMap.put("timeRange", timeRange);
if ("csv".equals(entity.getExType())) {
this._exportCsv(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList,
classMap, dataMap, noExportMap);
} else {
this._export(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList,
classMap, dataMap, noExportMap);
}
} catch (Exception e) {
logger.error("proxyFileTrafficMirror export failed", e);
addMessage(redirectAttributes, "error", "export_failed");
LogUtils.saveLog(request, null, e, null);
}
}
}