diff --git a/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java b/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java index 0f9630db6..8f390f3a4 100644 --- a/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java +++ b/src/main/java/com/nis/web/controller/configuration/proxy/HttpRedirectPolicyController.java @@ -8,6 +8,7 @@ import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; +import java.util.concurrent.BlockingQueue; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -15,17 +16,22 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.Logical; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.jets3t.service.ServiceException; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionServiceDict; import com.nis.domain.Page; import com.nis.domain.callback.ProxyFileStrategyCfg; +import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.CfgIndexInfo; 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.IpPortCfg; 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.util.ConfigServiceUtil; import com.nis.util.Constants; import com.nis.util.DictUtils; import com.nis.util.StringUtil; +import com.nis.util.excel.ImportBigExcel; import com.nis.web.controller.BaseController; import com.nis.web.security.UserUtils; @@ -499,4 +522,367 @@ public class HttpRedirectPolicyController extends BaseController { * +"/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 ipPortCfgs =null; + BlockingQueue> stringCfgs =null; + BlockingQueue complexkeywordCfgs =null; + List cfgIndexInfos = new ArrayList(); + Properties properties=this.getMsgProp(); + for (int i = 0; i < files.length; i++) { + MultipartFile file = files[i]; + ei = new ImportBigExcel(file, 0, 1); + FunctionRegionDict regionDict = DictUtils + .getFunctionRegionDict(Integer.parseInt(regionDictIds.split(",")[i])); + //------------------------------------check format start---------------------------- + if (regionDict.getRegionType().equals(1)) {// IP + if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断 + //加载模板 + ei.loadInitParams(HttpsRejectIpTemplate.class, properties, regionDict, serviceDict); + BlockingQueue 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 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 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 list = ei.getDataList(IpAllNotDoLogTemplate.class ); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list); + }else { + //加载模板 + ei.loadInitParams(IpAllTemplate.class, properties, regionDict, serviceDict); + BlockingQueue list = ei.getDataList(IpAllTemplate.class ); + ipPortCfgs=this.checkIpCfgMulity(errTip,serviceDict, regionDict, null,null, list); + } + }else if (regionDict.getRegionType().equals(2)) { + if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断 + //加载模板 + ei.loadInitParams(HttpsRejectTemplate.class, properties, regionDict, serviceDict); + BlockingQueue 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 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 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 list = ei.getDataList(StringAllNotDoLogTemplate.class); + stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list); + }else { + //加载模板 + ei.loadInitParams(StringAllTemplate.class, properties, regionDict, serviceDict); + BlockingQueue list = ei.getDataList(StringAllTemplate.class); + stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list); + } + }else if (regionDict.getRegionType().equals(3)) { + if(regionDict.getFunctionId().equals(207)){// HTTP(s)阻断 + //加载模板 + ei.loadInitParams(HttpsRejectComplexTemplate.class, properties, regionDict, serviceDict); + BlockingQueue 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 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 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 list = ei.getDataList(ComplexStringAllNotDoLogTemplate.class); + complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list); + }else { + //加载模板 + ei.loadInitParams(ComplexStringAllTemplate.class, properties, regionDict, serviceDict); + BlockingQueue list = ei.getDataList(ComplexStringAllTemplate.class); + complexkeywordCfgs = this.checkComplexStringCfgMulity(errTip,serviceDict, regionDict, list); + } + } + //删除文件 + if(ei.getUploadFile()!=null&&ei.getUploadFile().exists()) { + ei.getUploadFile().delete(); + } + //------------------------------------check format end---------------------------- + Date date = new Date(); + String isSend = request.getParameter("isSend")==null?"":request.getParameter("isSend"); + if (regionDict.getRegionType().equals(1)) {// IP + List _ipPortCfgs=com.beust.jcommander.internal.Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE); + while(!ipPortCfgs.isEmpty()) { + ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE); + List compileIds=Lists.newArrayList(); + List regionIds=Lists.newArrayList(); + List groupIds=Lists.newArrayList(); + List numRegionGroupIds=Lists.newArrayList(); + List numRegionRegionIds=Lists.newArrayList(); + if(!regionDict.getFunctionId().equals(405)) {//app ip compileId 从config_group_info中取 + try { + compileIds = ConfigServiceUtil.getId(1,_ipPortCfgs.size()); + if(isSend.equals("1")) { + groupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size()); + regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size()); + //需要获取数值域的id + if(serviceDict!=null&&serviceDict.getProtocolId()!=null&&serviceDict.getProtocolId()>0) { + numRegionGroupIds = ConfigServiceUtil.getId(2,_ipPortCfgs.size()); + numRegionRegionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size()); + } + } + } catch (Exception e) { + e.printStackTrace(); + logger.info("获取编译ID出错"); + throw new MaatConvertException(":"+e.getMessage()); + } + }else { + try { + regionIds = ConfigServiceUtil.getId(3,_ipPortCfgs.size()); + } catch (Exception e) { + e.printStackTrace(); + logger.info("获取域ID出错"); + throw new MaatConvertException(":"+e.getMessage()); + } + } + int ind=0; + for (BaseIpCfg cfg : _ipPortCfgs) { + cfg.setAction(serviceDict==null?null:serviceDict.getAction()); + /*cfg.setAuditorId(UserUtils.getUser().getId()); + cfg.setAuditTime(date);*/ + cfg.setCfgRegionCode(regionDict.getConfigRegionCode()); + cfg.setCfgType(regionDict.getConfigRegionValue()); + cfg.setCreateTime(date); + cfg.setCreatorId(UserUtils.getUser().getId()); + //cfg.setDoLog(2); + cfg.setFunctionId(regionDict.getFunctionId()); + if(isSend.equals("1")) { + cfg.setIsAudit(Constants.AUDIT_YES); + cfg.setIsValid(Constants.VALID_YES); + cfg.setAuditorId(UserUtils.getUser().getId()); + cfg.setAuditTime(date); + if(groupIds!=null&&groupIds.size()==_ipPortCfgs.size()) { + cfg.setGroupId(groupIds.get(ind)); + } + if(regionIds!=null&®ionIds.size()==_ipPortCfgs.size()) { + cfg.setRegionId(regionIds.get(ind)); + } + if(serviceDict!=null&&serviceDict.getProtocolId()!=null) { + if(numRegionGroupIds!=null&&numRegionGroupIds.size()==_ipPortCfgs.size()) { + cfg.setNumberRegionGroupId(numRegionGroupIds.get(ind)); + } + if(numRegionRegionIds!=null&&numRegionRegionIds.size()==_ipPortCfgs.size()) { + cfg.setNumberRegionRegionId(numRegionRegionIds.get(ind)); + } + } + }else { + cfg.setIsAudit(Constants.AUDIT_NOT_YET); + cfg.setIsValid(Constants.VALID_NO); + } + cfg.setIsAreaEffective(0); + cfg.setLable("0"); + cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId); + cfg.setAttribute(attribute); + cfg.setClassify(classify); + cfg.setServiceId(serviceDict==null?null:serviceDict.getServiceId()); + cfg.setTableName("ip_port_cfg"); + if(compileIds.size()==_ipPortCfgs.size()) { + cfg.setCompileId(compileIds.get(ind)); + } + CfgIndexInfo cfgIndexInfo = new CfgIndexInfo(); + BeanUtils.copyProperties(cfg, cfgIndexInfo,new String[] {"cfgId"}); + if(cfg.getDnsStrategyId()!=null) { + cfgIndexInfo.setDnsStrategyId(Long.parseLong(cfg.getDnsStrategyId().toString())); + } + cfgIndexInfos.add(cfgIndexInfo); + ind++; + } + + httpRedirectCfgService.saveAndSend(regionDict, cfgIndexInfos, _ipPortCfgs, isSend.equals("1")); + cfgIndexInfos.clear(); + _ipPortCfgs.clear(); + } + }else if (regionDict.getRegionType().equals(2)) {//账号 + List> _stringCfgs=com.beust.jcommander.internal.Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE); + while(!stringCfgs.isEmpty()) { + stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE); + List compileIds=Lists.newArrayList(); + List groupIds=Lists.newArrayList(); + List regionIds=Lists.newArrayList(); + try { + compileIds = ConfigServiceUtil.getId(1,_stringCfgs.size()); + if(isSend.equals("1")) { + groupIds = ConfigServiceUtil.getId(2,_stringCfgs.size()); + regionIds = ConfigServiceUtil.getId(3,_stringCfgs.size()); + } + } catch (Exception e) { + e.printStackTrace(); + logger.info("获取编译ID出错"); + throw new MaatConvertException(":"+e.getMessage()); + } + int ind=0; + for (BaseStringCfg cfg : _stringCfgs) { + cfg.setAction(serviceDict.getAction()); + cfg.setCfgRegionCode(regionDict.getConfigRegionCode()); + cfg.setCfgType(regionDict.getConfigRegionValue()); + cfg.setCreateTime(date); + cfg.setCreatorId(UserUtils.getUser().getId()); + //cfg.setDoLog(2); + cfg.setFunctionId(regionDict.getFunctionId()); + if(isSend.equals("1")) { + cfg.setIsAudit(Constants.AUDIT_YES); + cfg.setIsValid(Constants.VALID_YES); + cfg.setAuditorId(UserUtils.getUser().getId()); + cfg.setAuditTime(date); + if(groupIds!=null&&groupIds.size()==_stringCfgs.size()) { + cfg.setGroupId(groupIds.get(ind)); + } + if(regionIds!=null&®ionIds.size()==_stringCfgs.size()) { + cfg.setRegionId(regionIds.get(ind)); + } + }else { + cfg.setIsAudit(Constants.AUDIT_NOT_YET); + cfg.setIsValid(Constants.VALID_NO); + } + cfg.setIsAreaEffective(0); + cfg.setLable("0"); + cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId); + cfg.setAttribute(attribute); + cfg.setClassify(classify); + cfg.setServiceId(serviceDict.getServiceId()); + if(compileIds!=null&&compileIds.size()==_stringCfgs.size()) { + cfg.setCompileId(compileIds.get(ind)); + } + 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 _complexkeywordCfgs=com.beust.jcommander.internal.Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE); + while(!complexkeywordCfgs.isEmpty()) { + complexkeywordCfgs.drainTo(_complexkeywordCfgs, Constants.MAAT_JSON_SEND_SIZE); + List compileIds=Lists.newArrayList(); + List groupIds=Lists.newArrayList(); + List regionIds=Lists.newArrayList(); + try { + compileIds = ConfigServiceUtil.getId(1,_complexkeywordCfgs.size()); + if(isSend.equals("1")) { + groupIds = ConfigServiceUtil.getId(2,_complexkeywordCfgs.size()); + regionIds = ConfigServiceUtil.getId(3,_complexkeywordCfgs.size()); + } + } catch (Exception e) { + e.printStackTrace(); + logger.info("获取编译ID出错"); + throw new MaatConvertException(":"+e.getMessage()); + } + int ind=0; + for (ComplexkeywordCfg cfg : _complexkeywordCfgs) { + cfg.setAction(serviceDict.getAction()); + /*cfg.setAuditorId(UserUtils.getUser().getId()); + cfg.setAuditTime(date);*/ + cfg.setCfgRegionCode(regionDict.getConfigRegionCode()); + cfg.setCfgType(regionDict.getConfigRegionValue()); + cfg.setCreateTime(date); + cfg.setCreatorId(UserUtils.getUser().getId()); + //cfg.setDoLog(2); + cfg.setFunctionId(regionDict.getFunctionId()); + if(isSend.equals("1")) { + cfg.setIsAudit(Constants.AUDIT_YES); + cfg.setIsValid(Constants.VALID_YES); + cfg.setAuditorId(UserUtils.getUser().getId()); + cfg.setAuditTime(date); + if(groupIds!=null&&groupIds.size()==_complexkeywordCfgs.size()) { + cfg.setGroupId(groupIds.get(ind)); + } + if(regionIds!=null&®ionIds.size()==_complexkeywordCfgs.size()) { + cfg.setRegionId(regionIds.get(ind)); + } + }else { + cfg.setIsAudit(Constants.AUDIT_NOT_YET); + cfg.setIsValid(Constants.VALID_NO); + } + //cfg.setIsAudit(0); + //cfg.setIsValid(0); + cfg.setIsAreaEffective(0); + cfg.setLable("0"); + cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId); + cfg.setAttribute(attribute); + cfg.setClassify(classify); + cfg.setServiceId(serviceDict.getServiceId()); + if(compileIds!=null&&compileIds.size()==_complexkeywordCfgs.size()) { + cfg.setCompileId(compileIds.get(ind)); + } + CfgIndexInfo cfgIndexInfo = new CfgIndexInfo(); + BeanUtils.copyProperties(cfg, cfgIndexInfo,new String[] {"cfgId"}); + if(cfg.getDnsStrategyId()!=null) { + cfgIndexInfo.setDnsStrategyId(Long.parseLong(cfg.getDnsStrategyId().toString())); + } + cfgIndexInfos.add(cfgIndexInfo); + ind++; + } + 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; + } } diff --git a/src/main/java/com/nis/web/service/configuration/HttpRedirectCfgService.java b/src/main/java/com/nis/web/service/configuration/HttpRedirectCfgService.java index f6d9d6971..86291469d 100644 --- a/src/main/java/com/nis/web/service/configuration/HttpRedirectCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/HttpRedirectCfgService.java @@ -5,16 +5,21 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Properties; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.nis.domain.FunctionRegionDict; import com.nis.domain.Page; import com.nis.domain.configuration.AreaIpCfg; +import com.nis.domain.configuration.BaseCfg; +import com.nis.domain.configuration.BaseIpCfg; +import com.nis.domain.configuration.BaseStringCfg; import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.domain.configuration.ComplexkeywordCfg; import com.nis.domain.configuration.HttpBodyCfg; import com.nis.domain.configuration.HttpReqHeadCfg; import com.nis.domain.configuration.HttpResHeadCfg; @@ -34,6 +39,7 @@ import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; import com.nis.util.StringUtil; import com.nis.web.dao.configuration.AreaIpCfgDao; +import com.nis.web.dao.configuration.IpCfgDao; import com.nis.web.dao.configuration.StringCfgDao; import com.nis.web.dao.configuration.WebsiteCfgDao; import com.nis.web.security.UserUtils; @@ -53,6 +59,8 @@ public class HttpRedirectCfgService extends CrudService getCfgIndexInfos(CfgIndexInfo entity){ return websiteCfgDao.getCfgIndexInfos(entity); @@ -541,5 +549,146 @@ public class HttpRedirectCfgService extends CrudService cfgIndexInfos,List> data,boolean send) { + if (cfgIndexInfos != null && cfgIndexInfos.size() > 0) { + this.saveCfgIndexOf(cfgIndexInfos); + } + if(data!=null&&!data.isEmpty()) { + List configCompileList = new ArrayList(); + if(data.get(0) instanceof BaseIpCfg) { + for (int index = 0; index < data.size(); index++) { + BaseIpCfg cfg =(BaseIpCfg)data.get(index); + ipCfgDao.insertForBatch(cfg); + if (send) { + if(regionDict.getIsMaat().intValue()==1) { + MaatCfg maatCfg=convertMaatCfg(cfg,1); + //userregion处理 + if(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)); + + } + } + + } } diff --git a/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectList.jsp b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectList.jsp index f875bfd3c..ff6956c7c 100644 --- a/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectList.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/proxy/control/httpRedirectList.jsp @@ -805,6 +805,7 @@ + <%@include file="/WEB-INF/include/excel/importModal.jsp" %>