6 Commits

Author SHA1 Message Date
wangxin
4157f58ab9 HTTP(S)配置导入分离 2019-04-03 18:23:40 +08:00
wangxin
d27ba7ec93 DDOS,Intercept Policy导入拆分 2019-04-02 17:52:10 +08:00
wangxin
bd29b40573 FTP P2P Streaming Media, VoIp导入分离 2019-04-01 17:39:32 +08:00
wangxin
298eeef5e4 Mail模块分离 2019-03-29 19:11:05 +08:00
wangxin
873b3333af HTTP导入从公共导入分离 2019-03-29 15:29:12 +08:00
wangxin
068d2e859c IP WhiteList
IP Address
IP Payload
IP Spoofing
Protocol Identify
App Identify
Behavior Identify
BGP
DNS
SSL
界面相关导入分离
2019-03-28 15:12:27 +08:00
58 changed files with 4718 additions and 140 deletions

View File

@@ -0,0 +1,15 @@
package com.nis.domain.configuration.template;
import com.nis.util.excel.ExcelField;
public class BlackListComplexStringTemplate extends ComplexStringAllTemplate {
private Integer doBlackList;
@ExcelField(title="doBlacklist",align=2,sort=3)
public Integer getDoBlackList() {
return doBlackList;
}
public void setDoBlackList(Integer doBlackList) {
this.doBlackList = doBlackList;
}
}

View File

@@ -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=3)
public Integer getDoBlackList() {
return doBlackList;
}
public void setDoBlackList(Integer doBlackList) {
this.doBlackList = doBlackList;
}
}

View File

@@ -0,0 +1,15 @@
package com.nis.domain.configuration.template;
import com.nis.util.excel.ExcelField;
public class BlackListP2pHashStringTemplate extends P2pHashStringTemplate {
private Integer doBlackList;
@ExcelField(title="doBlacklist",align=2,sort=4)
public Integer getDoBlackList() {
return doBlackList;
}
public void setDoBlackList(Integer doBlackList) {
this.doBlackList = doBlackList;
}
}

View File

@@ -0,0 +1,15 @@
package com.nis.domain.configuration.template;
import com.nis.util.excel.ExcelField;
public class BlackListP2pIpTemplate extends P2pIpTemplate {
private Integer doBlackList;
@ExcelField(title="doBlacklist",align=2,sort=4)
public Integer getDoBlackList() {
return doBlackList;
}
public void setDoBlackList(Integer doBlackList) {
this.doBlackList = doBlackList;
}
}

View File

@@ -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=3)
public Integer getDoBlackList() {
return doBlackList;
}
public void setDoBlackList(Integer doBlackList) {
this.doBlackList = doBlackList;
}
}

View File

@@ -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;
}
}

View File

@@ -8,7 +8,6 @@
*/ */
package com.nis.domain.configuration.template; package com.nis.domain.configuration.template;
import com.google.gson.JsonObject;
import com.nis.util.excel.ExcelField; import com.nis.util.excel.ExcelField;
/** /**

View File

@@ -16,7 +16,7 @@ import com.nis.util.excel.ExcelField;
public class P2pHashStringTemplate extends StringAllTemplate { public class P2pHashStringTemplate extends StringAllTemplate {
private String userRegion1; private String userRegion1;
@ExcelField(title="p2p_hash_type",dictType="P2P_HASH_TYPE",align=2,sort=2) @ExcelField(title="p2p_hash_type",dictType="P2P_HASH_TYPE",align=2,sort=3)
public String getUserRegion1() { public String getUserRegion1() {
return userRegion1; return userRegion1;
} }

View File

@@ -10,7 +10,7 @@ public class P2pIpTemplate extends IpAllTemplate {
private String userRegion2; private String userRegion2;
@ExcelField(title="p2p_ip_config_type",dictType="P2P_IP_TYPE",align=2,sort=2) @ExcelField(title="p2p_ip_config_type",dictType="P2P_IP_TYPE",align=2,sort=3)
public String getUserRegion2() { public String getUserRegion2() {
return userRegion2; return userRegion2;
} }

View File

@@ -536,6 +536,29 @@ public class ExportExcel {
index++; index++;
} }
} }
//doBlackList
if("doBlacklist".equals(headerStr)) {
commentStr="";
List<SysDataDictionaryItem> 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 **/ /** Ip Spoofing **/
if("spoofing".equals(headerStr) && (region.getFunctionId().equals(214))){ if("spoofing".equals(headerStr) && (region.getFunctionId().equals(214))){

View File

@@ -111,7 +111,8 @@ public class CheckComplexStringFormatThread implements Callable<String>{
// doLog属性检验 // doLog属性检验
this.validDoLog(baseStringCfg,errInfo); this.validDoLog(baseStringCfg,errInfo);
//doBlackList属性检验
this.validDoBlackList(baseStringCfg, errInfo);
if (regionDict.getRegionType().equals(3)) { if (regionDict.getRegionType().equals(3)) {
if (regionDict.getFunctionId().equals(7)) { if (regionDict.getFunctionId().equals(7)) {
Long dnsStrategyId = baseStringCfg.getDnsStrategyId(); Long dnsStrategyId = baseStringCfg.getDnsStrategyId();
@@ -466,11 +467,44 @@ public class CheckComplexStringFormatThread implements Callable<String>{
} }
Integer doLog = baseStringCfg.getDoLog(); Integer doLog = baseStringCfg.getDoLog();
if(!doLogOption.contains(doLog+"")) { if(!doLogOption.contains(doLog+"")) {
errInfo.append( if(configDoLog.startsWith("0")) {
String.format(prop.getProperty("is_incorrect"), prop.getProperty("do_log")) baseStringCfg.setDoLog(Integer.parseInt(defaultValue));
+ ";"); }else {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("do_log"))
+ ";");
}
} }
} }
} }
/**
* doBlackList属性校验
* @param baseStringCfg
* @param errInfo
*/
public void validDoBlackList(ComplexkeywordCfg baseStringCfg, StringBuffer errInfo) {
if((regionDict.getFunctionId().equals(34)||regionDict.getFunctionId().equals(6)||
regionDict.getFunctionId().equals(635)||regionDict.getFunctionId().equals(8)
)&&serviceDict.getAction().equals(16)
) {
List<SysDataDictionaryItem> 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"))
+ ";");
}
}
}
} }

View File

@@ -129,7 +129,7 @@ public class CheckIpFormatThread implements Callable<String>{
} }
// doLog属性检验 // doLog属性检验
this.validDoLog(baseIpCfg,errInfo); this.validDoLog(baseIpCfg,errInfo);
this.validDoBlackList(baseIpCfg, errInfo);
// 特殊字段验证 // 特殊字段验证
// packet ip ratelimit // packet ip ratelimit
if (serviceDict!=null&&serviceDict.getFunctionId().intValue() == 5 && serviceDict.getAction().intValue() == 64) { if (serviceDict!=null&&serviceDict.getFunctionId().intValue() == 5 && serviceDict.getAction().intValue() == 64) {
@@ -1222,14 +1222,45 @@ public class CheckIpFormatThread implements Callable<String>{
} }
Integer doLog = baseIpCfg.getDoLog(); Integer doLog = baseIpCfg.getDoLog();
if(!doLogOption.contains(doLog+"")) { if(!doLogOption.contains(doLog+"")) {
errInfo.append( if(configDoLog.startsWith("0")) {
String.format(prop.getProperty("is_incorrect"), prop.getProperty("do_log")) baseIpCfg.setDoLog(Integer.parseInt(defaultValue));
+ ";"); }else {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("do_log"))
+ ";");
}
} }
} }
} }
/**
* doBlackList属性校验
* @param baseStringCfg
* @param errInfo
*/
public void validDoBlackList(IpPortCfg baseIpCfg, StringBuffer errInfo) {
if((regionDict.getFunctionId().equals(34)||regionDict.getFunctionId().equals(8)
||regionDict.getFunctionId().equals(51)||regionDict.getFunctionId().equals(510))&&serviceDict.getAction().equals(16)) {
List<SysDataDictionaryItem> 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 * 根据位运算把 byte[] -> int
* *

View File

@@ -20,7 +20,6 @@ import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict; import com.nis.domain.FunctionServiceDict;
import com.nis.domain.SysDataDictionaryItem; import com.nis.domain.SysDataDictionaryItem;
import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.DictUtils; import com.nis.util.DictUtils;
@@ -111,7 +110,8 @@ public class CheckStringFormatThread implements Callable<String>{
} }
// doLog属性检验 // doLog属性检验
this.validDoLog(baseStringCfg,errInfo); this.validDoLog(baseStringCfg,errInfo);
// doBlackList校验
this.validDoBlackList(baseStringCfg,errInfo);
if (regionDict.getRegionType().equals(2)) { if (regionDict.getRegionType().equals(2)) {
if (regionDict.getFunctionId().equals(510) && "p2p_hash".equals(regionDict.getConfigServiceType())) { if (regionDict.getFunctionId().equals(510) && "p2p_hash".equals(regionDict.getConfigServiceType())) {
String userRegion1 = baseStringCfg.getUserRegion1(); String userRegion1 = baseStringCfg.getUserRegion1();
@@ -518,7 +518,6 @@ public class CheckStringFormatThread implements Callable<String>{
* @param errInfo * @param errInfo
*/ */
public void validDoLog(BaseStringCfg baseStringCfg, StringBuffer errInfo) { public void validDoLog(BaseStringCfg baseStringCfg, StringBuffer errInfo) {
String configDoLog = serviceDict.getConfigDoLog(); String configDoLog = serviceDict.getConfigDoLog();
if(StringUtils.isNotBlank(configDoLog)) { if(StringUtils.isNotBlank(configDoLog)) {
String defaultValue = configDoLog.substring(configDoLog.lastIndexOf(";")+1); String defaultValue = configDoLog.substring(configDoLog.lastIndexOf(";")+1);
@@ -528,11 +527,45 @@ public class CheckStringFormatThread implements Callable<String>{
} }
Integer doLog = baseStringCfg.getDoLog(); Integer doLog = baseStringCfg.getDoLog();
if(!doLogOption.contains(doLog+"")) { if(!doLogOption.contains(doLog+"")) {
errInfo.append( if(configDoLog.startsWith("0")) {
String.format(prop.getProperty("is_incorrect"), prop.getProperty("do_log")) baseStringCfg.setDoLog(Integer.parseInt(defaultValue));
+ ";"); }else {
errInfo.append(
String.format(prop.getProperty("is_incorrect"), prop.getProperty("do_log"))
+ ";");
}
} }
} }
} }
/**
* doBlackList属性校验
* @param baseStringCfg
* @param errInfo
*/
public void validDoBlackList(BaseStringCfg baseStringCfg, StringBuffer errInfo) {
if((regionDict.getFunctionId().equals(34)||regionDict.getFunctionId().equals(6)||
regionDict.getFunctionId().equals(635)||regionDict.getFunctionId().equals(8)
||regionDict.getFunctionId().equals(51)||regionDict.getFunctionId().equals(510))
&&serviceDict.getAction().equals(16)) {
List<SysDataDictionaryItem> 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"))
+ ";");
}
}
}
} }

View File

@@ -36,6 +36,7 @@ import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@@ -79,6 +80,7 @@ import com.nis.domain.configuration.StringCfgTemplate;
import com.nis.domain.configuration.template.AppDomainTemplate; import com.nis.domain.configuration.template.AppDomainTemplate;
import com.nis.domain.configuration.template.AppPayloadTemplate; import com.nis.domain.configuration.template.AppPayloadTemplate;
import com.nis.domain.configuration.template.AsnIpTemplate; import com.nis.domain.configuration.template.AsnIpTemplate;
import com.nis.domain.configuration.template.BlackListComplexStringTemplate;
import com.nis.domain.configuration.template.ComplexStringAllNotDoLogTemplate; import com.nis.domain.configuration.template.ComplexStringAllNotDoLogTemplate;
import com.nis.domain.configuration.template.ComplexStringAllTemplate; import com.nis.domain.configuration.template.ComplexStringAllTemplate;
import com.nis.domain.configuration.template.DdosIpTemplate; import com.nis.domain.configuration.template.DdosIpTemplate;
@@ -1759,7 +1761,6 @@ public class BaseController {
logger.info("获取编译ID出错"); logger.info("获取编译ID出错");
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+e.getMessage()); throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
} }
int ind=0; int ind=0;
for (BaseIpCfg cfg : _ipPortCfgs) { for (BaseIpCfg cfg : _ipPortCfgs) {
cfg.setAction(serviceDict==null?null:serviceDict.getAction()); cfg.setAction(serviceDict==null?null:serviceDict.getAction());
@@ -1802,7 +1803,6 @@ public class BaseController {
cfg.setCompileId(compileIds.get(ind)); cfg.setCompileId(compileIds.get(ind));
} }
ind++; ind++;
} }
ipCfgService.saveAndSend(regionDict, serviceDict, specificServiceCfg, _ipPortCfgs, cfgIndexInfos, appPolicyCfgs,appFeatureIndexs,asnNoMaps,isSend.equals("1")); ipCfgService.saveAndSend(regionDict, serviceDict, specificServiceCfg, _ipPortCfgs, cfgIndexInfos, appPolicyCfgs,appFeatureIndexs,asnNoMaps,isSend.equals("1"));
cfgIndexInfos.clear(); cfgIndexInfos.clear();
@@ -2391,7 +2391,279 @@ public class BaseController {
long end=System.currentTimeMillis(); long end=System.currentTimeMillis();
logger.warn("import finish,cost:"+(end-start)); 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<BaseIpCfg> ipPortCfgs =null;
BlockingQueue<BaseStringCfg<?>> stringCfgs =null;
List<AppPolicyCfg> appPolicyCfgs = new ArrayList<AppPolicyCfg>();
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<IpRateLimitTemplate> list = ei.getDataList(IpRateLimitTemplate.class);
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,null, list);
}else {
ei.loadInitParams(IpAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<IpAllTemplate> 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<StringAllTemplate> 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<BaseIpCfg> _ipPortCfgs=com.beust.jcommander.internal.Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!ipPortCfgs.isEmpty()) {
ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> regionIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> numRegionGroupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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<BaseStringCfg> _stringCfgs=com.beust.jcommander.internal.Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!stringCfgs.isEmpty()) {
stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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<Long,AsnGroupInfo> asnNoMap,Integer ipType){ public void deleteIps(Map<Long,AsnGroupInfo> asnNoMap,Integer ipType){
List<AsnIpCfg> toDelAndSendAsnIpCfgs=Lists.newArrayList(); List<AsnIpCfg> toDelAndSendAsnIpCfgs=Lists.newArrayList();
List<Long> asnIds=Lists.newArrayList(asnNoMap.size()); List<Long> asnIds=Lists.newArrayList(asnNoMap.size());
@@ -2530,7 +2802,11 @@ public class BaseController {
ei.loadInitParams(AppPayloadTemplate.class, this.getMsgProp(), regionDict, serviceDict); ei.loadInitParams(AppPayloadTemplate.class, this.getMsgProp(), regionDict, serviceDict);
}else if(regionDict.getFunctionId().equals(565) || regionDict.getFunctionId().equals(564) || regionDict.getFunctionId().equals(566)){// APP Feature StrPlus }else if(regionDict.getFunctionId().equals(565) || regionDict.getFunctionId().equals(564) || regionDict.getFunctionId().equals(566)){// APP Feature StrPlus
ei.loadInitParams(ComplexStringAllNotDoLogTemplate.class, this.getMsgProp(), regionDict, serviceDict); ei.loadInitParams(ComplexStringAllNotDoLogTemplate.class, this.getMsgProp(), regionDict, serviceDict);
} else { }else if(regionDict.getFunctionId().equals(37)&&serviceDict!=null&&serviceDict.getAction().intValue()==128) {//mail whiltelist
ei.loadInitParams(ComplexStringAllNotDoLogTemplate.class, this.getMsgProp(), regionDict, serviceDict);
}else if(regionDict.getFunctionId().equals(37)&&serviceDict!=null&&serviceDict.getAction().intValue()==16) {//mail Block
ei.loadInitParams(BlackListComplexStringTemplate.class, this.getMsgProp(), regionDict, serviceDict);
}else {
ei.loadInitParams(ComplexStringAllTemplate.class, msgProp, regionDict, serviceDict); ei.loadInitParams(ComplexStringAllTemplate.class, msgProp, regionDict, serviceDict);
} }

View File

@@ -7,7 +7,9 @@ import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@@ -15,6 +17,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.taglibs.standard.functions.Functions; import org.apache.taglibs.standard.functions.Functions;
import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; 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.Lists;
import com.google.common.collect.Maps; 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.Page;
import com.nis.domain.SysDataDictionaryItem; import com.nis.domain.SysDataDictionaryItem;
import com.nis.domain.configuration.AppBuiltInFeatureFile; 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.AppSslCertCfg;
import com.nis.domain.configuration.AppTcpCfg; import com.nis.domain.configuration.AppTcpCfg;
import com.nis.domain.configuration.AppTopicDomainCfg; import com.nis.domain.configuration.AppTopicDomainCfg;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.configuration.WebsiteDomainTopic; 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;
import com.nis.domain.maat.ToMaatResult.ResponseData; import com.nis.domain.maat.ToMaatResult.ResponseData;
import com.nis.domain.specific.SpecificServiceCfg; import com.nis.domain.specific.SpecificServiceCfg;
@@ -55,6 +64,7 @@ import com.nis.util.DictUtils;
import com.nis.util.FileUtils; import com.nis.util.FileUtils;
import com.nis.util.JsonMapper; import com.nis.util.JsonMapper;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController; import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
@@ -2189,4 +2199,14 @@ public class AppCfgController extends BaseController {
// return "redirect:" + adminPath // return "redirect:" + adminPath
// +"/ntc/iplist/list?functionId="+entity.getFunctionId(); // +"/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);
}
} }

View File

@@ -1,9 +1,6 @@
package com.nis.web.controller.configuration; package com.nis.web.controller.configuration;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
@@ -21,29 +18,24 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; 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 org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.nis.domain.Page; import com.nis.domain.Page;
import com.nis.domain.configuration.AppPolicyCfg; import com.nis.domain.configuration.AppPolicyCfg;
import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; 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.domain.specific.SpecificServiceCfg;
import com.nis.exceptions.CallExternalProceduresException; import com.nis.exceptions.CallExternalProceduresException;
import com.nis.exceptions.MaatConvertException; import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.web.controller.BaseController; import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils; 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 // return "redirect:" + adminPath
// +"/ntc/iplist/list?functionId="+entity.getFunctionId(); // +"/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);
}
} }

View File

@@ -19,7 +19,9 @@ import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; 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.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.nis.domain.Page; import com.nis.domain.Page;
@@ -434,4 +436,14 @@ public class EncryptedTunnelBehaviorController extends BaseController {
// +"/ntc/iplist/list?functionId="+entity.getFunctionId(); // +"/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);
}
} }

View File

@@ -6,35 +6,40 @@ import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import org.apache.cxf.common.util.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jets3t.service.ServiceException;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; 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 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.Page;
import com.nis.domain.basics.ServiceDictInfo;
import com.nis.domain.configuration.AvFileSampleCfg;
import com.nis.domain.configuration.AvVoipAccountCfg;
import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.DdosIpCfg; import com.nis.domain.configuration.DdosIpCfg;
import com.nis.domain.configuration.DnsResStrategy;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; import com.nis.domain.configuration.template.DdosIpTemplate;
import com.nis.domain.configuration.DdosIpCfg;
import com.nis.domain.configuration.RequestInfo;
import com.nis.exceptions.MaatConvertException; import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController; import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
@@ -266,4 +271,156 @@ public class DdosCfgController extends BaseController {
model.addAttribute("tabList", tabList); model.addAttribute("tabList", tabList);
return "/cfg/ddosSubList"; return "/cfg/ddosSubList";
} }
@RequestMapping(value = {"import"}, method=RequestMethod.POST)
public String importCfg(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<BaseIpCfg> ipPortCfgs =null;
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
//加载模板
ei.loadInitParams(DdosIpTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<DdosIpTemplate> list = ei.getDataList(DdosIpTemplate.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");
if (regionDict.getRegionType().equals(1)) {// IP
List<BaseIpCfg> _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!ipPortCfgs.isEmpty()) {
ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> regionIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> numRegionGroupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
}
}else {
try {
regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
} catch (Exception e) {
e.printStackTrace();
logger.info("获取域ID出错");
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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();
org.springframework.beans.BeanUtils.copyProperties(cfg, cfgIndexInfo,new String[] {"cfgId"});
if(cfg.getDnsStrategyId()!=null) {
cfgIndexInfo.setDnsStrategyId(Long.parseLong(cfg.getDnsStrategyId().toString()));
}
ind++;
}
ddosCfgService.saveAndSend(regionDict, _ipPortCfgs, isSend.equals("1"));
_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;
}
} }

View File

@@ -8,20 +8,28 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; 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.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes; 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.Page;
import com.nis.domain.basics.ServiceDictInfo; import com.nis.domain.basics.ServiceDictInfo;
import com.nis.domain.basics.SysDictInfo; import com.nis.domain.basics.SysDictInfo;
@@ -29,18 +37,29 @@ import com.nis.domain.configuration.AreaBean;
import com.nis.domain.configuration.AreaIpCfg; import com.nis.domain.configuration.AreaIpCfg;
import com.nis.domain.configuration.AvContUrlCfg; import com.nis.domain.configuration.AvContUrlCfg;
import com.nis.domain.configuration.AvVoipAccountCfg; import com.nis.domain.configuration.AvVoipAccountCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.exceptions.MaatConvertException;
import com.nis.domain.configuration.AvVoipIpCfg; import com.nis.domain.configuration.AvVoipIpCfg;
import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg; 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;
import com.nis.domain.configuration.template.BlackListComplexStringTemplate;
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.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.Constants;
import com.nis.util.DateUtils; import com.nis.util.DateUtils;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.util.excel.ExportExcel; import com.nis.util.excel.ExportExcel;
import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController; import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
/** /**
* 处理音视频文本业务 * 处理音视频文本业务
@@ -1177,4 +1196,318 @@ public class AvContentController extends BaseController {
// return "redirect:" + adminPath // return "redirect:" + adminPath
// +"/ntc/iplist/list?functionId="+entity.getFunctionId(); // +"/ntc/iplist/list?functionId="+entity.getFunctionId();
} }
@RequestMapping(value = {"contUrlImport","voipImport"}, method=RequestMethod.POST)
public String importCfg(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<BaseIpCfg> ipPortCfgs =null;
BlockingQueue<BaseStringCfg<?>> stringCfgs =null;
BlockingQueue<ComplexkeywordCfg> complexkeywordCfgs =null;
List<CfgIndexInfo> cfgIndexInfos = new ArrayList<CfgIndexInfo>();
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(serviceDict.getAction().intValue()==16) {
//加载模板
ei.loadInitParams(BlackListIPTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListIPTemplate> list = ei.getDataList(BlackListIPTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}else {
//加载模板
ei.loadInitParams(IpAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<IpAllTemplate> list = ei.getDataList(IpAllTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}
}else if (regionDict.getRegionType().equals(2)) {
if(serviceDict.getAction().intValue()==16) {
ei.loadInitParams(BlackListStringTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListStringTemplate> list = ei.getDataList(BlackListStringTemplate.class );
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else {
ei.loadInitParams(StringAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<StringAllTemplate> list = ei.getDataList(StringAllTemplate.class );
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}
}else if (regionDict.getRegionType().equals(3)) {
if((regionDict.getFunctionId().intValue()==8)&&serviceDict.getAction().intValue()==16) {
ei.loadInitParams(BlackListComplexStringTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListComplexStringTemplate> list = ei.getDataList(BlackListComplexStringTemplate.class);
complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
}else {
ei.loadInitParams(ComplexStringAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<ComplexStringAllTemplate> 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<BaseIpCfg> _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!ipPortCfgs.isEmpty()) {
ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> regionIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> numRegionGroupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
}
}else {
try {
regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
} catch (Exception e) {
e.printStackTrace();
logger.info("获取域ID出错");
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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++;
}
avContentCfgService.saveAndSend(regionDict, cfgIndexInfos, _ipPortCfgs, isSend.equals("1"));
cfgIndexInfos.clear();
_ipPortCfgs.clear();
}
}else if (regionDict.getRegionType().equals(2)) {//账号
List<BaseStringCfg<?>> _stringCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!stringCfgs.isEmpty()) {
stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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++;
}
avContentCfgService.saveAndSend(regionDict, cfgIndexInfos, _stringCfgs, isSend.equals("1"));
cfgIndexInfos.clear();
_stringCfgs.clear();
}
} else if (regionDict.getRegionType().equals(3)) {//dns
List<ComplexkeywordCfg> _complexkeywordCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!complexkeywordCfgs.isEmpty()) {
complexkeywordCfgs.drainTo(_complexkeywordCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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++;
}
avContentCfgService.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;
}
} }

View File

@@ -1,36 +1,48 @@
package com.nis.web.controller.configuration.ntc; package com.nis.web.controller.configuration.ntc;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; 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 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.Page;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcBgpAsCfg; import com.nis.domain.configuration.NtcBgpAsCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; 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.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.util.StringUtils; import com.nis.util.StringUtils;
import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController; import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
@@ -312,5 +324,210 @@ public class BgpCfgController extends BaseController {
// return "redirect:" + adminPath // return "redirect:" + adminPath
// +"/ntc/iplist/list?functionId="+entity.getFunctionId(); // +"/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<BaseIpCfg> ipPortCfgs =null;
BlockingQueue<BaseStringCfg<?>> stringCfgs =null;
List<CfgIndexInfo> cfgIndexInfos = new ArrayList<CfgIndexInfo>();
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<IpAllTemplate> 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<StringAllTemplate> 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<BaseIpCfg> _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!ipPortCfgs.isEmpty()) {
ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> regionIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> numRegionGroupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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<BaseStringCfg<?>> _stringCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!stringCfgs.isEmpty()) {
stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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;
}
} }

View File

@@ -9,8 +9,10 @@ import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@@ -19,32 +21,54 @@ import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.taglibs.standard.functions.Functions; import org.apache.taglibs.standard.functions.Functions;
import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.util.FileCopyUtils; import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; 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.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes; 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.Page;
import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.FileDigestCfg; import com.nis.domain.configuration.FileDigestCfg;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.configuration.P2pHashCfg; import com.nis.domain.configuration.P2pHashCfg;
import com.nis.domain.configuration.P2pKeywordCfg; import com.nis.domain.configuration.P2pKeywordCfg;
import com.nis.domain.configuration.template.BlackListComplexStringTemplate;
import com.nis.domain.configuration.template.BlackListIPTemplate;
import com.nis.domain.configuration.template.BlackListP2pHashStringTemplate;
import com.nis.domain.configuration.template.BlackListStringTemplate;
import com.nis.domain.configuration.template.BlackListP2pIpTemplate;
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.P2pHashStringTemplate;
import com.nis.domain.configuration.template.P2pIpTemplate;
import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.domain.maat.ToMaatResult; import com.nis.domain.maat.ToMaatResult;
import com.nis.exceptions.CallExternalProceduresException; import com.nis.exceptions.CallExternalProceduresException;
import com.nis.exceptions.MaatConvertException; import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil; import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.FileUtils; import com.nis.util.FileUtils;
import com.nis.util.JsonMapper; import com.nis.util.JsonMapper;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController; import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
@@ -984,4 +1008,340 @@ public class FileTransferCfgController extends BaseController {
// return "redirect:" + adminPath // return "redirect:" + adminPath
// +"/ntc/iplist/list?functionId="+entity.getFunctionId(); // +"/ntc/iplist/list?functionId="+entity.getFunctionId();
} }
@RequestMapping(value = {"ftpImport","p2pImport"}, 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<BaseIpCfg> ipPortCfgs =null;
BlockingQueue<BaseStringCfg<?>> stringCfgs =null;
BlockingQueue<ComplexkeywordCfg> complexkeywordCfgs =null;
List<CfgIndexInfo> cfgIndexInfos = new ArrayList<CfgIndexInfo>();
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(serviceDict.getAction().intValue()==16) {
if("p2p_ip".equals(regionDict.getConfigServiceType())) {
//加载模板
ei.loadInitParams(BlackListP2pIpTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListP2pIpTemplate> list = ei.getDataList(BlackListP2pIpTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}else {
//加载模板
ei.loadInitParams(BlackListIPTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListIPTemplate> list = ei.getDataList(BlackListIPTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}
}else if("p2p_ip".equals(regionDict.getConfigServiceType())) { // P2p IP
ei.loadInitParams(P2pIpTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<P2pIpTemplate> list = ei.getDataList(P2pIpTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}else {
//加载模板
ei.loadInitParams(IpAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<IpAllTemplate> list = ei.getDataList(IpAllTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}
}else if (regionDict.getRegionType().equals(2)) {
if(serviceDict.getAction().intValue()==16) {
if("p2p_hash".equals(regionDict.getConfigServiceType())) {
ei.loadInitParams(BlackListP2pHashStringTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListP2pHashStringTemplate> list = ei.getDataList(BlackListP2pHashStringTemplate.class );
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else {
ei.loadInitParams(BlackListStringTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListStringTemplate> list = ei.getDataList(BlackListStringTemplate.class );
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}
}else if("p2p_hash".equals(regionDict.getConfigServiceType())) { // P2p hash
ei.loadInitParams(P2pHashStringTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<P2pHashStringTemplate> list = ei.getDataList(P2pHashStringTemplate.class );
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else {
ei.loadInitParams(StringAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<StringAllTemplate> list = ei.getDataList(StringAllTemplate.class );
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}
}else if (regionDict.getRegionType().equals(3)) {
if((regionDict.getFunctionId().intValue()==8)&&serviceDict.getAction().intValue()==16) {
ei.loadInitParams(BlackListComplexStringTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListComplexStringTemplate> list = ei.getDataList(BlackListComplexStringTemplate.class);
complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
}else {
ei.loadInitParams(ComplexStringAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<ComplexStringAllTemplate> 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<BaseIpCfg> _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!ipPortCfgs.isEmpty()) {
ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> regionIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> numRegionGroupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
}
}else {
try {
regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
} catch (Exception e) {
e.printStackTrace();
logger.info("获取域ID出错");
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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++;
}
fileTransferCfgService.saveAndSend(regionDict, cfgIndexInfos, _ipPortCfgs, isSend.equals("1"));
cfgIndexInfos.clear();
_ipPortCfgs.clear();
}
}else if (regionDict.getRegionType().equals(2)) {//账号
List<BaseStringCfg<?>> _stringCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!stringCfgs.isEmpty()) {
stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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++;
}
fileTransferCfgService.saveAndSend(regionDict, cfgIndexInfos, _stringCfgs, isSend.equals("1"));
cfgIndexInfos.clear();
_stringCfgs.clear();
}
} else if (regionDict.getRegionType().equals(3)) {//dns
List<ComplexkeywordCfg> _complexkeywordCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!complexkeywordCfgs.isEmpty()) {
complexkeywordCfgs.drainTo(_complexkeywordCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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++;
}
fileTransferCfgService.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;
}
} }

View File

@@ -1,5 +1,7 @@
package com.nis.web.controller.configuration.ntc; package com.nis.web.controller.configuration.ntc;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
@@ -8,12 +10,18 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutionException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.commons.lang3.StringUtils; 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.apache.shiro.authz.annotation.RequiresPermissions;
import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
@@ -23,18 +31,33 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes; 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.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict; import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page; 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.AppPolicyCfg;
import com.nis.domain.configuration.AppTopicDomainCfg;
import com.nis.domain.configuration.AsnKeywordCfg; 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.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.DnsResStrategy;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.configuration.template.AppDomainTemplate; import com.nis.domain.configuration.template.AppDomainTemplate;
import com.nis.domain.configuration.template.AppPayloadTemplate; import com.nis.domain.configuration.template.AppPayloadTemplate;
import com.nis.domain.configuration.template.AsnIpTemplate; import com.nis.domain.configuration.template.AsnIpTemplate;
import com.nis.domain.configuration.template.BlackListComplexStringTemplate;
import com.nis.domain.configuration.template.BlackListIPTemplate;
import com.nis.domain.configuration.template.BlackListP2pHashStringTemplate;
import com.nis.domain.configuration.template.BlackListStringTemplate;
import com.nis.domain.configuration.template.BlackListP2pIpTemplate;
import com.nis.domain.configuration.template.ComplexStringAllNotDoLogTemplate; import com.nis.domain.configuration.template.ComplexStringAllNotDoLogTemplate;
import com.nis.domain.configuration.template.ComplexStringAllTemplate; import com.nis.domain.configuration.template.ComplexStringAllTemplate;
import com.nis.domain.configuration.template.DdosIpTemplate; import com.nis.domain.configuration.template.DdosIpTemplate;
@@ -66,15 +89,18 @@ import com.nis.domain.configuration.template.SnatTemplate;
import com.nis.domain.configuration.template.StringAllNotDoLogTemplate; import com.nis.domain.configuration.template.StringAllNotDoLogTemplate;
import com.nis.domain.configuration.template.StringAllTemplate; import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.domain.configuration.template.TopicWebsiteTemplate; import com.nis.domain.configuration.template.TopicWebsiteTemplate;
import com.nis.domain.specific.SpecificServiceCfg;
import com.nis.exceptions.MaatConvertException; import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.DictUtils; import com.nis.util.DictUtils;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.util.excel.ExportExcel; import com.nis.util.excel.ExportExcel;
import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController; import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
import jersey.repackaged.com.google.common.collect.Maps;
/** /**
* IP相关配置控制类 * IP相关配置控制类
* @author dell * @author dell
@@ -362,10 +388,17 @@ public class IpController extends BaseController{
excel.setDataList(pro,classList,null). excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose(); write(request,response, fileName).dispose();
}else if(regionDict.getFunctionId().equals(510) && "p2p_ip".equals(regionDict.getConfigServiceType())){ //P2p IP }else if(regionDict.getFunctionId().equals(510) && "p2p_ip".equals(regionDict.getConfigServiceType())){ //P2p IP
List<P2pIpTemplate> classList=new ArrayList<P2pIpTemplate>(); if(serviceDict!=null&&serviceDict.getAction().equals(16)) {
ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, P2pIpTemplate.class, 2); List<BlackListP2pIpTemplate> classList=new ArrayList<BlackListP2pIpTemplate>();
excel.setDataList(pro,classList,null). ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, BlackListP2pIpTemplate.class, 2);
write(request,response, fileName).dispose(); excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose();
}else {
List<P2pIpTemplate> classList=new ArrayList<P2pIpTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, P2pIpTemplate.class, 2);
excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose();
}
}else if(regionDict.getFunctionId().equals(600)){ //asnip }else if(regionDict.getFunctionId().equals(600)){ //asnip
List<AsnIpTemplate> classList=new ArrayList<AsnIpTemplate>(); List<AsnIpTemplate> classList=new ArrayList<AsnIpTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, AsnIpTemplate.class, 2); ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, AsnIpTemplate.class, 2);
@@ -429,6 +462,17 @@ public class IpController extends BaseController{
ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, IpAllNotDoLogTemplate.class, 2); ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, IpAllNotDoLogTemplate.class, 2);
excel.setDataList(pro,classList,null). excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose(); write(request,response, fileName).dispose();
}else if((regionDict.getFunctionId().equals(34)||regionDict.getFunctionId().equals(8)||regionDict.getFunctionId().equals(35)
||regionDict.getFunctionId().equals(51)||regionDict.getFunctionId().equals(22)||regionDict.getFunctionId().equals(24))&&serviceDict.getAction().equals(16)) {//SSL , HTTP ADVANCED URL mail,FTP,Steaming Media 的BLOCK
List<BlackListIPTemplate> classList=new ArrayList<BlackListIPTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, BlackListIPTemplate.class, 2);
excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose();
}else if((regionDict.getFunctionId().equals(63)||regionDict.getFunctionId().equals(407)||regionDict.getFunctionId().equals(408)) && serviceDict.getAction().equals(64)){// APP Policy限速
List<IpRateLimitTemplate> classList=new ArrayList<IpRateLimitTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, IpRateLimitTemplate.class, 2);
excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose();
}else{ }else{
List<IpAllTemplate> classList=new ArrayList<IpAllTemplate>(); List<IpAllTemplate> classList=new ArrayList<IpAllTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, IpAllTemplate.class, 2); ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, IpAllTemplate.class, 2);
@@ -438,7 +482,12 @@ public class IpController extends BaseController{
} }
//str类模板 //str类模板
if(regionDict.getRegionType().equals(2)){ if(regionDict.getRegionType().equals(2)){
if(regionDict.getFunctionId().equals(510) && "p2p_hash".equals(regionDict.getConfigServiceType())){ //P2p hash if(regionDict.getFunctionId().equals(510) && "p2p_hash".equals(regionDict.getConfigServiceType())&&serviceDict!=null&&serviceDict.getAction().equals(16)){ //P2p hash block
List<BlackListP2pHashStringTemplate> classList=new ArrayList<BlackListP2pHashStringTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, BlackListP2pHashStringTemplate.class, 2);
excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose();
}else if(regionDict.getFunctionId().equals(510) && "p2p_hash".equals(regionDict.getConfigServiceType())){ //P2p hash
List<P2pHashStringTemplate> classList=new ArrayList<P2pHashStringTemplate>(); List<P2pHashStringTemplate> classList=new ArrayList<P2pHashStringTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, P2pHashStringTemplate.class, 2); ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, P2pHashStringTemplate.class, 2);
excel.setDataList(pro,classList,null). excel.setDataList(pro,classList,null).
@@ -490,6 +539,24 @@ public class IpController extends BaseController{
ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, TopicWebsiteTemplate.class, 2); ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, TopicWebsiteTemplate.class, 2);
excel.setDataList(pro,classList,null). excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose(); write(request,response, fileName).dispose();
}else if(regionDict.getFunctionId().equals(34)&&serviceDict.getAction().equals(16)) {//SSL BLOCK
List<BlackListStringTemplate> classList=new ArrayList<BlackListStringTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, BlackListStringTemplate.class, 2);
excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose();
}else if((regionDict.getFunctionId().equals(6)||regionDict.getFunctionId().equals(635)||regionDict.getFunctionId().equals(8)
||regionDict.getFunctionId().equals(51)||regionDict.getFunctionId().equals(510)||regionDict.getFunctionId().equals(22)
||regionDict.getFunctionId().equals(24)
)&&serviceDict.getAction().equals(16)) {//URL, Advanced Website Keyword FTP Steaming Media BLOCK
List<BlackListStringTemplate> classList=new ArrayList<BlackListStringTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, BlackListStringTemplate.class, 2);
excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose();
}else if(regionDict.getFunctionId().equals(6)&&serviceDict.getAction().equals(128)) {//URL WHITELIST
List<StringAllNotDoLogTemplate> classList=new ArrayList<StringAllNotDoLogTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, StringAllNotDoLogTemplate.class, 2);
excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose();
}else{ }else{
List<StringAllTemplate> classList=new ArrayList<StringAllTemplate>(); List<StringAllTemplate> classList=new ArrayList<StringAllTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, StringAllTemplate.class, 2); ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, StringAllTemplate.class, 2);
@@ -535,6 +602,21 @@ public class IpController extends BaseController{
ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, ComplexStringAllNotDoLogTemplate.class, 2); ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, ComplexStringAllNotDoLogTemplate.class, 2);
excel.setDataList(pro,classList,null). excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose(); write(request,response, fileName).dispose();
}else if((regionDict.getFunctionId().equals(8))&&serviceDict.getAction().equals(16)) {// request header response header
List<BlackListComplexStringTemplate> classList=new ArrayList<BlackListComplexStringTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, BlackListComplexStringTemplate.class, 2);
excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose();
}else if(regionDict.getFunctionId().equals(37)&&serviceDict!=null&&serviceDict.getAction().intValue()==128) {//mail whiltelist
List<ComplexStringAllNotDoLogTemplate> classList=new ArrayList<ComplexStringAllNotDoLogTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,this.getMsgProp(),null, ComplexStringAllNotDoLogTemplate.class, 2);
excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose();
}else if(regionDict.getFunctionId().equals(37)&&serviceDict!=null&&serviceDict.getAction().intValue()==16) {//mail Block
List<BlackListComplexStringTemplate> classList=new ArrayList<BlackListComplexStringTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, BlackListComplexStringTemplate.class, 2);
excel.setDataList(pro,classList,null).
write(request,response, fileName).dispose();
}else{ }else{
List<ComplexStringAllTemplate> classList=new ArrayList<ComplexStringAllTemplate>(); List<ComplexStringAllTemplate> classList=new ArrayList<ComplexStringAllTemplate>();
ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, ComplexStringAllTemplate.class, 2); ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, ComplexStringAllTemplate.class, 2);
@@ -553,18 +635,173 @@ public class IpController extends BaseController{
} }
//ip配置导入 //ip配置导入
@RequestMapping(value = "import", method=RequestMethod.POST) @Deprecated
public String importIp(HttpServletRequest request,HttpServletResponse response,RedirectAttributes redirectAttributes, // @RequestMapping(value = "import", method=RequestMethod.POST)
@RequestParam("files") MultipartFile[] files public String importIp(HttpServletRequest request,HttpServletResponse response,RedirectAttributes redirectAttributes,
,Integer serviceDictId @RequestParam("files") MultipartFile[] files
,Integer requestId ,Integer serviceDictId
,String attribute ,Integer requestId
,String classify ,String attribute
,String regionDictIds ,String classify
,String importPath) { ,String regionDictIds
this._import(request,response,redirectAttributes, files,serviceDictId,regionDictIds,requestId,attribute,classify); ,String importPath) {
return "redirect:" + adminPath+ 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<BaseIpCfg> ipPortCfgs =null;
List<CfgIndexInfo> cfgIndexInfos = new ArrayList<CfgIndexInfo>();
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<IpRateLimitTemplate> 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<IpAllNotDoLogTemplate> list = ei.getDataList(IpAllNotDoLogTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
} else {
//加载模板
ei.loadInitParams(IpAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<IpAllTemplate> 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<BaseIpCfg> _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!ipPortCfgs.isEmpty()) {
ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> regionIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> numRegionGroupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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)&&regionIds.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配置导出 //ip配置导出
@RequestMapping(value = "exportIpAddr") @RequestMapping(value = "exportIpAddr")
public void exportIpAddr(Model model,HttpServletRequest request,HttpServletResponse response, public void exportIpAddr(Model model,HttpServletRequest request,HttpServletResponse response,

View File

@@ -8,8 +8,10 @@ import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@@ -17,30 +19,50 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.util.FileCopyUtils; import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; 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.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes; 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.Page;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg; import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.FileDigestCfg; import com.nis.domain.configuration.FileDigestCfg;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.configuration.template.BlackListComplexStringTemplate;
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.DnsComplexStringTemplate;
import com.nis.domain.configuration.template.DnsIpTemplate;
import com.nis.domain.configuration.template.DnsStringTemplate;
import com.nis.domain.configuration.template.IpAllNotDoLogTemplate;
import com.nis.domain.configuration.template.IpAllTemplate;
import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.domain.maat.ToMaatResult; import com.nis.domain.maat.ToMaatResult;
import com.nis.exceptions.CallExternalProceduresException; import com.nis.exceptions.CallExternalProceduresException;
import com.nis.exceptions.MaatConvertException; import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil; import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.FileUtils; import com.nis.util.FileUtils;
import com.nis.util.JsonMapper; import com.nis.util.JsonMapper;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController; import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
@@ -377,5 +399,322 @@ public class MailCfgController extends BaseController {
// return "redirect:" + adminPath // return "redirect:" + adminPath
// +"/ntc/iplist/list?functionId="+entity.getFunctionId(); // +"/ntc/iplist/list?functionId="+entity.getFunctionId();
} }
@RequestMapping(value = {"mailImport"}, method=RequestMethod.POST)
public String importMail(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<BaseIpCfg> ipPortCfgs =null;
BlockingQueue<BaseStringCfg<?>> stringCfgs =null;
BlockingQueue<ComplexkeywordCfg> complexkeywordCfgs =null;
List<CfgIndexInfo> cfgIndexInfos = new ArrayList<CfgIndexInfo>();
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(serviceDict.getAction().intValue()==16) {
//加载模板
ei.loadInitParams(BlackListIPTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListIPTemplate> list = ei.getDataList(BlackListIPTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}else {
//加载模板
ei.loadInitParams(IpAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<IpAllTemplate> list = ei.getDataList(IpAllTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}
}else if (regionDict.getRegionType().equals(2)) {
if(serviceDict.getAction().intValue()==16) {
ei.loadInitParams(BlackListStringTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListStringTemplate> list = ei.getDataList(BlackListStringTemplate.class );
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else {
ei.loadInitParams(StringAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<StringAllTemplate> list = ei.getDataList(StringAllTemplate.class );
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}
}else if (regionDict.getRegionType().equals(3)) {
if(serviceDict.getAction().intValue()==128) {
ei.loadInitParams(ComplexStringAllNotDoLogTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<ComplexStringAllNotDoLogTemplate> list = ei.getDataList(ComplexStringAllNotDoLogTemplate.class);
complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
}else if(serviceDict.getAction().intValue()==16) {
ei.loadInitParams(BlackListComplexStringTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListComplexStringTemplate> list = ei.getDataList(BlackListComplexStringTemplate.class);
complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
}else {
ei.loadInitParams(ComplexStringAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<ComplexStringAllTemplate> 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<BaseIpCfg> _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!ipPortCfgs.isEmpty()) {
ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> regionIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> numRegionGroupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
}
}else {
try {
regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
} catch (Exception e) {
e.printStackTrace();
logger.info("获取域ID出错");
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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++;
}
mailCfgService.saveAndSend(regionDict, cfgIndexInfos, _ipPortCfgs, isSend.equals("1"));
cfgIndexInfos.clear();
_ipPortCfgs.clear();
}
}else if (regionDict.getRegionType().equals(2)) {//账号
List<BaseStringCfg<?>> _stringCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!stringCfgs.isEmpty()) {
stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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++;
}
mailCfgService.saveAndSend(regionDict, cfgIndexInfos, _stringCfgs, isSend.equals("1"));
cfgIndexInfos.clear();
_stringCfgs.clear();
}
} else if (regionDict.getRegionType().equals(3)) {
List<ComplexkeywordCfg> _complexkeywordCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!complexkeywordCfgs.isEmpty()) {
complexkeywordCfgs.drainTo(_complexkeywordCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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++;
}
mailCfgService.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;
}
} }

View File

@@ -8,13 +8,14 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; 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.beans.BeanUtils;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
@@ -25,28 +26,37 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.beust.jcommander.internal.Lists;
import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page; import com.nis.domain.Page;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg; import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.DnsResStrategy; 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.HttpBodyCfg;
import com.nis.domain.configuration.HttpReqHeadCfg; import com.nis.domain.configuration.HttpReqHeadCfg;
import com.nis.domain.configuration.HttpResHeadCfg; import com.nis.domain.configuration.HttpResHeadCfg;
import com.nis.domain.configuration.HttpUrlCfg; import com.nis.domain.configuration.HttpUrlCfg;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.configuration.template.BlackListComplexStringTemplate;
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.CallExternalProceduresException;
import com.nis.exceptions.MaatConvertException; import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.DictUtils; import com.nis.util.DictUtils;
import com.nis.util.StringUtil; 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.controller.BaseController;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
@@ -1081,4 +1091,331 @@ public class WebsiteController extends BaseController {
// return "redirect:" + adminPath // return "redirect:" + adminPath
// +"/ntc/website/httpList?functionId="+entity.getFunctionId(); // +"/ntc/website/httpList?functionId="+entity.getFunctionId();
} }
@RequestMapping(value = {"dnsImport","sslImport","httpImport"}, 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<BaseIpCfg> ipPortCfgs =null;
BlockingQueue<BaseStringCfg<?>> stringCfgs =null;
BlockingQueue<ComplexkeywordCfg> complexkeywordCfgs =null;
List<CfgIndexInfo> cfgIndexInfos = new ArrayList<CfgIndexInfo>();
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<DnsIpTemplate> list = ei.getDataList(DnsIpTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}else if((regionDict.getFunctionId().intValue()==34||regionDict.getFunctionId().intValue()==8)&&serviceDict.getAction().intValue()==16) {
//加载模板
ei.loadInitParams(BlackListIPTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListIPTemplate> list = ei.getDataList(BlackListIPTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}else {
//加载模板
ei.loadInitParams(IpAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<IpAllTemplate> 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<DnsStringTemplate> list = ei.getDataList(DnsStringTemplate.class );
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else if((regionDict.getFunctionId().intValue()==34||regionDict.getFunctionId().intValue()==635||regionDict.getFunctionId().intValue()==8)&&serviceDict.getAction().intValue()==16) {
ei.loadInitParams(BlackListStringTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListStringTemplate> list = ei.getDataList(BlackListStringTemplate.class );
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else {
ei.loadInitParams(StringAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<StringAllTemplate> list = ei.getDataList(StringAllTemplate.class );
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}
}else if (regionDict.getRegionType().equals(3)) {
if(regionDict.getFunctionId().equals(7)&&serviceDict.getAction().intValue()==16) {
ei.loadInitParams(DnsComplexStringTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<DnsComplexStringTemplate> list = ei.getDataList(DnsComplexStringTemplate.class);
complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
}else if((regionDict.getFunctionId().intValue()==8)&&serviceDict.getAction().intValue()==16) {
ei.loadInitParams(BlackListComplexStringTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListComplexStringTemplate> list = ei.getDataList(BlackListComplexStringTemplate.class);
complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
}else {
ei.loadInitParams(ComplexStringAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<ComplexStringAllTemplate> 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<BaseIpCfg> _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!ipPortCfgs.isEmpty()) {
ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> regionIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> numRegionGroupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
}
}else {
try {
regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
} catch (Exception e) {
e.printStackTrace();
logger.info("获取域ID出错");
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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<BaseStringCfg<?>> _stringCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!stringCfgs.isEmpty()) {
stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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<ComplexkeywordCfg> _complexkeywordCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!complexkeywordCfgs.isEmpty()) {
complexkeywordCfgs.drainTo(_complexkeywordCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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;
}
} }

View File

@@ -6,30 +6,54 @@ import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; 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 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.Page;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.HttpUrlCfg; import com.nis.domain.configuration.HttpUrlCfg;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; 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.IpWhitelistTemplate;
import com.nis.domain.configuration.template.StringAllNotDoLogTemplate;
import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.domain.configuration.template.WhiteListIpTemplate; import com.nis.domain.configuration.template.WhiteListIpTemplate;
import com.nis.exceptions.MaatConvertException; import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.configuration.CommonController; import com.nis.web.controller.configuration.CommonController;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
@@ -338,7 +362,147 @@ public class WhiteListController extends CommonController {
this._importFileTemplate(request, response, redirectAttributes, functionId, cfgRegionCode, this._importFileTemplate(request, response, redirectAttributes, functionId, cfgRegionCode,
WhiteListIpTemplate.class); 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<BaseIpCfg> ipPortCfgs =null;
List<CfgIndexInfo> cfgIndexInfos = new ArrayList<CfgIndexInfo>();
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<IpWhitelistTemplate> 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<BaseIpCfg> _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!ipPortCfgs.isEmpty()) {
ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> regionIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> numRegionGroupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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)&&regionIds.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配置导出 // ip配置导出
@RequestMapping(value = "ip/export") @RequestMapping(value = "ip/export")
public void exportIp(String columns, Model model, HttpServletRequest request, HttpServletResponse response, public void exportIp(String columns, Model model, HttpServletRequest request, HttpServletResponse response,
@@ -567,5 +731,139 @@ public class WhiteListController extends CommonController {
// return "redirect:" + adminPath // return "redirect:" + adminPath
// +"/ntc/iplist/list?functionId="+entity.getFunctionId(); // +"/ntc/iplist/list?functionId="+entity.getFunctionId();
} }
@RequestMapping(value = "domain/import", method=RequestMethod.POST)
public String importDomain(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<BaseIpCfg> ipPortCfgs =null;
BlockingQueue<BaseStringCfg<?>> stringCfgs =null;
BlockingQueue<ComplexkeywordCfg> complexkeywordCfgs =null;
List<CfgIndexInfo> cfgIndexInfos = new ArrayList<CfgIndexInfo>();
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(2)) {
if(serviceDict.getAction().intValue()==128) {
ei.loadInitParams(StringAllNotDoLogTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<StringAllNotDoLogTemplate> list = ei.getDataList(StringAllNotDoLogTemplate.class );
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else if(serviceDict.getAction().intValue()==16) {
ei.loadInitParams(BlackListStringTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<BlackListStringTemplate> list = ei.getDataList(BlackListStringTemplate.class );
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else {
ei.loadInitParams(StringAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<StringAllTemplate> 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(2)) {//账号
List<BaseStringCfg<?>> _stringCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!stringCfgs.isEmpty()) {
stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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++;
}
domainService.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;
}
} }

View File

@@ -8,6 +8,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@@ -15,17 +16,22 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.Logical; import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; 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 org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict; import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page; import com.nis.domain.Page;
import com.nis.domain.callback.ProxyFileStrategyCfg; import com.nis.domain.callback.ProxyFileStrategyCfg;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg; import com.nis.domain.configuration.ComplexkeywordCfg;
@@ -35,10 +41,27 @@ import com.nis.domain.configuration.HttpResHeadCfg;
import com.nis.domain.configuration.HttpUrlCfg; import com.nis.domain.configuration.HttpUrlCfg;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.configuration.template.ComplexStringAllNotDoLogTemplate;
import com.nis.domain.configuration.template.ComplexStringAllTemplate;
import com.nis.domain.configuration.template.HttpsRedirectComplexTemplate;
import com.nis.domain.configuration.template.HttpsRedirectIpTemplate;
import com.nis.domain.configuration.template.HttpsRedirectTemplate;
import com.nis.domain.configuration.template.HttpsRejectComplexTemplate;
import com.nis.domain.configuration.template.HttpsRejectIpTemplate;
import com.nis.domain.configuration.template.HttpsRejectTemplate;
import com.nis.domain.configuration.template.HttpsReplaceComplexTemplate;
import com.nis.domain.configuration.template.HttpsReplaceIpTemplate;
import com.nis.domain.configuration.template.HttpsReplaceTemplate;
import com.nis.domain.configuration.template.IpAllNotDoLogTemplate;
import com.nis.domain.configuration.template.IpAllTemplate;
import com.nis.domain.configuration.template.StringAllNotDoLogTemplate;
import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.exceptions.MaatConvertException; import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.DictUtils; import com.nis.util.DictUtils;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController; import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
@@ -499,4 +522,367 @@ public class HttpRedirectPolicyController extends BaseController {
* +"/ntc/website/httpList?functionId="+entity.getFunctionId(); * +"/ntc/website/httpList?functionId="+entity.getFunctionId();
*/ */
} }
@RequestMapping(value = {"import"}, 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<BaseIpCfg> ipPortCfgs =null;
BlockingQueue<BaseStringCfg<?>> stringCfgs =null;
BlockingQueue<ComplexkeywordCfg> complexkeywordCfgs =null;
List<CfgIndexInfo> cfgIndexInfos = new ArrayList<CfgIndexInfo>();
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().equals(207)){// HTTP(s)阻断
//加载模板
ei.loadInitParams(HttpsRejectIpTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<HttpsRejectIpTemplate> list = ei.getDataList(HttpsRejectIpTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向
//加载模板
ei.loadInitParams(HttpsRedirectIpTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<HttpsRedirectIpTemplate> list = ei.getDataList(HttpsRedirectIpTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换
//加载模板
ei.loadInitParams(HttpsReplaceIpTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<HttpsReplaceIpTemplate> list = ei.getDataList(HttpsReplaceIpTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单
//加载模板
ei.loadInitParams(IpAllNotDoLogTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<IpAllNotDoLogTemplate> list = ei.getDataList(IpAllNotDoLogTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}else {
//加载模板
ei.loadInitParams(IpAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<IpAllTemplate> list = ei.getDataList(IpAllTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list);
}
}else if (regionDict.getRegionType().equals(2)) {
if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断
//加载模板
ei.loadInitParams(HttpsRejectTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<HttpsRejectTemplate> list = ei.getDataList(HttpsRejectTemplate.class);
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向
//加载模板
ei.loadInitParams(HttpsRedirectTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<HttpsRedirectTemplate> list = ei.getDataList(HttpsRedirectTemplate.class);
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换
//加载模板
ei.loadInitParams(HttpsReplaceTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<HttpsReplaceTemplate> list = ei.getDataList(HttpsReplaceTemplate.class);
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单
//加载模板
ei.loadInitParams(StringAllNotDoLogTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<StringAllNotDoLogTemplate> list = ei.getDataList(StringAllNotDoLogTemplate.class);
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else {
//加载模板
ei.loadInitParams(StringAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<StringAllTemplate> list = ei.getDataList(StringAllTemplate.class);
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}
}else if (regionDict.getRegionType().equals(3)) {
if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断
//加载模板
ei.loadInitParams(HttpsRejectComplexTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<HttpsRejectComplexTemplate> list = ei.getDataList(HttpsRejectComplexTemplate.class);
complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
} else if(regionDict.getFunctionId().equals(208)){// HTTP(s)重定向
//加载模板
ei.loadInitParams(HttpsRedirectComplexTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<HttpsRedirectComplexTemplate> list = ei.getDataList(HttpsRedirectComplexTemplate.class);
complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
} else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换
//加载模板
ei.loadInitParams(HttpsReplaceComplexTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<HttpsReplaceComplexTemplate> list = ei.getDataList(HttpsReplaceComplexTemplate.class);
complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
} else if(regionDict.getFunctionId().equals(211)){// HTTP(s)白名单
//加载模板
ei.loadInitParams(ComplexStringAllNotDoLogTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<ComplexStringAllNotDoLogTemplate> list = ei.getDataList(ComplexStringAllNotDoLogTemplate.class);
complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list);
}else {
//加载模板
ei.loadInitParams(ComplexStringAllTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<ComplexStringAllTemplate> 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<BaseIpCfg> _ipPortCfgs=com.beust.jcommander.internal.Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!ipPortCfgs.isEmpty()) {
ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> regionIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> numRegionGroupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
}
}else {
try {
regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size());
} catch (Exception e) {
e.printStackTrace();
logger.info("获取域ID出错");
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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++;
}
httpRedirectCfgService.saveAndSend(regionDict, cfgIndexInfos, _ipPortCfgs, isSend.equals("1"));
cfgIndexInfos.clear();
_ipPortCfgs.clear();
}
}else if (regionDict.getRegionType().equals(2)) {//账号
List<BaseStringCfg<?>> _stringCfgs=com.beust.jcommander.internal.Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!stringCfgs.isEmpty()) {
stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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++;
}
httpRedirectCfgService.saveAndSend(regionDict, cfgIndexInfos, _stringCfgs, isSend.equals("1"));
cfgIndexInfos.clear();
_stringCfgs.clear();
}
} else if (regionDict.getRegionType().equals(3)) {//dns
List<ComplexkeywordCfg> _complexkeywordCfgs=com.beust.jcommander.internal.Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!complexkeywordCfgs.isEmpty()) {
complexkeywordCfgs.drainTo(_complexkeywordCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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++;
}
httpRedirectCfgService.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;
}
} }

View File

@@ -8,31 +8,59 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.concurrent.BlockingQueue;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; 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 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.Page;
import com.nis.domain.basics.PolicyGroupInfo; import com.nis.domain.configuration.AppPolicyCfg;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.HttpUrlCfg; import com.nis.domain.configuration.HttpUrlCfg;
import com.nis.domain.configuration.InterceptPktBin; import com.nis.domain.configuration.InterceptPktBin;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.PxyObjKeyring; import com.nis.domain.configuration.PxyObjKeyring;
import com.nis.domain.configuration.PxyObjSpoofingIpPool; import com.nis.domain.configuration.template.BlackListComplexStringTemplate;
import com.nis.domain.configuration.template.BlackListIPTemplate;
import com.nis.domain.configuration.template.BlackListP2pHashStringTemplate;
import com.nis.domain.configuration.template.BlackListP2pIpTemplate;
import com.nis.domain.configuration.template.BlackListStringTemplate;
import com.nis.domain.configuration.template.ComplexStringAllTemplate;
import com.nis.domain.configuration.template.DomainInterceptMonitTemplate;
import com.nis.domain.configuration.template.DomainInterceptRateLimitTemplate;
import com.nis.domain.configuration.template.DomainInterceptTemplate;
import com.nis.domain.configuration.template.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.domain.configuration.template.P2pHashStringTemplate;
import com.nis.domain.configuration.template.P2pIpTemplate;
import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.exceptions.MaatConvertException; import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.DictUtils; import com.nis.util.DictUtils;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.configuration.CommonController; import com.nis.web.controller.configuration.CommonController;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
@@ -250,7 +278,248 @@ public class InterceptController extends CommonController {
* redirectAttributes){ this._exportIp(columns,model, request, response, * redirectAttributes){ this._exportIp(columns,model, request, response,
* entity, ids, redirectAttributes); } * entity, ids, redirectAttributes); }
*/ */
@RequestMapping(value = {"/ippayload/import","/ip/import","/domain/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<BaseIpCfg> ipPortCfgs =null;
BlockingQueue<BaseStringCfg<?>> stringCfgs =null;
List<CfgIndexInfo> cfgIndexInfos = new ArrayList<CfgIndexInfo>();
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<IpPayloadTemplate> 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<IpSpoofingTemplate> list = ei.getDataList(IpSpoofingTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,null, list);
} else if(regionDict.getFunctionId().equals(200)) {//Intercept Policy
if(regionDict.getDictId().equals(53)) {
if(serviceDict.getAction().equals(64)) {
//加载模板
ei.loadInitParams(IpRateLimitTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<IpRateLimitTemplate> list = ei.getDataList(IpRateLimitTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,null, list);
}else {
//加载模板
ei.loadInitParams(IpAllNotDoLogTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<IpAllNotDoLogTemplate> list = ei.getDataList(IpAllNotDoLogTemplate.class );
ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict,null,null, list);
}
}
if(regionDict.getDictId().equals(56)) {
if(serviceDict.getAction().equals(1)){// 监测
//加载模板
ei.loadInitParams(DomainInterceptMonitTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<DomainInterceptMonitTemplate> list = ei.getDataList(DomainInterceptMonitTemplate.class);
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else if(serviceDict.getAction().equals(64)){// 限速
//加载模板
ei.loadInitParams(DomainInterceptRateLimitTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<DomainInterceptRateLimitTemplate> list = ei.getDataList(DomainInterceptRateLimitTemplate.class);
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else{// 白名单
//加载模板
ei.loadInitParams(DomainInterceptTemplate.class, properties, regionDict, serviceDict);
BlockingQueue<DomainInterceptTemplate> list = ei.getDataList(DomainInterceptTemplate.class);
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, 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<BaseIpCfg> _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
if (regionDict.getRegionType().equals(1)) {// IP
while(!ipPortCfgs.isEmpty()) {
ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> regionIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> numRegionGroupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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(212)||regionDict.getFunctionId().equals(200)) {// IP Payload ,Intercept Policy
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.saveAndSend(regionDict,cfgIndexInfos, _ipPortCfgs, isSend.equals("1"));
}
cfgIndexInfos.clear();
_ipPortCfgs.clear();
}
}else if(regionDict.getRegionType().equals(2)){//String
List<BaseStringCfg<?>> _stringCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!stringCfgs.isEmpty()) {
stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> 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("<spring:message code=\"request_service_failed\"/>:"+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&&regionIds.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++;
}
interceptCfgService.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;
}
// ip配置导出 // ip配置导出
@RequestMapping(value = "exportIpAddr") @RequestMapping(value = "exportIpAddr")
public void exportIpAddr(Model model, HttpServletRequest request, HttpServletResponse response, public void exportIpAddr(Model model, HttpServletRequest request, HttpServletResponse response,

View File

@@ -65,9 +65,7 @@ import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.DdosIpCfg; import com.nis.domain.configuration.DdosIpCfg;
import com.nis.domain.configuration.DnsIpCfg; import com.nis.domain.configuration.DnsIpCfg;
import com.nis.domain.configuration.DnsResStrategy; import com.nis.domain.configuration.DnsResStrategy;
import com.nis.domain.configuration.FileDigestCfg;
import com.nis.domain.configuration.IpReusePolicyCfg; import com.nis.domain.configuration.IpReusePolicyCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.configuration.PxyObjKeyring; import com.nis.domain.configuration.PxyObjKeyring;
import com.nis.domain.configuration.PxyObjSpoofingIpPool; import com.nis.domain.configuration.PxyObjSpoofingIpPool;
import com.nis.domain.configuration.PxyObjTrustedCaCert; 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.ConfigGroupInfoDao;
import com.nis.web.dao.specific.SpecificServiceCfgDao; import com.nis.web.dao.specific.SpecificServiceCfgDao;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
import com.nis.web.service.basics.AsnGroupInfoService;
import com.nis.web.service.basics.SysDictInfoService; import com.nis.web.service.basics.SysDictInfoService;
/** /**
@@ -1619,6 +1616,7 @@ public abstract class BaseService {
} }
return maatCfg; return maatCfg;
} }
/** /**
* 分割并保存 * 分割并保存
* @param regionDict * @param regionDict
@@ -2342,34 +2340,36 @@ public abstract class BaseService {
SqlSession batchSqlSession = null; SqlSession batchSqlSession = null;
List<MaatCfg> configCompileList = new ArrayList(); List<MaatCfg> configCompileList = new ArrayList();
try{ try{
//单独创建一个AppPolicyCfg 并赋值appPolicyCfgs 中的isValid,isAudit会在 insertAppPolicyCfgForBatch之后改变值
AppPolicyCfg app=new AppPolicyCfg();
BeanUtils.copyProperties(appPolicyCfgs.get(0), app);
batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
for(int index = 0; index < appPolicyCfgs.size();index++){ for(int index = 0; index < appPolicyCfgs.size();index++){
AppPolicyCfg _cfg = appPolicyCfgs.get(index); AppPolicyCfg _cfg = appPolicyCfgs.get(index);
((AppCfgDao) batchSqlSession.getMapper(AppCfgDao.class)).insertAppPolicyCfgForBatch(_cfg); ((AppCfgDao) batchSqlSession.getMapper(AppCfgDao.class)).insertAppPolicyCfgForBatch(_cfg);
} }
if(send) { if(send) {
StringBuffer cfgKeywords = new StringBuffer(); StringBuffer cfgKeywords = new StringBuffer();
if (appPolicyCfgs.get(0).getBehavCode() != null) { if (appPolicyCfgs.get(0).getBehavCode() != null) {
if (regionDict.getFunctionId().equals(63)) { 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) } else if (regionDict.getFunctionId().equals(407)
|| regionDict.getFunctionId().equals(408)) { || 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.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()); // appPolicyCfgs.get(0.setCfgKeywords(appPolicyCfgs.get(0.getAppCode()+Constants.KEYWORD_EXPR+appPolicyCfgs.get(0.getBehavCode());
} else { } else {
if (regionDict.getFunctionId().equals(63)) { 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) } else if (regionDict.getFunctionId().equals(407)
|| regionDict.getFunctionId().equals(408)) { || 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()+""); // entity.setCfgKeywords(entity.getAppCode()+"");
} }
appPolicyCfgs.get(0).setCfgKeywords(cfgKeywords.toString()); app.setCfgKeywords(cfgKeywords.toString());
} }
List<Integer> groupIds=Lists.newArrayList(); List<Integer> groupIds=Lists.newArrayList();
List<Integer> regionIds=Lists.newArrayList(); List<Integer> regionIds=Lists.newArrayList();
@@ -2381,7 +2381,7 @@ public abstract class BaseService {
MaatCfg maatCfg=null; MaatCfg maatCfg=null;
if(send) { if(send) {
if(regionDict.getIsMaat().intValue()==1) { if(regionDict.getIsMaat().intValue()==1) {
AppPolicyCfg cfg=(AppPolicyCfg) appPolicyCfgs.get(0); AppPolicyCfg cfg=app;
cfg.setCompileId(list.get(index).getCompileId()); cfg.setCompileId(list.get(index).getCompileId());
cfg.setRegionId(regionIds.get(index)); cfg.setRegionId(regionIds.get(index));
cfg.setGroupId(groupIds.get(index)); cfg.setGroupId(groupIds.get(index));
@@ -2533,6 +2533,7 @@ public abstract class BaseService {
* @param data * @param data
* @param tableName * @param tableName
*/ */
@Deprecated
@Transactional(readOnly = false, rollbackFor = RuntimeException.class) @Transactional(readOnly = false, rollbackFor = RuntimeException.class)
public void saveIpBatch(FunctionRegionDict regionDict, FunctionServiceDict serviceDict,List<BaseIpCfg> cfgs, boolean send) { public void saveIpBatch(FunctionRegionDict regionDict, FunctionServiceDict serviceDict,List<BaseIpCfg> cfgs, boolean send) {
if (regionDict != null) { if (regionDict != null) {
@@ -2939,6 +2940,8 @@ public abstract class BaseService {
* @param cfgIndexInfos * @param cfgIndexInfos
* @param send * @param send
*/ */
@Deprecated
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveAndSendSpoofingIpPool(List<? extends BaseCfg> list, List<CfgIndexInfo> cfgIndexInfos, boolean send) { public void saveAndSendSpoofingIpPool(List<? extends BaseCfg> list, List<CfgIndexInfo> cfgIndexInfos, boolean send) {
List<BaseIpCfg> ipCfgList = (List<BaseIpCfg>)list; List<BaseIpCfg> ipCfgList = (List<BaseIpCfg>)list;
List<Integer> spoofingPoolIds=Lists.newArrayList(); List<Integer> spoofingPoolIds=Lists.newArrayList();
@@ -3012,7 +3015,9 @@ public abstract class BaseService {
index ++; index ++;
} }
// if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
// this.saveCfgIndexOf(cfgIndexInfos);
// }
if(send && spoofingPools.size()>0) { if(send && spoofingPools.size()>0) {
//调用服务接口下发配置数据 //调用服务接口下发配置数据
String json=gsonToJson(spoofingPools); String json=gsonToJson(spoofingPools);

View File

@@ -1,6 +1,5 @@
package com.nis.web.service.configuration; package com.nis.web.service.configuration;
import java.nio.charset.Charset;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@@ -14,10 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.google.common.collect.Lists;
import com.nis.domain.Page; 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.AppByteCfg;
import com.nis.domain.configuration.AppDomainCfg; import com.nis.domain.configuration.AppDomainCfg;
import com.nis.domain.configuration.AppHeaderCfg; 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.AppTcpCfg;
import com.nis.domain.configuration.AppTopicDomainCfg; import com.nis.domain.configuration.AppTopicDomainCfg;
import com.nis.domain.configuration.AreaIpCfg; import com.nis.domain.configuration.AreaIpCfg;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg; import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; import com.nis.domain.configuration.NtcSubscribeIdCfg;
@@ -50,7 +44,6 @@ import com.nis.domain.specific.SpecificServiceCfg;
import com.nis.exceptions.MaatConvertException; import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil; import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.util.StringUtils; import com.nis.util.StringUtils;
import com.nis.web.dao.basics.AsnIpCfgDao; import com.nis.web.dao.basics.AsnIpCfgDao;

View File

@@ -4,7 +4,6 @@ package com.nis.web.service.configuration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -13,36 +12,34 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.nis.domain.FunctionRegionDict;
import com.nis.domain.Page; import com.nis.domain.Page;
import com.nis.domain.configuration.AreaBean;
import com.nis.domain.configuration.AreaIpCfg; import com.nis.domain.configuration.AreaIpCfg;
import com.nis.domain.configuration.AvContUrlCfg; import com.nis.domain.configuration.AvContUrlCfg;
import com.nis.domain.configuration.AvVoipAccountCfg; import com.nis.domain.configuration.AvVoipAccountCfg;
import com.nis.domain.configuration.AvVoipIpCfg; import com.nis.domain.configuration.AvVoipIpCfg;
import com.nis.domain.configuration.BaseCfg;
import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.HttpUrlCfg;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.configuration.P2pHashCfg;
import com.nis.domain.configuration.P2pKeywordCfg;
import com.nis.domain.maat.MaatCfg; import com.nis.domain.maat.MaatCfg;
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.DigestCfg;
import com.nis.domain.maat.MaatCfg.GroupCfg; import com.nis.domain.maat.MaatCfg.GroupCfg;
import com.nis.domain.maat.MaatCfg.IpCfg; import com.nis.domain.maat.MaatCfg.IpCfg;
import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; import com.nis.domain.maat.MaatCfg.NumBoundaryCfg;
import com.nis.domain.maat.MaatCfg.StringCfg; import com.nis.domain.maat.MaatCfg.StringCfg;
import com.nis.domain.maat.ToMaatBean;
import com.nis.domain.maat.ToMaatResult;
import com.nis.exceptions.MaatConvertException; import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil; import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.util.StringUtils; import com.nis.util.StringUtils;
import com.nis.web.dao.configuration.AreaIpCfgDao; import com.nis.web.dao.configuration.AreaIpCfgDao;
import com.nis.web.dao.configuration.AvContentCfgDao; import com.nis.web.dao.configuration.AvContentCfgDao;
import com.nis.web.dao.configuration.IpCfgDao;
import com.nis.web.dao.configuration.StringCfgDao; import com.nis.web.dao.configuration.StringCfgDao;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
import com.nis.web.service.BaseService; import com.nis.web.service.BaseService;
@@ -62,6 +59,8 @@ public class AvContentCfgService extends BaseService{
protected AreaIpCfgDao areaIpCfgDao; protected AreaIpCfgDao areaIpCfgDao;
@Autowired @Autowired
protected StringCfgDao stringCfgDao; protected StringCfgDao stringCfgDao;
@Autowired
protected IpCfgDao ipCfgDao;
/********************************voip业务*********************************/ /********************************voip业务*********************************/
@@ -1984,5 +1983,79 @@ public class AvContentCfgService extends BaseService{
logger.info("picUrl配置取消配置响应信息"+result.getMsg()); logger.info("picUrl配置取消配置响应信息"+result.getMsg());
} }
} }
/********************************picUrl业务*********************************/ /**
* 配置导入,目前只支持单sheet
* @param regionDict
* @param cfgIndexInfos
* @param data
* @param send
*/
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveAndSend(FunctionRegionDict regionDict,List<CfgIndexInfo> cfgIndexInfos,List<? extends BaseCfg<?>> data,boolean send) {
if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
this.saveCfgIndexOf(cfgIndexInfos);
}
if(data!=null&&!data.isEmpty()) {
List<MaatCfg> 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())){
if("subscribe_id".equals(regionDict.getConfigServiceType())){
cfg.setTableName("ntc_subscribe_id_cfg");
}else if(regionDict.getDictId().intValue()==25){
cfg.setTableName("av_cont_url_cfg");
}else if(regionDict.getDictId().intValue()==16) {
cfg.setTableName("av_voip_account_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("配置下发配置条数:" + configCompileList.size());
}else {
logger.info("配置下发配置参数:" + json);
}
// 调用服务接口下发配置
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
logger.info("配置下发响应信息:" + result.getMsg());
long end=System.currentTimeMillis();
logger.info("配置下发配置耗时:" + (end-start));
}
}
}
} }

View File

@@ -8,9 +8,13 @@ import java.util.Map;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; 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.Page;
import com.nis.domain.configuration.AreaIpCfg; 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.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
@@ -30,8 +34,10 @@ import com.nis.util.Constants;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.web.dao.configuration.AreaIpCfgDao; import com.nis.web.dao.configuration.AreaIpCfgDao;
import com.nis.web.dao.configuration.BgpCfgDao; 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.dao.configuration.StringCfgDao;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
import com.nis.web.service.BaseService;
import com.nis.web.service.CrudService; import com.nis.web.service.CrudService;
/** /**
@@ -47,6 +53,8 @@ public class BgpCfgService extends CrudService<BgpCfgDao,CfgIndexInfo> {
protected StringCfgDao stringCfgDao; protected StringCfgDao stringCfgDao;
@Autowired @Autowired
protected AreaIpCfgDao areaIpCfgDao; protected AreaIpCfgDao areaIpCfgDao;
@Autowired
protected IpCfgDao ipCfgDao;
public CfgIndexInfo getBgpCfg(Long cfgId,Integer compileId){ public CfgIndexInfo getBgpCfg(Long cfgId,Integer compileId){
CfgIndexInfo entity = bgpCfgDao.getCfgIndexInfo(cfgId,compileId); CfgIndexInfo entity = bgpCfgDao.getCfgIndexInfo(cfgId,compileId);
@@ -419,4 +427,66 @@ public class BgpCfgService extends CrudService<BgpCfgDao,CfgIndexInfo> {
logger.info("BGP配置取消配置响应信息"+result.getMsg()); logger.info("BGP配置取消配置响应信息"+result.getMsg());
} }
} }
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveAndSend(FunctionRegionDict regionDict,List<CfgIndexInfo> cfgIndexInfos,List<? extends BaseCfg<?>> data,boolean send) {
if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
this.saveCfgIndexOf(cfgIndexInfos);
}
if(data!=null&&!data.isEmpty()) {
List<MaatCfg> 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));
}
}
}
} }

View File

@@ -1,45 +1,39 @@
package com.nis.web.service.configuration; package com.nis.web.service.configuration;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
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.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.beust.jcommander.internal.Lists;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.nis.domain.FunctionRegionDict;
import com.nis.domain.Page; import com.nis.domain.Page;
import com.nis.domain.callback.InlineIp; import com.nis.domain.configuration.BaseCfg;
import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.DdosIpCfg; import com.nis.domain.configuration.DdosIpCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.maat.MaatCfg; import com.nis.domain.maat.MaatCfg;
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.DigestCfg;
import com.nis.domain.maat.MaatCfg.GroupCfg; import com.nis.domain.maat.MaatCfg.GroupCfg;
import com.nis.domain.maat.MaatCfg.IpCfg; import com.nis.domain.maat.MaatCfg.IpCfg;
import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; import com.nis.domain.maat.MaatCfg.NumBoundaryCfg;
import com.nis.domain.maat.MaatCfg.StringCfg; import com.nis.domain.maat.MaatCfg.StringCfg;
import com.nis.domain.maat.ToMaatBean;
import com.nis.domain.maat.ToMaatResult;
import com.nis.exceptions.MaatConvertException; import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil; import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.web.dao.configuration.DdosCfgDao; import com.nis.web.dao.configuration.DdosCfgDao;
import com.nis.web.dao.configuration.IpCfgDao;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
import com.nis.web.service.BaseService; import com.nis.web.service.BaseService;
import com.nis.web.service.SpringContextHolder;
@@ -335,4 +329,64 @@ public class DdosCfgService extends BaseService{
} }
} }
/**
* 配置导入,目前只支持单sheet
* @param regionDict
* @param cfgIndexInfos
* @param data
* @param send
* @throws NoSuchMethodException
* @throws InvocationTargetException
* @throws IllegalAccessException
*/
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveAndSend(FunctionRegionDict regionDict,List<? extends BaseCfg<?>> data,boolean send) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
if(data!=null&&!data.isEmpty()) {
List<MaatCfg> configCompileList = new ArrayList();
if(data.get(0) instanceof BaseIpCfg) {
for (int index = 0; index < data.size(); index++) {
DdosIpCfg ddosIpCfg=new DdosIpCfg();
BeanUtils.copyProperties(data.get(index), ddosIpCfg);
//如果insert加入了select last_insert_id会拖慢6~7倍以上的效率
ddosCfgDao.insert(ddosIpCfg);
if (send) {
if(regionDict.getIsMaat().intValue()==1) {
MaatCfg maatCfg=convertMaatCfg(data.get(index),1);
//userregion处理
Map umap= new HashMap();
umap.put("protocol", ddosIpCfg.getAntiddosProtocol());
umap.put("bps_threadshold", ddosIpCfg.getBpsThreadshold());
umap.put("pps_threadshold", ddosIpCfg.getPpsThreadshold());
maatCfg.setUserRegion(new Gson().toJson(umap));
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("ddps ip配置下发配置条数" + configCompileList.size());
}else {
logger.info("ddps ip配置下发配置参数" + json);
}
// 调用服务接口下发配置
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
logger.info("ddps ip配置下发响应信息" + result.getMsg());
long end=System.currentTimeMillis();
logger.info("ddps ip配置下发配置耗时" + (end-start));
}
}
}
} }

View File

@@ -11,10 +11,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.nis.domain.FunctionRegionDict;
import com.nis.domain.Page; import com.nis.domain.Page;
import com.nis.domain.configuration.AreaIpCfg; import com.nis.domain.configuration.AreaIpCfg;
import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.HttpUrlCfg; import com.nis.domain.configuration.HttpUrlCfg;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; import com.nis.domain.configuration.NtcSubscribeIdCfg;
@@ -36,6 +39,7 @@ import com.nis.web.dao.configuration.DomainDao;
import com.nis.web.dao.configuration.StringCfgDao; import com.nis.web.dao.configuration.StringCfgDao;
import com.nis.web.dao.configuration.WebsiteCfgDao; import com.nis.web.dao.configuration.WebsiteCfgDao;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
import com.nis.web.service.BaseService;
import com.nis.web.service.CrudService; import com.nis.web.service.CrudService;
/** /**
@@ -674,4 +678,55 @@ public class DomainService extends CrudService<DomainDao,HttpUrlCfg> {
entity.setHttpUrlList(httpUrlList); entity.setHttpUrlList(httpUrlList);
return entity; return entity;
} }
public void saveAndSend(FunctionRegionDict regionDict, List<CfgIndexInfo> cfgIndexInfos,
List<BaseStringCfg<?>> data, boolean send) {
// TODO Auto-generated method stub
if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
this.saveCfgIndexOf(cfgIndexInfos);
}
if(data!=null&&!data.isEmpty()) {
List<MaatCfg> configCompileList = new ArrayList();
for (int index = 0; index < data.size(); index++) {
BaseStringCfg cfg = (BaseStringCfg)data.get(index);
if(cfg.getCfgKeywords()!=null && !"".equals(cfg.getCfgKeywords())){
cfg.setTableName("http_url_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);
}
}
}
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("URL配置下发配置条数" + configCompileList.size());
}else {
logger.info("URL配置下发配置参数" + json);
}
// 调用服务接口下发配置
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
logger.info("URL配置下发响应信息" + result.getMsg());
long end=System.currentTimeMillis();
logger.info("URL配置下发配置耗时" + (end-start));
}
}
}
} }

View File

@@ -1,52 +1,51 @@
package com.nis.web.service.configuration; package com.nis.web.service.configuration;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.transaction.annotation.Transactional;
import com.nis.domain.FunctionRegionDict;
import com.nis.domain.Page; import com.nis.domain.Page;
import com.nis.domain.SysDataDictionaryItem;
import com.nis.domain.configuration.AreaIpCfg; 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.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg; import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.FileDigestCfg; import com.nis.domain.configuration.FileDigestCfg;
import com.nis.domain.configuration.FtpKeywordCfg;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.configuration.P2pHashCfg; import com.nis.domain.configuration.P2pHashCfg;
import com.nis.domain.configuration.P2pKeywordCfg; import com.nis.domain.configuration.P2pKeywordCfg;
import com.nis.domain.configuration.FtpKeywordCfg;
import com.nis.domain.maat.MaatCfg; import com.nis.domain.maat.MaatCfg;
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.DigestCfg;
import com.nis.domain.maat.MaatCfg.GroupCfg; import com.nis.domain.maat.MaatCfg.GroupCfg;
import com.nis.domain.maat.MaatCfg.IpCfg; import com.nis.domain.maat.MaatCfg.IpCfg;
import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; import com.nis.domain.maat.MaatCfg.NumBoundaryCfg;
import com.nis.domain.maat.MaatCfg.StringCfg; import com.nis.domain.maat.MaatCfg.StringCfg;
import com.nis.domain.maat.ToMaatBean;
import com.nis.domain.maat.ToMaatResult;
import com.nis.exceptions.MaatConvertException; import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil; import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.DictUtils; import com.nis.util.DictUtils;
import com.nis.util.FileUtils;
import com.nis.util.JsonMapper;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.web.dao.configuration.AreaIpCfgDao; import com.nis.web.dao.configuration.AreaIpCfgDao;
import com.nis.web.dao.configuration.FileTransferCfgDao; import com.nis.web.dao.configuration.FileTransferCfgDao;
import com.nis.web.dao.configuration.IpCfgDao;
import com.nis.web.dao.configuration.MailCfgDao; import com.nis.web.dao.configuration.MailCfgDao;
import com.nis.web.dao.configuration.StringCfgDao; import com.nis.web.dao.configuration.StringCfgDao;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
import com.nis.web.service.BaseService;
import com.nis.web.service.CrudService; import com.nis.web.service.CrudService;
/** /**
@@ -64,6 +63,8 @@ public class FileTransferCfgService extends CrudService<FileTransferCfgDao,CfgIn
protected MailCfgDao mailCfgDao; protected MailCfgDao mailCfgDao;
@Autowired @Autowired
protected StringCfgDao stringCfgDao; protected StringCfgDao stringCfgDao;
@Autowired
protected IpCfgDao ipCfgDao;
public Page<CfgIndexInfo> getFtpList(Page<CfgIndexInfo> page, CfgIndexInfo entity){ public Page<CfgIndexInfo> getFtpList(Page<CfgIndexInfo> page, CfgIndexInfo entity){
// 生成数据权限过滤条件dsf为dataScopeFilter的简写在xml中使用 ${sqlMap.dsf}调用权限SQL // 生成数据权限过滤条件dsf为dataScopeFilter的简写在xml中使用 ${sqlMap.dsf}调用权限SQL
@@ -1075,6 +1076,86 @@ public class FileTransferCfgService extends CrudService<FileTransferCfgDao,CfgIn
logger.info("p2p配置取消配置响应信息"+result.getMsg()); logger.info("p2p配置取消配置响应信息"+result.getMsg());
} }
} }
/**
* 配置导入,目前只支持单sheet
* @param regionDict
* @param cfgIndexInfos
* @param data
* @param send
*/
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveAndSend(FunctionRegionDict regionDict,List<CfgIndexInfo> cfgIndexInfos,List<? extends BaseCfg<?>> data,boolean send) {
if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
this.saveCfgIndexOf(cfgIndexInfos);
}
if(data!=null&&!data.isEmpty()) {
List<MaatCfg> 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("p2p_ip".equals(regionDict.getConfigServiceType())) {
maatCfg.setUserRegion(Constants.P2P_IP_TYPE_USER_REGION_KEY+"="+cfg.getUserRegion2());
}
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 if(regionDict.getDictId().intValue() == 36||regionDict.getDictId().intValue() == 37){
cfg.setTableName("ftp_keyword_cfg");
}else if(regionDict.getDictId().equals(158)) {
cfg.setTableName("p2p_keyword_cfg");
}else if(regionDict.getDictId().equals(159)) {
cfg.setTableName("p2p_hash_cfg");
}
stringCfgDao.saveStringCfgBatch(cfg);
}
if (send) {
if(regionDict.getIsMaat().intValue()==1) {
MaatCfg maatCfg=convertMaatCfg(cfg,2);
//userregion处理
if("p2p_hash".equals(regionDict.getConfigServiceType())) {
maatCfg.setUserRegion(Constants.P2P_HASH_TYPE_USER_REGION_KEY+"="+cfg.getUserRegion1());
}
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("ftp/p2p配置下发配置条数" + configCompileList.size());
}else {
logger.info("ftp/p2p配置下发配置参数" + json);
}
// 调用服务接口下发配置
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
logger.info("ftp/p2p配置下发响应信息" + result.getMsg());
long end=System.currentTimeMillis();
logger.info("ftp/p2p配置下发配置耗时" + (end-start));
}
}
}
} }

View File

@@ -5,16 +5,21 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; 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.Page;
import com.nis.domain.configuration.AreaIpCfg; 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.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.HttpBodyCfg; import com.nis.domain.configuration.HttpBodyCfg;
import com.nis.domain.configuration.HttpReqHeadCfg; import com.nis.domain.configuration.HttpReqHeadCfg;
import com.nis.domain.configuration.HttpResHeadCfg; import com.nis.domain.configuration.HttpResHeadCfg;
@@ -34,6 +39,7 @@ import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.web.dao.configuration.AreaIpCfgDao; 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.StringCfgDao;
import com.nis.web.dao.configuration.WebsiteCfgDao; import com.nis.web.dao.configuration.WebsiteCfgDao;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
@@ -53,6 +59,8 @@ public class HttpRedirectCfgService extends CrudService<WebsiteCfgDao,CfgIndexIn
protected AreaIpCfgDao areaIpCfgDao; protected AreaIpCfgDao areaIpCfgDao;
@Autowired @Autowired
protected StringCfgDao stringCfgDao; protected StringCfgDao stringCfgDao;
@Autowired
protected IpCfgDao ipCfgDao;
public List<CfgIndexInfo> getCfgIndexInfos(CfgIndexInfo entity){ public List<CfgIndexInfo> getCfgIndexInfos(CfgIndexInfo entity){
return websiteCfgDao.getCfgIndexInfos(entity); return websiteCfgDao.getCfgIndexInfos(entity);
@@ -542,4 +550,145 @@ public class HttpRedirectCfgService extends CrudService<WebsiteCfgDao,CfgIndexIn
} }
} }
/**
* 配置导入,目前只支持单sheet
* @param regionDict
* @param cfgIndexInfos
* @param data
* @param send
*/
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveAndSend(FunctionRegionDict regionDict,List<CfgIndexInfo> cfgIndexInfos,List<? extends BaseCfg<?>> data,boolean send) {
if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
this.saveCfgIndexOf(cfgIndexInfos);
}
if(data!=null&&!data.isEmpty()) {
List<MaatCfg> 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(regionDict.getFunctionId()==207 || regionDict.getFunctionId()==208 || regionDict.getFunctionId()==209) {// HTTP(s)阻断、重定向、替换
String userRegion = Constants.USER_REGION_PLACEHOLDER;
if(cfg.getAction().equals(Constants.REJECT_ACTION)) {// 阻断
userRegion = Constants.REDIRECT_RESPONSE_CODE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REDIRECT_CONTENT_KEY+"="+cfg.getUserRegion2();
}else if(cfg.getAction().equals(48)) {// 重定向
userRegion = Constants.REDIRECT_RESPONSE_CODE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REDIRECT_URL_KEY+"="+cfg.getUserRegion2();;
}else if(cfg.getAction().equals(Constants.REPLACE_ACTION)) {// 替换
String substitute = "/"+cfg.getUserRegion2()+"/"+cfg.getUserRegion3();
userRegion = Constants.REPLACE_ZONE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REPLACE_SUBSTITUTE_KEY+"="+substitute;
}
maatCfg.setUserRegion(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())){
if(regionDict.getDictId().intValue()==97 || regionDict.getDictId().intValue()==79 ||
regionDict.getDictId().intValue()==85 || regionDict.getDictId().intValue()==91 ||
regionDict.getDictId().intValue()==99){
cfg.setTableName("http_url_cfg");
}
if(regionDict.getDictId().intValue()==94 || regionDict.getDictId().intValue()==95 ||
regionDict.getDictId().intValue()==88 || regionDict.getDictId().intValue()==89 ||
regionDict.getDictId().intValue()==82 || regionDict.getDictId().intValue()==83 ||
regionDict.getDictId().intValue()==103 || regionDict.getDictId().intValue()==104) {
cfg.setTableName("http_body_cfg");
}
stringCfgDao.saveStringCfgBatch(cfg);
}
if (send) {
if(regionDict.getIsMaat().intValue()==1) {
MaatCfg maatCfg=convertMaatCfg(cfg,2);
//userregion处理
if(regionDict.getFunctionId()==207 || regionDict.getFunctionId()==208 || regionDict.getFunctionId()==209) {// HTTP(s)阻断、重定向、替换
String userRegion = Constants.USER_REGION_PLACEHOLDER;
if(cfg.getAction().equals(Constants.REJECT_ACTION)) {// 阻断
userRegion = Constants.REDIRECT_RESPONSE_CODE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REDIRECT_CONTENT_KEY+"="+cfg.getUserRegion2();
}else if(cfg.getAction().equals(48)) {// 重定向
userRegion = Constants.REDIRECT_RESPONSE_CODE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REDIRECT_URL_KEY+"="+cfg.getUserRegion2();;
}else if(cfg.getAction().equals(Constants.REPLACE_ACTION)) {// 替换
String substitute = "/"+cfg.getUserRegion2()+"/"+cfg.getUserRegion3();
userRegion = Constants.REPLACE_ZONE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REPLACE_SUBSTITUTE_KEY+"="+substitute;
}
maatCfg.setUserRegion(userRegion);
}
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("subscribe_id".equals(regionDict.getConfigServiceType())){
cfg.setTableName("ntc_subscribe_id_cfg");
}else if(regionDict.getDictId().intValue()==98 || regionDict.getDictId().intValue()==80 ||
regionDict.getDictId().intValue()==86 || regionDict.getDictId().intValue()==92 ||
regionDict.getDictId().intValue()==100) {
cfg.setTableName("http_req_head_cfg");
}else if(regionDict.getDictId().intValue()==102 || regionDict.getDictId().intValue()==81 ||
regionDict.getDictId().intValue()==87 || regionDict.getDictId().intValue()==93) {
cfg.setTableName("http_res_head_cfg");
}
stringCfgDao.saveComplexkeywordCfgBatch(cfg);
}
if (send) {
if(regionDict.getIsMaat().intValue()==1) {
MaatCfg maatCfg=convertMaatCfg(cfg,3);
//userregion处理
if(regionDict.getFunctionId()==207 || regionDict.getFunctionId()==208 || regionDict.getFunctionId()==209) {// HTTP(s)阻断、重定向、替换
String userRegion = Constants.USER_REGION_PLACEHOLDER;
if(cfg.getAction().equals(Constants.REJECT_ACTION)) {// 阻断
userRegion = Constants.REDIRECT_RESPONSE_CODE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REDIRECT_CONTENT_KEY+"="+cfg.getUserRegion2();
}else if(cfg.getAction().equals(48)) {// 重定向
userRegion = Constants.REDIRECT_RESPONSE_CODE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REDIRECT_URL_KEY+"="+cfg.getUserRegion2();;
}else if(cfg.getAction().equals(Constants.REPLACE_ACTION)) {// 替换
String substitute = "/"+cfg.getUserRegion2()+"/"+cfg.getUserRegion3();
userRegion = Constants.REPLACE_ZONE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REPLACE_SUBSTITUTE_KEY+"="+substitute;
}
maatCfg.setUserRegion(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("HTTP(S)配置下发配置条数:" + configCompileList.size());
}else {
logger.info("HTTP(S)配置下发配置参数:" + json);
}
// 调用服务接口下发配置
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
logger.info("HTTP(S)配置下发响应信息:" + result.getMsg());
long end=System.currentTimeMillis();
logger.info("HTTP(S)配置下发配置耗时:" + (end-start));
}
}
}
} }

View File

@@ -7,12 +7,22 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import org.apache.commons.lang3.StringUtils; 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.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; 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.Page;
import com.nis.domain.callback.InlineIp;
import com.nis.domain.configuration.AreaIpCfg; 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.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.HttpUrlCfg; import com.nis.domain.configuration.HttpUrlCfg;
@@ -20,25 +30,27 @@ import com.nis.domain.configuration.InterceptPktBin;
import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.PxyObjSpoofingIpPool; import com.nis.domain.configuration.PxyObjSpoofingIpPool;
import com.nis.domain.maat.MaatCfg; 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.DigestCfg;
import com.nis.domain.maat.MaatCfg.GroupCfg; import com.nis.domain.maat.MaatCfg.GroupCfg;
import com.nis.domain.maat.MaatCfg.IpCfg; import com.nis.domain.maat.MaatCfg.IpCfg;
import com.nis.domain.maat.MaatCfg.NumBoundaryCfg;
import com.nis.domain.maat.MaatCfg.StringCfg; import com.nis.domain.maat.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.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil; import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.web.dao.configuration.AreaIpCfgDao; import com.nis.web.dao.configuration.AreaIpCfgDao;
import com.nis.web.dao.configuration.InterceptCfgDao; 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.PxyObjSpoofingIpPoolDao;
import com.nis.web.dao.configuration.StringCfgDao;
import com.nis.web.dao.configuration.WebsiteCfgDao; import com.nis.web.dao.configuration.WebsiteCfgDao;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
import com.nis.web.service.BaseService; import com.nis.web.service.BaseService;
import com.nis.web.service.CrudService; import com.nis.web.service.CrudService;
import com.nis.web.service.SpringContextHolder;
/** /**
* 网站相关配置事务类 * 网站相关配置事务类
@@ -55,7 +67,10 @@ public class InterceptCfgService extends CrudService<WebsiteCfgDao,CfgIndexInfo>
protected AreaIpCfgDao areaIpCfgDao; protected AreaIpCfgDao areaIpCfgDao;
@Autowired @Autowired
protected PxyObjSpoofingIpPoolDao pxyObjSpoofingIpPoolDao; protected PxyObjSpoofingIpPoolDao pxyObjSpoofingIpPoolDao;
@Autowired
protected IpCfgDao ipCfgDao;
@Autowired
protected StringCfgDao stringCfgDao;
public CfgIndexInfo getInterceptCfg(Long cfgId,Integer compileId){ public CfgIndexInfo getInterceptCfg(Long cfgId,Integer compileId){
CfgIndexInfo entity = websiteCfgDao.getCfgIndexInfo(cfgId,compileId); CfgIndexInfo entity = websiteCfgDao.getCfgIndexInfo(cfgId,compileId);
List<IpPortCfg> ipPortList = websiteCfgDao.getIpPortList(entity); List<IpPortCfg> ipPortList = websiteCfgDao.getIpPortList(entity);
@@ -578,4 +593,269 @@ public class InterceptCfgService extends CrudService<WebsiteCfgDao,CfgIndexInfo>
logger.info("intercept IP/DNS 配置取消配置响应信息:"+result.getMsg()); logger.info("intercept IP/DNS 配置取消配置响应信息:"+result.getMsg());
} }
} }
/**
* 配置导入,目前只支持单sheet
* @param regionDict
* @param cfgIndexInfos
* @param data
* @param send
*/
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveAndSend(FunctionRegionDict regionDict,List<CfgIndexInfo> cfgIndexInfos,List<? extends BaseCfg<?>> data,boolean send) {
if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
this.saveCfgIndexOf(cfgIndexInfos);
}
if(data!=null&&!data.isEmpty()) {
List<MaatCfg> 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(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);
}else if(regionDict.getFunctionId()==200) {
//监测 需要发keyring_id
if(cfg.getAction().equals(Constants.MONIT_ACTION)){
cfg.setUserRegion1(StringUtil.isEmpty(cfg.getUserRegion1()) ? "0":cfg.getUserRegion1());
maatCfg.setUserRegion(Constants.INTERCEPT_IP_MONIT_USER_REGION_KEY+"="+cfg.getUserRegion1());
//监测的域名需下发拦截强度
cfg.setUserRegion5(StringUtil.isEmpty(cfg.getUserRegion5()) ? "1":cfg.getUserRegion5());
if(StringUtil.isEmpty(maatCfg.getUserRegion())) {
maatCfg.setUserRegion(Constants.INTERCEPT_DOMAN_INTENSITY_USER_REGION_KEY+"="+cfg.getUserRegion5());
}else {
maatCfg.setUserRegion(maatCfg.getUserRegion()+";"+Constants.INTERCEPT_DOMAN_INTENSITY_USER_REGION_KEY+"="+cfg.getUserRegion5());
}
}
//限速 需要发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 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(regionDict.getDictId().intValue() == 56){
cfg.setTableName("http_url_cfg");
}
stringCfgDao.saveStringCfgBatch(cfg);
}
if (send) {
if(regionDict.getIsMaat().intValue()==1) {
MaatCfg maatCfg=convertMaatCfg(cfg,2);
//userregion处理
if(regionDict.getFunctionId()==200) {// Domain Intercept
String userRegion = Constants.USERREGION_DOMAIN_ID+"="+cfg.getCompileId()+";"+Constants.USERREGION_DOMAIN_STR+"="+cfg.getCfgKeywords();
if(cfg.getAction().equals(Constants.MONIT_ACTION)) {// 监测 需要发keyring_id、拦截强度
userRegion = Constants.INTERCEPT_IP_MONIT_USER_REGION_KEY+"=0"+";"+Constants.INTERCEPT_DOMAN_INTENSITY_USER_REGION_KEY+"="+cfg.getUserRegion5()+";" + userRegion;
}else if(cfg.getAction().equals(Constants.RATELIMIT_ACTION)) {// 限速 需要发Droprate
userRegion = Constants.INTERCEPT_IP_RATELIMIT_DROPRATE_USER_REGION_KEY+"="+cfg.getUserRegion2()+";" + userRegion;
}
maatCfg.setUserRegion(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("intercept IP/DNS配置下发配置条数" + configCompileList.size());
}else {
logger.info("intercept IP/DNS配置下发配置参数" + json);
}
// 调用服务接口下发配置
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
logger.info("intercept IP/DNS配置下发响应信息" + result.getMsg());
long end=System.currentTimeMillis();
logger.info("intercept IP/DNS配置下发配置耗时" + (end-start));
}
}
}
/**
* 处理IpSpoofing配置导入
* @param list
* @param cfgIndexInfos
* @param send
*/
@Override
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveAndSendSpoofingIpPool(List<? extends BaseCfg> list, List<CfgIndexInfo> cfgIndexInfos, boolean send) {
List<BaseIpCfg> ipCfgList = (List<BaseIpCfg>)list;
List<Integer> spoofingPoolIds=Lists.newArrayList();
List<PxyObjSpoofingIpPool> spoofingPools = new ArrayList<PxyObjSpoofingIpPool>();
PxyObjSpoofingIpPoolDao pxyObjSpoofingIpPoolDao = SpringContextHolder.getBean(PxyObjSpoofingIpPoolDao.class);
try {
spoofingPoolIds = ConfigServiceUtil.getId(1,ipCfgList.size());
} catch (Exception e) {
e.printStackTrace();
logger.info("获取编译ID出错");
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
}
int index = 0;
List<MaatCfg> 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<BaseIpCfg> 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();
}
}
}
} }

View File

@@ -2,26 +2,36 @@ package com.nis.web.service.configuration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import org.apache.commons.lang3.StringUtils; 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.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.google.gson.Gson;
import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page; import com.nis.domain.Page;
import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.basics.AsnGroupInfo;
import com.nis.domain.callback.InlineIp; import com.nis.domain.callback.InlineIp;
import com.nis.domain.configuration.AppIpCfg;
import com.nis.domain.configuration.AreaIpCfg; import com.nis.domain.configuration.AreaIpCfg;
import com.nis.domain.configuration.AsnKeywordCfg; import com.nis.domain.configuration.AsnKeywordCfg;
import com.nis.domain.configuration.BaseCfg;
import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; 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.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg; import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.maat.MaatCfg; import com.nis.domain.maat.MaatCfg;
@@ -40,12 +50,17 @@ import com.nis.util.DictUtils;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.web.dao.basics.AsnGroupInfoDao; import com.nis.web.dao.basics.AsnGroupInfoDao;
import com.nis.web.dao.basics.AsnIpCfgDao; 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.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.IpCfgDao;
import com.nis.web.dao.configuration.StringCfgDao; import com.nis.web.dao.configuration.StringCfgDao;
import com.nis.web.dao.specific.ConfigGroupInfoDao; import com.nis.web.dao.specific.ConfigGroupInfoDao;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
import com.nis.web.service.BaseService;
import com.nis.web.service.CrudService; import com.nis.web.service.CrudService;
import com.nis.web.service.SpringContextHolder;
/** /**
* IP相关配置事务类 * IP相关配置事务类
@@ -264,6 +279,91 @@ public class IpCfgService extends CrudService<IpCfgDao,BaseIpCfg> {
} }
} }
} }
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveAndSendIPList(FunctionRegionDict regionDict, FunctionServiceDict serviceDict,List<BaseIpCfg> list,List<CfgIndexInfo> 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<MaatCfg> configCompileList = new ArrayList();
List<InlineIp> 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){ public void updateIpCfgValid(Integer isValid,String ids,Integer functionId){
String[] idArray = ids.split(","); String[] idArray = ids.split(",");
for(String id :idArray){ for(String id :idArray){

View File

@@ -12,10 +12,14 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import com.nis.domain.FunctionRegionDict;
import com.nis.domain.Page; import com.nis.domain.Page;
import com.nis.domain.configuration.AreaIpCfg; 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.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg; import com.nis.domain.configuration.ComplexkeywordCfg;
@@ -35,12 +39,16 @@ import com.nis.domain.maat.MaatCfg.StringCfg;
import com.nis.exceptions.MaatConvertException; import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil; import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.FileUtils; import com.nis.util.FileUtils;
import com.nis.util.JsonMapper; import com.nis.util.JsonMapper;
import com.nis.util.StringUtil;
import com.nis.web.dao.configuration.AreaIpCfgDao; import com.nis.web.dao.configuration.AreaIpCfgDao;
import com.nis.web.dao.configuration.IpCfgDao;
import com.nis.web.dao.configuration.MailCfgDao; import com.nis.web.dao.configuration.MailCfgDao;
import com.nis.web.dao.configuration.StringCfgDao; import com.nis.web.dao.configuration.StringCfgDao;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
import com.nis.web.service.BaseService;
import com.nis.web.service.CrudService; import com.nis.web.service.CrudService;
/** /**
@@ -56,6 +64,8 @@ public class MailCfgService extends CrudService<MailCfgDao,CfgIndexInfo> {
protected AreaIpCfgDao areaIpCfgDao; protected AreaIpCfgDao areaIpCfgDao;
@Autowired @Autowired
protected StringCfgDao stringCfgDao; protected StringCfgDao stringCfgDao;
@Autowired
protected IpCfgDao ipCfgDao;
public Page<CfgIndexInfo> getMailList(Page<CfgIndexInfo> page, CfgIndexInfo entity){ public Page<CfgIndexInfo> getMailList(Page<CfgIndexInfo> page, CfgIndexInfo entity){
@@ -402,4 +412,108 @@ public class MailCfgService extends CrudService<MailCfgDao,CfgIndexInfo> {
logger.info("mail配置取消配置响应信息"+result.getMsg()); logger.info("mail配置取消配置响应信息"+result.getMsg());
} }
} }
/**
* 配置导入,目前只支持单sheet
* @param regionDict
* @param cfgIndexInfos
* @param data
* @param send
*/
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveAndSend(FunctionRegionDict regionDict,List<CfgIndexInfo> cfgIndexInfos,List<? extends BaseCfg<?>> data,boolean send) {
if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
this.saveCfgIndexOf(cfgIndexInfos);
}
if(data!=null&&!data.isEmpty()) {
List<MaatCfg> 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())){
if("subscribe_id".equals(regionDict.getConfigServiceType())){
cfg.setTableName("ntc_subscribe_id_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())){
cfg.setTableName("mail_keyword_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());
}
if(regionDict.getDictId().intValue()==10) {//请求头域
String dictValue = DictUtils.getDictCode(Constants.HTTP_HEADER_DICT_MODULE, cfg.getDistrict());
if(StringUtil.isEmpty(dictValue) || dictValue.equals("默认")){
maatCfg.setUserRegion(Constants.HTTP_HEADER_USER_REGION_KEY+"="+cfg.getDistrict());
}
}
if(regionDict.getDictId().intValue()==11) {//应答头域
String dictValue = DictUtils.getDictCode(Constants.HTTP_HEADER_DICT_MODULE, cfg.getDistrict());
if(StringUtil.isEmpty(dictValue) || dictValue.equals("默认")){
maatCfg.setUserRegion(Constants.HTTP_HEADER_USER_REGION_KEY+"="+cfg.getDistrict());
}
}
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("mail配置下发配置条数" + configCompileList.size());
}else {
logger.info("mail配置下发配置参数" + json);
}
// 调用服务接口下发配置
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
logger.info("mail配置下发响应信息" + result.getMsg());
long end=System.currentTimeMillis();
logger.info("mail配置下发配置耗时" + (end-start));
}
}
}
} }

View File

@@ -10,9 +10,13 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; 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.Page;
import com.nis.domain.configuration.AreaIpCfg; 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.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg; import com.nis.domain.configuration.ComplexkeywordCfg;
@@ -39,9 +43,11 @@ import com.nis.util.DictUtils;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.web.dao.basics.ServiceDictInfoDao; import com.nis.web.dao.basics.ServiceDictInfoDao;
import com.nis.web.dao.configuration.AreaIpCfgDao; 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.StringCfgDao;
import com.nis.web.dao.configuration.WebsiteCfgDao; import com.nis.web.dao.configuration.WebsiteCfgDao;
import com.nis.web.security.UserUtils; import com.nis.web.security.UserUtils;
import com.nis.web.service.BaseService;
import com.nis.web.service.CrudService; import com.nis.web.service.CrudService;
/** /**
@@ -58,6 +64,8 @@ public class WebsiteCfgService extends CrudService<WebsiteCfgDao,CfgIndexInfo> {
@Autowired @Autowired
protected StringCfgDao stringCfgDao; protected StringCfgDao stringCfgDao;
@Autowired @Autowired
protected IpCfgDao ipCfgDao;
@Autowired
private ServiceDictInfoDao serviceDictInfoDao; private ServiceDictInfoDao serviceDictInfoDao;
public CfgIndexInfo getCfgIndexInfo(Integer compileId){ public CfgIndexInfo getCfgIndexInfo(Integer compileId){
@@ -1243,4 +1251,123 @@ public class WebsiteCfgService extends CrudService<WebsiteCfgDao,CfgIndexInfo> {
logger.info("dns配置取消配置响应信息"+result.getMsg()); 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<CfgIndexInfo> cfgIndexInfos,List<? extends BaseCfg<?>> data,boolean send) {
if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) {
this.saveCfgIndexOf(cfgIndexInfos);
}
if(data!=null&&!data.isEmpty()) {
List<MaatCfg> 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 if(regionDict.getFunctionId().equals(34)){
cfg.setTableName("ssl_keyword_cfg");
}else if(regionDict.getFunctionId().equals(635)||regionDict.getDictId().equals(12)||regionDict.getDictId().equals(13)){
cfg.setTableName("http_body_cfg");
}else if(regionDict.getDictId().equals(9)){
cfg.setTableName("http_url_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");
}else if(regionDict.getDictId().intValue()==10) {
cfg.setTableName("http_req_head_cfg");
}else if(regionDict.getDictId().intValue()==11) {
cfg.setTableName("http_res_head_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());
}
if(regionDict.getDictId().intValue()==10) {//请求头域
String dictValue = DictUtils.getDictCode(Constants.HTTP_HEADER_DICT_MODULE, cfg.getDistrict());
if(StringUtil.isEmpty(dictValue) || dictValue.equals("默认")){
maatCfg.setUserRegion(Constants.HTTP_HEADER_USER_REGION_KEY+"="+cfg.getDistrict());
}
}
if(regionDict.getDictId().intValue()==11) {//应答头域
String dictValue = DictUtils.getDictCode(Constants.HTTP_HEADER_DICT_MODULE, cfg.getDistrict());
if(StringUtil.isEmpty(dictValue) || dictValue.equals("默认")){
maatCfg.setUserRegion(Constants.HTTP_HEADER_USER_REGION_KEY+"="+cfg.getDistrict());
}
}
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/http配置下发配置条数" + configCompileList.size());
}else {
logger.info("dns/ssl/http配置下发配置参数" + json);
}
// 调用服务接口下发配置
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
logger.info("dns/ssl/http配置下发响应信息" + result.getMsg());
long end=System.currentTimeMillis();
logger.info("dns/ssl/http配置下发配置耗时" + (end-start));
}
}
}
} }

View File

@@ -2,7 +2,7 @@
<%@ include file="/WEB-INF/include/taglib.jsp"%> <%@ include file="/WEB-INF/include/taglib.jsp"%>
<script src="${pageContext.request.contextPath}/static/pages/scripts/importExcel.js" type="text/javascript"></script> <script src="${pageContext.request.contextPath}/static/pages/scripts/importExcel.js" type="text/javascript"></script>
<div class="modal fade" id="import_modal" tabindex="-1" role="dialog" aria-labelledby="mo" aria-hidden="true"> <div class="modal fade" id="import_modal" tabindex="-1" role="dialog" aria-labelledby="mo" aria-hidden="true">
<form id="importForm1" action="${ctx}/ntc/iplist/import?importPath=${importPath}" method="post" enctype="multipart/form-data" class="form-horizontal" <form id="importForm1" action="${ctx}${importUrl}?importPath=${importPath}" method="post" enctype="multipart/form-data" class="form-horizontal"
onsubmit="loading('<spring:message code='loading'/>');"> onsubmit="loading('<spring:message code='loading'/>');">
<input type="hidden" id="importTip" value="<spring:message code='import_tip_excel'/>"> <input type="hidden" id="importTip" value="<spring:message code='import_tip_excel'/>">
<div class="modal-dialog" role="document" style="width:700px;"> <div class="modal-dialog" role="document" style="width:700px;">

View File

@@ -569,6 +569,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/app/policyCfgList?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/app/policyCfgList?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/app/policyCfgImport"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -546,6 +546,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/ntc/av/contUrlList?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/ntc/av/contUrlList?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/ntc/av/contUrlImport"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -536,6 +536,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/ntc/av/voipList?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/ntc/av/voipList?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/ntc/av/voipImport"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -566,6 +566,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/basicprotocol/list?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/basicprotocol/list?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/basicprotocol/import"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -521,6 +521,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/manipulation/ddos/list?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/manipulation/ddos/list?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/manipulation/ddos/import"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -564,6 +564,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/encryptedtunnelbehav/list?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/encryptedtunnelbehav/list?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/encryptedtunnelbehav/import"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -516,6 +516,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/ntc/fileTransfer/ftpList?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/ntc/fileTransfer/ftpList?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/ntc/fileTransfer/ftpImport"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -530,6 +530,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/ntc/fileTransfer/p2pList?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/ntc/fileTransfer/p2pList?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/ntc/fileTransfer/p2pImport"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -663,6 +663,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/proxy/intercept/${fn:toLowerCase(interceptType)}/list?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/proxy/intercept/${fn:toLowerCase(interceptType)}/list?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/proxy/intercept/${fn:toLowerCase(interceptType)}/import"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -538,6 +538,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/ntc/iplist/list?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/ntc/iplist/list?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/ntc/iplist/import"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -531,6 +531,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/ntc/mail/mailList?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/ntc/mail/mailList?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/ntc/mail/mailImport"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -530,6 +530,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/ntc/other/bgpList?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/ntc/other/bgpList?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/ntc/other/bgpImport"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -805,6 +805,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/proxy/control/httpRedirect?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/proxy/control/httpRedirect?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/proxy/control/httpRedirect/import"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -534,6 +534,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/ntc/website/dnsList?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/ntc/website/dnsList?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/ntc/website/dnsImport"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -689,6 +689,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/ntc/website/httpList?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/ntc/website/httpList?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/ntc/website/httpImport"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -527,6 +527,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/ntc/website/sslList?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/ntc/website/sslList?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/ntc/website/sslImport"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -516,6 +516,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/ntc/whitelist/domain/list?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/ntc/whitelist/domain/list?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/ntc/whitelist/domain/import"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>

View File

@@ -2,7 +2,7 @@
<%@ include file="/WEB-INF/include/taglib.jsp"%> <%@ include file="/WEB-INF/include/taglib.jsp"%>
<html> <html>
<head> <head>
<title><spring:message code="${cfgName}"></spring:message></title> <title><spring:message code="${cfg.menuNameCode}"></spring:message></title>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
@@ -521,6 +521,7 @@
</div> </div>
</div> </div>
<c:set var="importPath" value="/ntc/whitelist/ip/list?functionId=${cfg.functionId}"/> <c:set var="importPath" value="/ntc/whitelist/ip/list?functionId=${cfg.functionId}"/>
<c:set var="importUrl" value="/ntc/whitelist/ip/import"/>
<!-- 模板导入start --> <!-- 模板导入start -->
<%@include file="/WEB-INF/include/excel/importModal.jsp" %> <%@include file="/WEB-INF/include/excel/importModal.jsp" %>
</body> </body>