diff --git a/src/main/java/com/nis/domain/configuration/template/BlackListIPTemplate.java b/src/main/java/com/nis/domain/configuration/template/BlackListIPTemplate.java
new file mode 100644
index 000000000..23fa2cc70
--- /dev/null
+++ b/src/main/java/com/nis/domain/configuration/template/BlackListIPTemplate.java
@@ -0,0 +1,14 @@
+package com.nis.domain.configuration.template;
+
+import com.nis.util.excel.ExcelField;
+
+public class BlackListIPTemplate extends IpAllTemplate {
+ private Integer doBlackList;
+ @ExcelField(title="doBlacklist",align=2,sort=2)
+ public Integer getDoBlackList() {
+ return doBlackList;
+ }
+ public void setDoBlackList(Integer doBlackList) {
+ this.doBlackList = doBlackList;
+ }
+}
diff --git a/src/main/java/com/nis/domain/configuration/template/BlackListStringTemplate.java b/src/main/java/com/nis/domain/configuration/template/BlackListStringTemplate.java
new file mode 100644
index 000000000..b1c35ae9c
--- /dev/null
+++ b/src/main/java/com/nis/domain/configuration/template/BlackListStringTemplate.java
@@ -0,0 +1,16 @@
+package com.nis.domain.configuration.template;
+
+import com.nis.util.excel.ExcelField;
+
+public class BlackListStringTemplate extends StringAllTemplate {
+ private Integer doBlackList;
+ @ExcelField(title="doBlacklist",align=2,sort=2)
+ public Integer getDoBlackList() {
+ return doBlackList;
+ }
+
+ public void setDoBlackList(Integer doBlackList) {
+ this.doBlackList = doBlackList;
+ }
+
+}
diff --git a/src/main/java/com/nis/domain/configuration/template/DnsStringTemplate.java b/src/main/java/com/nis/domain/configuration/template/DnsStringTemplate.java
new file mode 100644
index 000000000..aed034547
--- /dev/null
+++ b/src/main/java/com/nis/domain/configuration/template/DnsStringTemplate.java
@@ -0,0 +1,23 @@
+package com.nis.domain.configuration.template;
+
+import com.nis.util.excel.ExcelField;
+
+public class DnsStringTemplate extends StringAllTemplate {
+ /**
+ * @Fields serialVersionUID:TODO(用一句话描述这个变量表示什么)
+ *
+ * @since 1.0.0
+ */
+
+
+ private Integer dnsStrategyId;
+
+ @ExcelField(title="policy_name",align=2,sort=3)
+ public Integer getDnsStrategyId() {
+ return dnsStrategyId;
+ }
+ public void setDnsStrategyId(Integer dnsStrategyId) {
+ this.dnsStrategyId = dnsStrategyId;
+ }
+
+}
diff --git a/src/main/java/com/nis/domain/configuration/template/IpAllTemplate.java b/src/main/java/com/nis/domain/configuration/template/IpAllTemplate.java
index 860577947..66e4263f2 100644
--- a/src/main/java/com/nis/domain/configuration/template/IpAllTemplate.java
+++ b/src/main/java/com/nis/domain/configuration/template/IpAllTemplate.java
@@ -8,7 +8,6 @@
*/
package com.nis.domain.configuration.template;
-import com.google.gson.JsonObject;
import com.nis.util.excel.ExcelField;
/**
diff --git a/src/main/java/com/nis/util/excel/ExportExcel.java b/src/main/java/com/nis/util/excel/ExportExcel.java
index 78e925289..d8d716d5d 100644
--- a/src/main/java/com/nis/util/excel/ExportExcel.java
+++ b/src/main/java/com/nis/util/excel/ExportExcel.java
@@ -536,6 +536,29 @@ public class ExportExcel {
index++;
}
}
+ //doBlackList
+ if("doBlacklist".equals(headerStr)) {
+ commentStr="";
+ List dict=DictUtils.getDictList("DO_BLACKLIST");
+ if(dict !=null && dict.size()>0){
+ for (SysDataDictionaryItem sysDataDictionaryItem : dict) {
+ String itemCode = sysDataDictionaryItem.getItemCode();
+ commentStr=commentStr+itemCode+"("+msgProp.getProperty(sysDataDictionaryItem.getItemValue(),sysDataDictionaryItem.getItemValue())+")\n";
+ index++;
+ }
+ defaultValue = String.valueOf(Constants.MAAT_CFG_DOLOG_DOBLACKLIST_DEFAULT);
+ }
+ 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++;
+ }
+ }
/** Ip Spoofing **/
if("spoofing".equals(headerStr) && (region.getFunctionId().equals(214))){
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 7bd398430..974b692b8 100644
--- a/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java
+++ b/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java
@@ -129,7 +129,7 @@ public class CheckIpFormatThread implements Callable{
}
// doLog属性检验
this.validDoLog(baseIpCfg,errInfo);
-
+ this.validDoBlackList(baseIpCfg, errInfo);
// 特殊字段验证
// packet ip ratelimit
if (serviceDict!=null&&serviceDict.getFunctionId().intValue() == 5 && serviceDict.getAction().intValue() == 64) {
@@ -1229,7 +1229,32 @@ public class CheckIpFormatThread implements Callable{
}
}
-
+ /**
+ * doBlackList属性校验
+ * @param baseStringCfg
+ * @param errInfo
+ */
+ public void validDoBlackList(IpPortCfg baseIpCfg, StringBuffer errInfo) {
+ if(regionDict.getFunctionId().equals(34)&&serviceDict.getAction().equals(16)) {
+ List dict=DictUtils.getDictList("DO_BLACKLIST");
+ if(baseIpCfg.getDoBlackList()==null) {
+ baseIpCfg.setDoBlackList(Constants.MAAT_CFG_DOLOG_DOBLACKLIST_DEFAULT);
+ }
+ String dobalcklistVals=new String();
+ if(dict !=null && dict.size()>0){
+ for (SysDataDictionaryItem sysDataDictionaryItem : dict) {
+ String itemCode = sysDataDictionaryItem.getItemCode();
+ dobalcklistVals+=itemCode+",";
+ }
+ }
+ Integer doBlackList = baseIpCfg.getDoBlackList();
+ if(!dobalcklistVals.contains(doBlackList+"")) {
+ errInfo.append(
+ String.format(prop.getProperty("is_incorrect"), prop.getProperty("do_blacklist"))
+ + ";");
+ }
+ }
+ }
/**
* 根据位运算把 byte[] -> int
*
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 2be4d90a0..e1abb1f06 100644
--- a/src/main/java/com/nis/util/excel/thread/CheckStringFormatThread.java
+++ b/src/main/java/com/nis/util/excel/thread/CheckStringFormatThread.java
@@ -20,7 +20,6 @@ import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.SysDataDictionaryItem;
import com.nis.domain.configuration.BaseStringCfg;
-import com.nis.domain.configuration.IpPortCfg;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
@@ -111,7 +110,8 @@ public class CheckStringFormatThread implements Callable{
}
// doLog属性检验
this.validDoLog(baseStringCfg,errInfo);
-
+ // doBlackList校验
+ this.validDoBlackList(baseStringCfg,errInfo);
if (regionDict.getRegionType().equals(2)) {
if (regionDict.getFunctionId().equals(510) && "p2p_hash".equals(regionDict.getConfigServiceType())) {
String userRegion1 = baseStringCfg.getUserRegion1();
@@ -535,4 +535,30 @@ public class CheckStringFormatThread implements Callable{
}
}
+ /**
+ * doBlackList属性校验
+ * @param baseStringCfg
+ * @param errInfo
+ */
+ public void validDoBlackList(BaseStringCfg baseStringCfg, StringBuffer errInfo) {
+ if(regionDict.getFunctionId().equals(34)&&serviceDict.getAction().equals(16)) {
+ List dict=DictUtils.getDictList("DO_BLACKLIST");
+ if(baseStringCfg.getDoBlackList()==null) {
+ baseStringCfg.setDoBlackList(Constants.MAAT_CFG_DOLOG_DOBLACKLIST_DEFAULT);
+ }
+ String dobalcklistVals=new String();
+ if(dict !=null && dict.size()>0){
+ for (SysDataDictionaryItem sysDataDictionaryItem : dict) {
+ String itemCode = sysDataDictionaryItem.getItemCode();
+ dobalcklistVals+=itemCode+",";
+ }
+ }
+ Integer doBlackList = baseStringCfg.getDoBlackList();
+ if(!dobalcklistVals.contains(doBlackList+"")) {
+ errInfo.append(
+ String.format(prop.getProperty("is_incorrect"), prop.getProperty("do_blacklist"))
+ + ";");
+ }
+ }
+ }
}
diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java
index da1d59524..de05780c6 100644
--- a/src/main/java/com/nis/web/controller/BaseController.java
+++ b/src/main/java/com/nis/web/controller/BaseController.java
@@ -36,6 +36,7 @@ import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.ui.Model;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@@ -1396,7 +1397,7 @@ public class BaseController {
}
return null;
}
-
+
/**
* 多域导入
*
@@ -1759,7 +1760,6 @@ public class BaseController {
logger.info("获取编译ID出错");
throw new MaatConvertException(":"+e.getMessage());
}
-
int ind=0;
for (BaseIpCfg cfg : _ipPortCfgs) {
cfg.setAction(serviceDict==null?null:serviceDict.getAction());
@@ -1802,7 +1802,6 @@ public class BaseController {
cfg.setCompileId(compileIds.get(ind));
}
ind++;
-
}
ipCfgService.saveAndSend(regionDict, serviceDict, specificServiceCfg, _ipPortCfgs, cfgIndexInfos, appPolicyCfgs,appFeatureIndexs,asnNoMaps,isSend.equals("1"));
cfgIndexInfos.clear();
@@ -2391,7 +2390,279 @@ public class BaseController {
long end=System.currentTimeMillis();
logger.warn("import finish,cost:"+(end-start));
}
-
+ public String importAppPolicyList(HttpServletRequest request,HttpServletResponse response,RedirectAttributes redirectAttributes,
+ MultipartFile[] files
+ ,Integer serviceDictId
+ ,Integer requestId
+ ,String attribute
+ ,String classify
+ ,String regionDictIds
+ ,String importPath) {
+ logger.warn("import start...");
+ long start=System.currentTimeMillis();
+ FunctionServiceDict serviceDict = DictUtils.getFunctionServiceDict(serviceDictId);
+ StringBuffer errTip=new StringBuffer();
+ BlockingQueue ipPortCfgs =null;
+ BlockingQueue> stringCfgs =null;
+ List appPolicyCfgs = new ArrayList();
+ ImportBigExcel ei=null;
+ Properties properties=this.getMsgProp();
+ FunctionRegionDict appRegion = null;
+ if(serviceDict!=null) {
+ String regionCode = serviceDict.getRegionCode();
+ for (String code : regionCode.split(",")) {
+ if (StringUtils.isNotBlank(code)) {
+ FunctionRegionDict d = DictUtils.getFunctionRegionDictByRegionCode(serviceDict.getFunctionId(),
+ Integer.parseInt(code));
+ if (d != null && d.getConfigServiceType() != null
+ && d.getConfigServiceType().equals("app_policy")) {
+ appRegion = d;
+ break;
+ }
+ }
+
+ }
+ }
+ for (int i = 0; i < files.length; i++) {
+ MultipartFile file = files[i];
+ FunctionRegionDict regionDict = DictUtils
+ .getFunctionRegionDict(Integer.parseInt(regionDictIds.split(",")[i]));
+ try {
+ ei = new ImportBigExcel(file, 0, 1);
+ //------------------------------------check format start----------------------------
+ if (regionDict.getRegionType().equals(1)) {// IP
+ if (serviceDict!=null&&serviceDict.getAction().equals(64)) {
+ ei.loadInitParams(IpRateLimitTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(IpRateLimitTemplate.class);
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,null, list);
+ }else {
+ ei.loadInitParams(IpAllTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(IpAllTemplate.class);
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,null, list);
+ }
+ }else if (regionDict.getRegionType().equals(2)) {// 字符串类
+ ei.loadInitParams(StringAllTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(StringAllTemplate.class );
+ stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
+ }
+ //删除文件
+ if(ei.getUploadFile()!=null&&ei.getUploadFile().exists()) {
+ ei.getUploadFile().delete();
+ }
+ //------------------------------------check format end----------------------------
+ Date date = new Date();
+ String specServiceId = request.getParameter("appId");
+ String behaviorId = request.getParameter("behaviorId");
+ String isSend = request.getParameter("isSend")==null?"":request.getParameter("isSend");
+ SpecificServiceCfg specificServiceCfg = null;
+ if (StringUtils.isNotBlank(specServiceId)) {
+ specificServiceCfg = specificServiceCfgService
+ .getBySpecServiceId(Integer.parseInt(specServiceId));
+ }
+ if (regionDict.getRegionType().equals(1)) {// IP
+ List _ipPortCfgs=com.beust.jcommander.internal.Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
+ while(!ipPortCfgs.isEmpty()) {
+ ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
+ List compileIds=Lists.newArrayList();
+ List regionIds=Lists.newArrayList();
+ List groupIds=Lists.newArrayList();
+ List numRegionGroupIds=Lists.newArrayList();
+ List numRegionRegionIds=Lists.newArrayList();
+ try {
+ compileIds = ConfigServiceUtil.getId(1,_ipPortCfgs.size());
+ if(isSend.equals("1")) {
+ groupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size());
+ regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ //需要获取数值域的id
+ if(serviceDict!=null&&serviceDict.getProtocolId()!=null&&serviceDict.getProtocolId()>0) {
+ numRegionGroupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size());
+ numRegionRegionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("获取编译ID出错");
+ throw new MaatConvertException(":"+e.getMessage());
+ }
+ int ind=0;
+ for (BaseIpCfg cfg : _ipPortCfgs) {
+ cfg.setAction(serviceDict==null?null:serviceDict.getAction());
+ /*cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);*/
+ cfg.setCfgRegionCode(regionDict.getConfigRegionCode());
+ cfg.setCfgType(regionDict.getConfigRegionValue());
+ cfg.setCreateTime(date);
+ cfg.setCreatorId(UserUtils.getUser().getId());
+ //cfg.setDoLog(2);
+ cfg.setFunctionId(regionDict.getFunctionId());
+ if(isSend.equals("1")) {
+ cfg.setIsAudit(Constants.AUDIT_YES);
+ cfg.setIsValid(Constants.VALID_YES);
+ cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);
+ if(groupIds!=null&&groupIds.size()==_ipPortCfgs.size()) {
+ cfg.setGroupId(groupIds.get(ind));
+ }
+ if(regionIds!=null&®ionIds.size()==_ipPortCfgs.size()) {
+ cfg.setRegionId(regionIds.get(ind));
+ }
+ if(serviceDict!=null&&serviceDict.getProtocolId()!=null) {
+ if(numRegionGroupIds!=null&&numRegionGroupIds.size()==_ipPortCfgs.size()) {
+ cfg.setNumberRegionGroupId(numRegionGroupIds.get(ind));
+ }
+ if(numRegionRegionIds!=null&&numRegionRegionIds.size()==_ipPortCfgs.size()) {
+ cfg.setNumberRegionRegionId(numRegionRegionIds.get(ind));
+ }
+ }
+ }else {
+ cfg.setIsAudit(Constants.AUDIT_NOT_YET);
+ cfg.setIsValid(Constants.VALID_NO);
+ }
+ cfg.setIsAreaEffective(0);
+ cfg.setLable("0");
+ cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
+ cfg.setAttribute(attribute);
+ cfg.setClassify(classify);
+ cfg.setServiceId(serviceDict==null?null:serviceDict.getServiceId());
+ cfg.setTableName("ip_port_cfg");
+ if(compileIds.size()==_ipPortCfgs.size()) {
+ cfg.setCompileId(compileIds.get(ind));
+ }
+ if(specificServiceCfg!=null) {
+ cfg.setAppCode(specificServiceCfg.getSpecServiceCode());
+ cfg.setSpecServiceId(specificServiceCfg.getSpecServiceId());
+ if(StringUtils.isNotBlank(behaviorId))
+ cfg.setBehavCode(Integer.parseInt(behaviorId));
+ }
+ if (appRegion != null) {
+ AppPolicyCfg appPolicyCfg = new AppPolicyCfg();
+ BeanUtils.copyProperties(cfg, appPolicyCfg,new String[] {"cfgId"});
+ //appPolicyCfg.setSpecServiceId(specificServiceCfg.getSpecServiceId());
+ //appPolicyCfg.setAppCode(specificServiceCfg.getSpecServiceCode());
+ appPolicyCfg.setMatchMethod(0);
+ appPolicyCfg.setIsHexbin(0);
+ appPolicyCfg.setCfgType(appRegion.getConfigRegionValue());
+ appPolicyCfg.setCfgRegionCode(appRegion.getConfigRegionCode());
+ if (StringUtils.isNotBlank(behaviorId)) {
+ //appPolicyCfg.setBehavCode(Integer.parseInt(behaviorId));
+ appPolicyCfg.setExprType(1);
+ } else {
+ appPolicyCfg.setExprType(0);
+ }
+ appPolicyCfgs.add(appPolicyCfg);
+ }
+ ind++;
+ }
+ appCfgService.savePolicyList(regionDict,serviceDict,appPolicyCfgs,_ipPortCfgs,isSend.equals("1"));
+ appPolicyCfgs.clear();
+ _ipPortCfgs.clear();
+ }
+ }else {
+ List _stringCfgs=com.beust.jcommander.internal.Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
+ while(!stringCfgs.isEmpty()) {
+ stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
+ List compileIds=Lists.newArrayList();
+ List groupIds=Lists.newArrayList();
+ List regionIds=Lists.newArrayList();
+ try {
+ compileIds = ConfigServiceUtil.getId(1,_stringCfgs.size());
+ if(isSend.equals("1")) {
+ groupIds = ConfigServiceUtil.getId(2,_stringCfgs.size());
+ regionIds = ConfigServiceUtil.getId(3,_stringCfgs.size());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("获取编译ID出错");
+ throw new MaatConvertException(":"+e.getMessage());
+ }
+ int ind=0;
+ for (BaseStringCfg cfg : _stringCfgs) {
+ cfg.setAction(serviceDict.getAction());
+ cfg.setCfgRegionCode(regionDict.getConfigRegionCode());
+ cfg.setCfgType(regionDict.getConfigRegionValue());
+ cfg.setCreateTime(date);
+ cfg.setCreatorId(UserUtils.getUser().getId());
+ //cfg.setDoLog(2);
+ cfg.setFunctionId(regionDict.getFunctionId());
+ if(isSend.equals("1")) {
+ cfg.setIsAudit(Constants.AUDIT_YES);
+ cfg.setIsValid(Constants.VALID_YES);
+ cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);
+ if(groupIds!=null&&groupIds.size()==_stringCfgs.size()) {
+ cfg.setGroupId(groupIds.get(ind));
+ }
+ if(regionIds!=null&®ionIds.size()==_stringCfgs.size()) {
+ cfg.setRegionId(regionIds.get(ind));
+ }
+ }else {
+ cfg.setIsAudit(Constants.AUDIT_NOT_YET);
+ cfg.setIsValid(Constants.VALID_NO);
+ }
+ cfg.setIsAreaEffective(0);
+ cfg.setLable("0");
+ cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
+ cfg.setAttribute(attribute);
+ cfg.setClassify(classify);
+ cfg.setServiceId(serviceDict.getServiceId());
+ if(compileIds!=null&&compileIds.size()==_stringCfgs.size()) {
+ cfg.setCompileId(compileIds.get(ind));
+ }
+ if(specificServiceCfg!=null) {
+ cfg.setAppCode(specificServiceCfg.getSpecServiceCode());
+ cfg.setSpecServiceId(specificServiceCfg.getSpecServiceId());
+ if(StringUtils.isNotBlank(behaviorId))
+ cfg.setBehavCode(Integer.parseInt(behaviorId));
+ }
+ if (appRegion != null) {
+ AppPolicyCfg appPolicyCfg = new AppPolicyCfg();
+ BeanUtils.copyProperties(cfg, appPolicyCfg,new String[] {"cfgId"});
+ //appPolicyCfg.setSpecServiceId(specificServiceCfg.getSpecServiceId());
+ //appPolicyCfg.setAppCode(specificServiceCfg.getSpecServiceCode());
+ appPolicyCfg.setMatchMethod(0);
+ appPolicyCfg.setIsHexbin(0);
+ appPolicyCfg.setCfgType(appRegion.getConfigRegionValue());
+ appPolicyCfg.setCfgRegionCode(appRegion.getConfigRegionCode());
+ if (StringUtils.isNotBlank(behaviorId)) {
+ //appPolicyCfg.setBehavCode(Integer.parseInt(behaviorId));
+ appPolicyCfg.setExprType(1);
+ } else {
+ appPolicyCfg.setExprType(0);
+ }
+ appPolicyCfgs.add(appPolicyCfg);
+ }
+ ind++;
+ }
+ appCfgService.savePolicyList(regionDict,serviceDict,appPolicyCfgs,_stringCfgs,isSend.equals("1"));
+ appPolicyCfgs.clear();
+ _stringCfgs.clear();
+ }
+ }
+ if(errTip.toString().length()>0) {
+ addMessage(redirectAttributes,"error", errTip.toString());
+ }
+ } catch (Exception e) {
+ if(ei!=null) {
+ if(ei.getUploadFile().exists()) {
+ ei.getUploadFile().delete();
+ }
+ }
+ if(e instanceof MaatConvertException) {
+ addMessage(redirectAttributes,"error", "request_service_failed");
+ }else if(e instanceof ServiceException) {
+ addMessage(redirectAttributes,"error", e.getMessage());
+ }else if(e instanceof IndexOutOfBoundsException){
+ addMessage(redirectAttributes,"error", "template_error");
+ }else {
+ addMessage(redirectAttributes,"error", "import_failed");
+ }
+ e.printStackTrace();
+ }
+ }
+ long end=System.currentTimeMillis();
+ logger.warn("import finish,cost:"+(end-start));
+ return "redirect:" + adminPath+ importPath;
+ }
public void deleteIps(Map asnNoMap,Integer ipType){
List toDelAndSendAsnIpCfgs=Lists.newArrayList();
List asnIds=Lists.newArrayList(asnNoMap.size());
diff --git a/src/main/java/com/nis/web/controller/configuration/AppCfgController.java b/src/main/java/com/nis/web/controller/configuration/AppCfgController.java
index aaf5f874c..1fc46024e 100644
--- a/src/main/java/com/nis/web/controller/configuration/AppCfgController.java
+++ b/src/main/java/com/nis/web/controller/configuration/AppCfgController.java
@@ -7,7 +7,9 @@ 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 java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -15,6 +17,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.taglibs.standard.functions.Functions;
+import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -28,6 +31,8 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import com.nis.domain.FunctionRegionDict;
+import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
import com.nis.domain.SysDataDictionaryItem;
import com.nis.domain.configuration.AppBuiltInFeatureFile;
@@ -40,10 +45,14 @@ import com.nis.domain.configuration.AppPolicyCfg;
import com.nis.domain.configuration.AppSslCertCfg;
import com.nis.domain.configuration.AppTcpCfg;
import com.nis.domain.configuration.AppTopicDomainCfg;
+import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.configuration.WebsiteDomainTopic;
+import com.nis.domain.configuration.template.IpAllTemplate;
+import com.nis.domain.configuration.template.IpRateLimitTemplate;
+import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.domain.maat.ToMaatResult;
import com.nis.domain.maat.ToMaatResult.ResponseData;
import com.nis.domain.specific.SpecificServiceCfg;
@@ -55,6 +64,7 @@ import com.nis.util.DictUtils;
import com.nis.util.FileUtils;
import com.nis.util.JsonMapper;
import com.nis.util.StringUtil;
+import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
@@ -2189,4 +2199,14 @@ public class AppCfgController extends BaseController {
// return "redirect:" + adminPath
// +"/ntc/iplist/list?functionId="+entity.getFunctionId();
}
+
+ @Override
+ @RequestMapping(value = "policyCfgImport", method=RequestMethod.POST)
+ public String importAppPolicyList(HttpServletRequest request, HttpServletResponse response,
+ RedirectAttributes redirectAttributes, @RequestParam("files")MultipartFile[] files, Integer serviceDictId, Integer requestId,
+ String attribute, String classify, String regionDictIds, String importPath) {
+ // TODO Auto-generated method stub
+ return super.importAppPolicyList(request, response, redirectAttributes, files, serviceDictId, requestId, attribute,
+ classify, regionDictIds, importPath);
+ }
}
diff --git a/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java b/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java
index 7c42deb20..5da378fef 100644
--- a/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java
+++ b/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java
@@ -1,9 +1,6 @@
package com.nis.web.controller.configuration;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
import java.util.ArrayList;
-import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@@ -21,29 +18,24 @@ 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.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.nis.domain.Page;
import com.nis.domain.configuration.AppPolicyCfg;
import com.nis.domain.configuration.BaseStringCfg;
-import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg;
-import com.nis.domain.report.NtcPzReport;
-import com.nis.domain.specific.ConfigGroupInfo;
import com.nis.domain.specific.SpecificServiceCfg;
import com.nis.exceptions.CallExternalProceduresException;
import com.nis.exceptions.MaatConvertException;
-import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.StringUtil;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-import net.sf.json.JsonConfig;
-
/**
* 基础协议控制类
*
@@ -396,5 +388,13 @@ public class BasicProtocolController extends BaseController {
// return "redirect:" + adminPath
// +"/ntc/iplist/list?functionId="+entity.getFunctionId();
}
-
+ @Override
+ @RequestMapping(value = "import", method=RequestMethod.POST)
+ public String importAppPolicyList(HttpServletRequest request, HttpServletResponse response,
+ RedirectAttributes redirectAttributes, @RequestParam("files")MultipartFile[] files, Integer serviceDictId, Integer requestId,
+ String attribute, String classify, String regionDictIds, String importPath) {
+ // TODO Auto-generated method stub
+ return super.importAppPolicyList(request, response, redirectAttributes, files, serviceDictId, requestId, attribute,
+ classify, regionDictIds, importPath);
+ }
}
diff --git a/src/main/java/com/nis/web/controller/configuration/EncryptedTunnelBehaviorController.java b/src/main/java/com/nis/web/controller/configuration/EncryptedTunnelBehaviorController.java
index 8c2666dfa..9417e2ae9 100644
--- a/src/main/java/com/nis/web/controller/configuration/EncryptedTunnelBehaviorController.java
+++ b/src/main/java/com/nis/web/controller/configuration/EncryptedTunnelBehaviorController.java
@@ -19,7 +19,9 @@ 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.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.nis.domain.Page;
@@ -434,4 +436,14 @@ public class EncryptedTunnelBehaviorController extends BaseController {
// +"/ntc/iplist/list?functionId="+entity.getFunctionId();
}
+ @Override
+ @RequestMapping(value = { "import" })
+ public String importAppPolicyList(HttpServletRequest request, HttpServletResponse response,
+ RedirectAttributes redirectAttributes, @RequestParam("files")MultipartFile[] files, Integer serviceDictId, Integer requestId,
+ String attribute, String classify, String regionDictIds, String importPath) {
+ // TODO Auto-generated method stub
+ return super.importAppPolicyList(request, response, redirectAttributes, files, serviceDictId, requestId, attribute,
+ classify, regionDictIds, importPath);
+ }
+
}
diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/BgpCfgController.java b/src/main/java/com/nis/web/controller/configuration/ntc/BgpCfgController.java
index 1f8bc8129..a6e2b4702 100644
--- a/src/main/java/com/nis/web/controller/configuration/ntc/BgpCfgController.java
+++ b/src/main/java/com/nis/web/controller/configuration/ntc/BgpCfgController.java
@@ -1,36 +1,48 @@
package com.nis.web.controller.configuration.ntc;
import java.util.ArrayList;
-import java.util.Collections;
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 java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils;
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.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+import com.beust.jcommander.internal.Lists;
+import com.nis.domain.FunctionRegionDict;
+import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
+import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
-import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcBgpAsCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg;
+import com.nis.domain.configuration.template.IpAllTemplate;
+import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.exceptions.MaatConvertException;
+import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
+import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
import com.nis.util.StringUtils;
+import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
@@ -312,5 +324,210 @@ public class BgpCfgController extends BaseController {
// return "redirect:" + adminPath
// +"/ntc/iplist/list?functionId="+entity.getFunctionId();
}
+ @RequestMapping(value = "bgpImport")
+ public String bgpImport(HttpServletRequest request,HttpServletResponse response,RedirectAttributes redirectAttributes,
+ @RequestParam("files") MultipartFile[] files
+ ,Integer serviceDictId
+ ,Integer requestId
+ ,String attribute
+ ,String classify
+ ,String regionDictIds
+ ,String importPath) {
+ logger.warn("import start...");
+ long start=System.currentTimeMillis();
+ ImportBigExcel ei=null;
+ try {
+ FunctionServiceDict serviceDict = DictUtils.getFunctionServiceDict(serviceDictId);
+ StringBuffer errTip=new StringBuffer();
+ Properties properties=this.getMsgProp();
+ BlockingQueue ipPortCfgs =null;
+ BlockingQueue> stringCfgs =null;
+ List cfgIndexInfos = new ArrayList();
+ for (int i = 0; i < files.length; i++) {
+ MultipartFile file = files[i];
+ ei = new ImportBigExcel(file, 0, 1);
+ FunctionRegionDict regionDict = DictUtils
+ .getFunctionRegionDict(Integer.parseInt(regionDictIds.split(",")[i]));
+ //------------------------------------check format start----------------------------
+ if (regionDict.getRegionType().equals(1)) {// IP
+ ei.loadInitParams(IpAllTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(IpAllTemplate.class );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
+ }else if (regionDict.getRegionType().equals(2)) {// 字符串类
+ ei.loadInitParams(StringAllTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(StringAllTemplate.class );
+ stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
+ }
+ //删除文件
+ if(ei.getUploadFile()!=null&&ei.getUploadFile().exists()) {
+ ei.getUploadFile().delete();
+ }
+ //------------------------------------check format end----------------------------
+ Date date = new Date();
+ String isSend = request.getParameter("isSend")==null?"":request.getParameter("isSend");
+ if (regionDict.getRegionType().equals(1)) {// IP
+ List _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
+ while(!ipPortCfgs.isEmpty()) {
+ ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
+ List compileIds=Lists.newArrayList();
+ List regionIds=Lists.newArrayList();
+ List groupIds=Lists.newArrayList();
+ List numRegionGroupIds=Lists.newArrayList();
+ List numRegionRegionIds=Lists.newArrayList();
+ try {
+ compileIds = ConfigServiceUtil.getId(1,_ipPortCfgs.size());
+ if(isSend.equals("1")) {
+ groupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size());
+ regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ //需要获取数值域的id
+ if(serviceDict!=null&&serviceDict.getProtocolId()!=null&&serviceDict.getProtocolId()>0) {
+ numRegionGroupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size());
+ numRegionRegionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("获取编译ID出错");
+ throw new MaatConvertException(":"+e.getMessage());
+ }
+ int ind=0;
+ for (BaseIpCfg cfg : _ipPortCfgs) {
+ cfg.setAction(serviceDict==null?null:serviceDict.getAction());
+ /*cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);*/
+ cfg.setCfgRegionCode(regionDict.getConfigRegionCode());
+ cfg.setCfgType(regionDict.getConfigRegionValue());
+ cfg.setCreateTime(date);
+ cfg.setCreatorId(UserUtils.getUser().getId());
+ //cfg.setDoLog(2);
+ cfg.setFunctionId(regionDict.getFunctionId());
+ if(isSend.equals("1")) {
+ cfg.setIsAudit(Constants.AUDIT_YES);
+ cfg.setIsValid(Constants.VALID_YES);
+ cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);
+ if(groupIds!=null&&groupIds.size()==_ipPortCfgs.size()) {
+ cfg.setGroupId(groupIds.get(ind));
+ }
+ if(regionIds!=null&®ionIds.size()==_ipPortCfgs.size()) {
+ cfg.setRegionId(regionIds.get(ind));
+ }
+ if(serviceDict!=null&&serviceDict.getProtocolId()!=null) {
+ if(numRegionGroupIds!=null&&numRegionGroupIds.size()==_ipPortCfgs.size()) {
+ cfg.setNumberRegionGroupId(numRegionGroupIds.get(ind));
+ }
+ if(numRegionRegionIds!=null&&numRegionRegionIds.size()==_ipPortCfgs.size()) {
+ cfg.setNumberRegionRegionId(numRegionRegionIds.get(ind));
+ }
+ }
+ }else {
+ cfg.setIsAudit(Constants.AUDIT_NOT_YET);
+ cfg.setIsValid(Constants.VALID_NO);
+ }
+ cfg.setIsAreaEffective(0);
+ cfg.setLable("0");
+ cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
+ cfg.setAttribute(attribute);
+ cfg.setClassify(classify);
+ cfg.setServiceId(serviceDict==null?null:serviceDict.getServiceId());
+ cfg.setTableName("ip_port_cfg");
+ if(compileIds.size()==_ipPortCfgs.size()) {
+ cfg.setCompileId(compileIds.get(ind));
+ }
+ CfgIndexInfo cfgIndexInfo = new CfgIndexInfo();
+ BeanUtils.copyProperties(cfg, cfgIndexInfo,new String[] {"cfgId"});
+ cfgIndexInfos.add(cfgIndexInfo);
+ ind++;
+ }
+ bgpCfgService.saveAndSend(regionDict, cfgIndexInfos, _ipPortCfgs, isSend.equals("1"));
+ cfgIndexInfos.clear();
+ _ipPortCfgs.clear();
+ }
+ } else if (regionDict.getRegionType().equals(2)) {
+ List> _stringCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
+ while(!stringCfgs.isEmpty()) {
+ stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
+ List compileIds=Lists.newArrayList();
+ List groupIds=Lists.newArrayList();
+ List regionIds=Lists.newArrayList();
+ try {
+ compileIds = ConfigServiceUtil.getId(1,_stringCfgs.size());
+ if(isSend.equals("1")) {
+ groupIds = ConfigServiceUtil.getId(2,_stringCfgs.size());
+ regionIds = ConfigServiceUtil.getId(3,_stringCfgs.size());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("获取编译ID出错");
+ throw new MaatConvertException(":"+e.getMessage());
+ }
+ int ind=0;
+ for (BaseStringCfg cfg : _stringCfgs) {
+ cfg.setAction(serviceDict.getAction());
+ cfg.setCfgRegionCode(regionDict.getConfigRegionCode());
+ cfg.setCfgType(regionDict.getConfigRegionValue());
+ cfg.setCreateTime(date);
+ cfg.setCreatorId(UserUtils.getUser().getId());
+ //cfg.setDoLog(2);
+ cfg.setFunctionId(regionDict.getFunctionId());
+ if(isSend.equals("1")) {
+ cfg.setIsAudit(Constants.AUDIT_YES);
+ cfg.setIsValid(Constants.VALID_YES);
+ cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);
+ if(groupIds!=null&&groupIds.size()==_stringCfgs.size()) {
+ cfg.setGroupId(groupIds.get(ind));
+ }
+ if(regionIds!=null&®ionIds.size()==_stringCfgs.size()) {
+ cfg.setRegionId(regionIds.get(ind));
+ }
+ }else {
+ cfg.setIsAudit(Constants.AUDIT_NOT_YET);
+ cfg.setIsValid(Constants.VALID_NO);
+ }
+ cfg.setIsAreaEffective(0);
+ cfg.setLable("0");
+ cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
+ cfg.setAttribute(attribute);
+ cfg.setClassify(classify);
+ cfg.setServiceId(serviceDict.getServiceId());
+ if(compileIds!=null&&compileIds.size()==_stringCfgs.size()) {
+ cfg.setCompileId(compileIds.get(ind));
+ }
+ CfgIndexInfo cfgIndexInfo = new CfgIndexInfo();
+ BeanUtils.copyProperties(cfg, cfgIndexInfo, new String[] {"cfgId"});
+ cfgIndexInfos.add(cfgIndexInfo);
+ ind++;
+ }
+ bgpCfgService.saveAndSend(regionDict, cfgIndexInfos, _stringCfgs, isSend.equals("1"));
+ cfgIndexInfos.clear();
+ _stringCfgs.clear();
+ }
+ }
+ }
+ if(errTip.toString().length()>0) {
+ addMessage(redirectAttributes,"error", errTip.toString());
+ }
+ } catch (Exception e) {
+ if(ei!=null) {
+ if(ei.getUploadFile().exists()) {
+ ei.getUploadFile().delete();
+ }
+ }
+ if(e instanceof MaatConvertException) {
+ addMessage(redirectAttributes,"error", "request_service_failed");
+ }else if(e instanceof ServiceException) {
+ addMessage(redirectAttributes,"error", e.getMessage());
+ }else if(e instanceof IndexOutOfBoundsException){
+ addMessage(redirectAttributes,"error", "template_error");
+ }else {
+ addMessage(redirectAttributes,"error", "import_failed");
+ }
+ e.printStackTrace();
+ }
+ long end=System.currentTimeMillis();
+ logger.warn("import finish,cost:"+(end-start));
+ return "redirect:" + adminPath+ importPath;
+ }
}
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 fda97e046..7936515c0 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
@@ -1,5 +1,7 @@
package com.nis.web.controller.configuration.ntc;
+import java.io.IOException;
+import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -8,12 +10,18 @@ import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ExecutionException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.xml.parsers.ParserConfigurationException;
import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -23,18 +31,30 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+import org.xml.sax.SAXException;
+import com.beust.jcommander.internal.Lists;
import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
+import com.nis.domain.basics.AsnGroupInfo;
+import com.nis.domain.configuration.AppComplexFeatureCfg;
+import com.nis.domain.configuration.AppFeatureIndex;
import com.nis.domain.configuration.AppPolicyCfg;
+import com.nis.domain.configuration.AppTopicDomainCfg;
import com.nis.domain.configuration.AsnKeywordCfg;
+import com.nis.domain.configuration.BaseIpCfg;
+import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
+import com.nis.domain.configuration.ComplexkeywordCfg;
+import com.nis.domain.configuration.DnsResStrategy;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.configuration.template.AppDomainTemplate;
import com.nis.domain.configuration.template.AppPayloadTemplate;
import com.nis.domain.configuration.template.AsnIpTemplate;
+import com.nis.domain.configuration.template.BlackListIPTemplate;
+import com.nis.domain.configuration.template.BlackListStringTemplate;
import com.nis.domain.configuration.template.ComplexStringAllNotDoLogTemplate;
import com.nis.domain.configuration.template.ComplexStringAllTemplate;
import com.nis.domain.configuration.template.DdosIpTemplate;
@@ -66,15 +86,18 @@ import com.nis.domain.configuration.template.SnatTemplate;
import com.nis.domain.configuration.template.StringAllNotDoLogTemplate;
import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.domain.configuration.template.TopicWebsiteTemplate;
-import com.nis.domain.specific.SpecificServiceCfg;
import com.nis.exceptions.MaatConvertException;
+import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
import com.nis.util.excel.ExportExcel;
+import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
+import jersey.repackaged.com.google.common.collect.Maps;
+
/**
* IP相关配置控制类
* @author dell
@@ -429,6 +452,11 @@ public class IpController extends BaseController{
ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, IpAllNotDoLogTemplate.class, 2);
excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose();
+ }else if(regionDict.getFunctionId().equals(34)&&serviceDict.getAction().equals(16)) {//SSL
+ List classList=new ArrayList();
+ ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, BlackListIPTemplate.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);
@@ -490,6 +518,11 @@ public class IpController extends BaseController{
ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, TopicWebsiteTemplate.class, 2);
excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose();
+ }else if(regionDict.getFunctionId().equals(34)&&serviceDict.getAction().equals(16)) {//SSL
+ List classList=new ArrayList();
+ ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, BlackListStringTemplate.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);
@@ -553,18 +586,173 @@ public class IpController extends BaseController{
}
//ip配置导入
- @RequestMapping(value = "import", method=RequestMethod.POST)
- public String importIp(HttpServletRequest request,HttpServletResponse response,RedirectAttributes redirectAttributes,
- @RequestParam("files") MultipartFile[] files
- ,Integer serviceDictId
- ,Integer requestId
- ,String attribute
- ,String classify
- ,String regionDictIds
- ,String importPath) {
- this._import(request,response,redirectAttributes, files,serviceDictId,regionDictIds,requestId,attribute,classify);
- return "redirect:" + adminPath+ importPath;
+ @Deprecated
+// @RequestMapping(value = "import", method=RequestMethod.POST)
+ public String importIp(HttpServletRequest request,HttpServletResponse response,RedirectAttributes redirectAttributes,
+ @RequestParam("files") MultipartFile[] files
+ ,Integer serviceDictId
+ ,Integer requestId
+ ,String attribute
+ ,String classify
+ ,String regionDictIds
+ ,String importPath) {
+ this._import(request,response,redirectAttributes, files,serviceDictId,regionDictIds,requestId,attribute,classify);
+ return "redirect:" + adminPath+ importPath;
+ }
+ @RequestMapping(value = "import", method=RequestMethod.POST)
+ public String importIPList(HttpServletRequest request,HttpServletResponse response,RedirectAttributes redirectAttributes,
+ @RequestParam("files") MultipartFile[] files
+ ,Integer serviceDictId
+ ,Integer requestId
+ ,String attribute
+ ,String classify
+ ,String regionDictIds
+ ,String importPath) {
+ logger.warn("import start...");
+ long start=System.currentTimeMillis();
+ FunctionServiceDict serviceDict = DictUtils.getFunctionServiceDict(serviceDictId);
+ StringBuffer errTip=new StringBuffer();
+ BlockingQueue ipPortCfgs =null;
+ List cfgIndexInfos = new ArrayList();
+ ImportBigExcel ei=null;
+ Properties properties=this.getMsgProp();
+ for (int i = 0; i < files.length; i++) {
+ MultipartFile file = files[i];
+ FunctionRegionDict regionDict = DictUtils
+ .getFunctionRegionDict(Integer.parseInt(regionDictIds.split(",")[i]));
+ try {
+ ei = new ImportBigExcel(file, 0, 1);
+ //------------------------------------check format start----------------------------
+ if (serviceDict!=null&&serviceDict.getAction().equals(64)) {
+ //加载模板
+ ei.loadInitParams(IpRateLimitTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(IpRateLimitTemplate.class
+ );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,null, list);
+ } else if(serviceDict!=null&&serviceDict.getAction().equals(32)) {
+ //加载模板
+ ei.loadInitParams(IpAllNotDoLogTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(IpAllNotDoLogTemplate.class );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
+ } else {
+ //加载模板
+ ei.loadInitParams(IpAllTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(IpAllTemplate.class );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
+ }
+ //删除文件
+ if(ei.getUploadFile()!=null&&ei.getUploadFile().exists()) {
+ ei.getUploadFile().delete();
+ }
+ //------------------------------------check format end----------------------------
+ Date date = new Date();
+ String isSend = request.getParameter("isSend")==null?"":request.getParameter("isSend");
+ List _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
+ while(!ipPortCfgs.isEmpty()) {
+ ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
+ List compileIds=Lists.newArrayList();
+ List regionIds=Lists.newArrayList();
+ List groupIds=Lists.newArrayList();
+ List numRegionGroupIds=Lists.newArrayList();
+ List numRegionRegionIds=Lists.newArrayList();
+ try {
+ compileIds = ConfigServiceUtil.getId(1,_ipPortCfgs.size());
+ if(isSend.equals("1")) {
+ groupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size());
+ regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ //需要获取数值域的id
+ if(serviceDict!=null&&serviceDict.getProtocolId()!=null&&serviceDict.getProtocolId()>0) {
+ numRegionGroupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size());
+ numRegionRegionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ }
+ }
+ } catch (Exception e) {
+ logger.info("获取编译ID出错",e);
+ e.printStackTrace();
+ throw new MaatConvertException(":"+e.getMessage());
+ }
+ int ind=0;
+ for (BaseIpCfg cfg : _ipPortCfgs) {
+ cfg.setAction(serviceDict==null?null:serviceDict.getAction());
+ /*cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);*/
+ cfg.setCfgRegionCode(regionDict.getConfigRegionCode());
+ cfg.setCfgType(regionDict.getConfigRegionValue());
+ cfg.setCreateTime(date);
+ cfg.setCreatorId(UserUtils.getUser().getId());
+ //cfg.setDoLog(2);
+ cfg.setFunctionId(regionDict.getFunctionId());
+ if(isSend.equals("1")) {
+ cfg.setIsAudit(Constants.AUDIT_YES);
+ cfg.setIsValid(Constants.VALID_YES);
+ cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);
+ if(groupIds!=null&&groupIds.size()==_ipPortCfgs.size()) {
+ cfg.setGroupId(groupIds.get(ind));
+ }
+ if(regionIds!=null&®ionIds.size()==_ipPortCfgs.size()) {
+ cfg.setRegionId(regionIds.get(ind));
+ }
+ if(serviceDict!=null&&serviceDict.getProtocolId()!=null) {
+ if(numRegionGroupIds!=null&&numRegionGroupIds.size()==_ipPortCfgs.size()) {
+ cfg.setNumberRegionGroupId(numRegionGroupIds.get(ind));
+ }
+ if(numRegionRegionIds!=null&&numRegionRegionIds.size()==_ipPortCfgs.size()) {
+ cfg.setNumberRegionRegionId(numRegionRegionIds.get(ind));
+ }
+ }
+ }else {
+ cfg.setIsAudit(Constants.AUDIT_NOT_YET);
+ cfg.setIsValid(Constants.VALID_NO);
+ }
+ cfg.setIsAreaEffective(0);
+ cfg.setLable("0");
+ cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
+ cfg.setAttribute(attribute);
+ cfg.setClassify(classify);
+ cfg.setServiceId(serviceDict==null?null:serviceDict.getServiceId());
+ cfg.setTableName("ip_port_cfg");
+ if(compileIds.size()==_ipPortCfgs.size()) {
+ cfg.setCompileId(compileIds.get(ind));
+ }
+ if(regionDict.getFunctionId().equals(405)&®ionIds.size()==_ipPortCfgs.size()) {
+ cfg.setUserRegion1(regionIds.get(ind).toString());
+ }
+ CfgIndexInfo cfgIndexInfo = new CfgIndexInfo();
+ BeanUtils.copyProperties(cfg, cfgIndexInfo,new String[] {"cfgId"});
+ cfgIndexInfos.add(cfgIndexInfo);
+ ind++;
+ }
+ ipCfgService.saveAndSendIPList(regionDict, serviceDict, _ipPortCfgs, cfgIndexInfos,isSend.equals("1"));
+ cfgIndexInfos.clear();
+ _ipPortCfgs.clear();
+ }
+ if(errTip.toString().length()>0) {
+ addMessage(redirectAttributes,"error", errTip.toString());
+ }
+ } catch (Exception e) {
+ if(ei!=null) {
+ if(ei.getUploadFile().exists()) {
+ ei.getUploadFile().delete();
+ }
+ }
+ if(e instanceof MaatConvertException) {
+ addMessage(redirectAttributes,"error", "request_service_failed");
+ }else if(e instanceof ServiceException) {
+ addMessage(redirectAttributes,"error", e.getMessage());
+ }else if(e instanceof IndexOutOfBoundsException){
+ addMessage(redirectAttributes,"error", "template_error");
+ }else {
+ addMessage(redirectAttributes,"error", "import_failed");
+ }
+ e.printStackTrace();
+ }
}
+ long end=System.currentTimeMillis();
+ logger.warn("import finish,cost:"+(end-start));
+ return "redirect:" + adminPath+ importPath;
+ }
+
//ip配置导出
@RequestMapping(value = "exportIpAddr")
public void exportIpAddr(Model model,HttpServletRequest request,HttpServletResponse response,
diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java b/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java
index fa02a7b73..5829286e2 100644
--- a/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java
+++ b/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java
@@ -8,13 +8,14 @@ import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
+import java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.apache.taglibs.standard.functions.Functions;
+import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -25,28 +26,36 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+import com.beust.jcommander.internal.Lists;
import com.nis.domain.FunctionRegionDict;
+import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
+import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.DnsResStrategy;
-import com.nis.domain.configuration.ComplexStringCfgTemplate;
-import com.nis.domain.configuration.template.IpCfgTemplate;
-import com.nis.domain.specific.ConfigGroupInfo;
-import com.nis.domain.configuration.StringCfgTemplate;
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.configuration.template.BlackListIPTemplate;
+import com.nis.domain.configuration.template.BlackListStringTemplate;
+import com.nis.domain.configuration.template.ComplexStringAllTemplate;
+import com.nis.domain.configuration.template.DnsComplexStringTemplate;
+import com.nis.domain.configuration.template.DnsIpTemplate;
+import com.nis.domain.configuration.template.DnsStringTemplate;
+import com.nis.domain.configuration.template.IpAllTemplate;
+import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.exceptions.CallExternalProceduresException;
import com.nis.exceptions.MaatConvertException;
+import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
-import com.nis.util.excel.ImportExcel;
+import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
@@ -1081,4 +1090,327 @@ public class WebsiteController extends BaseController {
// return "redirect:" + adminPath
// +"/ntc/website/httpList?functionId="+entity.getFunctionId();
}
+ @RequestMapping(value = {"dnsImport","sslImport"}, method=RequestMethod.POST)
+ public String importDns(HttpServletRequest request,HttpServletResponse response,RedirectAttributes redirectAttributes,
+ @RequestParam("files") MultipartFile[] files
+ ,Integer serviceDictId
+ ,Integer requestId
+ ,String attribute
+ ,String classify
+ ,String regionDictIds
+ ,String importPath) {
+ logger.warn("import start...");
+ long start=System.currentTimeMillis();
+ ImportBigExcel ei=null;
+ try {
+ FunctionServiceDict serviceDict = DictUtils.getFunctionServiceDict(serviceDictId);
+ StringBuffer errTip=new StringBuffer();
+ BlockingQueue ipPortCfgs =null;
+ BlockingQueue> stringCfgs =null;
+ BlockingQueue complexkeywordCfgs =null;
+ List cfgIndexInfos = new ArrayList();
+ Properties properties=this.getMsgProp();
+ for (int i = 0; i < files.length; i++) {
+ MultipartFile file = files[i];
+ ei = new ImportBigExcel(file, 0, 1);
+ FunctionRegionDict regionDict = DictUtils
+ .getFunctionRegionDict(Integer.parseInt(regionDictIds.split(",")[i]));
+ //------------------------------------check format start----------------------------
+ if (regionDict.getRegionType().equals(1)) {// IP
+ if(regionDict.getFunctionId().intValue()==7&&serviceDict.getAction().intValue()==16) {
+ //加载模板
+ ei.loadInitParams(DnsIpTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(DnsIpTemplate.class );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
+ }else if(regionDict.getFunctionId().intValue()==34&&serviceDict.getAction().intValue()==16) {
+ //加载模板
+ ei.loadInitParams(BlackListIPTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(BlackListIPTemplate.class );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
+ }else {
+ //加载模板
+ ei.loadInitParams(IpAllTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(IpAllTemplate.class );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
+ }
+ }else if (regionDict.getRegionType().equals(2)) {
+ if(regionDict.getFunctionId().intValue()==7&&serviceDict.getAction().intValue()==16) {
+ ei.loadInitParams(DnsStringTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(DnsStringTemplate.class );
+ stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
+ }else if(regionDict.getFunctionId().intValue()==34&&serviceDict.getAction().intValue()==16) {
+ ei.loadInitParams(BlackListStringTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(BlackListStringTemplate.class );
+ stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
+ }else {
+ ei.loadInitParams(StringAllTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(StringAllTemplate.class );
+ stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
+ }
+
+ }else if (regionDict.getRegionType().equals(3)) {
+ if(serviceDict.getAction().intValue()==16) {
+ ei.loadInitParams(DnsComplexStringTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(DnsComplexStringTemplate.class);
+ complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
+ }else {
+ ei.loadInitParams(ComplexStringAllTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(ComplexStringAllTemplate.class);
+ complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
+ }
+ }
+ //删除文件
+ if(ei.getUploadFile()!=null&&ei.getUploadFile().exists()) {
+ ei.getUploadFile().delete();
+ }
+ //------------------------------------check format end----------------------------
+ Date date = new Date();
+ String isSend = request.getParameter("isSend")==null?"":request.getParameter("isSend");
+ if (regionDict.getRegionType().equals(1)) {// IP
+ List _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
+ while(!ipPortCfgs.isEmpty()) {
+ ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
+ List compileIds=Lists.newArrayList();
+ List regionIds=Lists.newArrayList();
+ List groupIds=Lists.newArrayList();
+ List numRegionGroupIds=Lists.newArrayList();
+ List numRegionRegionIds=Lists.newArrayList();
+ if(!regionDict.getFunctionId().equals(405)) {//app ip compileId 从config_group_info中取
+ try {
+ compileIds = ConfigServiceUtil.getId(1,_ipPortCfgs.size());
+ if(isSend.equals("1")) {
+ groupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size());
+ regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ //需要获取数值域的id
+ if(serviceDict!=null&&serviceDict.getProtocolId()!=null&&serviceDict.getProtocolId()>0) {
+ numRegionGroupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size());
+ numRegionRegionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("获取编译ID出错");
+ throw new MaatConvertException(":"+e.getMessage());
+ }
+ }else {
+ try {
+ regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("获取域ID出错");
+ throw new MaatConvertException(":"+e.getMessage());
+ }
+ }
+ int ind=0;
+ for (BaseIpCfg cfg : _ipPortCfgs) {
+ cfg.setAction(serviceDict==null?null:serviceDict.getAction());
+ /*cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);*/
+ cfg.setCfgRegionCode(regionDict.getConfigRegionCode());
+ cfg.setCfgType(regionDict.getConfigRegionValue());
+ cfg.setCreateTime(date);
+ cfg.setCreatorId(UserUtils.getUser().getId());
+ //cfg.setDoLog(2);
+ cfg.setFunctionId(regionDict.getFunctionId());
+ if(isSend.equals("1")) {
+ cfg.setIsAudit(Constants.AUDIT_YES);
+ cfg.setIsValid(Constants.VALID_YES);
+ cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);
+ if(groupIds!=null&&groupIds.size()==_ipPortCfgs.size()) {
+ cfg.setGroupId(groupIds.get(ind));
+ }
+ if(regionIds!=null&®ionIds.size()==_ipPortCfgs.size()) {
+ cfg.setRegionId(regionIds.get(ind));
+ }
+ if(serviceDict!=null&&serviceDict.getProtocolId()!=null) {
+ if(numRegionGroupIds!=null&&numRegionGroupIds.size()==_ipPortCfgs.size()) {
+ cfg.setNumberRegionGroupId(numRegionGroupIds.get(ind));
+ }
+ if(numRegionRegionIds!=null&&numRegionRegionIds.size()==_ipPortCfgs.size()) {
+ cfg.setNumberRegionRegionId(numRegionRegionIds.get(ind));
+ }
+ }
+ }else {
+ cfg.setIsAudit(Constants.AUDIT_NOT_YET);
+ cfg.setIsValid(Constants.VALID_NO);
+ }
+ cfg.setIsAreaEffective(0);
+ cfg.setLable("0");
+ cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
+ cfg.setAttribute(attribute);
+ cfg.setClassify(classify);
+ cfg.setServiceId(serviceDict==null?null:serviceDict.getServiceId());
+ cfg.setTableName("ip_port_cfg");
+ if(compileIds.size()==_ipPortCfgs.size()) {
+ cfg.setCompileId(compileIds.get(ind));
+ }
+ CfgIndexInfo cfgIndexInfo = new CfgIndexInfo();
+ BeanUtils.copyProperties(cfg, cfgIndexInfo,new String[] {"cfgId"});
+ if(cfg.getDnsStrategyId()!=null) {
+ cfgIndexInfo.setDnsStrategyId(Long.parseLong(cfg.getDnsStrategyId().toString()));
+ }
+ cfgIndexInfos.add(cfgIndexInfo);
+ ind++;
+ }
+ websiteCfgService.saveAndSend(regionDict, cfgIndexInfos, _ipPortCfgs, isSend.equals("1"));
+ cfgIndexInfos.clear();
+ _ipPortCfgs.clear();
+ }
+ }else if (regionDict.getRegionType().equals(2)) {//账号
+ List> _stringCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
+ while(!stringCfgs.isEmpty()) {
+ stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
+ List compileIds=Lists.newArrayList();
+ List groupIds=Lists.newArrayList();
+ List regionIds=Lists.newArrayList();
+ try {
+ compileIds = ConfigServiceUtil.getId(1,_stringCfgs.size());
+ if(isSend.equals("1")) {
+ groupIds = ConfigServiceUtil.getId(2,_stringCfgs.size());
+ regionIds = ConfigServiceUtil.getId(3,_stringCfgs.size());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("获取编译ID出错");
+ throw new MaatConvertException(":"+e.getMessage());
+ }
+ int ind=0;
+ for (BaseStringCfg cfg : _stringCfgs) {
+ cfg.setAction(serviceDict.getAction());
+ cfg.setCfgRegionCode(regionDict.getConfigRegionCode());
+ cfg.setCfgType(regionDict.getConfigRegionValue());
+ cfg.setCreateTime(date);
+ cfg.setCreatorId(UserUtils.getUser().getId());
+ //cfg.setDoLog(2);
+ cfg.setFunctionId(regionDict.getFunctionId());
+ if(isSend.equals("1")) {
+ cfg.setIsAudit(Constants.AUDIT_YES);
+ cfg.setIsValid(Constants.VALID_YES);
+ cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);
+ if(groupIds!=null&&groupIds.size()==_stringCfgs.size()) {
+ cfg.setGroupId(groupIds.get(ind));
+ }
+ if(regionIds!=null&®ionIds.size()==_stringCfgs.size()) {
+ cfg.setRegionId(regionIds.get(ind));
+ }
+ }else {
+ cfg.setIsAudit(Constants.AUDIT_NOT_YET);
+ cfg.setIsValid(Constants.VALID_NO);
+ }
+ cfg.setIsAreaEffective(0);
+ cfg.setLable("0");
+ cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
+ cfg.setAttribute(attribute);
+ cfg.setClassify(classify);
+ cfg.setServiceId(serviceDict.getServiceId());
+ if(compileIds!=null&&compileIds.size()==_stringCfgs.size()) {
+ cfg.setCompileId(compileIds.get(ind));
+ }
+ CfgIndexInfo cfgIndexInfo = new CfgIndexInfo();
+ BeanUtils.copyProperties(cfg, cfgIndexInfo, new String[] {"cfgId"});
+ if(cfg.getDnsStrategyId()!=null) {
+ cfgIndexInfo.setDnsStrategyId(Long.parseLong(cfg.getDnsStrategyId().toString()));
+ }
+ cfgIndexInfos.add(cfgIndexInfo);
+ ind++;
+ }
+ websiteCfgService.saveAndSend(regionDict, cfgIndexInfos, _stringCfgs, isSend.equals("1"));
+ cfgIndexInfos.clear();
+ _stringCfgs.clear();
+ }
+ } else if (regionDict.getRegionType().equals(3)) {//dns
+ List _complexkeywordCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
+ while(!complexkeywordCfgs.isEmpty()) {
+ complexkeywordCfgs.drainTo(_complexkeywordCfgs, Constants.MAAT_JSON_SEND_SIZE);
+ List compileIds=Lists.newArrayList();
+ List groupIds=Lists.newArrayList();
+ List regionIds=Lists.newArrayList();
+ try {
+ compileIds = ConfigServiceUtil.getId(1,_complexkeywordCfgs.size());
+ if(isSend.equals("1")) {
+ groupIds = ConfigServiceUtil.getId(2,_complexkeywordCfgs.size());
+ regionIds = ConfigServiceUtil.getId(3,_complexkeywordCfgs.size());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("获取编译ID出错");
+ throw new MaatConvertException(":"+e.getMessage());
+ }
+ int ind=0;
+ for (ComplexkeywordCfg cfg : _complexkeywordCfgs) {
+ cfg.setAction(serviceDict.getAction());
+ /*cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);*/
+ cfg.setCfgRegionCode(regionDict.getConfigRegionCode());
+ cfg.setCfgType(regionDict.getConfigRegionValue());
+ cfg.setCreateTime(date);
+ cfg.setCreatorId(UserUtils.getUser().getId());
+ //cfg.setDoLog(2);
+ cfg.setFunctionId(regionDict.getFunctionId());
+ if(isSend.equals("1")) {
+ cfg.setIsAudit(Constants.AUDIT_YES);
+ cfg.setIsValid(Constants.VALID_YES);
+ cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);
+ if(groupIds!=null&&groupIds.size()==_complexkeywordCfgs.size()) {
+ cfg.setGroupId(groupIds.get(ind));
+ }
+ if(regionIds!=null&®ionIds.size()==_complexkeywordCfgs.size()) {
+ cfg.setRegionId(regionIds.get(ind));
+ }
+ }else {
+ cfg.setIsAudit(Constants.AUDIT_NOT_YET);
+ cfg.setIsValid(Constants.VALID_NO);
+ }
+ //cfg.setIsAudit(0);
+ //cfg.setIsValid(0);
+ cfg.setIsAreaEffective(0);
+ cfg.setLable("0");
+ cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
+ cfg.setAttribute(attribute);
+ cfg.setClassify(classify);
+ cfg.setServiceId(serviceDict.getServiceId());
+ if(compileIds!=null&&compileIds.size()==_complexkeywordCfgs.size()) {
+ cfg.setCompileId(compileIds.get(ind));
+ }
+ CfgIndexInfo cfgIndexInfo = new CfgIndexInfo();
+ BeanUtils.copyProperties(cfg, cfgIndexInfo,new String[] {"cfgId"});
+ if(cfg.getDnsStrategyId()!=null) {
+ cfgIndexInfo.setDnsStrategyId(Long.parseLong(cfg.getDnsStrategyId().toString()));
+ }
+ cfgIndexInfos.add(cfgIndexInfo);
+ ind++;
+ }
+ websiteCfgService.saveAndSend(regionDict, cfgIndexInfos, _complexkeywordCfgs, isSend.equals("1"));
+ cfgIndexInfos.clear();
+ _complexkeywordCfgs.clear();
+ }
+ }
+ }
+ if(errTip.toString().length()>0) {
+ addMessage(redirectAttributes,"error", errTip.toString());
+ }
+ } catch (Exception e) {
+ if(ei!=null) {
+ if(ei.getUploadFile().exists()) {
+ ei.getUploadFile().delete();
+ }
+ }
+ if(e instanceof MaatConvertException) {
+ addMessage(redirectAttributes,"error", "request_service_failed");
+ }else if(e instanceof ServiceException) {
+ addMessage(redirectAttributes,"error", e.getMessage());
+ }else if(e instanceof IndexOutOfBoundsException){
+ addMessage(redirectAttributes,"error", "template_error");
+ }else {
+ addMessage(redirectAttributes,"error", "import_failed");
+ }
+ e.printStackTrace();
+ }
+ long end=System.currentTimeMillis();
+ logger.warn("import finish,cost:"+(end-start));
+ return "redirect:" + adminPath+ importPath;
+ }
}
diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/WhiteListController.java b/src/main/java/com/nis/web/controller/configuration/ntc/WhiteListController.java
index fa5615f78..b0d533ca0 100644
--- a/src/main/java/com/nis/web/controller/configuration/ntc/WhiteListController.java
+++ b/src/main/java/com/nis/web/controller/configuration/ntc/WhiteListController.java
@@ -6,30 +6,44 @@ 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 java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils;
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.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+import com.beust.jcommander.internal.Lists;
+import com.nis.domain.FunctionRegionDict;
+import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
+import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.HttpUrlCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg;
+import com.nis.domain.configuration.template.IpWhitelistTemplate;
import com.nis.domain.configuration.template.WhiteListIpTemplate;
import com.nis.exceptions.MaatConvertException;
+import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
+import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
+import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.configuration.CommonController;
import com.nis.web.security.UserUtils;
@@ -169,7 +183,7 @@ public class WhiteListController extends CommonController {
initPageCondition(model, cfg);
return "/cfg/whitelist/domainList";
}
-
+
@RequestMapping(value = { "saveHttpUrlCfgs" })
public String saveHttpUrlCfgs(RedirectAttributes model, HttpServletRequest request, HttpServletResponse response,
CfgIndexInfo entity) {
@@ -338,7 +352,147 @@ public class WhiteListController extends CommonController {
this._importFileTemplate(request, response, redirectAttributes, functionId, cfgRegionCode,
WhiteListIpTemplate.class);
}
-
+ @RequestMapping(value = "ip/import", method=RequestMethod.POST)
+ public String importIPWhiteList(HttpServletRequest request,HttpServletResponse response,RedirectAttributes redirectAttributes,
+ @RequestParam("files") MultipartFile[] files
+ ,Integer serviceDictId
+ ,Integer requestId
+ ,String attribute
+ ,String classify
+ ,String regionDictIds
+ ,String importPath) {
+ logger.warn("import start...");
+ long start=System.currentTimeMillis();
+ FunctionServiceDict serviceDict = DictUtils.getFunctionServiceDict(serviceDictId);
+ StringBuffer errTip=new StringBuffer();
+ BlockingQueue ipPortCfgs =null;
+ List cfgIndexInfos = new ArrayList();
+ ImportBigExcel ei=null;
+ Properties properties=this.getMsgProp();
+ for (int i = 0; i < files.length; i++) {
+ MultipartFile file = files[i];
+ try {
+ ei = new ImportBigExcel(file, 0, 1);
+ FunctionRegionDict regionDict = DictUtils
+ .getFunctionRegionDict(Integer.parseInt(regionDictIds.split(",")[i]));
+ //加载模板
+ ei.loadInitParams(IpWhitelistTemplate.class, properties, regionDict, serviceDict);
+ //------------------------------------check format start----------------------------
+ BlockingQueue list = ei.getDataList(IpWhitelistTemplate.class );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
+ //删除文件
+ if(ei.getUploadFile()!=null&&ei.getUploadFile().exists()) {
+ ei.getUploadFile().delete();
+ }
+ //------------------------------------check format end----------------------------
+ Date date = new Date();
+ String isSend = request.getParameter("isSend")==null?"":request.getParameter("isSend");
+ List _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
+ while(!ipPortCfgs.isEmpty()) {
+ ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
+ List compileIds=Lists.newArrayList();
+ List regionIds=Lists.newArrayList();
+ List groupIds=Lists.newArrayList();
+ List numRegionGroupIds=Lists.newArrayList();
+ List numRegionRegionIds=Lists.newArrayList();
+ try {
+ compileIds = ConfigServiceUtil.getId(1,_ipPortCfgs.size());
+ if(isSend.equals("1")) {
+ groupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size());
+ regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ //需要获取数值域的id
+ if(serviceDict!=null&&serviceDict.getProtocolId()!=null&&serviceDict.getProtocolId()>0) {
+ numRegionGroupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size());
+ numRegionRegionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ }
+ }
+ } catch (Exception e) {
+ logger.info("获取编译ID出错",e);
+ e.printStackTrace();
+ throw new MaatConvertException(":"+e.getMessage());
+ }
+ int ind=0;
+ for (BaseIpCfg cfg : _ipPortCfgs) {
+ cfg.setAction(serviceDict==null?null:serviceDict.getAction());
+ /*cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);*/
+ cfg.setCfgRegionCode(regionDict.getConfigRegionCode());
+ cfg.setCfgType(regionDict.getConfigRegionValue());
+ cfg.setCreateTime(date);
+ cfg.setCreatorId(UserUtils.getUser().getId());
+ //cfg.setDoLog(2);
+ cfg.setFunctionId(regionDict.getFunctionId());
+ if(isSend.equals("1")) {
+ cfg.setIsAudit(Constants.AUDIT_YES);
+ cfg.setIsValid(Constants.VALID_YES);
+ cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);
+ if(groupIds!=null&&groupIds.size()==_ipPortCfgs.size()) {
+ cfg.setGroupId(groupIds.get(ind));
+ }
+ if(regionIds!=null&®ionIds.size()==_ipPortCfgs.size()) {
+ cfg.setRegionId(regionIds.get(ind));
+ }
+ if(serviceDict!=null&&serviceDict.getProtocolId()!=null) {
+ if(numRegionGroupIds!=null&&numRegionGroupIds.size()==_ipPortCfgs.size()) {
+ cfg.setNumberRegionGroupId(numRegionGroupIds.get(ind));
+ }
+ if(numRegionRegionIds!=null&&numRegionRegionIds.size()==_ipPortCfgs.size()) {
+ cfg.setNumberRegionRegionId(numRegionRegionIds.get(ind));
+ }
+ }
+ }else {
+ cfg.setIsAudit(Constants.AUDIT_NOT_YET);
+ cfg.setIsValid(Constants.VALID_NO);
+ }
+ cfg.setIsAreaEffective(0);
+ cfg.setLable("0");
+ cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
+ cfg.setAttribute(attribute);
+ cfg.setClassify(classify);
+ cfg.setServiceId(serviceDict==null?null:serviceDict.getServiceId());
+ cfg.setTableName("ip_port_cfg");
+ if(compileIds.size()==_ipPortCfgs.size()) {
+ cfg.setCompileId(compileIds.get(ind));
+ }
+ if(regionDict.getFunctionId().equals(405)&®ionIds.size()==_ipPortCfgs.size()) {
+ cfg.setUserRegion1(regionIds.get(ind).toString());
+ }
+ CfgIndexInfo cfgIndexInfo = new CfgIndexInfo();
+ BeanUtils.copyProperties(cfg, cfgIndexInfo,new String[] {"cfgId"});
+ cfgIndexInfos.add(cfgIndexInfo);
+ ind++;
+ }
+ ipCfgService.saveAndSendIPList(regionDict, serviceDict, _ipPortCfgs, cfgIndexInfos,isSend.equals("1"));
+ cfgIndexInfos.clear();
+ _ipPortCfgs.clear();
+ }
+ if(errTip.toString().length()>0) {
+ addMessage(redirectAttributes,"error", errTip.toString());
+ }
+ } catch (Exception e) {
+ if(ei!=null) {
+ if(ei.getUploadFile().exists()) {
+ ei.getUploadFile().delete();
+ }
+ }
+ if(e instanceof MaatConvertException) {
+ addMessage(redirectAttributes,"error", "request_service_failed");
+ }else if(e instanceof ServiceException) {
+ addMessage(redirectAttributes,"error", e.getMessage());
+ }else if(e instanceof IndexOutOfBoundsException){
+ addMessage(redirectAttributes,"error", "template_error");
+ }else {
+ addMessage(redirectAttributes,"error", "import_failed");
+ }
+ e.printStackTrace();
+ }
+
+ }
+ long end=System.currentTimeMillis();
+ logger.warn("import finish,cost:"+(end-start));
+ return "redirect:" + adminPath+ importPath;
+ }
// ip配置导出
@RequestMapping(value = "ip/export")
public void exportIp(String columns, Model model, HttpServletRequest request, HttpServletResponse response,
diff --git a/src/main/java/com/nis/web/controller/configuration/proxy/InterceptController.java b/src/main/java/com/nis/web/controller/configuration/proxy/InterceptController.java
index 820f03c81..58bbc0987 100644
--- a/src/main/java/com/nis/web/controller/configuration/proxy/InterceptController.java
+++ b/src/main/java/com/nis/web/controller/configuration/proxy/InterceptController.java
@@ -8,20 +8,30 @@ import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
+import java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
+import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils;
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.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+import com.beust.jcommander.internal.Lists;
+import com.nis.domain.FunctionRegionDict;
+import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
+import com.nis.domain.basics.AsnGroupInfo;
import com.nis.domain.basics.PolicyGroupInfo;
+import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.HttpUrlCfg;
@@ -29,13 +39,22 @@ import com.nis.domain.configuration.InterceptPktBin;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.PxyObjKeyring;
import com.nis.domain.configuration.PxyObjSpoofingIpPool;
+import com.nis.domain.configuration.template.IpAllNotDoLogTemplate;
+import com.nis.domain.configuration.template.IpAllTemplate;
+import com.nis.domain.configuration.template.IpPayloadTemplate;
+import com.nis.domain.configuration.template.IpRateLimitTemplate;
+import com.nis.domain.configuration.template.IpSpoofingTemplate;
import com.nis.exceptions.MaatConvertException;
+import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
+import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.configuration.CommonController;
import com.nis.web.security.UserUtils;
+import jersey.repackaged.com.google.common.collect.Maps;
+
/**
* IP相关配置控制类
*
@@ -250,7 +269,153 @@ public class InterceptController extends CommonController {
* redirectAttributes){ this._exportIp(columns,model, request, response,
* entity, ids, redirectAttributes); }
*/
-
+ @RequestMapping(value = {"/ippayload/import","/ip/import"}, method=RequestMethod.POST)
+ public String importIPList(HttpServletRequest request,HttpServletResponse response,RedirectAttributes redirectAttributes,
+ @RequestParam("files") MultipartFile[] files
+ ,Integer serviceDictId
+ ,Integer requestId
+ ,String attribute
+ ,String classify
+ ,String regionDictIds
+ ,String importPath) {
+ logger.warn("import start...");
+ long start=System.currentTimeMillis();
+ FunctionServiceDict serviceDict = DictUtils.getFunctionServiceDict(serviceDictId);
+ StringBuffer errTip=new StringBuffer();
+ BlockingQueue ipPortCfgs =null;
+ List cfgIndexInfos = new ArrayList();
+ ImportBigExcel ei=null;
+ Properties properties=this.getMsgProp();
+ for (int i = 0; i < files.length; i++) {
+ MultipartFile file = files[i];
+ FunctionRegionDict regionDict = DictUtils
+ .getFunctionRegionDict(Integer.parseInt(regionDictIds.split(",")[i]));
+ try {
+ ei = new ImportBigExcel(file, 0, 1);
+ //------------------------------------check format start----------------------------
+ if (regionDict.getFunctionId().equals(212)) {
+ //加载模板
+ ei.loadInitParams(IpPayloadTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(IpPayloadTemplate.class );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
+ } else if(regionDict.getFunctionId().equals(214)) { // IpSpoofing
+ //加载模板
+ ei.loadInitParams(IpSpoofingTemplate.class, properties, regionDict, serviceDict);
+ BlockingQueue list = ei.getDataList(IpSpoofingTemplate.class );
+ ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,null, list);
+ }
+ //------------------------------------check format end----------------------------
+ //删除文件
+ if(ei.getUploadFile()!=null&&ei.getUploadFile().exists()) {
+ ei.getUploadFile().delete();
+ }
+ Date date = new Date();
+ String isSend = request.getParameter("isSend")==null?"":request.getParameter("isSend");
+ List _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
+ while(!ipPortCfgs.isEmpty()) {
+ ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
+ List compileIds=Lists.newArrayList();
+ List regionIds=Lists.newArrayList();
+ List groupIds=Lists.newArrayList();
+ List numRegionGroupIds=Lists.newArrayList();
+ List numRegionRegionIds=Lists.newArrayList();
+ try {
+ compileIds = ConfigServiceUtil.getId(1,_ipPortCfgs.size());
+ if(isSend.equals("1")) {
+ groupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size());
+ regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ //需要获取数值域的id
+ if(serviceDict!=null&&serviceDict.getProtocolId()!=null&&serviceDict.getProtocolId()>0) {
+ numRegionGroupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size());
+ numRegionRegionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("获取编译ID出错");
+ throw new MaatConvertException(":"+e.getMessage());
+ }
+ int ind=0;
+ for (BaseIpCfg cfg : _ipPortCfgs) {
+ cfg.setAction(serviceDict==null?null:serviceDict.getAction());
+ cfg.setCfgRegionCode(regionDict.getConfigRegionCode());
+ cfg.setCfgType(regionDict.getConfigRegionValue());
+ cfg.setCreateTime(date);
+ cfg.setCreatorId(UserUtils.getUser().getId());
+ cfg.setFunctionId(regionDict.getFunctionId());
+ if(isSend.equals("1")) {
+ cfg.setIsAudit(Constants.AUDIT_YES);
+ cfg.setIsValid(Constants.VALID_YES);
+ cfg.setAuditorId(UserUtils.getUser().getId());
+ cfg.setAuditTime(date);
+ if(groupIds!=null&&groupIds.size()==_ipPortCfgs.size()) {
+ cfg.setGroupId(groupIds.get(ind));
+ }
+ if(regionIds!=null&®ionIds.size()==_ipPortCfgs.size()) {
+ cfg.setRegionId(regionIds.get(ind));
+ }
+ if(serviceDict!=null&&serviceDict.getProtocolId()!=null) {
+ if(numRegionGroupIds!=null&&numRegionGroupIds.size()==_ipPortCfgs.size()) {
+ cfg.setNumberRegionGroupId(numRegionGroupIds.get(ind));
+ }
+ if(numRegionRegionIds!=null&&numRegionRegionIds.size()==_ipPortCfgs.size()) {
+ cfg.setNumberRegionRegionId(numRegionRegionIds.get(ind));
+ }
+ }
+ }else {
+ cfg.setIsAudit(Constants.AUDIT_NOT_YET);
+ cfg.setIsValid(Constants.VALID_NO);
+ }
+ cfg.setIsAreaEffective(0);
+ cfg.setLable("0");
+ cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
+ cfg.setAttribute(attribute);
+ cfg.setClassify(classify);
+ cfg.setServiceId(serviceDict==null?null:serviceDict.getServiceId());
+ cfg.setTableName("ip_port_cfg");
+ if(compileIds.size()==_ipPortCfgs.size()) {
+ cfg.setCompileId(compileIds.get(ind));
+ }
+ if(serviceDict.getFunctionId().equals(212)) {// IP Payload
+ CfgIndexInfo cfgIndexInfo = new CfgIndexInfo();
+ BeanUtils.copyProperties(cfg, cfgIndexInfo,new String[] {"cfgId"});
+ cfgIndexInfos.add(cfgIndexInfo);
+ }
+ ind++;
+ }
+ if(serviceDict.getFunctionId().equals(214)) {// IpSpoofing
+ interceptCfgService.saveAndSendSpoofingIpPool(_ipPortCfgs, cfgIndexInfos,isSend.equals("1"));
+ }else {
+ interceptCfgService.saveAndSendIPList(regionDict, serviceDict, _ipPortCfgs, cfgIndexInfos,isSend.equals("1"));
+ }
+ cfgIndexInfos.clear();
+ _ipPortCfgs.clear();
+ }
+ if(errTip.toString().length()>0) {
+ addMessage(redirectAttributes,"error", errTip.toString());
+ }
+ } catch (Exception e) {
+ if(ei!=null) {
+ if(ei.getUploadFile().exists()) {
+ ei.getUploadFile().delete();
+ }
+ }
+ if(e instanceof MaatConvertException) {
+ addMessage(redirectAttributes,"error", "request_service_failed");
+ }else if(e instanceof ServiceException) {
+ addMessage(redirectAttributes,"error", e.getMessage());
+ }else if(e instanceof IndexOutOfBoundsException){
+ addMessage(redirectAttributes,"error", "template_error");
+ }else {
+ addMessage(redirectAttributes,"error", "import_failed");
+ }
+ e.printStackTrace();
+ }
+ }
+ long end=System.currentTimeMillis();
+ logger.warn("import finish,cost:"+(end-start));
+ return "redirect:" + adminPath+ importPath;
+ }
// ip配置导出
@RequestMapping(value = "exportIpAddr")
public void exportIpAddr(Model model, HttpServletRequest request, HttpServletResponse response,
diff --git a/src/main/java/com/nis/web/service/BaseService.java b/src/main/java/com/nis/web/service/BaseService.java
index af2fed8a0..c81426e72 100644
--- a/src/main/java/com/nis/web/service/BaseService.java
+++ b/src/main/java/com/nis/web/service/BaseService.java
@@ -65,9 +65,7 @@ import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.DdosIpCfg;
import com.nis.domain.configuration.DnsIpCfg;
import com.nis.domain.configuration.DnsResStrategy;
-import com.nis.domain.configuration.FileDigestCfg;
import com.nis.domain.configuration.IpReusePolicyCfg;
-import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.configuration.PxyObjKeyring;
import com.nis.domain.configuration.PxyObjSpoofingIpPool;
import com.nis.domain.configuration.PxyObjTrustedCaCert;
@@ -108,7 +106,6 @@ import com.nis.web.dao.configuration.StringCfgDao;
import com.nis.web.dao.specific.ConfigGroupInfoDao;
import com.nis.web.dao.specific.SpecificServiceCfgDao;
import com.nis.web.security.UserUtils;
-import com.nis.web.service.basics.AsnGroupInfoService;
import com.nis.web.service.basics.SysDictInfoService;
/**
@@ -1619,6 +1616,7 @@ public abstract class BaseService {
}
return maatCfg;
}
+
/**
* 分割并保存
* @param regionDict
@@ -2342,34 +2340,36 @@ public abstract class BaseService {
SqlSession batchSqlSession = null;
List configCompileList = new ArrayList();
try{
+ //单独创建一个AppPolicyCfg 并赋值,appPolicyCfgs 中的isValid,isAudit会在 insertAppPolicyCfgForBatch之后改变值
+ AppPolicyCfg app=new AppPolicyCfg();
+ BeanUtils.copyProperties(appPolicyCfgs.get(0), app);
batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
for(int index = 0; index < appPolicyCfgs.size();index++){
AppPolicyCfg _cfg = appPolicyCfgs.get(index);
((AppCfgDao) batchSqlSession.getMapper(AppCfgDao.class)).insertAppPolicyCfgForBatch(_cfg);
-
}
if(send) {
StringBuffer cfgKeywords = new StringBuffer();
if (appPolicyCfgs.get(0).getBehavCode() != null) {
if (regionDict.getFunctionId().equals(63)) {
- cfgKeywords.append(Constants.APP_ID_REGION + "=" + appPolicyCfgs.get(0).getAppCode());
+ cfgKeywords.append(Constants.APP_ID_REGION + "=" + app.getAppCode());
} else if (regionDict.getFunctionId().equals(407)
|| regionDict.getFunctionId().equals(408)) {
- cfgKeywords.append(Constants.PROTO_ID_REGION + "=" + appPolicyCfgs.get(0).getAppCode());
+ cfgKeywords.append(Constants.PROTO_ID_REGION + "=" + app.getAppCode());
}
cfgKeywords.append(Constants.KEYWORD_EXPR);
- cfgKeywords.append(Constants.BEHAV_ID_REGION + "=" + appPolicyCfgs.get(0).getBehavCode());
+ cfgKeywords.append(Constants.BEHAV_ID_REGION + "=" + app.getBehavCode());
// appPolicyCfgs.get(0.setCfgKeywords(appPolicyCfgs.get(0.getAppCode()+Constants.KEYWORD_EXPR+appPolicyCfgs.get(0.getBehavCode());
} else {
if (regionDict.getFunctionId().equals(63)) {
- cfgKeywords.append(Constants.APP_ID_REGION + "=" + appPolicyCfgs.get(0).getAppCode());
+ cfgKeywords.append(Constants.APP_ID_REGION + "=" + app.getAppCode());
} else if (regionDict.getFunctionId().equals(407)
|| regionDict.getFunctionId().equals(408)) {
- cfgKeywords.append(Constants.PROTO_ID_REGION + "=" + appPolicyCfgs.get(0).getAppCode());
+ cfgKeywords.append(Constants.PROTO_ID_REGION + "=" + app.getAppCode());
}
// entity.setCfgKeywords(entity.getAppCode()+"");
}
- appPolicyCfgs.get(0).setCfgKeywords(cfgKeywords.toString());
+ app.setCfgKeywords(cfgKeywords.toString());
}
List groupIds=Lists.newArrayList();
List regionIds=Lists.newArrayList();
@@ -2381,7 +2381,7 @@ public abstract class BaseService {
MaatCfg maatCfg=null;
if(send) {
if(regionDict.getIsMaat().intValue()==1) {
- AppPolicyCfg cfg=(AppPolicyCfg) appPolicyCfgs.get(0);
+ AppPolicyCfg cfg=app;
cfg.setCompileId(list.get(index).getCompileId());
cfg.setRegionId(regionIds.get(index));
cfg.setGroupId(groupIds.get(index));
@@ -2533,6 +2533,7 @@ public abstract class BaseService {
* @param data
* @param tableName
*/
+ @Deprecated
@Transactional(readOnly = false, rollbackFor = RuntimeException.class)
public void saveIpBatch(FunctionRegionDict regionDict, FunctionServiceDict serviceDict,List cfgs, boolean send) {
if (regionDict != null) {
@@ -2939,6 +2940,8 @@ public abstract class BaseService {
* @param cfgIndexInfos
* @param send
*/
+ @Deprecated
+ @Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveAndSendSpoofingIpPool(List extends BaseCfg> list, List cfgIndexInfos, boolean send) {
List ipCfgList = (List)list;
List spoofingPoolIds=Lists.newArrayList();
@@ -3012,7 +3015,9 @@ public abstract class BaseService {
index ++;
}
-
+// if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
+// this.saveCfgIndexOf(cfgIndexInfos);
+// }
if(send && spoofingPools.size()>0) {
//调用服务接口下发配置数据
String json=gsonToJson(spoofingPools);
diff --git a/src/main/java/com/nis/web/service/configuration/AppCfgService.java b/src/main/java/com/nis/web/service/configuration/AppCfgService.java
index b9fbdb340..43807ca9d 100644
--- a/src/main/java/com/nis/web/service/configuration/AppCfgService.java
+++ b/src/main/java/com/nis/web/service/configuration/AppCfgService.java
@@ -1,6 +1,5 @@
package com.nis.web.service.configuration;
-import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -14,10 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import com.google.common.collect.Lists;
import com.nis.domain.Page;
-import com.nis.domain.basics.AsnIpCfg;
-import com.nis.domain.basics.Varibles;
import com.nis.domain.configuration.AppByteCfg;
import com.nis.domain.configuration.AppDomainCfg;
import com.nis.domain.configuration.AppHeaderCfg;
@@ -28,9 +24,7 @@ import com.nis.domain.configuration.AppSslCertCfg;
import com.nis.domain.configuration.AppTcpCfg;
import com.nis.domain.configuration.AppTopicDomainCfg;
import com.nis.domain.configuration.AreaIpCfg;
-import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
-import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg;
@@ -50,7 +44,6 @@ import com.nis.domain.specific.SpecificServiceCfg;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
-import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
import com.nis.util.StringUtils;
import com.nis.web.dao.basics.AsnIpCfgDao;
@@ -2122,5 +2115,5 @@ public class AppCfgService extends BaseService {
appCfgDao.saveDomainDict(websiteDomainTopic);
}
-
+
}
diff --git a/src/main/java/com/nis/web/service/configuration/BgpCfgService.java b/src/main/java/com/nis/web/service/configuration/BgpCfgService.java
index 954776b36..a940dec66 100644
--- a/src/main/java/com/nis/web/service/configuration/BgpCfgService.java
+++ b/src/main/java/com/nis/web/service/configuration/BgpCfgService.java
@@ -8,9 +8,13 @@ import java.util.Map;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.nis.domain.FunctionRegionDict;
import com.nis.domain.Page;
import com.nis.domain.configuration.AreaIpCfg;
+import com.nis.domain.configuration.BaseCfg;
+import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.IpPortCfg;
@@ -30,8 +34,10 @@ import com.nis.util.Constants;
import com.nis.util.StringUtil;
import com.nis.web.dao.configuration.AreaIpCfgDao;
import com.nis.web.dao.configuration.BgpCfgDao;
+import com.nis.web.dao.configuration.IpCfgDao;
import com.nis.web.dao.configuration.StringCfgDao;
import com.nis.web.security.UserUtils;
+import com.nis.web.service.BaseService;
import com.nis.web.service.CrudService;
/**
@@ -47,6 +53,8 @@ public class BgpCfgService extends CrudService {
protected StringCfgDao stringCfgDao;
@Autowired
protected AreaIpCfgDao areaIpCfgDao;
+ @Autowired
+ protected IpCfgDao ipCfgDao;
public CfgIndexInfo getBgpCfg(Long cfgId,Integer compileId){
CfgIndexInfo entity = bgpCfgDao.getCfgIndexInfo(cfgId,compileId);
@@ -419,4 +427,66 @@ public class BgpCfgService extends CrudService {
logger.info("BGP配置取消配置响应信息:"+result.getMsg());
}
}
+ @Transactional(readOnly=false,rollbackFor=RuntimeException.class)
+ public void saveAndSend(FunctionRegionDict regionDict,List cfgIndexInfos,List extends BaseCfg>> data,boolean send) {
+ if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
+ this.saveCfgIndexOf(cfgIndexInfos);
+ }
+ if(data!=null&&!data.isEmpty()) {
+ List configCompileList = new ArrayList();
+ if(data.get(0) instanceof BaseIpCfg) {
+ for (int index = 0; index < data.size(); index++) {
+ BaseIpCfg cfg =(BaseIpCfg)data.get(index);
+ ipCfgDao.insertForBatch(cfg);
+ if (send) {
+ if(regionDict.getIsMaat().intValue()==1) {
+ MaatCfg maatCfg=convertMaatCfg(cfg,1);
+ //userregion处理
+ configCompileList.add(maatCfg);
+ }
+ }
+ }
+ }else if(data.get(0) instanceof BaseStringCfg) {
+ for (int index = 0; index < data.size(); index++) {
+ BaseStringCfg cfg = (BaseStringCfg)data.get(index);
+ if(cfg.getCfgKeywords()!=null && !"".equals(cfg.getCfgKeywords())){
+ cfg.setTableName("ntc_bgp_as_cfg");
+ stringCfgDao.saveStringCfgBatch(cfg);
+ }
+ if (send) {
+ if(regionDict.getIsMaat().intValue()==1) {
+ MaatCfg maatCfg=convertMaatCfg(cfg,2);
+ //userregion处理
+ configCompileList.add(maatCfg);
+ }
+
+ }
+ }
+
+ }
+ if (send && configCompileList.size() > 0) {
+ ToMaatBean maatBean = new ToMaatBean();
+ maatBean.setConfigCompileList(configCompileList);
+ maatBean.setAuditTime(new Date());
+ maatBean.setCreatorName(UserUtils.getUser().getName());
+ maatBean.setVersion(Constants.MAAT_VERSION);
+ maatBean.setOpAction(Constants.INSERT_ACTION);
+ long start=System.currentTimeMillis();
+ // 调用服务接口下发配置数据
+ String json = BaseService.gsonToJson(maatBean);
+ if(configCompileList.size()>10) {
+ logger.info("bgp配置下发配置条数:" + configCompileList.size());
+ }else {
+ logger.info("bgp配置下发配置参数:" + json);
+ }
+ // 调用服务接口下发配置
+ ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
+ logger.info("bgp配置下发响应信息:" + result.getMsg());
+ long end=System.currentTimeMillis();
+ logger.info("bgp配置下发配置耗时:" + (end-start));
+
+ }
+ }
+
+ }
}
diff --git a/src/main/java/com/nis/web/service/configuration/InterceptCfgService.java b/src/main/java/com/nis/web/service/configuration/InterceptCfgService.java
index 532dff991..742a98d1f 100644
--- a/src/main/java/com/nis/web/service/configuration/InterceptCfgService.java
+++ b/src/main/java/com/nis/web/service/configuration/InterceptCfgService.java
@@ -7,12 +7,22 @@ import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.session.ExecutorType;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.google.common.collect.Lists;
+import com.nis.domain.FunctionRegionDict;
+import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
+import com.nis.domain.callback.InlineIp;
import com.nis.domain.configuration.AreaIpCfg;
+import com.nis.domain.configuration.BaseCfg;
+import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.HttpUrlCfg;
@@ -20,25 +30,26 @@ import com.nis.domain.configuration.InterceptPktBin;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.PxyObjSpoofingIpPool;
import com.nis.domain.maat.MaatCfg;
-import com.nis.domain.maat.MaatCfg.NumBoundaryCfg;
-import com.nis.domain.maat.ToMaatBean;
-import com.nis.domain.maat.ToMaatResult;
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.specific.ConfigGroupInfo;
+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.InterceptCfgDao;
+import com.nis.web.dao.configuration.IpCfgDao;
import com.nis.web.dao.configuration.PxyObjSpoofingIpPoolDao;
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;
+import com.nis.web.service.SpringContextHolder;
/**
* 网站相关配置事务类
@@ -55,7 +66,8 @@ public class InterceptCfgService extends CrudService
protected AreaIpCfgDao areaIpCfgDao;
@Autowired
protected PxyObjSpoofingIpPoolDao pxyObjSpoofingIpPoolDao;
-
+ @Autowired
+ protected IpCfgDao ipCfgDao;
public CfgIndexInfo getInterceptCfg(Long cfgId,Integer compileId){
CfgIndexInfo entity = websiteCfgDao.getCfgIndexInfo(cfgId,compileId);
List ipPortList = websiteCfgDao.getIpPortList(entity);
@@ -578,4 +590,242 @@ public class InterceptCfgService extends CrudService
logger.info("intercept IP/DNS 配置取消配置响应信息:"+result.getMsg());
}
}
+ @Transactional(readOnly=false,rollbackFor=RuntimeException.class)
+ public void saveAndSendIPList(FunctionRegionDict regionDict, FunctionServiceDict serviceDict,List list,List cfgIndexInfos,boolean send) {
+ if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
+ this.saveCfgIndexOf(cfgIndexInfos);
+ }
+ Integer regionType = regionDict.getRegionType();
+ if (1 == regionType.intValue()) {
+ SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
+ SqlSession batchSqlSession = null;
+ List configCompileList = new ArrayList();
+ List callbackIpList = new ArrayList();
+ try{
+ batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
+ for(int index = 0; index < list.size();index++){
+ BaseIpCfg _cfg = list.get(index);
+ batchSqlSession.getMapper(IpCfgDao.class).insertForBatch(_cfg);
+ if(send) {
+ if(regionDict.getIsMaat().intValue()==1) {
+ MaatCfg maatCfg=convertMaatCfg(_cfg,1);
+ //userregion处理
+ if(regionDict.getFunctionId()==212) {
+ String userRegion=Constants.REPLACE_ZONE_KEY+"="+_cfg.getUserRegion1();
+ String substitute="";
+ String userRegion2=StringUtil.isEmpty(_cfg.getUserRegion2()) ? "":_cfg.getUserRegion2();
+ substitute="/";
+ userRegion2 = BaseService.replaceContentEscape(userRegion2);
+ substitute=substitute+userRegion2;
+
+ String userRegion3=StringUtil.isEmpty(_cfg.getUserRegion3()) ? "":_cfg.getUserRegion3();
+ userRegion3 = BaseService.replaceContentEscape(userRegion3);
+ substitute=substitute+"/"+userRegion3;
+
+ userRegion=userRegion+";"+Constants.REPLACE_SUBSTITUTE_KEY+"="+substitute;
+ maatCfg.setUserRegion(userRegion);
+ }
+ configCompileList.add(maatCfg);
+ }else {
+ //根据具体情况判断
+ callbackIpList.add(this.convertCallBackIp(_cfg,_cfg.getDnsStrategyId()));
+ }
+ }
+ }
+ long start=System.currentTimeMillis();
+ long end=System.currentTimeMillis();
+ if (send) {
+ if(configCompileList.size() > 0) {
+ ToMaatBean maatBean = new ToMaatBean();
+ maatBean.setConfigCompileList(configCompileList);
+ maatBean.setAuditTime(new Date());
+ maatBean.setCreatorName(UserUtils.getUser().getName());
+ maatBean.setVersion(Constants.MAAT_VERSION);
+ maatBean.setOpAction(Constants.INSERT_ACTION);
+ start=System.currentTimeMillis();
+ // 调用服务接口下发配置数据
+ String json = BaseService.gsonToJson(maatBean);
+ if(configCompileList.size()>10) {
+ logger.info("IP 配置下发配置条数:" + configCompileList.size());
+ }else {
+ logger.info("IP 配置下发配置参数:" + json);
+ }
+ // 调用服务接口下发配置
+
+ ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
+ logger.info("IP 配置下发响应信息:" + result.getMsg());
+ end=System.currentTimeMillis();
+ logger.info("IP 配置下发配置耗时:" + (end-start));
+ }else {
+ //调用服务接口下发配置数据
+ String json=gsonToJson(callbackIpList);
+ logger.info("IP配置下发配置参数:"+json);
+ //调用服务接口下发配置
+ try {
+ ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json);
+ if(result!=null){
+ logger.info("IP配置配置下发响应信息:"+result.getMsg());
+ }
+ } catch (Exception e) {
+ logger.error("IP配置配置下发失败",e);
+ throw e;
+ }
+ }
+ }
+ batchSqlSession.commit();
+ }finally {
+ if(batchSqlSession != null){
+ batchSqlSession.close();
+ }
+ }
+ }
+ }
+ /**
+ * 处理IpSpoofing配置导入
+ * @param list
+ * @param cfgIndexInfos
+ * @param send
+ */
+ @Override
+ @Transactional(readOnly=false,rollbackFor=RuntimeException.class)
+ public void saveAndSendSpoofingIpPool(List extends BaseCfg> list, List cfgIndexInfos, boolean send) {
+ List ipCfgList = (List)list;
+ List spoofingPoolIds=Lists.newArrayList();
+ List spoofingPools = new ArrayList();
+ PxyObjSpoofingIpPoolDao pxyObjSpoofingIpPoolDao = SpringContextHolder.getBean(PxyObjSpoofingIpPoolDao.class);
+
+ try {
+ spoofingPoolIds = ConfigServiceUtil.getId(1,ipCfgList.size());
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("获取编译ID出错");
+ throw new MaatConvertException(":"+e.getMessage());
+ }
+ int index = 0;
+ List configCompileList = new ArrayList();
+ for (BaseIpCfg cfg : ipCfgList) {
+ // 保存IP仿冒池
+ PxyObjSpoofingIpPool spoofingPool = new PxyObjSpoofingIpPool();
+ spoofingPool.setIpType(4);//ipv4
+ spoofingPool.setIpAddress(cfg.getUserRegion2());//仿冒IP
+ spoofingPool.setProtocol(0);
+ if("dnat".equals(cfg.getUserRegion1().toLowerCase())){//spoofing server ip->dnat
+ spoofingPool.setDirection(1);
+ }else{
+ spoofingPool.setDirection(2);//spoofing client ip->snat
+ }
+ spoofingPool.setPort("0");
+ spoofingPool.setUserRegion("0");
+ spoofingPool.setLocation(0);
+ spoofingPool.setServiceId(642);
+ spoofingPool.setAreaEffectiveIds("0");
+ spoofingPool.setIsAreaEffective(0);
+ spoofingPool.setCreateTime(cfg.getCreateTime());
+ spoofingPool.setCreatorId(UserUtils.getUser().getId());
+ if(spoofingPoolIds.size() == ipCfgList.size()) {
+ spoofingPool.setCompileId(spoofingPoolIds.get(index));
+ }
+ spoofingPool.setAction(1);
+ spoofingPool.setFunctionId(666);
+ spoofingPool.setRequestId(0);
+ if(send) {
+ spoofingPool.setIsAudit(Constants.AUDIT_YES);
+ spoofingPool.setIsValid(Constants.VALID_YES);
+ spoofingPool.setAuditorId(UserUtils.getUser().getId());
+ spoofingPool.setAuditTime(cfg.getAuditTime());
+
+ }else {
+ spoofingPool.setIsValid(Constants.VALID_NO);
+ spoofingPool.setIsAudit(Constants.AUDIT_NOT_YET);
+
+ }
+ pxyObjSpoofingIpPoolDao.insert(spoofingPool);//保存仿冒IP池配置
+ cfg.setUserRegion3(String.valueOf(spoofingPool.getCfgId()));//将仿冒IP池配置ID作为策略组ID
+ if(send) {
+ //地址池处理
+ PxyObjSpoofingIpPool pool=new PxyObjSpoofingIpPool();
+ pool.setCfgId(Long.valueOf(cfg.getUserRegion3()));
+ pool.setIsValid(cfg.getIsValid());
+ pool.setIsAudit(cfg.getIsAudit());
+ pool.setAuditorId(UserUtils.getUser().getId());
+ pool.setAuditTime(cfg.getAuditTime());
+ pxyObjSpoofingIpPoolDao.update(pool);
+
+ spoofingPool.setAreaEffectiveIds("0");
+ spoofingPool.setGroupId(spoofingPool.getCfgId().intValue());
+ spoofingPools.add(spoofingPool);
+ // ip_port_cfg处理
+ MaatCfg maatCfg=convertMaatCfg(cfg,1);
+ //userregion处理
+ String userRegion="nat_type="+cfg.getUserRegion1()+";spoofing_ip_pool="+cfg.getUserRegion3();
+ maatCfg.setUserRegion(userRegion);
+ configCompileList.add(maatCfg);
+ }
+
+ CfgIndexInfo cfgIndexInfo = new CfgIndexInfo();
+ BeanUtils.copyProperties(cfg, cfgIndexInfo,new String[] {"cfgId"});
+ cfgIndexInfos.add(cfgIndexInfo);
+ index ++;
+ }
+ if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
+ this.saveCfgIndexOf(cfgIndexInfos);
+ }
+ this.saveIpPortCfg(ipCfgList);
+ if(send) {
+ if(spoofingPools.size()>0) {
+ //调用服务接口下发配置数据
+ String json=gsonToJson(spoofingPools);
+ if(spoofingPools.size()>10) {
+ logger.info("欺骗IP池配置下发配置条数:" + spoofingPools.size());
+ }else {
+ logger.info("欺骗IP池配置下发配置参数:" + json);
+ }
+ //调用服务接口下发配置
+ try {
+ ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json);
+ if(result!=null){
+ logger.info("欺骗IP池配置下发响应信息:"+result.getMsg());
+ }
+ } catch (Exception e) {
+ logger.error("欺骗IP池配置配置下发失败",e);
+ throw e;
+ }
+ }
+ if(configCompileList.size() > 0) {
+ ToMaatBean maatBean = new ToMaatBean();
+ maatBean.setConfigCompileList(configCompileList);
+ maatBean.setAuditTime(new Date());
+ maatBean.setCreatorName(UserUtils.getUser().getName());
+ maatBean.setVersion(Constants.MAAT_VERSION);
+ maatBean.setOpAction(Constants.INSERT_ACTION);
+ // 调用服务接口下发配置数据
+ String json = BaseService.gsonToJson(maatBean);
+ if(configCompileList.size()>10) {
+ logger.info("IP 配置下发配置条数:" + configCompileList.size());
+ }else {
+ logger.info("IP 配置下发配置参数:" + json);
+ }
+ // 调用服务接口下发配置
+
+ ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
+ logger.info("IP 配置下发响应信息:" + result.getMsg());
+ }
+ }
+ }
+ protected void saveIpPortCfg(List ipCfgList) {
+ SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
+ SqlSession batchSqlSession = null;
+ try{
+ batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
+ for(int index = 0; index < ipCfgList.size();index++){
+ BaseIpCfg baseIpCfg = ipCfgList.get(index);
+ ((IpCfgDao) batchSqlSession.getMapper(IpCfgDao.class)).insertForBatch(baseIpCfg);
+ }
+ batchSqlSession.commit();
+ }finally {
+ if(batchSqlSession != null){
+ batchSqlSession.close();
+ }
+ }
+ }
}
diff --git a/src/main/java/com/nis/web/service/configuration/IpCfgService.java b/src/main/java/com/nis/web/service/configuration/IpCfgService.java
index af1ab9204..2682f814f 100644
--- a/src/main/java/com/nis/web/service/configuration/IpCfgService.java
+++ b/src/main/java/com/nis/web/service/configuration/IpCfgService.java
@@ -2,26 +2,36 @@ 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 java.util.Properties;
import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.session.ExecutorType;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import com.google.gson.Gson;
import com.nis.domain.FunctionRegionDict;
+import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
import com.nis.domain.basics.AsnGroupInfo;
import com.nis.domain.callback.InlineIp;
+import com.nis.domain.configuration.AppIpCfg;
import com.nis.domain.configuration.AreaIpCfg;
import com.nis.domain.configuration.AsnKeywordCfg;
+import com.nis.domain.configuration.BaseCfg;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
+import com.nis.domain.configuration.DdosIpCfg;
+import com.nis.domain.configuration.DnsIpCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.maat.MaatCfg;
@@ -40,12 +50,17 @@ import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
import com.nis.web.dao.basics.AsnGroupInfoDao;
import com.nis.web.dao.basics.AsnIpCfgDao;
+import com.nis.web.dao.configuration.AppMultiFeatureCfgDao;
import com.nis.web.dao.configuration.AreaIpCfgDao;
+import com.nis.web.dao.configuration.DdosCfgDao;
+import com.nis.web.dao.configuration.DnsIpCfgDao;
import com.nis.web.dao.configuration.IpCfgDao;
import com.nis.web.dao.configuration.StringCfgDao;
import com.nis.web.dao.specific.ConfigGroupInfoDao;
import com.nis.web.security.UserUtils;
+import com.nis.web.service.BaseService;
import com.nis.web.service.CrudService;
+import com.nis.web.service.SpringContextHolder;
/**
* IP相关配置事务类
@@ -264,6 +279,91 @@ public class IpCfgService extends CrudService {
}
}
}
+ @Transactional(readOnly=false,rollbackFor=RuntimeException.class)
+ public void saveAndSendIPList(FunctionRegionDict regionDict, FunctionServiceDict serviceDict,List list,List cfgIndexInfos,boolean send) {
+ if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
+ this.saveCfgIndexOf(cfgIndexInfos);
+ }
+ Integer regionType = regionDict.getRegionType();
+ if (1 == regionType.intValue()) {
+ SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
+ SqlSession batchSqlSession = null;
+ List configCompileList = new ArrayList();
+ List callbackIpList = new ArrayList();
+ try{
+ batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
+ for(int index = 0; index < list.size();index++){
+ BaseIpCfg _cfg = list.get(index);
+ batchSqlSession.getMapper(IpCfgDao.class).insertForBatch(_cfg);
+ if(send) {
+ if(regionDict.getIsMaat().intValue()==1) {
+ MaatCfg maatCfg=convertMaatCfg(_cfg,1);
+ //userregion处理
+ //限速需要发Droprate=0.001 ,暂不支持Bandwidth=200kbps
+ if(_cfg.getAction().equals(Constants.RATELIMIT_ACTION)){
+ if(_cfg.getUserRegion1().equals("0")){//丢包率
+ _cfg.setUserRegion2(StringUtil.isEmpty(_cfg.getUserRegion2()) ? "":_cfg.getUserRegion2());
+ maatCfg.setUserRegion(Constants.INTERCEPT_IP_RATELIMIT_DROPRATE_USER_REGION_KEY+"="+_cfg.getUserRegion2());
+ }else if(_cfg.getUserRegion1().equals("1")){//带宽
+ _cfg.setUserRegion3(StringUtil.isEmpty(_cfg.getUserRegion3()) ? "":_cfg.getUserRegion3());
+ maatCfg.setUserRegion(Constants.INTERCEPT_IP_RATELIMIT_BANDWITH_USER_REGION_KEY+"="+_cfg.getUserRegion3());
+ }
+ }
+ configCompileList.add(maatCfg);
+ }else {
+ //根据具体情况判断
+ callbackIpList.add(this.convertCallBackIp(_cfg,_cfg.getDnsStrategyId()));
+ }
+ }
+ }
+ long start=System.currentTimeMillis();
+ long end=System.currentTimeMillis();
+ if (send) {
+ if(configCompileList.size() > 0) {
+ ToMaatBean maatBean = new ToMaatBean();
+ maatBean.setConfigCompileList(configCompileList);
+ maatBean.setAuditTime(new Date());
+ maatBean.setCreatorName(UserUtils.getUser().getName());
+ maatBean.setVersion(Constants.MAAT_VERSION);
+ maatBean.setOpAction(Constants.INSERT_ACTION);
+ start=System.currentTimeMillis();
+ // 调用服务接口下发配置数据
+ String json = BaseService.gsonToJson(maatBean);
+ if(configCompileList.size()>10) {
+ logger.info("IP 配置下发配置条数:" + configCompileList.size());
+ }else {
+ logger.info("IP 配置下发配置参数:" + json);
+ }
+ // 调用服务接口下发配置
+
+ ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
+ logger.info("IP 配置下发响应信息:" + result.getMsg());
+ end=System.currentTimeMillis();
+ logger.info("IP 配置下发配置耗时:" + (end-start));
+ }else {
+ //调用服务接口下发配置数据
+ String json=gsonToJson(callbackIpList);
+ logger.info("IP配置下发配置参数:"+json);
+ //调用服务接口下发配置
+ try {
+ ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json);
+ if(result!=null){
+ logger.info("IP配置配置下发响应信息:"+result.getMsg());
+ }
+ } catch (Exception e) {
+ logger.error("IP配置配置下发失败",e);
+ throw e;
+ }
+ }
+ }
+ batchSqlSession.commit();
+ }finally {
+ if(batchSqlSession != null){
+ batchSqlSession.close();
+ }
+ }
+ }
+ }
public void updateIpCfgValid(Integer isValid,String ids,Integer functionId){
String[] idArray = ids.split(",");
for(String id :idArray){
diff --git a/src/main/java/com/nis/web/service/configuration/WebsiteCfgService.java b/src/main/java/com/nis/web/service/configuration/WebsiteCfgService.java
index edab676ee..1120f4bb8 100644
--- a/src/main/java/com/nis/web/service/configuration/WebsiteCfgService.java
+++ b/src/main/java/com/nis/web/service/configuration/WebsiteCfgService.java
@@ -10,9 +10,13 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.nis.domain.FunctionRegionDict;
import com.nis.domain.Page;
import com.nis.domain.configuration.AreaIpCfg;
+import com.nis.domain.configuration.BaseCfg;
+import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg;
@@ -39,9 +43,11 @@ import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
import com.nis.web.dao.basics.ServiceDictInfoDao;
import com.nis.web.dao.configuration.AreaIpCfgDao;
+import com.nis.web.dao.configuration.IpCfgDao;
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;
/**
@@ -58,6 +64,8 @@ public class WebsiteCfgService extends CrudService {
@Autowired
protected StringCfgDao stringCfgDao;
@Autowired
+ protected IpCfgDao ipCfgDao;
+ @Autowired
private ServiceDictInfoDao serviceDictInfoDao;
public CfgIndexInfo getCfgIndexInfo(Integer compileId){
@@ -1243,4 +1251,103 @@ public class WebsiteCfgService extends CrudService {
logger.info("dns配置取消配置响应信息:"+result.getMsg());
}
}
+ /**
+ * 配置导入,目前只支持单sheet
+ * @param regionDict
+ * @param cfgIndexInfos
+ * @param data
+ * @param send
+ */
+ @Transactional(readOnly=false,rollbackFor=RuntimeException.class)
+ public void saveAndSend(FunctionRegionDict regionDict,List cfgIndexInfos,List extends BaseCfg>> data,boolean send) {
+ if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
+ this.saveCfgIndexOf(cfgIndexInfos);
+ }
+ if(data!=null&&!data.isEmpty()) {
+ List configCompileList = new ArrayList();
+ if(data.get(0) instanceof BaseIpCfg) {
+ for (int index = 0; index < data.size(); index++) {
+ BaseIpCfg cfg =(BaseIpCfg)data.get(index);
+ ipCfgDao.insertForBatch(cfg);
+ if (send) {
+ if(regionDict.getIsMaat().intValue()==1) {
+ MaatCfg maatCfg=convertMaatCfg(cfg,1);
+ //userregion处理
+ if(!StringUtil.isEmpty(cfg.getDnsStrategyId())){
+ maatCfg.setUserRegion(Constants.DNS_STRATEGY_USER_REGION_KEY+"="+cfg.getDnsStrategyId());
+ }
+ configCompileList.add(maatCfg);
+ }
+ }
+ }
+ }else if(data.get(0) instanceof BaseStringCfg) {
+ for (int index = 0; index < data.size(); index++) {
+ BaseStringCfg cfg = (BaseStringCfg)data.get(index);
+ if(cfg.getCfgKeywords()!=null && !"".equals(cfg.getCfgKeywords())){
+ if("subscribe_id".equals(regionDict.getConfigServiceType())){
+ cfg.setTableName("ntc_subscribe_id_cfg");
+ }else {
+ cfg.setTableName("ssl_keyword_cfg");
+ }
+ stringCfgDao.saveStringCfgBatch(cfg);
+ }
+ if (send) {
+ if(regionDict.getIsMaat().intValue()==1) {
+ MaatCfg maatCfg=convertMaatCfg(cfg,2);
+ //userregion处理
+ if(!StringUtil.isEmpty(cfg.getDnsStrategyId())){
+ maatCfg.setUserRegion(Constants.DNS_STRATEGY_USER_REGION_KEY+"="+cfg.getDnsStrategyId());
+ }
+ configCompileList.add(maatCfg);
+ }
+
+ }
+ }
+ }else if(data.get(0) instanceof ComplexkeywordCfg) {
+ for (int index = 0; index < data.size(); index++) {
+ ComplexkeywordCfg cfg = (ComplexkeywordCfg)data.get(index);
+ if(cfg.getCfgKeywords()!=null && !"".equals(cfg.getCfgKeywords())){
+ if(regionDict.getFunctionId().intValue()==7) {
+ cfg.setTableName("dns_domain_cfg");
+ }
+ stringCfgDao.saveComplexkeywordCfgBatch(cfg);
+ }
+ if (send) {
+ if(regionDict.getIsMaat().intValue()==1) {
+ MaatCfg maatCfg=convertMaatCfg(cfg,3);
+ //userregion处理
+ if(!StringUtil.isEmpty(cfg.getDnsStrategyId())){
+ maatCfg.setUserRegion(Constants.DNS_STRATEGY_USER_REGION_KEY+"="+cfg.getDnsStrategyId());
+ }
+ configCompileList.add(maatCfg);
+ }
+
+ }
+ }
+ }
+ if (send && configCompileList.size() > 0) {
+ ToMaatBean maatBean = new ToMaatBean();
+ maatBean.setConfigCompileList(configCompileList);
+ maatBean.setAuditTime(new Date());
+ maatBean.setCreatorName(UserUtils.getUser().getName());
+ maatBean.setVersion(Constants.MAAT_VERSION);
+ maatBean.setOpAction(Constants.INSERT_ACTION);
+ long start=System.currentTimeMillis();
+ // 调用服务接口下发配置数据
+ String json = BaseService.gsonToJson(maatBean);
+ if(configCompileList.size()>10) {
+ logger.info("dns/ssl配置下发配置条数:" + configCompileList.size());
+ }else {
+ logger.info("dns/ssl配置下发配置参数:" + json);
+ }
+ // 调用服务接口下发配置
+ ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
+ logger.info("dns/ssl配置下发响应信息:" + result.getMsg());
+ long end=System.currentTimeMillis();
+ logger.info("dns/ssl配置下发配置耗时:" + (end-start));
+
+ }
+ }
+
+ }
}
diff --git a/src/main/webapp/WEB-INF/include/excel/importModal.jsp b/src/main/webapp/WEB-INF/include/excel/importModal.jsp
index 7de33313a..fd112cdc7 100644
--- a/src/main/webapp/WEB-INF/include/excel/importModal.jsp
+++ b/src/main/webapp/WEB-INF/include/excel/importModal.jsp
@@ -2,7 +2,7 @@
<%@ include file="/WEB-INF/include/taglib.jsp"%>
+
<%@include file="/WEB-INF/include/excel/importModal.jsp" %>
diff --git a/src/main/webapp/WEB-INF/views/cfg/basicprotocol/list.jsp b/src/main/webapp/WEB-INF/views/cfg/basicprotocol/list.jsp
index aaa0aafb8..574ccaa24 100644
--- a/src/main/webapp/WEB-INF/views/cfg/basicprotocol/list.jsp
+++ b/src/main/webapp/WEB-INF/views/cfg/basicprotocol/list.jsp
@@ -566,6 +566,7 @@
+
<%@include file="/WEB-INF/include/excel/importModal.jsp" %>
diff --git a/src/main/webapp/WEB-INF/views/cfg/encryptedtunnelbehav/list.jsp b/src/main/webapp/WEB-INF/views/cfg/encryptedtunnelbehav/list.jsp
index dbc1538aa..0f6ec0907 100644
--- a/src/main/webapp/WEB-INF/views/cfg/encryptedtunnelbehav/list.jsp
+++ b/src/main/webapp/WEB-INF/views/cfg/encryptedtunnelbehav/list.jsp
@@ -564,6 +564,7 @@
+
<%@include file="/WEB-INF/include/excel/importModal.jsp" %>
diff --git a/src/main/webapp/WEB-INF/views/cfg/intercept/interceptList.jsp b/src/main/webapp/WEB-INF/views/cfg/intercept/interceptList.jsp
index 644a47fd6..e1f082c63 100644
--- a/src/main/webapp/WEB-INF/views/cfg/intercept/interceptList.jsp
+++ b/src/main/webapp/WEB-INF/views/cfg/intercept/interceptList.jsp
@@ -663,6 +663,7 @@
+
<%@include file="/WEB-INF/include/excel/importModal.jsp" %>
diff --git a/src/main/webapp/WEB-INF/views/cfg/ipaddr/ipList.jsp b/src/main/webapp/WEB-INF/views/cfg/ipaddr/ipList.jsp
index 4ef3ad3c4..c89b1cf35 100644
--- a/src/main/webapp/WEB-INF/views/cfg/ipaddr/ipList.jsp
+++ b/src/main/webapp/WEB-INF/views/cfg/ipaddr/ipList.jsp
@@ -538,6 +538,7 @@
+
<%@include file="/WEB-INF/include/excel/importModal.jsp" %>
diff --git a/src/main/webapp/WEB-INF/views/cfg/other/bgpList.jsp b/src/main/webapp/WEB-INF/views/cfg/other/bgpList.jsp
index c2d505eb4..308b21b4d 100644
--- a/src/main/webapp/WEB-INF/views/cfg/other/bgpList.jsp
+++ b/src/main/webapp/WEB-INF/views/cfg/other/bgpList.jsp
@@ -530,6 +530,7 @@
+
<%@include file="/WEB-INF/include/excel/importModal.jsp" %>
diff --git a/src/main/webapp/WEB-INF/views/cfg/website/dnsList.jsp b/src/main/webapp/WEB-INF/views/cfg/website/dnsList.jsp
index b6f689f79..e883c0bbb 100644
--- a/src/main/webapp/WEB-INF/views/cfg/website/dnsList.jsp
+++ b/src/main/webapp/WEB-INF/views/cfg/website/dnsList.jsp
@@ -534,6 +534,7 @@
+
<%@include file="/WEB-INF/include/excel/importModal.jsp" %>
diff --git a/src/main/webapp/WEB-INF/views/cfg/website/sslList.jsp b/src/main/webapp/WEB-INF/views/cfg/website/sslList.jsp
index 1df1576c8..e81b16bd5 100644
--- a/src/main/webapp/WEB-INF/views/cfg/website/sslList.jsp
+++ b/src/main/webapp/WEB-INF/views/cfg/website/sslList.jsp
@@ -527,6 +527,7 @@
+
<%@include file="/WEB-INF/include/excel/importModal.jsp" %>
diff --git a/src/main/webapp/WEB-INF/views/cfg/whitelist/ipList.jsp b/src/main/webapp/WEB-INF/views/cfg/whitelist/ipList.jsp
index b198df2e4..b56be16d0 100644
--- a/src/main/webapp/WEB-INF/views/cfg/whitelist/ipList.jsp
+++ b/src/main/webapp/WEB-INF/views/cfg/whitelist/ipList.jsp
@@ -2,7 +2,7 @@
<%@ include file="/WEB-INF/include/taglib.jsp"%>