diff --git a/src/main/java/com/nis/domain/maat/ManipulatActionParam.java b/src/main/java/com/nis/domain/maat/ManipulatActionParam.java new file mode 100644 index 000000000..059bc453b --- /dev/null +++ b/src/main/java/com/nis/domain/maat/ManipulatActionParam.java @@ -0,0 +1,140 @@ +package com.nis.domain.maat; + +import java.io.Serializable; +import java.util.List; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +/** + * 管控策略动作参数 + */ +public class ManipulatActionParam implements Serializable{ + + private static final long serialVersionUID = 7282481538239386968L; + + @Expose + private String method; + + @Expose + private Integer code; + + @Expose + private String to; + + @Expose + private String message; + + @Expose + private Integer html_profile; + + @Expose + private List rules; + + public static class ReplaceCfg{ + @Expose + private String search_in; + + @Expose + private String find; + + @Expose + private String replace_with; + + public String getSearch_in() { + return search_in; + } + + public void setSearch_in(String search_in) { + this.search_in = search_in; + } + + public String getFind() { + return find; + } + + public void setFind(String find) { + this.find = find; + } + + public String getReplace_with() { + return replace_with; + } + + public void setReplace_with(String replace_with) { + this.replace_with = replace_with; + } + + } + + @Expose + private Integer hijack_profile; + + @Expose + private Integer insert_profile; + + public String getMethod() { + return method; + } + + public void setMethod(String method) { + this.method = method; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getTo() { + return to; + } + + public void setTo(String to) { + this.to = to; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Integer getHtml_profile() { + return html_profile; + } + + public void setHtml_profile(Integer html_profile) { + this.html_profile = html_profile; + } + + public List getRules() { + return rules; + } + + public void setRules(List rules) { + this.rules = rules; + } + + public Integer getHijack_profile() { + return hijack_profile; + } + + public void setHijack_profile(Integer hijack_profile) { + this.hijack_profile = hijack_profile; + } + + public Integer getInsert_profile() { + return insert_profile; + } + + public void setInsert_profile(Integer insert_profile) { + this.insert_profile = insert_profile; + } + +} diff --git a/src/main/java/com/nis/util/excel/ExportExcel.java b/src/main/java/com/nis/util/excel/ExportExcel.java index 46ccdc618..29ca9b0ff 100644 --- a/src/main/java/com/nis/util/excel/ExportExcel.java +++ b/src/main/java/com/nis/util/excel/ExportExcel.java @@ -295,7 +295,7 @@ public class ExportExcel { } } /*** HTTP(s)替换 搜索区域 ***/ - if(("replace_zone".equals(headerStr)) && (region.getFunctionId().equals(209))){ + if(("replace_zone".equals(headerStr)) && (region.getFunctionId().equals(209) || region.getAction().equals(80))){ commentStr=""; List dict=DictUtils.getDictList("CONTROL_REPLACE_ZONE"); if(dict !=null && dict.size()>0){ @@ -1170,11 +1170,17 @@ public class ExportExcel { headerStr=""; commentStr=""; }else{ - for (String districtStr : region.getConfigDistrict().split(",")) { - commentStr=commentStr+districtStr+"\n"; + if((region.getAction()!=null) && (region.getAction()==85 || region.getAction()==90)) { + commentStr=commentStr+"Content-Type"+"\n"; index++; + defaultValue="Content-Type"; + }else { + for (String districtStr : region.getConfigDistrict().split(",")) { + commentStr=commentStr+districtStr+"\n"; + index++; + } + defaultValue=region.getConfigDistrict().split(",")[0]; } - defaultValue=region.getConfigDistrict().split(",")[0]; } if(StringUtil.isEmpty(commentStr)){ headerStr=""; diff --git a/src/main/java/com/nis/util/excel/thread/CheckComplexStringFormatThread.java b/src/main/java/com/nis/util/excel/thread/CheckComplexStringFormatThread.java index 14bb202f3..b13a97f79 100644 --- a/src/main/java/com/nis/util/excel/thread/CheckComplexStringFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckComplexStringFormatThread.java @@ -91,6 +91,10 @@ public class CheckComplexStringFormatThread implements Callable{ throw new RuntimeException("Found String region,but mulityKeywords is Empty"); } String dirtrictP = regionDict.getConfigDistrict(); + // 代理-操控业务hijack、insert + if(regionDict.getAction().equals(85) || regionDict.getAction().equals(90)) { + dirtrictP = "Content-Type"; + } StringBuffer errTip = new StringBuffer(); Pattern pattern = Pattern.compile("\t|\r|\n|\b|\f"); for (int i = 0; i < list.size(); i++) { @@ -127,7 +131,7 @@ public class CheckComplexStringFormatThread implements Callable{ } } // 代理HTTP(s)阻断 - if (regionDict.getFunctionId().equals(207)) { + if (regionDict.getFunctionId().equals(207) || regionDict.getAction().equals(16)) { if(StringUtils.isBlank(baseStringCfg.getUserRegion1())) { baseStringCfg.setUserRegion1("404"); } @@ -153,7 +157,7 @@ public class CheckComplexStringFormatThread implements Callable{ } // 代理 HTTP(s)重定向 - if (regionDict.getFunctionId().equals(208)) { + if (regionDict.getFunctionId().equals(208) || regionDict.getAction().equals(48)) { if(StringUtils.isBlank(baseStringCfg.getUserRegion1())) { baseStringCfg.setUserRegion1("302"); } @@ -188,7 +192,7 @@ public class CheckComplexStringFormatThread implements Callable{ } } // 代理HTTP(s)替换 - if (regionDict.getFunctionId().equals(209)) { + if (regionDict.getFunctionId().equals(209) || regionDict.getAction().equals(80)) { if(StringUtils.isBlank(baseStringCfg.getUserRegion1())) { baseStringCfg.setUserRegion1("http_resp_body"); } diff --git a/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java b/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java index 7110005ed..42b978925 100644 --- a/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java @@ -426,7 +426,7 @@ public class CheckIpFormatThread implements Callable{ } } // 代理HTTP(s)阻断 - if (regionDict.getFunctionId().equals(207)) { + if (regionDict.getFunctionId().equals(207) || regionDict.getAction().equals(16)) { if(StringUtils.isBlank(baseIpCfg.getUserRegion1())) { baseIpCfg.setUserRegion1("404"); } @@ -452,7 +452,7 @@ public class CheckIpFormatThread implements Callable{ } // 代理 HTTP(s)重定向 - if (regionDict.getFunctionId().equals(208)) { + if (regionDict.getFunctionId().equals(208) || regionDict.getAction().equals(48)) { if(StringUtils.isBlank(baseIpCfg.getUserRegion1())) { baseIpCfg.setUserRegion1("302"); } @@ -487,7 +487,7 @@ public class CheckIpFormatThread implements Callable{ } } // 代理HTTP(s)替换 - if (regionDict.getFunctionId().equals(209)) { + if (regionDict.getFunctionId().equals(209) || regionDict.getAction().equals(80)) { if(StringUtils.isBlank(baseIpCfg.getUserRegion1())) { baseIpCfg.setUserRegion1("http_resp_body"); } diff --git a/src/main/java/com/nis/util/excel/thread/CheckStringFormatThread.java b/src/main/java/com/nis/util/excel/thread/CheckStringFormatThread.java index 143a1cd2d..b09cfb0e7 100644 --- a/src/main/java/com/nis/util/excel/thread/CheckStringFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckStringFormatThread.java @@ -177,7 +177,7 @@ public class CheckStringFormatThread implements Callable{ } // 代理HTTP(s)阻断 - if (regionDict.getFunctionId().equals(207)) { + if (regionDict.getFunctionId().equals(207) || regionDict.getAction().equals(16)) { if(StringUtils.isBlank(baseStringCfg.getUserRegion1())) { baseStringCfg.setUserRegion1("404"); } @@ -203,7 +203,7 @@ public class CheckStringFormatThread implements Callable{ } // 代理 HTTP(s)重定向 - if (regionDict.getFunctionId().equals(208)) { + if (regionDict.getFunctionId().equals(208) || regionDict.getAction().equals(48)) { if(StringUtils.isBlank(baseStringCfg.getUserRegion1())) { baseStringCfg.setUserRegion1("302"); } @@ -238,7 +238,7 @@ public class CheckStringFormatThread implements Callable{ } } // 代理HTTP(s)替换 - if (regionDict.getFunctionId().equals(209)) { + if (regionDict.getFunctionId().equals(209) || regionDict.getAction().equals(80)) { if(StringUtils.isBlank(baseStringCfg.getUserRegion1())) { baseStringCfg.setUserRegion1("http_resp_body"); } diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index bb4d32f6d..eb3eb8348 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -347,6 +347,7 @@ public class BaseController { protected AsnGroupInfoService asnGroupInfoService;// asn组 @Autowired protected InnerProtectionListService innerProtectionListService; + /** * 管理基础路径 */ @@ -1354,9 +1355,11 @@ public class BaseController { * @param requestId * @param classify * @param attribute + * @param manipulatType 操控业务动作类型(伪) + * @param profileId 操控业务ProfileId */ public void _import(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes, - MultipartFile[] files, Integer serviceDictId, String regionDictIds, Integer requestId, String attribute, String classify) { + MultipartFile[] files, Integer serviceDictId, String regionDictIds, Integer requestId, String attribute, String classify, Integer manipulatType, Integer profileId) { logger.warn("import start..."); long start=System.currentTimeMillis(); ImportBigExcel ei=null; @@ -1406,6 +1409,7 @@ public class BaseController { ei = new ImportBigExcel(file, 0, 1); FunctionRegionDict regionDict = DictUtils .getFunctionRegionDict(Integer.parseInt(regionDictIds.split(",")[i])); + regionDict.setAction(manipulatType); //加载模板 loadTemplate(ei,regionDict, serviceDict); //------------------------------------check format start---------------------------- @@ -1457,6 +1461,21 @@ public class BaseController { }else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换 BlockingQueue list = ei.getDataList(HttpsReplaceIpTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + }else if(regionDict.getFunctionId().equals(215)) {// HTTP(s)操控(阻断+重定向+替换) + if(regionDict.getAction() == 16) { + BlockingQueue list = ei.getDataList(HttpsRejectIpTemplate.class ); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + }else if(regionDict.getAction() == 48) { + BlockingQueue list = ei.getDataList(HttpsRedirectIpTemplate.class ); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + }else if(regionDict.getAction() == 80) { + BlockingQueue list = ei.getDataList(HttpsReplaceIpTemplate.class ); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + }else { + BlockingQueue list = ei.getDataList(IpAllTemplate.class ); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); + } + }else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单 BlockingQueue list = ei.getDataList(IpAllNotDoLogTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,asnGroupInfos, list); @@ -1515,6 +1534,21 @@ public class BaseController { }else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换 BlockingQueue list = ei.getDataList(HttpsReplaceTemplate.class); stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list); + }else if(regionDict.getFunctionId().equals(215)) {// HTTP(s)操控(阻断+重定向+替换) + if(regionDict.getAction() == 16) { + BlockingQueue list = ei.getDataList(HttpsRejectTemplate.class); + stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list); + }else if(regionDict.getAction() == 48) { + BlockingQueue list = ei.getDataList(HttpsRedirectTemplate.class); + stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list); + }else if(regionDict.getAction() == 80) { + BlockingQueue list = ei.getDataList(HttpsReplaceTemplate.class); + stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list); + }else { + BlockingQueue list = ei.getDataList(StringAllTemplate.class ); + stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list); + } + }else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单 BlockingQueue list = ei.getDataList(StringAllNotDoLogTemplate.class); stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list); @@ -1540,6 +1574,21 @@ public class BaseController { } else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换 BlockingQueue list = ei.getDataList(HttpsReplaceComplexTemplate.class); complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list); + } else if(regionDict.getFunctionId().equals(215)) {// HTTP(s)操控(阻断+重定向+替换) + if(regionDict.getAction() == 16) { + BlockingQueue list = ei.getDataList(HttpsRejectComplexTemplate.class); + complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list); + }else if(regionDict.getAction() == 48) { + BlockingQueue list = ei.getDataList(HttpsRedirectComplexTemplate.class); + complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list); + }else if(regionDict.getAction() == 80) { + BlockingQueue list = ei.getDataList(HttpsReplaceComplexTemplate.class); + complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list); + }else { + BlockingQueue list = ei.getDataList(ComplexStringAllTemplate.class); + complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list); + } + } else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单 BlockingQueue list = ei.getDataList(ComplexStringAllNotDoLogTemplate.class); complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list); @@ -1850,6 +1899,14 @@ public class BaseController { if(StringUtils.isNotBlank(behaviorId)) cfg.setBehavCode(Integer.parseInt(behaviorId)); } + // 代理-操控业务 + if(regionDict.getAction() != null) { + cfg.setUserRegion5(regionDict.getAction()+""); + if(regionDict.getAction()!=48 && regionDict.getAction()!=80) { + cfg.setUserRegion4(profileId+""); + } + } + if (serviceDict!=null&&(serviceDict.getServiceId().intValue() == 33 || serviceDict.getServiceId().intValue() == 145 || serviceDict.getServiceId().intValue() == 1056 @@ -1991,6 +2048,14 @@ public class BaseController { if(StringUtils.isNotBlank(behaviorId)) cfg.setBehavCode(Integer.parseInt(behaviorId)); } + // 代理-操控业务 + if(regionDict.getAction() != null) { + cfg.setUserRegion5(regionDict.getAction()+""); + if(regionDict.getAction()!=48 && regionDict.getAction()!=80) { + cfg.setUserRegion4(profileId+""); + } + } + if (serviceDict.getServiceId().intValue() == 33 || serviceDict.getServiceId().intValue() == 145 || serviceDict.getServiceId().intValue() == 35 @@ -2150,6 +2215,14 @@ public class BaseController { if(StringUtils.isNotBlank(behaviorId)) cfg.setBehavCode(Integer.parseInt(behaviorId)); } + // 代理-操控业务 + if(regionDict.getAction() != null) { + cfg.setUserRegion5(regionDict.getAction()+""); + if(regionDict.getAction()!=48 && regionDict.getAction()!=80) { + cfg.setUserRegion4(profileId+""); + } + } + if (serviceDict.getServiceId().intValue() == 33 || serviceDict.getServiceId().intValue() == 145 || serviceDict.getServiceId().intValue() == 35 @@ -2425,6 +2498,17 @@ public class BaseController { ei.loadInitParams(HttpsRedirectIpTemplate.class, this.getMsgProp(), regionDict, serviceDict); } else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换 ei.loadInitParams(HttpsReplaceIpTemplate.class, this.getMsgProp(), regionDict, serviceDict); + } else if(regionDict.getFunctionId().equals(215)){// HTTP(s)操控(阻断+重定向+替换) + if(regionDict.getAction() == 16) { + ei.loadInitParams(HttpsRejectIpTemplate.class, this.getMsgProp(), regionDict, serviceDict); + }else if(regionDict.getAction() == 48) { + ei.loadInitParams(HttpsRedirectIpTemplate.class, this.getMsgProp(), regionDict, serviceDict); + }else if(regionDict.getAction() == 80) { + ei.loadInitParams(HttpsReplaceIpTemplate.class, this.getMsgProp(), regionDict, serviceDict); + }else { + ei.loadInitParams(IpAllTemplate.class, msgProp, regionDict, serviceDict); + } + } else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单 ei.loadInitParams(IpAllNotDoLogTemplate.class, this.getMsgProp(), regionDict, serviceDict); } else if(regionDict.getFunctionId().equals(200)){// 拦截策略 @@ -2465,6 +2549,17 @@ public class BaseController { ei.loadInitParams(HttpsRedirectTemplate.class, this.getMsgProp(), regionDict, serviceDict); }else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换 ei.loadInitParams(HttpsReplaceTemplate.class, this.getMsgProp(), regionDict, serviceDict); + }else if(regionDict.getFunctionId().equals(215)){// HTTP(s)操控(阻断+重定向+替换) + if(regionDict.getAction() == 16) { + ei.loadInitParams(HttpsRejectTemplate.class, this.getMsgProp(), regionDict, serviceDict); + }else if(regionDict.getAction() == 48) { + ei.loadInitParams(HttpsRedirectTemplate.class, this.getMsgProp(), regionDict, serviceDict); + }else if(regionDict.getAction() == 80) { + ei.loadInitParams(HttpsReplaceTemplate.class, this.getMsgProp(), regionDict, serviceDict); + }else { + ei.loadInitParams(StringAllTemplate.class, msgProp, regionDict, serviceDict); + } + }else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单 ei.loadInitParams(StringAllNotDoLogTemplate.class, this.getMsgProp(), regionDict, serviceDict); }else if(regionDict.getFunctionId().equals(560)){// 主题网站 @@ -2482,6 +2577,17 @@ public class BaseController { ei.loadInitParams(HttpsRedirectComplexTemplate.class, this.getMsgProp(), regionDict, serviceDict); }else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换 ei.loadInitParams(HttpsReplaceComplexTemplate.class, this.getMsgProp(), regionDict, serviceDict); + }else if(regionDict.getFunctionId().equals(215)){// HTTP(s)操控(阻断+重定向+替换) + if(regionDict.getAction() == 16) { + ei.loadInitParams(HttpsRejectComplexTemplate.class, this.getMsgProp(), regionDict, serviceDict); + }else if(regionDict.getAction() == 48) { + ei.loadInitParams(HttpsRedirectComplexTemplate.class, this.getMsgProp(), regionDict, serviceDict); + }else if(regionDict.getAction() == 80) { + ei.loadInitParams(HttpsReplaceComplexTemplate.class, this.getMsgProp(), regionDict, serviceDict); + }else { + ei.loadInitParams(ComplexStringAllTemplate.class, msgProp, regionDict, serviceDict); + } + }else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单 ei.loadInitParams(ComplexStringAllNotDoLogTemplate.class, this.getMsgProp(), regionDict, serviceDict); }else if(regionDict.getFunctionId().equals(563)) {// APP Payload diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java b/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java index 8da203a5a..58b7693c9 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java @@ -338,10 +338,12 @@ public class IpController extends BaseController{ ,Integer serviceDictId ,Integer regionDictId ,Integer requestId + ,Integer manipulatType ) { try { FunctionRegionDict regionDict=DictUtils.getFunctionRegionDict(regionDictId); FunctionServiceDict serviceDict=DictUtils.getFunctionServiceDict(serviceDictId); + regionDict.setAction(manipulatType); exportTemplate(request,response,redirectAttributes,regionDict,serviceDict,requestId); } catch (Exception e) { logger.error("export_failed", e); @@ -443,6 +445,29 @@ public class IpController extends BaseController{ ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsReplaceIpTemplate.class, 2); excel.setDataList(pro,classList,null). write(request,response, fileName).dispose(); + }else if(regionDict.getFunctionId().equals(215)){// HTTP(s)操控(阻断+重定向+替换) + if(regionDict.getAction() == 16) { + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsRejectIpTemplate.class, 2); + excel.setDataList(pro,classList,null). + write(request,response, fileName).dispose(); + }else if(regionDict.getAction() == 48) { + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsRedirectIpTemplate.class, 2); + excel.setDataList(pro,classList,null). + write(request,response, fileName).dispose(); + }else if(regionDict.getAction() == 80) { + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsReplaceIpTemplate.class, 2); + excel.setDataList(pro,classList,null). + write(request,response, fileName).dispose(); + }else { + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, IpAllTemplate.class, 2); + excel.setDataList(pro,classList,null). + write(request,response, fileName).dispose(); + } + }else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单 List classList=new ArrayList(); ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, IpAllNotDoLogTemplate.class, 2); @@ -527,6 +552,29 @@ public class IpController extends BaseController{ ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsReplaceTemplate.class, 2); excel.setDataList(pro,classList,null). write(request,response, fileName).dispose(); + }else if(regionDict.getFunctionId().equals(215)){// HTTP(s)操控 + if(regionDict.getAction() == 16) { + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsRejectTemplate.class, 2); + excel.setDataList(pro,classList,null). + write(request,response, fileName).dispose(); + }else if(regionDict.getAction() == 48) { + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsRedirectTemplate.class, 2); + excel.setDataList(pro,classList,null). + write(request,response, fileName).dispose(); + }else if(regionDict.getAction() == 80) { + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsReplaceTemplate.class, 2); + excel.setDataList(pro,classList,null). + write(request,response, fileName).dispose(); + }else { + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, StringAllTemplate.class, 2); + excel.setDataList(pro,classList,null). + write(request,response, fileName).dispose(); + } + }else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单 List classList=new ArrayList(); ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, StringAllNotDoLogTemplate.class, 2); @@ -567,6 +615,29 @@ public class IpController extends BaseController{ ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsReplaceComplexTemplate.class, 2); excel.setDataList(pro,classList,null). write(request,response, fileName).dispose(); + }else if(regionDict.getFunctionId().equals(215)){// HTTP(s)操控 + if(regionDict.getAction() == 16) { + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsRejectComplexTemplate.class, 2); + excel.setDataList(pro,classList,null). + write(request,response, fileName).dispose(); + }else if(regionDict.getAction() == 48) { + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsRedirectComplexTemplate.class, 2); + excel.setDataList(pro,classList,null). + write(request,response, fileName).dispose(); + }else if(regionDict.getAction() == 80) { + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsReplaceComplexTemplate.class, 2); + excel.setDataList(pro,classList,null). + write(request,response, fileName).dispose(); + }else { + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, ComplexStringAllTemplate.class, 2); + excel.setDataList(pro,classList,null). + write(request,response, fileName).dispose(); + } + }else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单 List classList=new ArrayList(); ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, ComplexStringAllNotDoLogTemplate.class, 2); @@ -608,9 +679,12 @@ public class IpController extends BaseController{ ,String attribute ,String classify ,String regionDictIds - ,String importPath) { - this._import(request,response,redirectAttributes, files,serviceDictId,regionDictIds,requestId,attribute,classify); - return "redirect:" + adminPath+ importPath; + ,String importPath + ,Integer manipulatType + ,Integer profileId) { + + this._import(request,response,redirectAttributes, files,serviceDictId,regionDictIds,requestId,attribute,classify,manipulatType,profileId); + return "redirect:" + adminPath+ importPath; } //ip配置导出 @RequestMapping(value = "exportIpAddr") diff --git a/src/main/java/com/nis/web/controller/configuration/proxy/ManipulatPolicyController.java b/src/main/java/com/nis/web/controller/configuration/proxy/ManipulatPolicyController.java new file mode 100644 index 000000000..b402d07cf --- /dev/null +++ b/src/main/java/com/nis/web/controller/configuration/proxy/ManipulatPolicyController.java @@ -0,0 +1,566 @@ +package com.nis.web.controller.configuration.proxy; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Proxy; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +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.bind.annotation.ResponseBody; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import com.nis.domain.FunctionRegionDict; +import com.nis.domain.Page; +import com.nis.domain.callback.ProxyFileStrategyCfg; +import com.nis.domain.configuration.BaseCfg; +import com.nis.domain.configuration.BaseStringCfg; +import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.domain.configuration.ComplexkeywordCfg; +import com.nis.domain.configuration.HttpBodyCfg; +import com.nis.domain.configuration.HttpReqHeadCfg; +import com.nis.domain.configuration.HttpResHeadCfg; +import com.nis.domain.configuration.HttpUrlCfg; +import com.nis.domain.configuration.IpPortCfg; +import com.nis.domain.configuration.ManipulatCfg; +import com.nis.domain.configuration.NtcSubscribeIdCfg; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.Constants; +import com.nis.util.DictUtils; +import com.nis.util.LogUtils; +import com.nis.util.StringUtil; +import com.nis.util.excel.ExcelField; +import com.nis.web.controller.BaseController; +import com.nis.web.dao.configuration.ProxyFileHijackDao; +import com.nis.web.security.UserUtils; +import com.nis.web.service.configuration.ManipulatPolicyService; + +import jersey.repackaged.com.google.common.collect.Lists; + +/** + * 操控策略业务 + */ +@Controller +@RequestMapping("${adminPath}/proxy/control/manipulatPolicy") +public class ManipulatPolicyController extends BaseController { + + @Autowired + protected ManipulatPolicyService manipulatPolicyService; + + @RequestMapping("list") + public String list(Model model, @ModelAttribute("cfg") CfgIndexInfo cfg, HttpServletRequest request, HttpServletResponse response) { + Page searchPage = new Page(request, response, "a"); + Page page = manipulatPolicyService.getPolicyList(searchPage, cfg); + model.addAttribute("page", page); + initPageCondition(model, cfg); + + // 获取所有的响应文件内容,Block可以选择 + /*List allProxyFileStrategys = proxyFileStrategyService.getProxyFileStrategyCfgList(new ProxyFileStrategyCfg()); + model.addAttribute("allProxyFileStrategys", allProxyFileStrategys);*/ + + return "/cfg/proxy/control/manipulatPolicyList"; + } + + @RequestMapping("form") + public String form(Model model, @ModelAttribute("cfg") CfgIndexInfo entity, HttpServletRequest request, HttpServletResponse response, String ids) { + if (StringUtils.isNotBlank(ids)) { + entity = manipulatPolicyService.getPolicyCfg(Long.parseLong(ids), null); + + HttpUrlCfg urlCfg = new HttpUrlCfg(); + urlCfg.setCfgType(Constants.HTTP_REDIRECT_URL_REGION); + entity.setHttpUrl(urlCfg); + HttpReqHeadCfg reqHdrCfg = new HttpReqHeadCfg(); + reqHdrCfg.setCfgType(Constants.HTTP_REDIRECT_REQ_HEAD_REGION); + entity.setHttpReqHdr(reqHdrCfg); + HttpResHeadCfg resHdrCfg = new HttpResHeadCfg(); + resHdrCfg.setCfgType(Constants.HTTP_REDIRECT_RES_HEAD_REGION); + entity.setHttpResHdr(resHdrCfg); + HttpBodyCfg reqBodyCfg = new HttpBodyCfg(); + reqBodyCfg.setCfgType(Constants.HTTP_REDIRECT_REQ_BODY_REGION); + entity.setHttpReqBody(reqBodyCfg); + HttpBodyCfg resBodyCfg = new HttpBodyCfg(); + resBodyCfg.setCfgType(Constants.HTTP_REDIRECT_RES_BODY_REGION); + entity.setHttpResBody(resBodyCfg); + IpPortCfg ipPortCfg = new IpPortCfg(); + ipPortCfg.setCfgType(Constants.HTTP_REDIRECT_IP_REGION); + entity.setIpPort(ipPortCfg); + NtcSubscribeIdCfg subscribeIdCfg = new NtcSubscribeIdCfg(); + subscribeIdCfg.setCfgType(Constants.PXY_CRTL_SUBSCRIBE_ID_REGION); + entity.setNtcSubscribeIdCfg(subscribeIdCfg); + + if (entity.getHttpUrlList().size() == 0) { + entity.getHttpUrlList().add(urlCfg); + } + if (entity.getHttpReqHdrList().size() == 0) { + entity.getHttpReqHdrList().add(reqHdrCfg); + } + if (entity.getHttpResHdrList().size() == 0) { + entity.getHttpResHdrList().add(resHdrCfg); + } + if (entity.getHttpReqBodyList().size() == 0) { + entity.getHttpReqBodyList().add(reqBodyCfg); + } + if (entity.getHttpResBodyList().size() == 0) { + entity.getHttpResBodyList().add(resBodyCfg); + } + if (entity.getIpPortList().size() == 0) { + entity.getIpPortList().add(ipPortCfg); + } + if (entity.getNtcSubscribeIdCfgList().size() == 0) { + entity.getNtcSubscribeIdCfgList().add(subscribeIdCfg); + } + initUpdateFormCondition(model, entity); + } else { + // 设置http各类配置的配置域类型 + HttpUrlCfg urlCfg = new HttpUrlCfg(); + urlCfg.setCfgType(Constants.HTTP_REDIRECT_URL_REGION); + entity.setHttpUrl(urlCfg); + HttpReqHeadCfg reqHdrCfg = new HttpReqHeadCfg(); + reqHdrCfg.setCfgType(Constants.HTTP_REDIRECT_REQ_HEAD_REGION); + entity.setHttpReqHdr(reqHdrCfg); + HttpResHeadCfg resHdrCfg = new HttpResHeadCfg(); + resHdrCfg.setCfgType(Constants.HTTP_REDIRECT_RES_HEAD_REGION); + entity.setHttpResHdr(resHdrCfg); + HttpBodyCfg reqBodyCfg = new HttpBodyCfg(); + reqBodyCfg.setCfgType(Constants.HTTP_REDIRECT_REQ_BODY_REGION); + entity.setHttpReqBody(reqBodyCfg); + HttpBodyCfg resBodyCfg = new HttpBodyCfg(); + resBodyCfg.setCfgType(Constants.HTTP_REDIRECT_RES_BODY_REGION); + entity.setHttpResBody(resBodyCfg); + IpPortCfg ipPortCfg = new IpPortCfg(); + ipPortCfg.setCfgType(Constants.HTTP_IP_REGION); + entity.setIpPort(ipPortCfg); + // subscribeId + NtcSubscribeIdCfg subscribeIdCfg = new NtcSubscribeIdCfg(); + subscribeIdCfg.setCfgType(Constants.PXY_CRTL_SUBSCRIBE_ID_REGION); + entity.setNtcSubscribeIdCfg(subscribeIdCfg); + + List urlList = new ArrayList(); + urlList.add(urlCfg); + entity.setHttpUrlList(urlList); + List reqHdrList = new ArrayList(); + reqHdrList.add(reqHdrCfg); + entity.setHttpReqHdrList(reqHdrList); + List resHdrList = new ArrayList(); + resHdrList.add(resHdrCfg); + entity.setHttpResHdrList(resHdrList); + List reqBodyList = new ArrayList(); + reqBodyList.add(reqBodyCfg); + entity.setHttpReqBodyList(reqBodyList); + List resBodyList = new ArrayList(); + resBodyList.add(resBodyCfg); + entity.setHttpResBodyList(resBodyList); + + List ipPortList = new ArrayList(); + ipPortList.add(ipPortCfg); + entity.setIpPortList(ipPortList); + + List subscribeCfgList = Lists.newArrayList(); + subscribeCfgList.add(subscribeIdCfg); + entity.setNtcSubscribeIdCfgList(subscribeCfgList); + + initFormCondition(model, entity); + } + // 获取所有的响应文件内容,Block可以选择 + /*List allProxyFileStrategys = proxyFileStrategyService.getProxyFileStrategyCfgList(new ProxyFileStrategyCfg()); + model.addAttribute("allProxyFileStrategys", allProxyFileStrategys);*/ + model.addAttribute("_cfg", entity); + return "/cfg/proxy/control/manipulatPolicyForm"; + } + + @RequestMapping("saveOrUpdate") + public String saveOrUpdate(Model model, @ModelAttribute("cfg") CfgIndexInfo cfg, RedirectAttributes redirectAttributes, + HttpServletRequest request, HttpServletResponse response) { + try { + manipulatPolicyService.savePolicyCfg(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("save_failed", 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); + } + } + + return "redirect:" + adminPath + "/proxy/control/manipulatPolicy/list?functionId=" + cfg.getFunctionId(); + } + + @RequestMapping("ajaxPolicySubList") + public String ajaxPolicySubList(Model model, Long cfgId, Integer index, Integer compileId) { + CfgIndexInfo cfg = manipulatPolicyService.getPolicyCfg(cfgId, compileId); + model.addAttribute("_cfg", cfg); + model.addAttribute("index", index); + return "/cfg/proxy/control/httpRedirectSubList"; + } + + @RequestMapping("delete") + public String delete(Integer isAudit, Integer isValid, String ids, Integer functionId, RedirectAttributes redirectAttributes, + HttpServletRequest request, HttpServletResponse response, @ModelAttribute("cfg")CfgIndexInfo cfg) { + try { + if (!StringUtil.isEmpty(ids)) { + manipulatPolicyService.updatePolicyCfgValid(isValid, ids, functionId); + addMessage(redirectAttributes, "success", "delete_success"); + }else { + // 批量删除 + Page searchPage = new Page(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/control/manipulatPolicy/list?functionId=" + functionId; + } + + @RequestMapping("audit") + public String audit(Model model, @ModelAttribute("cfg") CfgIndexInfo cfg, Integer isValid, Integer isAudit, String ids, + Integer functionId, RedirectAttributes redirectAttributes, HttpServletResponse response,HttpServletRequest request) { + if (!StringUtil.isEmpty(ids)) { + CfgIndexInfo entity = new CfgIndexInfo(); + String[] idArray = ids.split(","); + for (String id : idArray) { + entity = manipulatPolicyService.getPolicyCfg(Long.parseLong(id), null); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + manipulatPolicyService.auditPolicyCfg(entity, isAudit,Constants.INSERT_ACTION); + addMessage(redirectAttributes, "success", "audit_success"); + } catch (Exception e) { + e.printStackTrace(); + logger.info("http重定向配置下发失败:" + e.getMessage()); + 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); + } + } + } + } else {// 条件下所有配置审核 + Page searchPage = new Page(request, response, "a"); + Page auditPage = new Page(request, response, "a"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + 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 list(model, cfg, request, response); + } + return "redirect:" + adminPath + "/proxy/control/manipulatPolicy/list?functionId=" + functionId; + } + + // http配置导出 + @RequestMapping(value = "exportPolicy") + public void exportPolicy(Model model,@ModelAttribute("cfg") CfgIndexInfo entity, String ids, RedirectAttributes redirectAttributes, + HttpServletRequest request, HttpServletResponse response) { + try { + // export data info + List titleList = new ArrayList(); + Map> classMap = new HashMap>(); + Map dataMap = new HashMap(); + Map noExportMap = new HashMap(); + + List regionList = DictUtils.getFunctionRegionDictList(entity.getFunctionId()); + + List ipLists = new ArrayList(); + // 导出选中记录 + if (!StringUtil.isEmpty(ids)) { + ipLists = ipCfgService.getByIdsList(ids); + } else { + Page pageInfo = new Page(request, response, "a"); + pageInfo.setPageNo(1); + pageInfo.setPageSize(Constants.MAX_EXPORT_SIZE); + Page page = manipulatPolicyService.getPolicyList(pageInfo, entity); + ipLists = page.getList(); + } + + + //日志总量 + List> logTotals=new ArrayList>(); + StringBuilder compileIds=new StringBuilder(",");//配置ids + Set set=new HashSet();//服务ids + + Map blockDict = DictUtils.getDictMap("RESPONSE_CODE"); // Block + Map redirectDict = DictUtils.getDictMap("REDIRECT_RESPONSE_CODE"); // Redirect + Map replaceDict = DictUtils.getDictMap("CONTROL_REPLACE_ZONE"); // Replace + + Properties prop = getMsgProp(); + for (CfgIndexInfo str : ipLists) { + //str.setAction(Integer.valueOf(str.getUserRegion5())); + + if(str.getIsAudit()!=0){ + set.add(str.getServiceId()); + compileIds.append(str.getCompileId()+","); + }else{ + Map logTotal=new HashMap(); + logTotal.put("compileId", str.getCompileId()+""); + logTotal.put("sum",0L); + logTotals.add(logTotal); + } + + if (!str.getUserRegion5().equals("85") && !str.getUserRegion5().equals("90")) { + + /*String type = "RESPONSE_CODE"; + if (entity.getFunctionId() == 207) { // Block + type = "RESPONSE_CODE"; + } else if (entity.getFunctionId() == 208) { // Redirect + type = "REDIRECT_RESPONSE_CODE"; + } else if (entity.getFunctionId() == 209) { // Replace + type = "CONTROL_REPLACE_ZONE"; + }*/ + + String value = ""; + if(str.getUserRegion5().equals("16")) {// Block + value = blockDict.get(str.getUserRegion1()); + str.setDetail(prop.getProperty(value)); + str.setUserRegion1(str.getUserRegion2()); + str.setUserRegion2(null); + + }else if(str.getUserRegion5().equals("48")) {// Redirect + value = redirectDict.get(str.getUserRegion1()); + str.setDetail(prop.getProperty(value)); + str.setUserRegion1(null); + + }else if(str.getUserRegion5().equals("80")) {// Replace + value = replaceDict.get(str.getUserRegion1()); + str.setUserRegion5(str.getUserRegion3()); + str.setUserRegion3(prop.getProperty(value)); + str.setUserRegion4(str.getUserRegion2()); + str.setUserRegion1(null); + str.setUserRegion2(null); + + } + + if (str.getUserRegion5().equals("16") || str.getUserRegion5().equals("48")) { + if (!StringUtil.isEmpty(str.getUserRegion4())) { // 是否存在文件策略 + ProxyFileStrategyCfg file = new ProxyFileStrategyCfg(); + file.setCompileId(Integer.valueOf(str.getUserRegion4())); + List allProxyFileStrategys = proxyFileStrategyService.getProxyFileStrategyCfgList(file); + if (allProxyFileStrategys != null && allProxyFileStrategys.size() > 0) { + str.setUserRegion2(allProxyFileStrategys.get(0).getCfgDesc()); + } + str.setUserRegion4(null); + } + + } + + } + if(str.getUserRegion5().equals("16") || str.getUserRegion5().equals("48") || str.getUserRegion5().equals("85") || + str.getUserRegion5().equals("90")) { + if(str.getUserRegion5().equals("85") || str.getUserRegion5().equals("90")) { + str.setUserRegion1(null); + str.setUserRegion4(null); + } + str.setUserRegion5(null); + } + } + + //获取日志总量 + StringBuilder serviceIds=new StringBuilder(","); + if(set.size()>0) { + for (Integer id : set) { + serviceIds.append(id+","); + } + String serviceIdsStr=serviceIds.toString().substring(1, serviceIds.length()-1); + String compileIdsStr=compileIds.toString().substring(1, compileIds.length()-1); + if(!StringUtils.isBlank(serviceIdsStr)&&!StringUtils.isBlank(compileIdsStr)){ + List> logs = getLogTotal( null,serviceIdsStr,compileIdsStr); + logTotals.addAll(logs); + } + } + + String cfgIndexInfoNoExport = ",block_type,policy_name,group_name,&detail:response_code-userregion1:response_content-userregion2:redirect_url-userregion3:replace_zone-userregion4:replaced_content-userregion5:replace_content-"; + /*if (entity.getFunctionId() == 207) { + cfgIndexInfoNoExport = ",policy_name,group_name,userregion3,userregion4,userregion5,&userregion1:response_code-userregion2:response_content-"; + } else if (entity.getFunctionId() == 208) { + cfgIndexInfoNoExport = ",policy_name,group_name,userregion3,userregion4,userregion5,&userregion1:redirect_response_code-userregion2:redirect_url-"; + } else if (entity.getFunctionId() == 209) { + cfgIndexInfoNoExport = ",policy_name,group_name,userregion4,userregion5,&userregion1:replace_zone-userregion2:replaced_content-userregion3:replace_content-"; + } else if (entity.getFunctionId() == 211) { + cfgIndexInfoNoExport = ",do_log,log_total,policy_name,group_name,userregion1,userregion2,userregion3,userregion4,userregion5,"; + }*/ + String httpUrlCfgNoExport = ",do_log,action,config_describe,valid_identifier,is_audit,creator,creator" + + ",config_time,editor,edit_time,auditor,audit_time" + + ",letter,whether_area_block,classification,attribute,label" + + ",userregion1,userregion2,userregion3,userregion4,userregion5,"; + String httpReqHeadCfgNoExport = ",do_log,action,config_describe,valid_identifier,is_audit,creator,creator" + + ",config_time,editor,edit_time,auditor,audit_time" + + ",letter,whether_area_block,classification,attribute,label" + + ",userregion1,userregion2,userregion3,userregion4,userregion5,"; + String httpResHeadCfgNoExport = ",do_log,action,config_describe,valid_identifier,is_audit,creator,creator" + + ",config_time,editor,edit_time,auditor,audit_time" + + ",letter,whether_area_block,classification,attribute,label" + + ",userregion1,userregion2,userregion3,userregion4,userregion5,"; + String httpReqBodyCfgNoExport = ",do_log,action,config_describe,valid_identifier,is_audit,creator,creator" + + ",config_time,editor,edit_time,auditor,audit_time" + + ",letter,whether_area_block,classification,attribute,label" + + ",userregion1,userregion2,userregion3,userregion4,userregion5,"; + String httpResBodyCfgNoExport = ",do_log,action,config_describe,valid_identifier,is_audit,creator,creator" + + ",config_time,editor,edit_time,auditor,audit_time" + + ",letter,whether_area_block,classification,attribute,label" + + ",userregion1,userregion2,userregion3,userregion4,userregion5,"; + String ipPortCfgNoExport = ",do_log,action,config_describe,valid_identifier,is_audit,creator,creator" + + ",config_time,editor,edit_time,auditor,audit_time" + + ",letter,whether_area_block,classification,attribute,label" + + ",userregion1,userregion2,userregion3,userregion4,userregion5,ir_type,group_name,"; + String ntcSubscribeIdCfgNoExport = ",do_log,action,config_describe,valid_identifier,is_audit,creator,creator" + + ",config_time,editor,edit_time,auditor,audit_time" + + ",letter,whether_area_block,classification,attribute,label" + + ",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; + } + + List httpUrlList = new ArrayList<>(); + List httpReqHdrList = new ArrayList<>(); + List httpResHdrList = new ArrayList<>(); + List httpReqBodyList = new ArrayList<>(); + List httpResBodyList = new ArrayList<>(); + List ipPortList = new ArrayList<>(); + List subscribeIdList = new ArrayList<>(); + for (CfgIndexInfo cfg : ipLists) { + Map maps = manipulatPolicyService.exportHttpCfg(cfg); + httpUrlList.addAll(maps.get("NTC_HTTP_URL")); + httpReqHdrList.addAll(maps.get("NTC_HTTP_REQ_HDR")); + httpResHdrList.addAll(maps.get("NTC_HTTP_RES_HDR")); + httpReqBodyList.addAll(maps.get("NTC_HTTP_REQ_BODY")); + httpResBodyList.addAll(maps.get("NTC_HTTP_RES_BODY")); + ipPortList.addAll(maps.get("NTC_UNIVERSAL_IP")); + subscribeIdList.addAll(maps.get("NTC_SUBSCRIBE_ID")); + + for (Map logTotal : logTotals) { + if(cfg.getCompileId().equals(Integer.parseInt((String) logTotal.get("compileId")))){ + cfg.setTotalLogs((Long)logTotal.get("sum")); + break; + } + } + + } + httpUrlList = BaseStringCfg.replaceBaseKeyList(httpUrlList); + httpReqHdrList = ComplexkeywordCfg.replaceComplexKeyList(httpReqHdrList); + httpResHdrList = ComplexkeywordCfg.replaceComplexKeyList(httpResHdrList); + httpReqBodyList = BaseStringCfg.replaceBaseKeyList(httpReqBodyList); + httpResBodyList = BaseStringCfg.replaceBaseKeyList(httpResBodyList); + subscribeIdList = BaseStringCfg.baseHexList(subscribeIdList); + titleList.add(entity.getMenuNameCode()); + titleList.add("NTC_HTTP_URL"); + titleList.add("NTC_HTTP_REQ_HDR"); + classMap.put(entity.getMenuNameCode(), CfgIndexInfo.class); + classMap.put("NTC_HTTP_URL", HttpUrlCfg.class); + classMap.put("NTC_HTTP_REQ_HDR", HttpReqHeadCfg.class); + noExportMap.put(entity.getMenuNameCode(), cfgIndexInfoNoExport); + noExportMap.put("NTC_HTTP_URL", httpUrlCfgNoExport); + noExportMap.put("NTC_HTTP_REQ_HDR", httpReqHeadCfgNoExport); + dataMap.put(entity.getMenuNameCode(), ipLists); + dataMap.put("NTC_HTTP_URL", httpUrlList); + dataMap.put("NTC_HTTP_REQ_HDR", httpReqHdrList); + if (entity.getFunctionId() != 208 && entity.getFunctionId() != 211) { + titleList.add("NTC_HTTP_RES_BODY"); + classMap.put("NTC_HTTP_RES_BODY", HttpBodyCfg.class); + noExportMap.put("NTC_HTTP_RES_BODY", httpResBodyCfgNoExport); + dataMap.put("NTC_HTTP_RES_BODY", httpResBodyList); + } else if (entity.getFunctionId() != 211) { + titleList.add("NTC_HTTP_RES_HDR"); + titleList.add("NTC_HTTP_REQ_BODY"); + classMap.put("NTC_HTTP_RES_HDR", HttpResHeadCfg.class); + classMap.put("NTC_HTTP_REQ_BODY", HttpBodyCfg.class); + noExportMap.put("NTC_HTTP_RES_HDR", httpResHeadCfgNoExport); + noExportMap.put("NTC_HTTP_REQ_BODY", httpReqBodyCfgNoExport); + dataMap.put("NTC_HTTP_RES_HDR", httpResHdrList); + dataMap.put("NTC_HTTP_REQ_BODY", httpReqBodyList); + } + titleList.add("NTC_UNIVERSAL_IP"); + titleList.add("NTC_SUBSCRIBE_ID"); + classMap.put("NTC_UNIVERSAL_IP", IpPortCfg.class); + classMap.put("NTC_SUBSCRIBE_ID", NtcSubscribeIdCfg.class); + noExportMap.put("NTC_UNIVERSAL_IP", ipPortCfgNoExport); + noExportMap.put("NTC_SUBSCRIBE_ID", ntcSubscribeIdCfgNoExport); + dataMap.put("NTC_UNIVERSAL_IP", ipPortList); + dataMap.put("NTC_SUBSCRIBE_ID", subscribeIdList); + + /* } */ + + 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("http export failed", e); + addMessage(redirectAttributes, "error", "export_failed"); + LogUtils.saveLog(request, null, e, null); + } + /* + * return "redirect:" + adminPath + * +"/ntc/website/httpList?functionId="+entity.getFunctionId(); + */ + } + + @ResponseBody + @RequestMapping("ajaxGetProfileInfo") + public List ajaxGetProfileInfo(Integer source, HttpServletRequest request, HttpServletResponse response){ + return manipulatPolicyService.getProfileInfo(source); + } + +} diff --git a/src/main/java/com/nis/web/dao/configuration/ProxyFileStrategyDao.java b/src/main/java/com/nis/web/dao/configuration/ProxyFileStrategyDao.java index a97c17e50..12aea6230 100644 --- a/src/main/java/com/nis/web/dao/configuration/ProxyFileStrategyDao.java +++ b/src/main/java/com/nis/web/dao/configuration/ProxyFileStrategyDao.java @@ -21,5 +21,5 @@ public interface ProxyFileStrategyDao { public void insert(ProxyFileStrategyCfg entity); public void update(ProxyFileStrategyCfg entity); - + public List fingResPages(ProxyFileStrategyCfg entity); } diff --git a/src/main/java/com/nis/web/dao/configuration/ProxyFileStrategyDao.xml b/src/main/java/com/nis/web/dao/configuration/ProxyFileStrategyDao.xml index 90757616b..8a4c17d25 100644 --- a/src/main/java/com/nis/web/dao/configuration/ProxyFileStrategyDao.xml +++ b/src/main/java/com/nis/web/dao/configuration/ProxyFileStrategyDao.xml @@ -310,6 +310,22 @@ where cfg_id = #{cfgId,jdbcType=BIGINT} - + \ No newline at end of file diff --git a/src/main/java/com/nis/web/service/BaseService.java b/src/main/java/com/nis/web/service/BaseService.java index 10a3f9914..c23f340b4 100644 --- a/src/main/java/com/nis/web/service/BaseService.java +++ b/src/main/java/com/nis/web/service/BaseService.java @@ -92,11 +92,13 @@ import com.nis.domain.configuration.WebsiteDomainTopic; import com.nis.domain.maat.GroupReuseAddBean; import com.nis.domain.maat.GroupReuseCfg; import com.nis.domain.maat.MaatCfg; +import com.nis.domain.maat.ManipulatActionParam; import com.nis.domain.maat.MaatCfg.DigestCfg; import com.nis.domain.maat.MaatCfg.GroupCfg; import com.nis.domain.maat.MaatCfg.IpCfg; import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; import com.nis.domain.maat.MaatCfg.StringCfg; +import com.nis.domain.maat.ManipulatActionParam.ReplaceCfg; import com.nis.domain.maat.ToMaatBean; import com.nis.domain.maat.ToMaatResult; import com.nis.domain.specific.ConfigGroupInfo; @@ -1660,14 +1662,15 @@ public abstract class BaseService { // HTTP(s) URL else if(regionDict.getDictId().intValue()==97 || regionDict.getDictId().intValue()==79 || regionDict.getDictId().intValue()==85 || regionDict.getDictId().intValue()==91 || - regionDict.getDictId().intValue()==99){ + regionDict.getDictId().intValue()==99 || regionDict.getDictId().intValue()==633){ this.saveStringCfgBatch(regionDict,serviceDict,listPage, "http_url_cfg",send); } // HTTP(s) 请求/应答内容 else if(regionDict.getDictId().intValue()==94 || regionDict.getDictId().intValue()==95 || regionDict.getDictId().intValue()==88 || regionDict.getDictId().intValue()==89 || regionDict.getDictId().intValue()==82 || regionDict.getDictId().intValue()==83 || - regionDict.getDictId().intValue()==103 || regionDict.getDictId().intValue()==104){ + regionDict.getDictId().intValue()==103 || regionDict.getDictId().intValue()==104 || + regionDict.getDictId().intValue()==636 || regionDict.getDictId().intValue()==637){ this.saveStringCfgBatch(regionDict,serviceDict,listPage, "http_body_cfg",send); } }else if("ComplexkeywordCfg".equals(type)) { @@ -1704,12 +1707,13 @@ public abstract class BaseService { // HTTP(s)请求头域 if(regionDict.getDictId().intValue()==98 || regionDict.getDictId().intValue()==80 || regionDict.getDictId().intValue()==86 || regionDict.getDictId().intValue()==92 || - regionDict.getDictId().intValue()==100) { + regionDict.getDictId().intValue()==100 || regionDict.getDictId().intValue()==634) { this.saveComplexkeywordCfgBatch(regionDict,serviceDict,listPage, "http_req_head_cfg",send); }else // HTTP(s)响应头域 if(regionDict.getDictId().intValue()==102 || regionDict.getDictId().intValue()==81 || - regionDict.getDictId().intValue()==87 || regionDict.getDictId().intValue()==93) { + regionDict.getDictId().intValue()==87 || regionDict.getDictId().intValue()==93 || + regionDict.getDictId().intValue()==635) { this.saveComplexkeywordCfgBatch(regionDict,serviceDict,listPage, "http_res_head_cfg",send); } }else if("DnsResStrategy".equals(type)) { @@ -2543,6 +2547,34 @@ public abstract class BaseService { userRegion=userRegion+";"+Constants.REPLACE_SUBSTITUTE_KEY+"="+substitute; maatCfg.setUserRegion(userRegion); + }else if(regionDict.getFunctionId()==215) { + ManipulatActionParam actionParam = new ManipulatActionParam(); + if(regionDict.getAction().equals(48)) { + actionParam.setMethod("redirect"); + actionParam.setCode(Integer.valueOf(_cfg.getUserRegion1())); + actionParam.setTo(_cfg.getUserRegion2()); + }else if(regionDict.getAction().equals(80)) { + List ReplaceCfgList = new ArrayList(); + ReplaceCfg replaceCfg = new ReplaceCfg(); + replaceCfg.setSearch_in(_cfg.getUserRegion1()); + replaceCfg.setFind(_cfg.getUserRegion2()); + replaceCfg.setReplace_with(_cfg.getUserRegion3()); + ReplaceCfgList.add(replaceCfg); + actionParam.setMethod("replace"); + actionParam.setRules(ReplaceCfgList); + }else if(regionDict.getAction().equals(16)) { + actionParam.setMethod("block"); + actionParam.setCode(Integer.valueOf(_cfg.getUserRegion1())); + actionParam.setMessage(_cfg.getUserRegion2()); + actionParam.setHtml_profile(Integer.valueOf(_cfg.getUserRegion4())); + }else if(regionDict.getAction().equals(85)) { + actionParam.setMethod("hijack"); + actionParam.setHijack_profile(Integer.valueOf(_cfg.getUserRegion4())); + }else if(regionDict.getAction().equals(90)) { + actionParam.setMethod("insert"); + actionParam.setInsert_profile(Integer.valueOf(_cfg.getUserRegion4())); + } + maatCfg.setUserRegion(gsonToJson(actionParam)); } configCompileList.add(maatCfg); @@ -2659,6 +2691,34 @@ public abstract class BaseService { userRegion = Constants.REPLACE_ZONE_KEY+"="+_cfg.getUserRegion1()+";"+Constants.REPLACE_SUBSTITUTE_KEY+"="+substitute; } maatCfg.setUserRegion(userRegion); + }else if(regionDict.getFunctionId()==215) { + ManipulatActionParam actionParam = new ManipulatActionParam(); + if(regionDict.getAction().equals(48)) { + actionParam.setMethod("redirect"); + actionParam.setCode(Integer.valueOf(_cfg.getUserRegion1())); + actionParam.setTo(_cfg.getUserRegion2()); + }else if(regionDict.getAction().equals(80)) { + List ReplaceCfgList = new ArrayList(); + ReplaceCfg replaceCfg = new ReplaceCfg(); + replaceCfg.setSearch_in(_cfg.getUserRegion1()); + replaceCfg.setFind(_cfg.getUserRegion2()); + replaceCfg.setReplace_with(_cfg.getUserRegion3()); + ReplaceCfgList.add(replaceCfg); + actionParam.setMethod("replace"); + actionParam.setRules(ReplaceCfgList); + }else if(regionDict.getAction().equals(16)) { + actionParam.setMethod("block"); + actionParam.setCode(Integer.valueOf(_cfg.getUserRegion1())); + actionParam.setMessage(_cfg.getUserRegion2()); + actionParam.setHtml_profile(Integer.valueOf(_cfg.getUserRegion4())); + }else if(regionDict.getAction().equals(85)) { + actionParam.setMethod("hijack"); + actionParam.setHijack_profile(Integer.valueOf(_cfg.getUserRegion4())); + }else if(regionDict.getAction().equals(90)) { + actionParam.setMethod("insert"); + actionParam.setInsert_profile(Integer.valueOf(_cfg.getUserRegion4())); + } + maatCfg.setUserRegion(gsonToJson(actionParam)); } configCompileList.add(maatCfg); } @@ -2762,6 +2822,34 @@ public abstract class BaseService { maatCfg.setUserRegion(userRegion); }else if(regionDict.getFunctionId()==564 || regionDict.getFunctionId()==565 || regionDict.getFunctionId()==566) {// APP HTTP、DNS、SSL Admin maatCfg.setUserRegion(Constants.APP_ID_REGION+"="+cfg.getAppCode()); + }else if(regionDict.getFunctionId()==215) { + ManipulatActionParam actionParam = new ManipulatActionParam(); + if(regionDict.getAction().equals(48)) { + actionParam.setMethod("redirect"); + actionParam.setCode(Integer.valueOf(cfg.getUserRegion1())); + actionParam.setTo(cfg.getUserRegion2()); + }else if(regionDict.getAction().equals(80)) { + List ReplaceCfgList = new ArrayList(); + ReplaceCfg replaceCfg = new ReplaceCfg(); + replaceCfg.setSearch_in(cfg.getUserRegion1()); + replaceCfg.setFind(cfg.getUserRegion2()); + replaceCfg.setReplace_with(cfg.getUserRegion3()); + ReplaceCfgList.add(replaceCfg); + actionParam.setMethod("replace"); + actionParam.setRules(ReplaceCfgList); + }else if(regionDict.getAction().equals(16)) { + actionParam.setMethod("block"); + actionParam.setCode(Integer.valueOf(cfg.getUserRegion1())); + actionParam.setMessage(cfg.getUserRegion2()); + actionParam.setHtml_profile(Integer.valueOf(cfg.getUserRegion4())); + }else if(regionDict.getAction().equals(85)) { + actionParam.setMethod("hijack"); + actionParam.setHijack_profile(Integer.valueOf(cfg.getUserRegion4())); + }else if(regionDict.getAction().equals(90)) { + actionParam.setMethod("insert"); + actionParam.setInsert_profile(Integer.valueOf(cfg.getUserRegion4())); + } + maatCfg.setUserRegion(gsonToJson(actionParam)); } configCompileList.add(maatCfg); } diff --git a/src/main/java/com/nis/web/service/configuration/ManipulatPolicyService.java b/src/main/java/com/nis/web/service/configuration/ManipulatPolicyService.java new file mode 100644 index 000000000..497b75de4 --- /dev/null +++ b/src/main/java/com/nis/web/service/configuration/ManipulatPolicyService.java @@ -0,0 +1,624 @@ +package com.nis.web.service.configuration; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.nis.domain.Page; +import com.nis.domain.callback.ProxyFileHijackCfg; +import com.nis.domain.callback.ProxyFileInsertScriptCfg; +import com.nis.domain.callback.ProxyFileStrategyCfg; +import com.nis.domain.configuration.AreaIpCfg; +import com.nis.domain.configuration.BaseCfg; +import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.domain.configuration.HttpBodyCfg; +import com.nis.domain.configuration.HttpReqHeadCfg; +import com.nis.domain.configuration.HttpResHeadCfg; +import com.nis.domain.configuration.HttpUrlCfg; +import com.nis.domain.configuration.IpPortCfg; +import com.nis.domain.configuration.NtcSubscribeIdCfg; +import com.nis.domain.maat.MaatCfg; +import com.nis.domain.maat.MaatCfg.DigestCfg; +import com.nis.domain.maat.MaatCfg.GroupCfg; +import com.nis.domain.maat.MaatCfg.IpCfg; +import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; +import com.nis.domain.maat.MaatCfg.StringCfg; +import com.nis.domain.maat.ManipulatActionParam; +import com.nis.domain.maat.ManipulatActionParam.ReplaceCfg; +import com.nis.domain.maat.ToMaatBean; +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.StringUtil; +import com.nis.web.dao.configuration.AreaIpCfgDao; +import com.nis.web.dao.configuration.ProxyFileHijackDao; +import com.nis.web.dao.configuration.ProxyFileInsertScriptDao; +import com.nis.web.dao.configuration.ProxyFileStrategyDao; +import com.nis.web.dao.configuration.StringCfgDao; +import com.nis.web.dao.configuration.WebsiteCfgDao; +import com.nis.web.security.UserUtils; +import com.nis.web.service.BaseService; +import com.nis.web.service.CrudService; + +/** + * 代理控制策略操控业务 事务类 + */ +@Service +public class ManipulatPolicyService extends CrudService { + @Autowired + protected WebsiteCfgDao websiteCfgDao; + @Autowired + protected AreaIpCfgDao areaIpCfgDao; + @Autowired + protected StringCfgDao stringCfgDao; + + @Autowired + protected ProxyFileStrategyDao proxyFileDao; + @Autowired + protected ProxyFileHijackDao proxyFileHijackDao; + @Autowired + protected ProxyFileInsertScriptDao proxyFileInsertDao; + + public List getCfgIndexInfos(CfgIndexInfo entity){ + return websiteCfgDao.getCfgIndexInfos(entity); + } + + public CfgIndexInfo getPolicyCfg(Long cfgId,Integer compileId){ + CfgIndexInfo entity = websiteCfgDao.getCfgIndexInfo(cfgId,compileId); + List httpUrlList = websiteCfgDao.getHttpUrlList(entity); + List httpReqHdrList = websiteCfgDao.getHttpReqHdrList(entity); + List httpResHdrList = websiteCfgDao.getHttpResHdrList(entity); + List ipPortCfgList = websiteCfgDao.getIpPortList(entity); + entity.setCfgType(Constants.HTTP_REDIRECT_REQ_BODY_REGION); + List httpReqBodyList = websiteCfgDao.getHttpReqBodyList(entity); + entity.setCfgType(Constants.HTTP_REDIRECT_RES_BODY_REGION); + List httpResBodyList = websiteCfgDao.getHttpResBodyList(entity); + List subscribeIdList = stringCfgDao.findSubscribeIdCfgListByCfgIndexInfo(entity); + entity.setHttpReqBodyList(httpReqBodyList); + entity.setHttpReqHdrList(httpReqHdrList); + entity.setHttpResBodyList(httpResBodyList); + entity.setHttpResHdrList(httpResHdrList); + entity.setHttpUrlList(httpUrlList); + entity.setIpPortList(ipPortCfgList); + entity.setNtcSubscribeIdCfgList(subscribeIdList); + return entity; + } + + public Map exportHttpCfg(CfgIndexInfo entity){ + Map dataMap=new HashMap(); + List httpUrlList = websiteCfgDao.getHttpUrlList(entity); + List httpReqHdrList = websiteCfgDao.getHttpReqHdrList(entity); + List httpResHdrList = websiteCfgDao.getHttpResHdrList(entity); + List ipPortCfgList = websiteCfgDao.getIpPortList(entity); + entity.setCfgType(Constants.HTTP_REDIRECT_REQ_BODY_REGION); + List httpReqBodyList = websiteCfgDao.getHttpReqBodyList(entity); + entity.setCfgType(Constants.HTTP_REDIRECT_RES_BODY_REGION); + List httpResBodyList = websiteCfgDao.getHttpResBodyList(entity); + List subscribeIdList = stringCfgDao.findSubscribeIdCfgListByCfgIndexInfo(entity); + dataMap.put("NTC_UNIVERSAL_IP", ipPortCfgList); + dataMap.put("NTC_HTTP_URL", httpUrlList); + dataMap.put("NTC_HTTP_REQ_HDR", httpReqHdrList); + dataMap.put("NTC_HTTP_RES_HDR", httpResHdrList); + dataMap.put("NTC_HTTP_REQ_BODY", httpReqBodyList); + dataMap.put("NTC_HTTP_RES_BODY", httpResBodyList); + dataMap.put("NTC_SUBSCRIBE_ID", subscribeIdList); + return dataMap; + } + + public Page getPolicyList(Page page, CfgIndexInfo entity){ + // 生成数据权限过滤条件(dsf为dataScopeFilter的简写,在xml中使用 ${sqlMap.dsf}调用权限SQL) + entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"a")); + entity.setPage(page); + // 设置cfg_type,用于列表检索时区分 + if(entity.getHttpReqHdr() != null){ + entity.getHttpReqHdr().setCfgType(Constants.HTTP_REDIRECT_REQ_HEAD_REGION); + } + if(entity.getHttpReqBody() != null){ + entity.getHttpReqBody().setCfgType(Constants.HTTP_REDIRECT_REQ_BODY_REGION); + } + if(entity.getHttpResHdr() != null){ + entity.getHttpResHdr().setCfgType(Constants.HTTP_REDIRECT_RES_HEAD_REGION); + } + if(entity.getHttpResBody() != null){ + entity.getHttpResBody().setCfgType(Constants.HTTP_REDIRECT_RES_BODY_REGION); + } + List list = websiteCfgDao.getWebsiteList(entity); + page.setList(list); + return page; + } + public void savePolicyCfg(CfgIndexInfo entity){ + //设置区域运营商信息 + setAreaEffectiveIds(entity); + + int isValid=0; + if(!StringUtil.isEmpty(entity.getIsValid()) && entity.getIsValid()==1) { + isValid=1; + } + + entity.setIsValid(0); + entity.setIsAudit(0); + + if(entity.getCfgId()==null){ + Integer compileId = 0; + try { + List idList = ConfigServiceUtil.getId(1, 1); + if(idList!=null && idList.size()>0){ + compileId = idList.get(0); + } + } catch (Exception e) { + e.printStackTrace(); + logger.info("获取编译ID出错"); + throw new MaatConvertException(":"+e.getMessage()); + } + entity.setCompileId(compileId); + entity.setCreateTime(new Date()); + entity.setCreatorId(entity.getCurrentUser().getId()); + websiteCfgDao.saveCfgIndex(entity); + if(entity.getHttpUrlList()!=null){ + for(HttpUrlCfg cfg:entity.getHttpUrlList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + websiteCfgDao.saveHttpUrlCfg(cfg); + } + } + if(entity.getHttpReqHdrList()!=null){ + for(HttpReqHeadCfg cfg:entity.getHttpReqHdrList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + if(StringUtils.isNoneBlank(cfg.getDistrictShowName()) && cfg.getDistrict().equals("others")){ + cfg.setDistrict(cfg.getDistrictShowName()); + } + websiteCfgDao.saveHttpReqHdrCfg(cfg); + } + } + if(entity.getHttpResHdrList()!=null){ + for(HttpResHeadCfg cfg:entity.getHttpResHdrList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + if(StringUtils.isNoneBlank(cfg.getDistrictShowName()) && cfg.getDistrict().equals("others")){ + cfg.setDistrict(cfg.getDistrictShowName()); + } + websiteCfgDao.saveHttpResHdrCfg(cfg); + } + } + if(entity.getHttpReqBodyList()!=null){ + for(HttpBodyCfg cfg:entity.getHttpReqBodyList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + websiteCfgDao.saveHttpBodyCfg(cfg); + } + } + if(entity.getHttpResBodyList()!=null){ + for(HttpBodyCfg cfg:entity.getHttpResBodyList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + websiteCfgDao.saveHttpBodyCfg(cfg); + } + } + if(entity.getIpPortList()!=null){ + for(IpPortCfg cfg:entity.getIpPortList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + websiteCfgDao.saveIpPortCfg(cfg); + } + } + if(entity.getNtcSubscribeIdCfgList()!=null){ + for(NtcSubscribeIdCfg cfg:entity.getNtcSubscribeIdCfgList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + stringCfgDao.saveSubscribeIdCfg(cfg); + } + } + //保存区域IP信息 + if(entity.getAreaCfg()!=null){ + for(AreaIpCfg cfg:entity.getAreaCfg()){ + cfg.initDefaultValue(); + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + areaIpCfgDao.saveAreaIpCfg(cfg); + } + } + + // 处理定时任务 + handelScheduleCfg(entity, entity.getIndexTable(), entity); + + if(isValid==1) { + entity.setIsAudit(1); + entity.setIsValid(1); + auditPolicyCfg(entity, entity.getIsAudit(),Constants.INSERT_ACTION); + } + }else{ + entity.setEditorId(UserUtils.getUser().getId()); + entity.setEditTime(new Date()); + websiteCfgDao.updateCfgIndex(entity); + //无效子配置后,再新增子配置 + websiteCfgDao.deleteHttpUrlCfg(entity); + websiteCfgDao.deleteHttpReqHdrCfg(entity); + websiteCfgDao.deleteHttpResHdrCfg(entity); + websiteCfgDao.deleteHttpBodyCfg(entity); + websiteCfgDao.deleteHttpIpCfg(entity); + stringCfgDao.deleteSubscribeIdCfgByCfgIndexInfo(entity); + + AreaIpCfg area = new AreaIpCfg(); + area.setCompileId(entity.getCompileId()); + area.setFunctionId(entity.getFunctionId()); + areaIpCfgDao.deleteAreaIpCfg(area); + entity.setCreateTime(new Date()); + entity.setCreatorId(entity.getCurrentUser().getId()); + if(entity.getHttpUrlList()!=null){ + for(HttpUrlCfg cfg:entity.getHttpUrlList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + websiteCfgDao.saveHttpUrlCfg(cfg); + } + } + if(entity.getHttpReqHdrList()!=null){ + for(HttpReqHeadCfg cfg:entity.getHttpReqHdrList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + if(StringUtils.isNoneBlank(cfg.getDistrictShowName()) && cfg.getDistrict().equals("others")){ + cfg.setDistrict(cfg.getDistrictShowName()); + } + websiteCfgDao.saveHttpReqHdrCfg(cfg); + } + } + if(entity.getHttpResHdrList()!=null){ + for(HttpResHeadCfg cfg:entity.getHttpResHdrList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + if(StringUtils.isNoneBlank(cfg.getDistrictShowName()) && cfg.getDistrict().equals("others")){ + cfg.setDistrict(cfg.getDistrictShowName()); + } + websiteCfgDao.saveHttpResHdrCfg(cfg); + } + } + if(entity.getHttpReqBodyList()!=null){ + for(HttpBodyCfg cfg:entity.getHttpReqBodyList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + websiteCfgDao.saveHttpBodyCfg(cfg); + } + } + if(entity.getHttpResBodyList()!=null){ + for(HttpBodyCfg cfg:entity.getHttpResBodyList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + websiteCfgDao.saveHttpBodyCfg(cfg); + } + } + if(entity.getIpPortList()!=null){ + for(IpPortCfg cfg:entity.getIpPortList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + websiteCfgDao.saveIpPortCfg(cfg); + } + } + if(entity.getNtcSubscribeIdCfgList()!=null){ + for(NtcSubscribeIdCfg cfg:entity.getNtcSubscribeIdCfgList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + stringCfgDao.saveSubscribeIdCfg(cfg); + } + } + //保存区域IP信息 + if(entity.getAreaCfg()!=null){ + for(AreaIpCfg cfg:entity.getAreaCfg()){ + cfg.initDefaultValue(); + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgDesc","cfgRegionCode","cfgType"}); + areaIpCfgDao.saveAreaIpCfg(cfg); + } + } + // 处理定时任务 + handelScheduleCfg(entity, entity.getIndexTable(), entity); + + if(isValid==1) { + entity.setIsAudit(1); + entity.setIsValid(1); + auditPolicyCfg(entity, entity.getIsAudit(),Constants.UPDATE_ACTION); + } + } + } + public void updatePolicyCfgValid(Integer isValid,String ids,Integer functionId){ + String[] idArray = ids.split(","); + for(String id :idArray){ + CfgIndexInfo entity = new CfgIndexInfo(); + entity.setCfgId(Long.parseLong(id)); + entity.setIsValid(isValid); + entity.setEditorId(UserUtils.getUser().getId()); + entity.setEditTime(new Date()); + entity.setTableName(CfgIndexInfo.getTablename()); + entity.setFunctionId(functionId); + websiteCfgDao.updateCfgValid(entity); + //查询子配置 + entity = this.getPolicyCfg(Long.parseLong(id),entity.getCompileId()); + + if(entity.getIpPortList()!=null && entity.getIpPortList().size()>0){ + IpPortCfg cfg = new IpPortCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(IpPortCfg.getTablename()); + websiteCfgDao.updateCfgValid(cfg); + } + if(entity.getHttpUrlList()!=null && entity.getHttpUrlList().size()>0){ + HttpUrlCfg cfg = new HttpUrlCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpUrlCfg.getTablename()); + websiteCfgDao.updateCfgValid(cfg); + } + if(entity.getHttpReqHdrList()!=null && entity.getHttpReqHdrList().size()>0){ + HttpReqHeadCfg cfg = new HttpReqHeadCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpReqHeadCfg.getTablename()); + websiteCfgDao.updateCfgValid(cfg); + } + if(entity.getHttpResHdrList()!=null && entity.getHttpResHdrList().size()>0){ + HttpResHeadCfg cfg = new HttpResHeadCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpResHeadCfg.getTablename()); + websiteCfgDao.updateCfgValid(cfg); + } + if((entity.getHttpReqBodyList()!=null && entity.getHttpReqBodyList().size()>0) || + (entity.getHttpResBodyList()!=null && entity.getHttpResBodyList().size()>0)){ + HttpBodyCfg cfg = new HttpBodyCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpBodyCfg.getTablename()); + websiteCfgDao.updateCfgValid(cfg); + } + if((entity.getNtcSubscribeIdCfgList()!=null && entity.getNtcSubscribeIdCfgList().size()>0)){ + NtcSubscribeIdCfg cfg = new NtcSubscribeIdCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(NtcSubscribeIdCfg.getTablename()); + websiteCfgDao.updateCfgValid(cfg); + } + //保存区域IP信息 + if(entity.getAreaCfg()!=null && entity.getAreaCfg().size()>0){ + AreaIpCfg cfg = new AreaIpCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(AreaIpCfg.getTablename()); + websiteCfgDao.updateCfgValid(cfg); + } + // 处理定时任务 + handelScheduleCfg(entity, entity.getIndexTable(), entity); + } + + } + public void auditPolicyCfg(CfgIndexInfo entity,Integer isAudit,Integer opAction) throws MaatConvertException{ + //修改数据库审核状态信息 + entity.setTableName(CfgIndexInfo.getTablename()); + entity.setIsAudit(isAudit); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + websiteCfgDao.auditCfg(entity); + + ToMaatBean maatBean = new ToMaatBean(); + MaatCfg maatCfg = new MaatCfg(); + List configCompileList = new ArrayList(); + List groupRelationList = new ArrayList(); + List ipRegionList = new ArrayList(); + List strRegionList = new ArrayList(); + List numRegionList = new ArrayList(); + List digestRegionList = new ArrayList(); + List areaIpRegionList = new ArrayList(); + + //查询子配置并修改审核状态 + entity = this.getPolicyCfg(entity.getCfgId(),entity.getCompileId()); + + if(entity.getIpPortList()!=null && entity.getIpPortList().size()>0){ + IpPortCfg cfg = new IpPortCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(IpPortCfg.getTablename()); + websiteCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map map = cfgConvert(ipRegionList,entity.getIpPortList(),1,entity,groupRelationList); + groupRelationList=map.get("groupList"); + ipRegionList=map.get("dstList"); + if(map.get("numRegionList")!=null){ + numRegionList.addAll(map.get("numRegionList")); + } + } + } + if(entity.getHttpUrlList()!=null && entity.getHttpUrlList().size()>0){ + HttpUrlCfg cfg = new HttpUrlCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpUrlCfg.getTablename()); + websiteCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map map = cfgConvert(strRegionList,entity.getHttpUrlList(),2,entity,groupRelationList); + groupRelationList=map.get("groupList"); + strRegionList=map.get("dstList"); + } + } + if(entity.getHttpReqHdrList()!=null && entity.getHttpReqHdrList().size()>0){ + HttpReqHeadCfg cfg = new HttpReqHeadCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpReqHeadCfg.getTablename()); + websiteCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map map = cfgConvert(strRegionList,entity.getHttpReqHdrList(),2,entity,groupRelationList); + groupRelationList=map.get("groupList"); + strRegionList=map.get("dstList"); + } + } + if(entity.getHttpResHdrList()!=null && entity.getHttpResHdrList().size()>0){ + HttpResHeadCfg cfg = new HttpResHeadCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpResHeadCfg.getTablename()); + websiteCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map map = cfgConvert(strRegionList,entity.getHttpResHdrList(),2,entity,groupRelationList); + groupRelationList=map.get("groupList"); + strRegionList=map.get("dstList"); + } + } + if((entity.getHttpReqBodyList()!=null && entity.getHttpReqBodyList().size()>0) || + (entity.getHttpResBodyList()!=null && entity.getHttpResBodyList().size()>0)){ + HttpBodyCfg cfg = new HttpBodyCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(HttpBodyCfg.getTablename()); + websiteCfgDao.auditCfg(cfg); + if(isAudit==1){ + if(entity.getHttpReqBodyList()!=null && entity.getHttpReqBodyList().size()>0){ + Map map = cfgConvert(strRegionList,entity.getHttpReqBodyList(),2,entity,groupRelationList); + groupRelationList=map.get("groupList"); + strRegionList=map.get("dstList"); + } + if(entity.getHttpResBodyList()!=null && entity.getHttpResBodyList().size()>0){ + Map map = cfgConvert(strRegionList,entity.getHttpResBodyList(),2,entity,groupRelationList); + groupRelationList=map.get("groupList"); + strRegionList=map.get("dstList"); + } + } + } + + if(entity.getNtcSubscribeIdCfgList()!=null && entity.getNtcSubscribeIdCfgList().size()>0){ + NtcSubscribeIdCfg cfg = new NtcSubscribeIdCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(NtcSubscribeIdCfg.getTablename()); + websiteCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map map = cfgConvert(strRegionList,entity.getNtcSubscribeIdCfgList(),2,entity,groupRelationList); + groupRelationList=map.get("groupList"); + strRegionList=map.get("dstList"); + } + } + + //保存区域IP信息 + List areaIpCfgList=areaIpCfgDao.getByCompileId(entity.getCompileId()); + if(!StringUtil.isEmpty(areaIpCfgList)){ + AreaIpCfg cfg = new AreaIpCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(AreaIpCfg.getTablename()); + websiteCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map map = cfgConvert(areaIpRegionList,areaIpCfgList,1,entity,groupRelationList); + groupRelationList=map.get("groupList"); + areaIpRegionList=map.get("dstList"); + } + } + + if (isAudit != 1) { + // 处理定时任务【如果有定时任务则删除旧的,新增新的】 + handelScheduleCfg(entity, entity.getIndexTable(), entity); + } + + //构造提交综合服务参数格式,一条配置提交一次综合服务 + if(isAudit==1){ + maatCfg.initDefaultValue(); + BeanUtils.copyProperties(entity, maatCfg); + maatCfg.setAction(entity.getAction()); + maatCfg.setAuditTime(entity.getAuditTime()); + maatCfg.setIpRegionList(ipRegionList); + maatCfg.setStrRegionList(strRegionList); + maatCfg.setNumRegionList(numRegionList); + maatCfg.setDigestRegionList(digestRegionList); + maatCfg.setGroupRelationList(groupRelationList); + maatCfg.setGroupNum(groupRelationList.size()); + maatCfg.setAreaIpRegionList(areaIpRegionList); + maatCfg.setIsValid(entity.getIsValid()); + + // 自定义域参数 + String userRegion = ""; + ManipulatActionParam actionParam = new ManipulatActionParam(); + + /** + * 除原自定义参数外 + * user_region4 profile + * user_region5 action(伪) + **/ + // Block + if(Integer.valueOf(entity.getUserRegion5()).equals(16)){ + actionParam.setMethod("block"); + actionParam.setCode(Integer.valueOf(entity.getUserRegion1())); + actionParam.setMessage(entity.getUserRegion2()); + actionParam.setHtml_profile(Integer.valueOf(entity.getUserRegion4())); + } + // Redirect + if(Integer.valueOf(entity.getUserRegion5()).equals(48)){ + actionParam.setMethod("redirect"); + actionParam.setCode(Integer.valueOf(entity.getUserRegion1())); + actionParam.setTo(entity.getUserRegion2()); + } + // Replace + if(Integer.valueOf(entity.getUserRegion5()).equals(80)){ + List ReplaceCfgList = new ArrayList(); + ReplaceCfg replaceCfg = new ReplaceCfg(); + replaceCfg.setSearch_in(entity.getUserRegion1()); + replaceCfg.setFind(entity.getUserRegion2()); + replaceCfg.setReplace_with(entity.getUserRegion3()); + ReplaceCfgList.add(replaceCfg); + actionParam.setMethod("replace"); + actionParam.setRules(ReplaceCfgList); + } + if(Integer.valueOf(entity.getUserRegion5()).equals(85)){ + actionParam.setMethod("hijack"); + actionParam.setHijack_profile(Integer.valueOf(entity.getUserRegion4())); + } + if(Integer.valueOf(entity.getUserRegion5()).equals(90)){ + actionParam.setMethod("insert"); + actionParam.setInsert_profile(Integer.valueOf(entity.getUserRegion4())); + } + + userRegion = gsonToJson(actionParam); + if(StringUtil.isEmpty(userRegion)){ + userRegion = Constants.USER_REGION_PLACEHOLDER; + } + maatCfg.setUserRegion(userRegion); + + configCompileList.add(maatCfg); + maatBean.setConfigCompileList(configCompileList); + maatBean.setAuditTime(entity.getAuditTime()); + maatBean.setCreatorName(entity.getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(opAction); + //调用服务接口下发配置数据 + String json=gsonToJson(maatBean); + logger.info("操控策略配置下发配置参数:"+json); + //调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); + logger.info("操控策略配置下发响应信息:"+result.getMsg()); + + }else if(isAudit==3) { + maatCfg.setCompileId(entity.getCompileId()); + maatCfg.setServiceId(entity.getServiceId()); + maatCfg.setIsValid(0);//无效 + configCompileList.add(maatCfg); + maatBean.setConfigCompileList(configCompileList); + maatBean.setAuditTime(entity.getAuditTime()); + maatBean.setCreatorName(entity.getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.UPDATE_ACTION); + //调用服务接口取消配置 + String json=gsonToJson(maatBean); + logger.info("操控策略配置下发配置参数:"+json); + //调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.put(json,1); + logger.info("操控策略配置取消配置响应信息:"+result.getMsg()); + + } + } + + /** + * 查询可用的Profile信息 + * @param source 16 Block / 85 Hijack / 90 Insert + * @return List + */ + public List getProfileInfo(Integer source) { + List resultList = new ArrayList(); + if(source == 16) { + ProxyFileStrategyCfg searchEntity = new ProxyFileStrategyCfg(); + searchEntity.setIsAudit(1); + List list = proxyFileDao.fingResPages(searchEntity); + for (BaseCfg cfg : list) { + resultList.add(cfg); + } + }else if(source == 85) { + ProxyFileHijackCfg searchEntity = new ProxyFileHijackCfg(); + searchEntity.setIsAudit(1); + List list = proxyFileHijackDao.findPage(searchEntity); + for (BaseCfg cfg : list) { + resultList.add(cfg); + } + }else if(source == 90) { + ProxyFileInsertScriptCfg searchEntity = new ProxyFileInsertScriptCfg(); + searchEntity.setIsAudit(1); + List list = proxyFileInsertDao.findPage(searchEntity); + for (BaseCfg cfg : list) { + resultList.add(cfg); + } + } + return resultList; + } + +} diff --git a/src/main/resources/messages/message_en.properties b/src/main/resources/messages/message_en.properties index f6caba27c..b183afe4c 100644 --- a/src/main/resources/messages/message_en.properties +++ b/src/main/resources/messages/message_en.properties @@ -1541,4 +1541,5 @@ mirror_addr_list=Address List mirror_addr_type=Address Type target_name=Target Name traffic_mirror_address=Traffic Mirror Address -content_name=Content Name \ No newline at end of file +content_name=Content Name +none_profile_tip=Please Choose Profile Info! \ No newline at end of file diff --git a/src/main/resources/messages/message_ru.properties b/src/main/resources/messages/message_ru.properties index 8107afebc..87b01649c 100644 --- a/src/main/resources/messages/message_ru.properties +++ b/src/main/resources/messages/message_ru.properties @@ -1543,4 +1543,5 @@ mirror_addr_list=Address List mirror_addr_type=Address Type target_name=Target Name traffic_mirror_address=Traffic Mirror Address -content_name=Content Name \ No newline at end of file +content_name=Content Name +none_profile_tip=Please Choose Profile Info! \ No newline at end of file diff --git a/src/main/resources/messages/message_zh_CN.properties b/src/main/resources/messages/message_zh_CN.properties index 28a391d5c..8fe1bda0a 100644 --- a/src/main/resources/messages/message_zh_CN.properties +++ b/src/main/resources/messages/message_zh_CN.properties @@ -1541,4 +1541,5 @@ mirror_addr_list=\u76EE\u6807\u6807\u8BC6\u5217\u8868 mirror_addr_type=\u76EE\u6807\u6807\u8BC6\u7C7B\u578B target_name=\u76EE\u6807\u540D\u79F0 traffic_mirror_address=\u6D41\u91CF\u8F6C\u53D1\u76EE\u7684\u5730\u5740 -content_name=\u5185\u5BB9\u540D\u79F0 \ No newline at end of file +content_name=\u5185\u5BB9\u540D\u79F0 +none_profile_tip=Please Choose Profile Info! \ No newline at end of file diff --git a/src/main/resources/service/service_config.xml b/src/main/resources/service/service_config.xml index e2aaab6ff..b7764c77d 100644 --- a/src/main/resources/service/service_config.xml +++ b/src/main/resources/service/service_config.xml @@ -426,4 +426,12 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/sql/20190521/http_manipulation.sql b/src/main/resources/sql/20190521/http_manipulation.sql new file mode 100644 index 000000000..7305ac1a8 --- /dev/null +++ b/src/main/resources/sql/20190521/http_manipulation.sql @@ -0,0 +1,14 @@ +-- 菜单 +INSERT INTO `sys_menu` (`parent_id`, `parent_ids`, `code`, `name`, `sort`, `href`, `target`, `icon`, `is_show`, `permission`, `create_by`, `create_date`, `update_by`, `update_date`, `remarks`, `del_flag`, `menu_bg`, `quick_action`, `is_top`, `function_id`) VALUES ('724', '0,1,86,719,724,', 'http_manipulation', 'HTTP操控', '330', '/proxy/control/manipulatPolicy/list', '', '', '1', 'http_manipulation:config', '1', '2019-05-07 15:04:51', '1', '2019-05-07 15:53:45', '', '1', NULL, '0', '0', '215'); +INSERT INTO `sys_menu` (`parent_id`, `parent_ids`, `code`, `name`, `sort`, `href`, `target`, `icon`, `is_show`, `permission`, `create_by`, `create_date`, `update_by`, `update_date`, `remarks`, `del_flag`, `menu_bg`, `quick_action`, `is_top`, `function_id`) VALUES ('757', '0,1,150,748,757,', 'http_manipulation', 'HTTP操控', '180', '/proxy/control/manipulatPolicy/list', '', '', '1', 'http_manipulation:confirm', '1', '2019-05-10 15:05:33', '1', '2019-05-10 15:05:33', '', '1', NULL, '0', '0', '215'); +INSERT INTO `sys_menu` (`parent_id`, `parent_ids`, `code`, `name`, `sort`, `href`, `target`, `icon`, `is_show`, `permission`, `create_by`, `create_date`, `update_by`, `update_date`, `remarks`, `del_flag`, `menu_bg`, `quick_action`, `is_top`, `function_id`) VALUES ('852', '0,1,151,850,852,', 'http_manipulation', 'HTTP操控', '180', '/proxy/control/manipulatPolicy/list', '', '', '1', 'http_manipulation:audit', '1', '2019-05-10 15:06:30', '1', '2019-05-10 15:06:30', '', '1', NULL, '0', '0', '215'); + +-- 配置表(region dict_id有用) +INSERT INTO `function_service_dict` (`function_id`, `protocol_id`, `action`, `action_code`, `service_id`, `service_name`, `service_desc`, `is_valid`, `creator_id`, `create_time`, `editor_id`, `edit_time`, `region_code`, `is_import`, `sort`, `config_do_log`) VALUES ('215', '0', '48', 'redirect', '656', 'http_manipulation', NULL, '1', '1', '2019-05-07 15:46:17', NULL, NULL, '1,2,3,4,5,6', '1', '0', '1;0,1,2;2'); +INSERT INTO `function_region_dict` (`dict_id`, `function_id`, `config_district`, `config_region_code`, `config_region_value`, `config_desc`, `is_valid`, `is_maat`, `region_type`, `creator_id`, `create_time`, `editor_id`, `edit_time`, `config_service_type`, `config_expr_type`, `config_match_method`, `config_ip_type`, `config_hex`, `config_multi_keywords`, `config_ip_pattern`, `config_port_pattern`, `config_direction`, `config_protocol`, `config_ip_port_show`, `config_region_sort`, `is_import`) VALUES ('633', '215', '', '2', 'PXY_CTRL_HTTP_URL', 'HTTP URL管控配置', '1', '1', '2', NULL, '0000-00-00 00:00:00', NULL, '0000-00-00 00:00:00', 'https_url', '0,1', '0,1,2,3', '', '0', '1', '', '', '', '', '', '1', '1'); +INSERT INTO `function_region_dict` (`dict_id`, `function_id`, `config_district`, `config_region_code`, `config_region_value`, `config_desc`, `is_valid`, `is_maat`, `region_type`, `creator_id`, `create_time`, `editor_id`, `edit_time`, `config_service_type`, `config_expr_type`, `config_match_method`, `config_ip_type`, `config_hex`, `config_multi_keywords`, `config_ip_pattern`, `config_port_pattern`, `config_direction`, `config_protocol`, `config_ip_port_show`, `config_region_sort`, `is_import`) VALUES ('634', '215', 'User-Agent,Cookie,others', '3', 'PXY_CTRL_HTTP_REQ_HDR', 'HTTP请求头域管控配置', '1', '1', '3', NULL, '0000-00-00 00:00:00', NULL, '0000-00-00 00:00:00', '', '0,1', '0,1,2,3', '', '0,1,2', '1', '', '', '', '', '', '2', '1'); +INSERT INTO `function_region_dict` (`dict_id`, `function_id`, `config_district`, `config_region_code`, `config_region_value`, `config_desc`, `is_valid`, `is_maat`, `region_type`, `creator_id`, `create_time`, `editor_id`, `edit_time`, `config_service_type`, `config_expr_type`, `config_match_method`, `config_ip_type`, `config_hex`, `config_multi_keywords`, `config_ip_pattern`, `config_port_pattern`, `config_direction`, `config_protocol`, `config_ip_port_show`, `config_region_sort`, `is_import`) VALUES ('635', '215', 'set-cookie,Content-Type,others', '4', 'PXY_CTRL_HTTP_RES_HDR', 'HTTP应答头域管控配置', '1', '1', '3', NULL, '0000-00-00 00:00:00', NULL, '0000-00-00 00:00:00', '', '0,1', '0,1,2,3', '', '0,1,2', '1', '', '', '', '', '', '3', '1'); +INSERT INTO `function_region_dict` (`dict_id`, `function_id`, `config_district`, `config_region_code`, `config_region_value`, `config_desc`, `is_valid`, `is_maat`, `region_type`, `creator_id`, `create_time`, `editor_id`, `edit_time`, `config_service_type`, `config_expr_type`, `config_match_method`, `config_ip_type`, `config_hex`, `config_multi_keywords`, `config_ip_pattern`, `config_port_pattern`, `config_direction`, `config_protocol`, `config_ip_port_show`, `config_region_sort`, `is_import`) VALUES ('636', '215', '', '5', 'PXY_CTRL_HTTP_REQ_BODY', 'HTTP请求内容管控配置', '1', '1', '2', NULL, '0000-00-00 00:00:00', NULL, '0000-00-00 00:00:00', '', '0,1', '0,1,2,3', '', '0,1,2', '1', '', '', '', '', '', '4', '1'); +INSERT INTO `function_region_dict` (`dict_id`, `function_id`, `config_district`, `config_region_code`, `config_region_value`, `config_desc`, `is_valid`, `is_maat`, `region_type`, `creator_id`, `create_time`, `editor_id`, `edit_time`, `config_service_type`, `config_expr_type`, `config_match_method`, `config_ip_type`, `config_hex`, `config_multi_keywords`, `config_ip_pattern`, `config_port_pattern`, `config_direction`, `config_protocol`, `config_ip_port_show`, `config_region_sort`, `is_import`) VALUES ('637', '215', '', '6', 'PXY_CTRL_HTTP_RES_BODY', 'HTTP应答内容管控配置', '1', '1', '2', NULL, '0000-00-00 00:00:00', NULL, '0000-00-00 00:00:00', '', '0,1', '0,1,2,3', '', '0,1,2', '1', '', '', '', '', '', '5', '1'); +INSERT INTO `function_region_dict` (`dict_id`, `function_id`, `config_district`, `config_region_code`, `config_region_value`, `config_desc`, `is_valid`, `is_maat`, `region_type`, `creator_id`, `create_time`, `editor_id`, `edit_time`, `config_service_type`, `config_expr_type`, `config_match_method`, `config_ip_type`, `config_hex`, `config_multi_keywords`, `config_ip_pattern`, `config_port_pattern`, `config_direction`, `config_protocol`, `config_ip_port_show`, `config_region_sort`, `is_import`) VALUES ('638', '215', '', '1', 'PXY_CTRL_IP', 'HTTP IP管控配置', '1', '1', '1', NULL, '0000-00-00 00:00:00', NULL, '0000-00-00 00:00:00', '', '', '', '4,6', '', '', '1,2,3;1,2,3', '1,2;1,2', '0', '0,6,17', '1,2,3,4', '6', '1'); +INSERT INTO `function_region_dict` (`dict_id`, `function_id`, `config_district`, `config_region_code`, `config_region_value`, `config_desc`, `is_valid`, `is_maat`, `region_type`, `creator_id`, `create_time`, `editor_id`, `edit_time`, `config_service_type`, `config_expr_type`, `config_match_method`, `config_ip_type`, `config_hex`, `config_multi_keywords`, `config_ip_pattern`, `config_port_pattern`, `config_direction`, `config_protocol`, `config_ip_port_show`, `config_region_sort`, `is_import`) VALUES ('639', '215', '', '3', 'PXY_CTRL_SUBSCRIBE_ID', 'proxy SUBSCRIBE字符串配置', '1', '1', '2', NULL, '0000-00-00 00:00:00', NULL, '0000-00-00 00:00:00', 'subscribe_id', '0', '3', '', '0', '0', '', '', '', '', '', '7', '0'); diff --git a/src/main/webapp/WEB-INF/include/excel/importModal.jsp b/src/main/webapp/WEB-INF/include/excel/importModal.jsp index 889dd2d42..23a81603e 100644 --- a/src/main/webapp/WEB-INF/include/excel/importModal.jsp +++ b/src/main/webapp/WEB-INF/include/excel/importModal.jsp @@ -1,11 +1,17 @@ <%@ page contentType="text/html;charset=UTF-8"%> -<%@ include file="/WEB-INF/include/taglib.jsp"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> +