diff --git a/src/main/java/com/nis/domain/configuration/template/HttpsRedirectComplexTemplate.java b/src/main/java/com/nis/domain/configuration/template/HttpsRedirectComplexTemplate.java new file mode 100644 index 000000000..8e6112b85 --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/template/HttpsRedirectComplexTemplate.java @@ -0,0 +1,32 @@ +package com.nis.domain.configuration.template; + +import com.nis.util.excel.ExcelField; + +/** + * EXCEL HTTP(s)重定向 导入模板 + * @author dell + * + */ +public class HttpsRedirectComplexTemplate extends ComplexStringAllTemplate{ + + private String userRegion1;// 重定向应答码 + private String userRegion2;// 重定向URL + + @ExcelField(title="redirect_response_code",dictType="REDIRECT_RESPONSE_CODE",align=2,sort=2) + public String getUserRegion1() { + return userRegion1; + } + + public void setUserRegion1(String userRegion1) { + this.userRegion1 = userRegion1; + } + + @ExcelField(title="redirect_url",align=2,sort=3) + public String getUserRegion2() { + return userRegion2; + } + + public void setUserRegion2(String userRegion2) { + this.userRegion2 = userRegion2; + } +} diff --git a/src/main/java/com/nis/domain/configuration/template/HttpsRedirectIpTemplate.java b/src/main/java/com/nis/domain/configuration/template/HttpsRedirectIpTemplate.java new file mode 100644 index 000000000..3cf44b757 --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/template/HttpsRedirectIpTemplate.java @@ -0,0 +1,32 @@ +package com.nis.domain.configuration.template; + +import com.nis.util.excel.ExcelField; + +/** + * EXCEL HTTP(s)重定向 导入模板 + * @author dell + * + */ +public class HttpsRedirectIpTemplate extends IpAllTemplate{ + + private String userRegion1;// 重定向应答码 + private String userRegion2;// 重定向URL + + @ExcelField(title="redirect_response_code",dictType="REDIRECT_RESPONSE_CODE",align=2,sort=2) + public String getUserRegion1() { + return userRegion1; + } + + public void setUserRegion1(String userRegion1) { + this.userRegion1 = userRegion1; + } + + @ExcelField(title="redirect_url",align=2,sort=3) + public String getUserRegion2() { + return userRegion2; + } + + public void setUserRegion2(String userRegion2) { + this.userRegion2 = userRegion2; + } +} diff --git a/src/main/java/com/nis/domain/configuration/template/HttpsRedirectTemplate.java b/src/main/java/com/nis/domain/configuration/template/HttpsRedirectTemplate.java new file mode 100644 index 000000000..0a2ae6aa0 --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/template/HttpsRedirectTemplate.java @@ -0,0 +1,32 @@ +package com.nis.domain.configuration.template; + +import com.nis.util.excel.ExcelField; + +/** + * EXCEL HTTP(s)重定向 导入模板 + * @author dell + * + */ +public class HttpsRedirectTemplate extends StringAllTemplate{ + + private String userRegion1;// 重定向应答码 + private String userRegion2;// 重定向URL + + @ExcelField(title="redirect_response_code",dictType="REDIRECT_RESPONSE_CODE",align=2,sort=2) + public String getUserRegion1() { + return userRegion1; + } + + public void setUserRegion1(String userRegion1) { + this.userRegion1 = userRegion1; + } + + @ExcelField(title="redirect_url",align=2,sort=3) + public String getUserRegion2() { + return userRegion2; + } + + public void setUserRegion2(String userRegion2) { + this.userRegion2 = userRegion2; + } +} diff --git a/src/main/java/com/nis/domain/configuration/template/HttpsRejectComplexTemplate.java b/src/main/java/com/nis/domain/configuration/template/HttpsRejectComplexTemplate.java new file mode 100644 index 000000000..72f569dda --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/template/HttpsRejectComplexTemplate.java @@ -0,0 +1,33 @@ +package com.nis.domain.configuration.template; + +import com.nis.util.excel.ExcelField; + +/** + * EXCEL HTTP(s)阻断 导入模板 + * @author dell + * + */ +public class HttpsRejectComplexTemplate extends ComplexStringAllTemplate{ + + private String userRegion1;// 应答码 + private String userRegion2;// 响应内容 + + @ExcelField(title="response_code",dictType="RESPONSE_CODE",align=2,sort=2) + public String getUserRegion1() { + return userRegion1; + } + + public void setUserRegion1(String userRegion1) { + this.userRegion1 = userRegion1; + } + + @ExcelField(title="response_content",align=2,sort=3) + public String getUserRegion2() { + return userRegion2; + } + + public void setUserRegion2(String userRegion2) { + this.userRegion2 = userRegion2; + } + +} diff --git a/src/main/java/com/nis/domain/configuration/template/HttpsRejectIpTemplate.java b/src/main/java/com/nis/domain/configuration/template/HttpsRejectIpTemplate.java new file mode 100644 index 000000000..d02510027 --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/template/HttpsRejectIpTemplate.java @@ -0,0 +1,33 @@ +package com.nis.domain.configuration.template; + +import com.nis.util.excel.ExcelField; + +/** + * EXCEL HTTP(s)阻断 导入模板 + * @author dell + * + */ +public class HttpsRejectIpTemplate extends IpAllTemplate{ + + private String userRegion1;// 应答码 + private String userRegion2;// 响应内容 + + @ExcelField(title="response_code",dictType="RESPONSE_CODE",align=2,sort=2) + public String getUserRegion1() { + return userRegion1; + } + + public void setUserRegion1(String userRegion1) { + this.userRegion1 = userRegion1; + } + + @ExcelField(title="response_content",align=2,sort=3) + public String getUserRegion2() { + return userRegion2; + } + + public void setUserRegion2(String userRegion2) { + this.userRegion2 = userRegion2; + } + +} diff --git a/src/main/java/com/nis/domain/configuration/template/HttpsRejectTemplate.java b/src/main/java/com/nis/domain/configuration/template/HttpsRejectTemplate.java new file mode 100644 index 000000000..3cb2ffcc0 --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/template/HttpsRejectTemplate.java @@ -0,0 +1,33 @@ +package com.nis.domain.configuration.template; + +import com.nis.util.excel.ExcelField; + +/** + * EXCEL HTTP(s)阻断 导入模板 + * @author dell + * + */ +public class HttpsRejectTemplate extends StringAllTemplate{ + + private String userRegion1;// 应答码 + private String userRegion2;// 响应内容 + + @ExcelField(title="response_code",dictType="RESPONSE_CODE",align=2,sort=2) + public String getUserRegion1() { + return userRegion1; + } + + public void setUserRegion1(String userRegion1) { + this.userRegion1 = userRegion1; + } + + @ExcelField(title="response_content",align=2,sort=3) + public String getUserRegion2() { + return userRegion2; + } + + public void setUserRegion2(String userRegion2) { + this.userRegion2 = userRegion2; + } + +} diff --git a/src/main/java/com/nis/domain/configuration/template/HttpsReplaceComplexTemplate.java b/src/main/java/com/nis/domain/configuration/template/HttpsReplaceComplexTemplate.java new file mode 100644 index 000000000..18a39ed14 --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/template/HttpsReplaceComplexTemplate.java @@ -0,0 +1,42 @@ +package com.nis.domain.configuration.template; + +import com.nis.util.excel.ExcelField; + +/** + * EXCEL HTTP(s)替换 导入模板 + * @author dell + * + */ +public class HttpsReplaceComplexTemplate extends ComplexStringAllTemplate{ + + private String userRegion1;// 搜索区域 + private String userRegion2;// 发现内容 + private String userRegion3;// 替换内容 + + @ExcelField(title="replace_zone",dictType="CONTROL_REPLACE_ZONE",align=2,sort=2) + public String getUserRegion1() { + return userRegion1; + } + + public void setUserRegion1(String userRegion1) { + this.userRegion1 = userRegion1; + } + + @ExcelField(title="replaced_content",align=2,sort=3) + public String getUserRegion2() { + return userRegion2; + } + + public void setUserRegion2(String userRegion2) { + this.userRegion2 = userRegion2; + } + + @ExcelField(title="replace_content",align=2,sort=4) + public String getUserRegion3() { + return userRegion3; + } + + public void setUserRegion3(String userRegion3) { + this.userRegion3 = userRegion3; + } +} diff --git a/src/main/java/com/nis/domain/configuration/template/HttpsReplaceIpTemplate.java b/src/main/java/com/nis/domain/configuration/template/HttpsReplaceIpTemplate.java new file mode 100644 index 000000000..c7a57075b --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/template/HttpsReplaceIpTemplate.java @@ -0,0 +1,42 @@ +package com.nis.domain.configuration.template; + +import com.nis.util.excel.ExcelField; + +/** + * EXCEL HTTP(s)替换 导入模板 + * @author dell + * + */ +public class HttpsReplaceIpTemplate extends IpAllTemplate{ + + private String userRegion1;// 搜索区域 + private String userRegion2;// 发现内容 + private String userRegion3;// 替换内容 + + @ExcelField(title="replace_zone",dictType="CONTROL_REPLACE_ZONE",align=2,sort=2) + public String getUserRegion1() { + return userRegion1; + } + + public void setUserRegion1(String userRegion1) { + this.userRegion1 = userRegion1; + } + + @ExcelField(title="replaced_content",align=2,sort=3) + public String getUserRegion2() { + return userRegion2; + } + + public void setUserRegion2(String userRegion2) { + this.userRegion2 = userRegion2; + } + + @ExcelField(title="replace_content",align=2,sort=4) + public String getUserRegion3() { + return userRegion3; + } + + public void setUserRegion3(String userRegion3) { + this.userRegion3 = userRegion3; + } +} diff --git a/src/main/java/com/nis/domain/configuration/template/HttpsReplaceTemplate.java b/src/main/java/com/nis/domain/configuration/template/HttpsReplaceTemplate.java new file mode 100644 index 000000000..2a40ee17b --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/template/HttpsReplaceTemplate.java @@ -0,0 +1,42 @@ +package com.nis.domain.configuration.template; + +import com.nis.util.excel.ExcelField; + +/** + * EXCEL HTTP(s)替换 导入模板 + * @author dell + * + */ +public class HttpsReplaceTemplate extends StringAllTemplate{ + + private String userRegion1;// 搜索区域 + private String userRegion2;// 发现内容 + private String userRegion3;// 替换内容 + + @ExcelField(title="replace_zone",dictType="CONTROL_REPLACE_ZONE",align=2,sort=2) + public String getUserRegion1() { + return userRegion1; + } + + public void setUserRegion1(String userRegion1) { + this.userRegion1 = userRegion1; + } + + @ExcelField(title="replaced_content",align=2,sort=3) + public String getUserRegion2() { + return userRegion2; + } + + public void setUserRegion2(String userRegion2) { + this.userRegion2 = userRegion2; + } + + @ExcelField(title="replace_content",align=2,sort=4) + public String getUserRegion3() { + return userRegion3; + } + + public void setUserRegion3(String userRegion3) { + this.userRegion3 = userRegion3; + } +} diff --git a/src/main/java/com/nis/util/excel/ExportExcel.java b/src/main/java/com/nis/util/excel/ExportExcel.java index 098c7ad77..ac9216b9e 100644 --- a/src/main/java/com/nis/util/excel/ExportExcel.java +++ b/src/main/java/com/nis/util/excel/ExportExcel.java @@ -228,6 +228,73 @@ public class ExportExcel { index++; }*/ } + /*** HTTP(s)重定向 重定向应答码 ***/ + if("redirect_response_code".equals(headerStr)){ + commentStr=""; + List dict=DictUtils.getDictList("REDIRECT_RESPONSE_CODE"); + if(dict !=null && dict.size()>0){ + for (SysDataDictionaryItem sysDataDictionaryItem : dict) { + commentStr=commentStr+sysDataDictionaryItem.getItemCode()+"("+msgProp.getProperty(sysDataDictionaryItem.getItemValue(),sysDataDictionaryItem.getItemValue())+")\n"; + index++; + } + defaultValue = "1"; + } + commentStr=msgProp.getProperty("select")+":\n"+commentStr; + index++; + commentStr=commentStr+"\n"+msgProp.getProperty("rule_desc_tip")+":\n"; + index++; + if(!StringUtil.isEmpty(defaultValue)){ + //1、默认值说明 + commentStr=commentStr+"▶"+msgProp.getProperty("default_value")+":"+defaultValue+"\n"; + index++; + index++; + } + } + /*** HTTP(s)阻断 应答码 ***/ + if("response_code".equals(headerStr)){ + commentStr=""; + List dict=DictUtils.getDictList("RESPONSE_CODE"); + if(dict !=null && dict.size()>0){ + for (SysDataDictionaryItem sysDataDictionaryItem : dict) { + commentStr=commentStr+sysDataDictionaryItem.getItemCode()+"("+msgProp.getProperty(sysDataDictionaryItem.getItemValue(),sysDataDictionaryItem.getItemValue())+")\n"; + index++; + } + defaultValue = "404"; + } + commentStr=msgProp.getProperty("select")+":\n"+commentStr; + index++; + commentStr=commentStr+"\n"+msgProp.getProperty("rule_desc_tip")+":\n"; + index++; + if(!StringUtil.isEmpty(defaultValue)){ + //1、默认值说明 + commentStr=commentStr+"▶"+msgProp.getProperty("default_value")+":"+defaultValue+"\n"; + index++; + index++; + } + } + /*** HTTP(s)替换 搜索区域 ***/ + if(("replace_zone".equals(headerStr)) && (region.getFunctionId().equals(209))){ + commentStr=""; + List dict=DictUtils.getDictList("CONTROL_REPLACE_ZONE"); + if(dict !=null && dict.size()>0){ + for (SysDataDictionaryItem sysDataDictionaryItem : dict) { + commentStr=commentStr+sysDataDictionaryItem.getItemCode()+"("+msgProp.getProperty(sysDataDictionaryItem.getItemValue(),sysDataDictionaryItem.getItemValue())+")\n"; + index++; + } + defaultValue = "http_resp_body"; + } + commentStr=msgProp.getProperty("select")+":\n"+commentStr; + index++; + commentStr=commentStr+"\n"+msgProp.getProperty("rule_desc_tip")+":\n"; + index++; + if(!StringUtil.isEmpty(defaultValue)){ + //1、默认值说明 + commentStr=commentStr+"▶"+msgProp.getProperty("default_value")+":"+defaultValue+"\n"; + index++; + index++; + } + } + /***发现内容***/ if("replaced_content".equals(headerStr)){ commentStr=commentStr+msgProp.getProperty("rule_desc_tip")+":\n"; @@ -245,7 +312,7 @@ public class ExportExcel { index++; } //intercept replace replace_zone - if("replace_zone".equals(headerStr)){ + if("replace_zone".equals(headerStr) && (region.getFunctionId().equals(212))){ commentStr=""; List interceptReplaceZone=DictUtils.getDictList("INTERCEPT_REPLACE_ZONE"); if(interceptReplaceZone !=null && interceptReplaceZone.size()>0){ 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 d9469a734..73234b851 100644 --- a/src/main/java/com/nis/util/excel/thread/CheckComplexStringFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckComplexStringFormatThread.java @@ -18,6 +18,7 @@ import com.beust.jcommander.internal.Lists; import com.beust.jcommander.internal.Sets; import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionServiceDict; +import com.nis.domain.SysDataDictionaryItem; import com.nis.domain.configuration.ComplexkeywordCfg; import com.nis.domain.configuration.DnsResStrategy; import com.nis.util.Constants; @@ -100,6 +101,72 @@ public class CheckComplexStringFormatThread implements Callable{ } } } + // 代理HTTP(s)阻断 + if (regionDict.getFunctionId().equals(207)) { + String userRegion1 = baseStringCfg.getUserRegion1();// 应答码 + if (StringUtils.isNotBlank(userRegion1)) { + List dicts = DictUtils.getDictList("RESPONSE_CODE"); + boolean has = false; + for (SysDataDictionaryItem dict : dicts) { + if (dict.getItemCode().equals(userRegion1)) { + has = true; + break; + } + } + if (!has) { + errInfo.append(String.format(prop.getProperty("is_incorrect"), + prop.getProperty("response_code") + " ") + ";"); + } + } + + } + // 代理 HTTP(s)重定向 + if (regionDict.getFunctionId().equals(208)) { + String userRegion1 = baseStringCfg.getUserRegion1();// 重定向应答码 + String userRegion2 = baseStringCfg.getUserRegion2();// 重定向URL + if (StringUtils.isNotBlank(userRegion1)) { + List dicts = DictUtils.getDictList("REDIRECT_RESPONSE_CODE"); + boolean has = false; + for (SysDataDictionaryItem dict : dicts) { + if (dict.getItemCode().equals(userRegion1)) { + has = true; + break; + } + } + if (!has) { + errInfo.append(String.format(prop.getProperty("is_incorrect"), + prop.getProperty("redirect_response_code") + " ") + ";"); + } + } + if(StringUtils.isNotBlank(userRegion2)){ + Pattern pat = Pattern.compile("^[hH][tT][tT][pP]([sS]?):\\/\\/(\\S+\\.)+\\S{2,}$"); + boolean bl = pat.matcher(userRegion2).matches(); + if (!bl) { + errInfo.append(String.format(prop.getProperty("is_in_wrong_format"), + prop.getProperty("redirect_url") + " '" + userRegion2 + "' ") + ";"); + } + } + } + // 代理HTTP(s)替换 + if (regionDict.getFunctionId().equals(209)) { + String userRegion1 = baseStringCfg.getUserRegion1();// 搜索区域 + if (StringUtils.isNotBlank(userRegion1)) { + List dicts = DictUtils.getDictList("CONTROL_REPLACE_ZONE"); + boolean has = false; + for (SysDataDictionaryItem dict : dicts) { + if (dict.getItemCode().equals(userRegion1)) { + has = true; + break; + } + } + if (!has) { + errInfo.append(String.format(prop.getProperty("is_incorrect"), + prop.getProperty("replace_zone") + " ") + ";"); + } + } + + } + String keyword = baseStringCfg.getCfgKeywords(); String district = baseStringCfg.getDistrict(); if (StringUtils.isBlank(keyword)) { @@ -282,6 +349,14 @@ public class CheckComplexStringFormatThread implements Callable{ String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive")) + ";"); } + // 关键字十六进制校验 + if (hexP.indexOf("1") != -1 && isHex.intValue() == 1) { + boolean bl = Pattern.compile("^([0-9|a-f|A-F]*)$").matcher(keyword).matches(); + if(!bl) { + errInfo.append( + prop.getProperty("key_word") + " '" + keyword + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";"); + } + } } isHex = baseStringCfg.getIsHex(); isCaseInsenstive = baseStringCfg.getIsCaseInsenstive(); 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 be6b0fb91..8b70610c6 100644 --- a/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java @@ -294,6 +294,72 @@ public class CheckIpFormatThread implements Callable{ baseIpCfg.setAntiddosProtocol(""); } } + // 代理HTTP(s)阻断 + if (regionDict.getFunctionId().equals(207)) { + String userRegion1 = baseIpCfg.getUserRegion1();// 应答码 + if (StringUtils.isNotBlank(userRegion1)) { + List dicts = DictUtils.getDictList("RESPONSE_CODE"); + boolean has = false; + for (SysDataDictionaryItem dict : dicts) { + if (dict.getItemCode().equals(userRegion1)) { + has = true; + break; + } + } + if (!has) { + errInfo.append(String.format(prop.getProperty("is_incorrect"), + prop.getProperty("response_code") + " ") + ";"); + } + } + + } + // 代理 HTTP(s)重定向 + if (regionDict.getFunctionId().equals(208)) { + String userRegion1 = baseIpCfg.getUserRegion1();// 重定向应答码 + String userRegion2 = baseIpCfg.getUserRegion2();// 重定向URL + if (StringUtils.isNotBlank(userRegion1)) { + List dicts = DictUtils.getDictList("REDIRECT_RESPONSE_CODE"); + boolean has = false; + for (SysDataDictionaryItem dict : dicts) { + if (dict.getItemCode().equals(userRegion1)) { + has = true; + break; + } + } + if (!has) { + errInfo.append(String.format(prop.getProperty("is_incorrect"), + prop.getProperty("redirect_response_code") + " ") + ";"); + } + } + if(StringUtils.isNotBlank(userRegion2)){ + Pattern pat = Pattern.compile("^[hH][tT][tT][pP]([sS]?):\\/\\/(\\S+\\.)+\\S{2,}$"); + boolean bl = pat.matcher(userRegion2).matches(); + if (!bl) { + errInfo.append(String.format(prop.getProperty("is_in_wrong_format"), + prop.getProperty("redirect_url") + " '" + userRegion2 + "' ") + ";"); + } + } + } + // 代理HTTP(s)替换 + if (regionDict.getFunctionId().equals(209)) { + String userRegion1 = baseIpCfg.getUserRegion1();// 搜索区域 + if (StringUtils.isNotBlank(userRegion1)) { + List dicts = DictUtils.getDictList("CONTROL_REPLACE_ZONE"); + boolean has = false; + for (SysDataDictionaryItem dict : dicts) { + if (dict.getItemCode().equals(userRegion1)) { + has = true; + break; + } + } + if (!has) { + errInfo.append(String.format(prop.getProperty("is_incorrect"), + prop.getProperty("replace_zone") + " ") + ";"); + } + } + + } + if (regionDict.getRegionType().equals(1)) { boolean srcIpEmpty = false; boolean destIpEmpty = false; 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 e50768a3c..d3c8819c8 100644 --- a/src/main/java/com/nis/util/excel/thread/CheckStringFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckStringFormatThread.java @@ -139,6 +139,72 @@ public class CheckStringFormatThread implements Callable{ } } } + // 代理HTTP(s)阻断 + if (regionDict.getFunctionId().equals(207)) { + String userRegion1 = baseStringCfg.getUserRegion1();// 应答码 + if (StringUtils.isNotBlank(userRegion1)) { + List dicts = DictUtils.getDictList("RESPONSE_CODE"); + boolean has = false; + for (SysDataDictionaryItem dict : dicts) { + if (dict.getItemCode().equals(userRegion1)) { + has = true; + break; + } + } + if (!has) { + errInfo.append(String.format(prop.getProperty("is_incorrect"), + prop.getProperty("response_code") + " ") + ";"); + } + } + + } + // 代理 HTTP(s)重定向 + if (regionDict.getFunctionId().equals(208)) { + String userRegion1 = baseStringCfg.getUserRegion1();// 重定向应答码 + String userRegion2 = baseStringCfg.getUserRegion2();// 重定向URL + if (StringUtils.isNotBlank(userRegion1)) { + List dicts = DictUtils.getDictList("REDIRECT_RESPONSE_CODE"); + boolean has = false; + for (SysDataDictionaryItem dict : dicts) { + if (dict.getItemCode().equals(userRegion1)) { + has = true; + break; + } + } + if (!has) { + errInfo.append(String.format(prop.getProperty("is_incorrect"), + prop.getProperty("redirect_response_code") + " ") + ";"); + } + } + if(StringUtils.isNotBlank(userRegion2)){ + Pattern pat = Pattern.compile("^[hH][tT][tT][pP]([sS]?):\\/\\/(\\S+\\.)+\\S{2,}$"); + boolean bl = pat.matcher(userRegion2).matches(); + if (!bl) { + errInfo.append(String.format(prop.getProperty("is_in_wrong_format"), + prop.getProperty("redirect_url") + " '" + userRegion2 + "' ") + ";"); + } + } + } + // 代理HTTP(s)替换 + if (regionDict.getFunctionId().equals(209)) { + String userRegion1 = baseStringCfg.getUserRegion1();// 搜索区域 + if (StringUtils.isNotBlank(userRegion1)) { + List dicts = DictUtils.getDictList("CONTROL_REPLACE_ZONE"); + boolean has = false; + for (SysDataDictionaryItem dict : dicts) { + if (dict.getItemCode().equals(userRegion1)) { + has = true; + break; + } + } + if (!has) { + errInfo.append(String.format(prop.getProperty("is_incorrect"), + prop.getProperty("replace_zone") + " ") + ";"); + } + } + + } + String keyword = baseStringCfg.getCfgKeywords(); if (!regionDict.getFunctionId().equals(403) && !regionDict.getFunctionId().equals(201)) {// 201域名拦截 if (StringUtils.isBlank(keyword)) { @@ -324,6 +390,14 @@ public class CheckStringFormatThread implements Callable{ String.format(prop.getProperty("is_incorrect"), prop.getProperty("is_case_insenstive")) + ";"); } + // 十六进制 关键字校验 + if (hexP.indexOf("1") != -1 && isHex.intValue() == 1) { + boolean bl = Pattern.compile("^([0-9|a-f|A-F]*)$").matcher(keyword).matches(); + if(!bl) { + errInfo.append( + prop.getProperty("key_word") + " '" + keyword + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";"); + } + } } isHex = baseStringCfg.getIsHex(); isCaseInsenstive = baseStringCfg.getIsCaseInsenstive(); diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index cbe2ca96c..f9449c6ad 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -85,6 +85,15 @@ import com.nis.domain.configuration.template.DnsResStrategyTemplate; import com.nis.domain.configuration.template.DomainInterceptMonitTemplate; import com.nis.domain.configuration.template.DomainInterceptRateLimitTemplate; import com.nis.domain.configuration.template.DomainInterceptTemplate; +import com.nis.domain.configuration.template.HttpsRedirectComplexTemplate; +import com.nis.domain.configuration.template.HttpsRedirectIpTemplate; +import com.nis.domain.configuration.template.HttpsRedirectTemplate; +import com.nis.domain.configuration.template.HttpsRejectComplexTemplate; +import com.nis.domain.configuration.template.HttpsRejectIpTemplate; +import com.nis.domain.configuration.template.HttpsRejectTemplate; +import com.nis.domain.configuration.template.HttpsReplaceComplexTemplate; +import com.nis.domain.configuration.template.HttpsReplaceIpTemplate; +import com.nis.domain.configuration.template.HttpsReplaceTemplate; import com.nis.domain.configuration.template.IpAllTemplate; import com.nis.domain.configuration.template.IpCfgTemplate; import com.nis.domain.configuration.template.IpPayloadTemplate; @@ -1279,9 +1288,18 @@ public class BaseController { AsnCacheUtils.init(true); BlockingQueue list = ei.getDataList(AsnIpTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, asnNoMaps, list); - } else if (regionDict.getFunctionId().equals(301)) {// DDOS IP + }else if (regionDict.getFunctionId().equals(301)) {// DDOS IP BlockingQueue list = ei.getDataList(DdosIpTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null, list); + }else if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断 + BlockingQueue list = ei.getDataList(HttpsRejectIpTemplate.class ); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null, list); + }else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向 + BlockingQueue list = ei.getDataList(HttpsRedirectIpTemplate.class ); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null, list); + }else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换 + BlockingQueue list = ei.getDataList(HttpsReplaceIpTemplate.class ); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null, list); } else { BlockingQueue list = ei.getDataList(IpAllTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null, list); @@ -1307,6 +1325,15 @@ public class BaseController { BlockingQueue list = ei.getDataList(DomainInterceptTemplate.class); stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list); } + }else if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断 + BlockingQueue list = ei.getDataList(HttpsRejectTemplate.class); + stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list); + }else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向 + BlockingQueue list = ei.getDataList(HttpsRedirectTemplate.class); + stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list); + }else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换 + 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); @@ -1317,6 +1344,15 @@ public class BaseController { BlockingQueue list = ei.getDataList(DnsComplexStringTemplate.class ); complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list); + } else if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断 + BlockingQueue list = ei.getDataList(HttpsRejectComplexTemplate.class); + complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list); + } else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向 + BlockingQueue list = ei.getDataList(HttpsRedirectComplexTemplate.class); + complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list); + } else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换 + BlockingQueue list = ei.getDataList(HttpsReplaceComplexTemplate.class); + complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list); } else { BlockingQueue list = ei.getDataList(ComplexStringAllTemplate.class ); @@ -1944,8 +1980,14 @@ public class BaseController { ei.loadInitParams(P2pIpTemplate.class, msgProp, regionDict, serviceDict); } else if (regionDict.getFunctionId().equals(600)) {// ASN IP ei.loadInitParams(AsnIpTemplate.class, msgProp, regionDict, serviceDict); - } else if (regionDict.getFunctionId().equals(301)) {// DDOS IP + } else if (regionDict.getFunctionId().equals(301)) {// DDOS IP ei.loadInitParams(DdosIpTemplate.class, msgProp, regionDict, serviceDict); + } else if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断 + ei.loadInitParams(HttpsRejectIpTemplate.class, this.getMsgProp(), regionDict, serviceDict); + } else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向 + 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 { ei.loadInitParams(IpAllTemplate.class, msgProp, regionDict, serviceDict); } @@ -1963,13 +2005,25 @@ public class BaseController { }else{// 白名单 ei.loadInitParams(DomainInterceptTemplate.class, msgProp, regionDict, serviceDict); } - } else { + }else if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断 + ei.loadInitParams(HttpsRejectTemplate.class, this.getMsgProp(), regionDict, serviceDict); + }else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向 + 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 { ei.loadInitParams(StringAllTemplate.class, msgProp, regionDict, serviceDict); } } else if (regionDict.getRegionType().equals(3)) {// 增强字符串类 if (regionDict.getFunctionId().equals(7)&&serviceDict!=null&&serviceDict.getAction().intValue()==16) { ei.loadInitParams(DnsComplexStringTemplate.class, msgProp, regionDict, serviceDict); + }else if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断 + ei.loadInitParams(HttpsRejectComplexTemplate.class, this.getMsgProp(), regionDict, serviceDict); + }else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向 + 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 { ei.loadInitParams(ComplexStringAllTemplate.class, msgProp, regionDict, serviceDict); } 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 97ac790a2..34773f3a7 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 @@ -41,6 +41,15 @@ import com.nis.domain.configuration.template.IpAllTemplate; import com.nis.domain.configuration.template.DomainInterceptMonitTemplate; import com.nis.domain.configuration.template.DomainInterceptRateLimitTemplate; import com.nis.domain.configuration.template.DomainInterceptTemplate; +import com.nis.domain.configuration.template.HttpsRedirectComplexTemplate; +import com.nis.domain.configuration.template.HttpsRedirectIpTemplate; +import com.nis.domain.configuration.template.HttpsRedirectTemplate; +import com.nis.domain.configuration.template.HttpsRejectComplexTemplate; +import com.nis.domain.configuration.template.HttpsRejectIpTemplate; +import com.nis.domain.configuration.template.HttpsRejectTemplate; +import com.nis.domain.configuration.template.HttpsReplaceComplexTemplate; +import com.nis.domain.configuration.template.HttpsReplaceIpTemplate; +import com.nis.domain.configuration.template.HttpsReplaceTemplate; import com.nis.domain.configuration.template.IpPayloadTemplate; import com.nis.domain.configuration.template.IpRateLimitTemplate; import com.nis.domain.configuration.template.IpWhitelistTemplate; @@ -350,6 +359,21 @@ public class IpController extends BaseController{ ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, SnatTemplate.class, 2); excel.setDataList(pro,classList,null). write(request,response, fileName).dispose(); + }else if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断 + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsRejectIpTemplate.class, 2); + excel.setDataList(this.getMsgProp(),classList,null). + write(request,response, fileName).dispose(); + }else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向 + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsRedirectIpTemplate.class, 2); + excel.setDataList(this.getMsgProp(),classList,null). + write(request,response, fileName).dispose(); + }else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换 + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsReplaceIpTemplate.class, 2); + excel.setDataList(this.getMsgProp(),classList,null). + write(request,response, fileName).dispose(); }else{ List classList=new ArrayList(); ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, IpAllTemplate.class, 2); @@ -386,6 +410,21 @@ public class IpController extends BaseController{ excel.setDataList(pro,classList,null). write(request,response, fileName).dispose(); } + }else if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断 + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsRejectTemplate.class, 2); + excel.setDataList(this.getMsgProp(),classList,null). + write(request,response, fileName).dispose(); + }else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向 + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsRedirectTemplate.class, 2); + excel.setDataList(this.getMsgProp(),classList,null). + write(request,response, fileName).dispose(); + }else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换 + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsReplaceTemplate.class, 2); + excel.setDataList(this.getMsgProp(),classList,null). + write(request,response, fileName).dispose(); }else{ List classList=new ArrayList(); ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, StringAllTemplate.class, 2); @@ -401,6 +440,21 @@ public class IpController extends BaseController{ ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, DnsComplexStringTemplate.class, 2); excel.setDataList(pro,classList,null). write(request,response, fileName).dispose(); + }else if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断 + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsRejectComplexTemplate.class, 2); + excel.setDataList(this.getMsgProp(),classList,null). + write(request,response, fileName).dispose(); + }else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向 + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsRedirectComplexTemplate.class, 2); + excel.setDataList(this.getMsgProp(),classList,null). + write(request,response, fileName).dispose(); + }else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换 + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, HttpsReplaceComplexTemplate.class, 2); + excel.setDataList(this.getMsgProp(),classList,null). + write(request,response, fileName).dispose(); }else{ List classList=new ArrayList(); ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, ComplexStringAllTemplate.class, 2); diff --git a/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java b/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java index 1567bf284..7dd206a95 100644 --- a/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java +++ b/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java @@ -52,7 +52,7 @@ import jersey.repackaged.com.google.common.collect.Lists; @RequestMapping("${adminPath}/proxy/control/httpRedirect") public class HttpRedirectPolicyController extends BaseController { @RequestMapping(value = { "httpRedirectList", "httpBlockList", "httpReplaceList", "httpMonitList", - "httpWhitelistList" }) + "httpWhitelistList", ""}) public String list(Model model, HttpServletRequest request, HttpServletResponse response, @ModelAttribute("cfg") CfgIndexInfo cfg) { Page searchPage = new Page(request, response, "a"); diff --git a/src/main/java/com/nis/web/service/BaseService.java b/src/main/java/com/nis/web/service/BaseService.java index e3fdc73d2..1a9e2ab7b 100644 --- a/src/main/java/com/nis/web/service/BaseService.java +++ b/src/main/java/com/nis/web/service/BaseService.java @@ -1690,6 +1690,19 @@ public abstract class BaseService { else if("subscribe_id".equals(regionDict.getConfigServiceType())){ this.saveStringCfgBatch(regionDict,serviceDict,listPage, "ntc_subscribe_id_cfg",send); } + // 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){ + 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){ + this.saveStringCfgBatch(regionDict,serviceDict,listPage, "http_body_cfg",send); + } }else if("ComplexkeywordCfg".equals(type)) { List listPage = (List) list; // DNS @@ -1716,6 +1729,17 @@ public abstract class BaseService { if(regionDict.getDictId().intValue()==63) { // appCfgService.saveAppHttpCfg(listPage); this.saveComplexkeywordCfgBatch(regionDict,serviceDict,listPage, AppHttpCfg.getTablename(),send); + }else + // HTTP(s)请求头域 + if(regionDict.getDictId().intValue()==98 || regionDict.getDictId().intValue()==80 || + regionDict.getDictId().intValue()==86 || regionDict.getDictId().intValue()==92 || + regionDict.getDictId().intValue()==100) { + 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) { + this.saveComplexkeywordCfgBatch(regionDict,serviceDict,listPage, "http_res_head_cfg",send); } }else if("DnsResStrategy".equals(type)) { List listPage = (List) list; diff --git a/src/main/resources/messages/message_en.properties b/src/main/resources/messages/message_en.properties index d3d7f6a34..e030d4a34 100644 --- a/src/main/resources/messages/message_en.properties +++ b/src/main/resources/messages/message_en.properties @@ -1430,4 +1430,5 @@ agent_count=AGENT letter_num=LETTER config_num=CONFIG monitor_num=MONITOR -control_num=CONTROL \ No newline at end of file +control_num=CONTROL +contains_non_hex_char=Contains non-hexadecimal characters \ 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 90655e93d..404b4a793 100644 --- a/src/main/resources/messages/message_ru.properties +++ b/src/main/resources/messages/message_ru.properties @@ -1419,4 +1419,5 @@ l3_header_error=Only four attribute values are allowed to be entered at most IP_HEADER=IP Header ICMP_HEADER=ICMP Header offset_expression=Offset Expression -cfg_custom=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u0421\u0442\u043E\u043B\u0431\u0446\u044B \ No newline at end of file +cfg_custom=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u0421\u0442\u043E\u043B\u0431\u0446\u044B +contains_non_hex_char=Contains non-hexadecimal characters \ 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 daed5530d..2acc0c4b5 100644 --- a/src/main/resources/messages/message_zh_CN.properties +++ b/src/main/resources/messages/message_zh_CN.properties @@ -1430,4 +1430,5 @@ agent_count=\u4ee3\u7406\u6b21\u6570 letter_num=\u6765\u51fd\u4ef6\u6570 config_num=\u914d\u7f6e\u603b\u6570 monitor_num=\u76d1\u6d4b\u6570\u91cf -control_num=\u7ba1\u63a7\u6570\u91cf \ No newline at end of file +control_num=\u7ba1\u63a7\u6570\u91cf +contains_non_hex_char=\u5305\u542B\u975E\u5341\u516D\u8FDB\u5236\u5B57\u7B26 \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectList.jsp b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectList.jsp index 2202d784d..d03b53a7c 100644 --- a/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectList.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectList.jsp @@ -286,6 +286,23 @@ onClick="javascript:window.location='${ctx}/proxy/control/httpRedirect/form?functionId=${cfg.functionId}'"> + + + + + + + + + + + + + + + <%--
- + + +<%@include file="/WEB-INF/include/excel/importModal.jsp" %> \ No newline at end of file