diff --git a/src/main/java/com/nis/domain/basics/IpCommCfg.java b/src/main/java/com/nis/domain/basics/IpCommCfg.java new file mode 100644 index 000000000..c4079e5fa --- /dev/null +++ b/src/main/java/com/nis/domain/basics/IpCommCfg.java @@ -0,0 +1,315 @@ +package com.nis.domain.basics; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import com.nis.domain.configuration.BaseCfg; +import com.nis.util.excel.ExcelField; + +public class IpCommCfg extends BaseCfg { + + + /** + * + */ + private static final long serialVersionUID = 4218856118489784060L; + + /** + * 创建一个新的实例 BaseIpCfg. + * + */ + public IpCommCfg() { + super(); + // TODO Auto-generated constructor stub + } + private String indexTable="ip_comm_cfg"; + /** + * ip类型 + */ + @Expose + @SerializedName("ipType") + @ExcelField(title="ip_type",dictType="IP_TYPE",sort=50) + protected Integer ipType; + @ExcelField(title="src_ip_pattern",dictType="IP_PATTERN",sort=51) + protected Integer srcIpPattern; + @ExcelField(title="client_ip",sort=52) + protected String srcIpAddress; + @ExcelField(title="dest_ip_pattern",dictType="IP_PATTERN",sort=53) + protected Integer destIpPattern; + @ExcelField(title="server_ip",sort=54) + protected String destIpAddress; + @ExcelField(title="src_port_pattern",dictType="PORT_PATTERN",sort=54) + protected Integer srcPortPattern; + @ExcelField(title="dest_port_pattern",dictType="PORT_PATTERN",sort=54) + protected Integer destPortPattern; + @ExcelField(title="client_port",sort=55) + protected String srcPort; + @ExcelField(title="server_port",sort=56) + protected String destPort; + protected Integer dnsStrategyId; + @ExcelField(title="ir_type",dictType="IR_TYPE",sort=57) + protected Integer irType; + @ExcelField(title="group_name",sort=58) + protected String groupName; +// @ExcelField(title="log_total",sort=42) + private Long totalLogs; + private Integer regionId; + private Integer groupId; + + public Integer getRegionId() { + return regionId; + } + public void setRegionId(Integer regionId) { + this.regionId = regionId; + } + public Integer getGroupId() { + return groupId; + } + public void setGroupId(Integer groupId) { + this.groupId = groupId; + } + public Long getTotalLogs() { + return totalLogs; + } + public void setTotalLogs(Long totalLogs) { + this.totalLogs = totalLogs; + } + /** + * irType + * @return irType + */ + + public Integer getIrType() { + return irType; + } + /** + * @param irType the irType to set + */ + public void setIrType(Integer irType) { + this.irType = irType; + } + /** + * groupName + * @return groupName + */ + + public String getGroupName() { + return groupName; + } + /** + * @param groupName the groupName to set + */ + public void setGroupName(String groupName) { + this.groupName = groupName; + } + /** + * 方向 + */ + @Expose + @SerializedName("direction") + @ExcelField(title="direction",dictType="DIRECTION",sort=58) + protected Integer direction ; + /** + * 协议 + */ + @Expose + @SerializedName("protocol") + @ExcelField(title="protocol",dictType="PROTOCOL",sort=59) + protected Integer protocol ; + /** + * 协议ID + */ + @Expose + @SerializedName("protocolId") + protected Integer protocolId ; + /** + * 限速比例 + */ + protected String ratelimit ; + + /** + * ratelimit + * @return ratelimit + */ + + public String getRatelimit() { + return ratelimit; + } + /** + * @param ratelimit the ratelimit to set + */ + public void setRatelimit(String ratelimit) { + this.ratelimit = ratelimit; + } + /** + * ipType + * @return ipType + */ + + public Integer getIpType() { + return ipType; + } + /** + * @param ipType the ipType to set + */ + public void setIpType(Integer ipType) { + this.ipType = ipType; + } + + /** + * direction + * @return direction + */ + + public Integer getDirection() { + return direction; + } + /** + * @param direction the direction to set + */ + public void setDirection(Integer direction) { + this.direction = direction; + } + /** + * protocol + * @return protocol + */ + + public Integer getProtocol() { + return protocol; + } + /** + * @param protocol the protocol to set + */ + public void setProtocol(Integer protocol) { + this.protocol = protocol; + } + /** + * protocolId + * @return protocolId + */ + + public Integer getProtocolId() { + return protocolId; + } + /** + * @param protocolId the protocolId to set + */ + public void setProtocolId(Integer protocolId) { + this.protocolId = protocolId; + } + + + public Integer getSrcIpPattern() { + return srcIpPattern; + } + public void setSrcIpPattern(Integer srcIpPattern) { + this.srcIpPattern = srcIpPattern; + } + public Integer getDestIpPattern() { + return destIpPattern; + } + public void setDestIpPattern(Integer destIpPattern) { + this.destIpPattern = destIpPattern; + } + public Integer getSrcPortPattern() { + return srcPortPattern; + } + public void setSrcPortPattern(Integer srcPortPattern) { + this.srcPortPattern = srcPortPattern; + } + public Integer getDestPortPattern() { + return destPortPattern; + } + public void setDestPortPattern(Integer destPortPattern) { + this.destPortPattern = destPortPattern; + } + /** + * srcIpAddress + * @return srcIpAddress + */ + + public String getSrcIpAddress() { + return srcIpAddress; + } + /** + * @param srcIpAddress the srcIpAddress to set + */ + public void setSrcIpAddress(String srcIpAddress) { + this.srcIpAddress = srcIpAddress; + } + /** + * destIpAddress + * @return destIpAddress + */ + + public String getDestIpAddress() { + return destIpAddress; + } + /** + * @param destIpAddress the destIpAddress to set + */ + public void setDestIpAddress(String destIpAddress) { + this.destIpAddress = destIpAddress; + } + /** + * srcPort + * @return srcPort + */ + + public String getSrcPort() { + return srcPort; + } + /** + * @param srcPort the srcPort to set + */ + public void setSrcPort(String srcPort) { + this.srcPort = srcPort; + } + /** + * destPort + * @return destPort + */ + + public String getDestPort() { + return destPort; + } + /** + * @param destPort the destPort to set + */ + public void setDestPort(String destPort) { + this.destPort = destPort; + } + + /** + * dnsStrategyId + * @return dnsStrategyId + */ + + public Integer getDnsStrategyId() { + return dnsStrategyId; + } + /** + * @param dnsStrategyId the dnsStrategyId to set + */ + public void setDnsStrategyId(Integer dnsStrategyId) { + this.dnsStrategyId = dnsStrategyId; + } + @Override + public void initDefaultValue(){ + super.initDefaultValue(); + this.direction = 0; + } + + public String getIndexTable() { + return indexTable; + } + public void setIndexTable(String indexTable) { + this.indexTable = indexTable; + } + public Integer getIndex() { + return index; + } + public void setIndex(Integer index) { + this.index = index; + } +} diff --git a/src/main/java/com/nis/domain/basics/UrlCommCfg.java b/src/main/java/com/nis/domain/basics/UrlCommCfg.java new file mode 100644 index 000000000..128e18c30 --- /dev/null +++ b/src/main/java/com/nis/domain/basics/UrlCommCfg.java @@ -0,0 +1,64 @@ +package com.nis.domain.basics; + +import com.nis.domain.configuration.BaseStringCfg; +import com.nis.util.excel.ExcelField; + +public class UrlCommCfg extends BaseStringCfg{ + + private static final long serialVersionUID = 398247881810945300L; + private static final String tableName="http_url_cfg"; + + @ExcelField(title="key_word",sort=3) + protected String cfgKeywords;//url关键字配置 + +// protected Integer exprType;//表达式类型 +// protected Integer matchMethod;//匹配类型 + protected Integer isHexbin;//是否大小写敏感 + protected String ratelimit;//限速比例,0到1之间 + @ExcelField(title="group_name",sort=108) + protected String groupName;//公共组名称 + + + + public String getCfgKeywords() { + return cfgKeywords; + } + public void setCfgKeywords(String cfgKeywords) { + this.cfgKeywords = cfgKeywords; + } +// public Integer getExprType() { +// return exprType; +// } +// public void setExprType(Integer exprType) { +// this.exprType = exprType; +// } +// public Integer getMatchMethod() { +// return matchMethod; +// } +// public void setMatchMethod(Integer matchMethod) { +// this.matchMethod = matchMethod; +// } + public Integer getIsHexbin() { + return isHexbin; + } + public void setIsHexbin(Integer isHexbin) { + this.isHexbin = isHexbin; + } + public String getRatelimit() { + return ratelimit; + } + public void setRatelimit(String ratelimit) { + this.ratelimit = ratelimit; + } + public static String getTablename() { + return tableName; + } + + public String getGroupName() { + return groupName; + } + public void setGroupName(String groupName) { + this.groupName = groupName; + } + +} diff --git a/src/main/java/com/nis/domain/configuration/BaseCfg.java b/src/main/java/com/nis/domain/configuration/BaseCfg.java index 6ccfbba1d..37143bb92 100644 --- a/src/main/java/com/nis/domain/configuration/BaseCfg.java +++ b/src/main/java/com/nis/domain/configuration/BaseCfg.java @@ -72,8 +72,15 @@ public class BaseCfg extends BaseEntity implements Cloneable{ * 定时任务信息,2019年1月18日18:54:53 修改 */ protected ScheduleCfg schedule; - private String commonGroupIds; //公共组织id(考虑一个compile存在多个asn组织的情况) + protected Integer groupType; //url组以及dns组相关功能使用 + protected Integer udFlag; //url组以及dns组相关功能使用 过滤数据库数据标记 + public Integer getGroupType() { + return groupType; + } + public void setGroupType(Integer groupType) { + this.groupType = groupType; + } public String getCommonGroupIds() { return commonGroupIds; } @@ -81,8 +88,12 @@ public class BaseCfg extends BaseEntity implements Cloneable{ public void setCommonGroupIds(String commonGroupIds) { this.commonGroupIds = commonGroupIds; } - - + public Integer getUdFlag() { + return udFlag; + } + public void setUdFlag(Integer udFlag) { + this.udFlag = udFlag; + } public String getExType() { return exType; diff --git a/src/main/java/com/nis/domain/configuration/BaseIpCfg.java b/src/main/java/com/nis/domain/configuration/BaseIpCfg.java index 43f0de7c6..c00f08847 100644 --- a/src/main/java/com/nis/domain/configuration/BaseIpCfg.java +++ b/src/main/java/com/nis/domain/configuration/BaseIpCfg.java @@ -79,9 +79,16 @@ public class BaseIpCfg extends BaseCfg { protected String organization; //仅用于copy属性使用 protected String country; //仅用于copy属性使用 protected String detail; //仅用于copy属性使用 + protected Integer groupId; //仅用于copy属性使用 // @ExcelField(title="log_total",sort=42) private Long totalLogs; + public Integer getGroupId() { + return groupId; + } + public void setGroupId(Integer groupId) { + this.groupId = groupId; + } public String getOrganization() { return organization; } diff --git a/src/main/java/com/nis/domain/configuration/CfgIndexInfo.java b/src/main/java/com/nis/domain/configuration/CfgIndexInfo.java index 78f45ea8d..7e5744d58 100644 --- a/src/main/java/com/nis/domain/configuration/CfgIndexInfo.java +++ b/src/main/java/com/nis/domain/configuration/CfgIndexInfo.java @@ -14,7 +14,9 @@ import java.util.Map; import com.google.gson.annotations.Expose; import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.basics.AsnIpCfg; +import com.nis.domain.basics.IpCommCfg; import com.nis.domain.basics.IpReuseIpCfg; +import com.nis.domain.basics.UrlCommCfg; import com.nis.util.Constants; import com.nis.util.excel.ExcelField; @@ -77,7 +79,6 @@ public class CfgIndexInfo extends BaseCfg { private P2pKeywordCfg p2pKeyword; private List p2pHashList; private List p2pKeywordList; - private Integer sourceCompileId; private String searchKeywords;// 列表关键字查询字段 @@ -88,8 +89,8 @@ public class CfgIndexInfo extends BaseCfg { private List asnKeywords; @ExcelField(title="log_total",sort=42) private Long totalLogs; - - + private List urlCommGroupList; + private List ipCommGroupCfgList; /*private CachePolicyUserRegion cachePolicyUserRegion;//缓存策略用户自定义域参数 public static class CachePolicyUserRegion{ @@ -98,9 +99,16 @@ public class CfgIndexInfo extends BaseCfg { } }*/ + public String getOrganization() { return organization; } + public List getIpCommGroupCfgList() { + return ipCommGroupCfgList; + } + public void setIpCommGroupCfgList(List ipCommGroupCfgList) { + this.ipCommGroupCfgList = ipCommGroupCfgList; + } public List getAsnKeywords() { return asnKeywords; } @@ -411,4 +419,11 @@ public class CfgIndexInfo extends BaseCfg { public void setTotalLogs(Long totalLogs) { this.totalLogs = totalLogs; } + public List getUrlCommGroupList() { + return urlCommGroupList; + } + public void setUrlCommGroupList(List urlCommGroupList) { + this.urlCommGroupList = urlCommGroupList; + } + } diff --git a/src/main/java/com/nis/domain/configuration/template/IpCommCfgTemplate.java b/src/main/java/com/nis/domain/configuration/template/IpCommCfgTemplate.java new file mode 100644 index 000000000..3bdd57f87 --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/template/IpCommCfgTemplate.java @@ -0,0 +1,53 @@ +package com.nis.domain.configuration.template; + +import com.nis.util.excel.ExcelField; + +public class IpCommCfgTemplate extends IpAllTemplate{ + @ExcelField(title="ip_group",align=2,sort=10) + private Integer groupId; + + public Integer getGroupId() { + return groupId; + } + + public void setGroupId(Integer groupId) { + this.groupId = groupId; + } + + @Override + public String getSrcIpAddress() { + // TODO Auto-generated method stub + return super.getSrcIpAddress(); + } + + @Override + public String getSrcPort() { + // TODO Auto-generated method stub + return super.getSrcPort(); + } + + @Override + public String getDestPort() { + // TODO Auto-generated method stub + return super.getDestPort(); + } + + @Override + public Integer getProtocol() { + // TODO Auto-generated method stub + return super.getProtocol(); + } + + @Override + public Integer getDirection() { + // TODO Auto-generated method stub + return super.getDirection(); + } + + @Override + public Integer getDoLog() { + // TODO Auto-generated method stub + return super.getDoLog(); + } + +} diff --git a/src/main/java/com/nis/util/Constants.java b/src/main/java/com/nis/util/Constants.java index 7a713b7cf..be9d37be1 100644 --- a/src/main/java/com/nis/util/Constants.java +++ b/src/main/java/com/nis/util/Constants.java @@ -185,6 +185,10 @@ public final class Constants { * DNS 策略组KEY */ public static final String CACHE_DNSGROUP_DICT = "dnsGroupDict"; + /** + * IP 公共策略组KEY + */ + public static final String CACHE_IP_COMM_GROUP_DICT = "ipCommGroupDict"; /** * 词典数据分类 */ diff --git a/src/main/java/com/nis/util/DictUtils.java b/src/main/java/com/nis/util/DictUtils.java index cbf42237d..491d90b49 100644 --- a/src/main/java/com/nis/util/DictUtils.java +++ b/src/main/java/com/nis/util/DictUtils.java @@ -401,4 +401,24 @@ public class DictUtils { } return null; } + public static List getIpCommGroups(){ + List allDictList = (List)CacheUtils.get(Constants.CACHE_IP_COMM_GROUP_DICT); + if(StringUtil.isEmpty(allDictList)){ + allDictList = policyGroupInfoDao.findPolicyGroupInfosByType(5); + CacheUtils.put(Constants.CACHE_IP_COMM_GROUP_DICT, allDictList); + } + return allDictList; + } + public static PolicyGroupInfo getIpCommGroup(int groupId){ + List allDictList = getIpCommGroups(); + if(StringUtil.isEmpty(allDictList)){ + }else { + for(PolicyGroupInfo group:allDictList) { + if(group.getServiceGroupId().intValue()==groupId) { + return group; + } + } + } + return null; + } } diff --git a/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java b/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java index 954bf972a..db8d1c503 100644 --- a/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java @@ -577,7 +577,26 @@ public class CheckIpFormatThread implements Callable{ } } } - + if (regionDict.getFunctionId().equals(110)) { + if(baseIpCfg.getGroupId()==null) { + errInfo.append( + String.format(prop.getProperty("can_not_null"),prop.getProperty("ip_group","IP Group") + " ") + ";"); + }else { + try { + Integer groupId=baseIpCfg.getGroupId(); + PolicyGroupInfo group = DictUtils.getIpCommGroup(groupId); + if (group == null ) { + errInfo.append( + String.format(prop.getProperty("is_incorrect"), prop.getProperty("ip_group","IP Group")) + + ";"); + } + }catch (Exception e) { + // TODO: handle exception + errInfo.append( + String.format(prop.getProperty("is_in_wrong_format"),prop.getProperty("ip_group","IP Group") + " ") + ";"); + } + } + } if (regionDict.getRegionType().equals(1)) { boolean srcIpEmpty = false; boolean destIpEmpty = false; diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index 061220f90..a2de054a7 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -46,6 +46,7 @@ import com.nis.domain.Page; import com.nis.domain.SysDataDictionaryItem; import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.basics.AsnIpCfg; +import com.nis.domain.basics.PolicyGroupInfo; import com.nis.domain.basics.ServiceDictInfo; import com.nis.domain.basics.SysDictInfo; import com.nis.domain.configuration.AppComplexFeatureCfg; @@ -98,6 +99,7 @@ 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.IpCommCfgTemplate; import com.nis.domain.configuration.template.IpPayloadTemplate; import com.nis.domain.configuration.template.IpRateLimitTemplate; import com.nis.domain.configuration.template.IpSpoofingTemplate; @@ -640,6 +642,10 @@ public class BaseController { } } } + if(cfg.getGroupType()!=null) { + List policyGroupInfos = policyGroupInfoService.findPolicyGroupInfosByTypeforUD(cfg.getGroupType(), cfg.getUdFlag()); + model.addAttribute("policyGroupInfos", policyGroupInfos); + } } protected void initUpdateFormCondition(Model model, BaseCfg cfg) { @@ -704,6 +710,10 @@ public class BaseController { model.addAttribute("regionList", regionList); List serviceList = DictUtils.getFunctionServiceDictList(cfg.getFunctionId()); model.addAttribute("serviceList", serviceList); + if(cfg.getGroupType()!=null) { + List policyGroupInfos = policyGroupInfoService.findPolicyGroupInfosByTypeforUD(cfg.getGroupType(), cfg.getUdFlag()); + model.addAttribute("policyGroupInfos", policyGroupInfos); + } } public List getAreaIsps(String areaEffectiveIds, List areaIspList, List isps, @@ -2427,7 +2437,9 @@ public class BaseController { ei.loadInitParams(IpAllNotDoLogTemplate.class, msgProp, regionDict, serviceDict); } else if((regionDict.getFunctionId().equals(63) || regionDict.getFunctionId().equals(407) || regionDict.getFunctionId().equals(408)) && serviceDict.getAction().equals(64)){ // Policies -> Stream ei.loadInitParams(IpRateLimitTemplate.class, msgProp, regionDict, serviceDict); - }else { + }else if(regionDict.getFunctionId().equals(110)) { // IP白名单 + ei.loadInitParams(IpCommCfgTemplate.class, msgProp, regionDict, serviceDict); + } else { ei.loadInitParams(IpAllTemplate.class, msgProp, regionDict, serviceDict); } } else if (regionDict.getRegionType().equals(2)) {// 字符串类 diff --git a/src/main/java/com/nis/web/controller/basics/IpCommGroupController.java b/src/main/java/com/nis/web/controller/basics/IpCommGroupController.java new file mode 100644 index 000000000..725c09864 --- /dev/null +++ b/src/main/java/com/nis/web/controller/basics/IpCommGroupController.java @@ -0,0 +1,528 @@ +package com.nis.web.controller.basics; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.BlockingQueue; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.jets3t.service.ServiceException; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import com.beust.jcommander.internal.Lists; +import com.nis.domain.FunctionRegionDict; +import com.nis.domain.FunctionServiceDict; +import com.nis.domain.Page; +import com.nis.domain.basics.AsnGroupInfo; +import com.nis.domain.basics.IpCommCfg; +import com.nis.domain.basics.PolicyGroupInfo; +import com.nis.domain.configuration.BaseCfg; +import com.nis.domain.configuration.BaseIpCfg; +import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.domain.configuration.IpPortCfg; +import com.nis.domain.configuration.template.IpCommCfgTemplate; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.ConfigServiceUtil; +import com.nis.util.Constants; +import com.nis.util.DictUtils; +import com.nis.util.Reflections; +import com.nis.util.ServiceConfigTemplateUtil; +import com.nis.util.StringUtil; +import com.nis.util.excel.ImportBigExcel; +import com.nis.web.controller.BaseController; +import com.nis.web.security.UserUtils; +import com.nis.web.service.basics.IpCommGroupCfgService; + +@Controller +@RequestMapping(value = "${adminPath}/basics/ip") +public class IpCommGroupController extends BaseController { + + @Autowired + private IpCommGroupCfgService ipCommGroupCfgService; + + @RequestMapping(value = { "/list" }) + public String list(Model model, HttpServletRequest request, HttpServletResponse response, + @ModelAttribute("cfg") IpCommCfg entity) { + Page page = ipCommGroupCfgService.findPage(new Page(request, response, "r"), + entity); + model.addAttribute("page", page); + // initPageCondition(model); + List regionList = DictUtils.getFunctionRegionDictList(entity.getFunctionId()); + model.addAttribute("regionList", regionList); + List serviceList = DictUtils.getFunctionServiceDictList(entity.getFunctionId()); + model.addAttribute("serviceList", serviceList); + List policyGroupInfos=policyGroupInfoService.findPolicyGroupInfosByType(5); + model.addAttribute("policyGroupInfos", policyGroupInfos); + return "/basics/ipCommonGroupCfgList"; + } + + @RequestMapping(value = { "/addForm" }) + public String addForm(Model model, HttpServletRequest request, HttpServletResponse response, + @ModelAttribute("cfg") CfgIndexInfo cfg, RedirectAttributes redirectAttributes) { + + cfg.setGroupType(5); + initFormCondition(model, cfg); + model.addAttribute("_cfg", cfg); + return "/basics/ipCommGroupFormAdd"; + } + + @RequestMapping(value = { "/save" }) + @RequiresPermissions(value = { "ip:common:config" }) + public String save(Model model, HttpServletRequest request, HttpServletResponse response, + @ModelAttribute("cfg") CfgIndexInfo cfg, RedirectAttributes redirectAttributes) { + + // System.out.println("URL分组"); + try { + ipCommGroupCfgService.saveIpCommGroupCfg(cfg); + } catch (Exception e) { + logger.error("信息保存失败", e); + if (e instanceof MaatConvertException) { + addMessage(redirectAttributes, "error", e.getMessage()); + } else { + addMessage(redirectAttributes, "error", "save_failed"); + } + } + + return "redirect:" + adminPath + "/basics/ip/list?functionId=" + cfg.getFunctionId(); + } + + @RequestMapping(value = { "/updateForm" }) + public String updateForm(Model model, HttpServletRequest request, HttpServletResponse response, String ids, + @ModelAttribute("cfg") IpCommCfg cfg, RedirectAttributes redirectAttributes) { + cfg = ipCommGroupCfgService.get(Long.parseLong(ids)); + // initUpdateFormCondition(model, cfg); + cfg.setGroupType(5); + initUpdateFormCondition(model, cfg); + // List groupInfos=configGroupInfoService.findAllList(4); + // model.addAttribute("policyGroups", groupInfos); + model.addAttribute("_cfg", cfg); + return "/basics/ipCommGroupFormUpdate"; + } + + @RequestMapping(value = { "/update" }) + @RequiresPermissions(value = { "ip:common:config" }) + public String update(Model model, HttpServletRequest request, HttpServletResponse response, + @ModelAttribute("cfg") IpCommCfg cfg, RedirectAttributes redirectAttributes) { + try { + ipCommGroupCfgService.update(cfg); + addMessage(redirectAttributes, "success", "save_success"); + } catch (Exception e) { + logger.error("信息保存失败", e); + addMessage(redirectAttributes, "error", "save_failed"); + } + + return "redirect:" + adminPath + "/basics/ip/list?functionId=" + cfg.getFunctionId(); + } + + @RequestMapping(value = { "/audit" }) + @RequiresPermissions(value = { "ip:common:config" }) + public String audit(Model model, @ModelAttribute("cfg") IpCommCfg cfg, Integer isAudit, Integer isValid, + String ids, Integer functionId, HttpServletRequest request, HttpServletResponse response, + RedirectAttributes redirectAttributes) { + // 选中配置审核 + if (!StringUtil.isEmpty(ids)) { + List ipGroupCfgs = ipCommGroupCfgService.getByIds(ids); + List temp = Lists.newArrayList(); + try { + ipCommGroupCfgService.audit(ipGroupCfgs, isAudit, isValid); + } catch (Exception e) { + logger.error("审核失败", e); + addMessage(redirectAttributes, "error", "audit_failed"); + } finally { + temp.clear(); + } + return "redirect:" + adminPath + "/basics/ip/list?functionId=" + cfg.getFunctionId(); + } else {// 全部审核 + // 条件下所有配置审核 + Page searchPage = new Page(request, response, "a"); + Page auditPage = new Page(request, response, "a"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage, isValid, cfg); + addMessage(redirectAttributes, "success", "audit_success"); + } catch (Exception e) { + logger.error("配置下发失败:", e); + if (e instanceof MaatConvertException) { + addMessage(redirectAttributes, "error", "request_service_failed"); + } else { + addMessage(redirectAttributes, "error", "audit_failed"); + } + + } + + return list(model, request, response, cfg); + } + } + + @RequestMapping(value = { "/delete" }) + @RequiresPermissions(value = { "ip:common:config" }) + public String delete(Integer isValid, String ids, Integer functionId, RedirectAttributes redirectAttributes) { + try { + ipCommGroupCfgService.delete(ids); + addMessage(redirectAttributes, "success", "delete_success"); + } catch (Exception e) { + logger.error("Delete failed", e); + if (e instanceof MaatConvertException) { + addMessage(redirectAttributes, "error", e.getMessage()); + } else { + addMessage(redirectAttributes, "error", "delete_failed"); + } + } + + return "redirect:" + adminPath + "/basics/ip/list?functionId=" + functionId; + } + + // ipComm配置导出 + @RequestMapping(value = "/exportIpComm") + public void exportIpCommonCfg(Model model, HttpServletRequest request, HttpServletResponse response, + @ModelAttribute("cfg") IpCommCfg entity, String ids, RedirectAttributes redirectAttributes) { + try { + // export data info + List titleList = new ArrayList(); + Map> classMap = new HashMap>(); + Map dataMap = new HashMap(); + Map noExportMap = new HashMap(); + List list = new ArrayList(); + if (!StringUtil.isEmpty(ids)) { + list = ipCommGroupCfgService.findByPage(ids); + } else { + Page pageInfo = new Page(request, response, "r"); + pageInfo.setPageNo(1); + pageInfo.setPageSize(Constants.MAX_EXPORT_SIZE); + Page page = ipCommGroupCfgService.findPage(pageInfo, entity); + list = page.getList(); + } + // + titleList.add(entity.getMenuNameCode()); + classMap.put(entity.getMenuNameCode(), IpPortCfg.class); + String cfgIndexInfoNoExport = ",block_type,do_log,action" + + ",letter,whether_area_block,classification,attribute,label" + + ",userregion1,userregion2,userregion3,userregion4,userregion5,src_ip_pattern,client_ip,src_port_pattern,client_port,dest_ip_pattern,dest_port_pattern,dest_port,"; + // 时间过滤 + if (entity.getSearch_create_time_start() == null) { + cfgIndexInfoNoExport = ",config_time" + cfgIndexInfoNoExport; + } + if (entity.getSearch_edit_time_start() == null) { + cfgIndexInfoNoExport = ",edit_time" + cfgIndexInfoNoExport; + } + if (entity.getSearch_audit_time_start() == null) { + cfgIndexInfoNoExport = ",audit_time" + cfgIndexInfoNoExport; + } + if (!StringUtil.isEmpty(entity.gethColumns())) { + cfgIndexInfoNoExport = "," + entity.gethColumns() + "," + cfgIndexInfoNoExport; + } + + noExportMap.put(entity.getMenuNameCode(), cfgIndexInfoNoExport); + dataMap.put(entity.getMenuNameCode(), list); + String timeRange = initTimeMap(entity); + noExportMap.put("timeRange", timeRange); + + if ("csv".equals(entity.getExType())) { + this._exportCsv(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList, + classMap, dataMap, noExportMap); + } else { + this._export(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList, + classMap, dataMap, noExportMap); + } + } catch (Exception e) { + logger.error("IpCommGroupCfg export failed", e); + addMessage(redirectAttributes, "error", "export_failed"); + } + // return "redirect:" + adminPath + // +"/ntc/iplist/list?functionId="+entity.getFunctionId(); + } + + /** + * 批量审核 + * + * @param isAudit + * @param isValid + * @param ids + * @param functionId + * @param redirectAttributes + * @return + */ + @Override + public void auditAll(Page page, Integer auditType, Object entity) throws Exception { + long start = System.currentTimeMillis(); + page.setOrderBy(""); + page.setPageSize(Constants.MAAT_JSON_SEND_SIZE); + page.setPageNo(1); + page.setLastPage(false); + // 携带审核状态信息的BaseCfg + BaseCfg auditBatchCfg = new BaseCfg(); + // 携带审核条件的BaseCfg + IpCommCfg searchIpCommGroupCfg = new IpCommCfg(); + BeanUtils.copyProperties(entity, auditBatchCfg); + BeanUtils.copyProperties(entity, searchIpCommGroupCfg); + + auditType = (Integer) Reflections.invokeGetter(entity, "isAudit"); + + // 全部审核通过,只查询当前条件下的所有未审核的配置 -批量审核通过/不通过 + if (auditType.equals(1) || auditType.equals(2)) { + + searchIpCommGroupCfg.setIsValid(0); + searchIpCommGroupCfg.setIsAudit(0); + + if (auditType.equals(1)) { + auditBatchCfg.setIsAudit(1); + auditBatchCfg.setIsValid(1); + } else { + auditBatchCfg.setIsAudit(2); + auditBatchCfg.setIsValid(0); + } + auditBatchCfg.setAuditTime(new Date()); + auditBatchCfg.setAuditorId(UserUtils.getUser().getId()); + } else { + // 全部取消通过,只查询当前条件下的所有审核通过的配置 + searchIpCommGroupCfg.setIsValid(1); + searchIpCommGroupCfg.setIsAudit(1); + + auditBatchCfg.setIsAudit(3); + auditBatchCfg.setIsValid(0); + auditBatchCfg.setAuditTime(new Date()); + auditBatchCfg.setAuditorId(UserUtils.getUser().getId()); + } + + ServiceConfigTemplateUtil serviceTemplate = new ServiceConfigTemplateUtil(); + Integer functionId = 0; + if (auditBatchCfg != null && !StringUtil.isEmpty(auditBatchCfg.getFunctionId())) { + functionId = auditBatchCfg.getFunctionId(); + } + List> serviceList = serviceTemplate.getServiceListByFunctionId(functionId); + for (Map service : serviceList) { + String tableNameXml = service.get("tableName").toString(); // 获取业务主配置表 + String serviceTypeXml = service.get("serviceType").toString(); // 业务类型 1maat 2callback + String classNameXml = service.get("className").toString(); // 主配置Java类 + String serviceIdXml = service.get("id").toString(); // service字典表 service_id字段 + auditBatchCfg.setServiceId(Integer.valueOf(serviceIdXml)); + auditBatchCfg.setTableName(tableNameXml); + searchIpCommGroupCfg.setServiceId(Integer.valueOf(serviceIdXml)); + searchIpCommGroupCfg.setTableName(tableNameXml); + + if ("1".equals(serviceTypeXml)) {// maat类配置 + // 存放域配置类型 及 对应表名 + List> cfgList = (List>) service.get("cfgList"); + List> userRegionList = (List>) service.get("userRegionList"); + int cfgType = Integer.parseInt(service.get("cfgType").toString()); + if (auditBatchCfg.getIsAudit() == 1) { + boolean hasData = true; + + while (hasData) { + page.setPageNo(1); + page.setLastPage(false); + List list = ipCommGroupCfgService.findPage(page, searchIpCommGroupCfg).getList(); + if(CollectionUtils.isNotEmpty(list)){ + Map groupIdMap=new HashMap(); + // 配置生效处理 + if(auditBatchCfg.getIsAudit().equals(1)) { + hasData=commonPolicyService.auditReuseCommonConfigData(page, auditBatchCfg,groupIdMap,hasData); + Map groupIpMap=new HashMap(); + if(CollectionUtils.isNotEmpty(list)) { + for (IpCommCfg obj : (List)list) { + BaseCfg baseCfg=(BaseCfg)obj; + if(!StringUtil.isEmpty(obj.getGroupId())) { + groupIdMap.get(obj.getGroupId()).add(baseCfg); + }else { + List newList=new ArrayList<>(); + newList.add(baseCfg); + groupIdMap.put(obj.getGroupId(),newList); + } + } + } + + } + if(hasData) { + page.setPageNo(1); + page.setLastPage(false); + } + }else{ + hasData = false; + } + } + } + } else { + throw new RuntimeException("wrong service type " + serviceTypeXml); + } + } + + // 批量审核通过时,如果没有携带isValid检索条件,返回界面需要将isValid置为null + if (!StringUtil.isEmpty(entity)) { + BaseCfg base = (BaseCfg) entity; + if (!StringUtil.isEmpty(base.getSeltype()) && base.getSeltype().equals("isValid")) { + base.setIsValid(null); + BeanUtils.copyProperties(base, entity); + } + } + long end = System.currentTimeMillis(); + logger.warn("配置批量生效/失效耗时:" + (end - start)); + } + @RequestMapping(value = "import", method=RequestMethod.POST) + public String importIp(HttpServletRequest request,HttpServletResponse response,RedirectAttributes redirectAttributes, + @RequestParam("files") MultipartFile[] files + ,Integer serviceDictId + ,Integer requestId + ,String attribute + ,String classify + ,String regionDictIds + ,String importPath) { + logger.warn("import start..."); + long start=System.currentTimeMillis(); + ImportBigExcel ei=null; + try { + FunctionServiceDict serviceDict = DictUtils.getFunctionServiceDict(serviceDictId); + StringBuffer errTip=new StringBuffer(); + BlockingQueue ipPortCfgs =null; + //List cfgIndexInfos = new ArrayList(); + for (int i = 0; i < files.length; i++) { + MultipartFile file = files[i]; + ei = new ImportBigExcel(file, 0, 1); + FunctionRegionDict regionDict = DictUtils + .getFunctionRegionDict(Integer.parseInt(regionDictIds.split(",")[i])); + //加载模板 + loadTemplate(ei,regionDict, serviceDict); + //------------------------------------check format start---------------------------- + if (regionDict.getRegionType().equals(1)) {// IP + BlockingQueue list = ei.getDataList(IpCommCfgTemplate.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 _ipPortCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE); + while(!ipPortCfgs.isEmpty()) { + ipPortCfgs.drainTo(_ipPortCfgs, Constants.MAAT_JSON_SEND_SIZE); + List regionIds=Lists.newArrayList(); + List numRegionGroupIds=Lists.newArrayList(); + List numRegionRegionIds=Lists.newArrayList(); + if(!regionDict.getFunctionId().equals(405)) {//app ip compileId 从config_group_info中取 + try { + if(isSend.equals("1")) { + 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(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_comm_cfg"); + ind++; + } + ipCommGroupCfgService.saveAndSend(regionDict, serviceDict, _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"); + } + logger.error("import failed", e); + } + long end=System.currentTimeMillis(); + logger.warn("import finish,cost:"+(end-start)); + return "redirect:" + adminPath+ importPath; + } + @RequestMapping(value="ajaxGetGroups",method=RequestMethod.POST) + @ResponseBody + public Map ajaxGetGroups(Model model,@RequestParam(required=true,value="groupIds")String groupIds){ + Map groupIdList=new HashMap(); + if(StringUtils.isNotBlank(groupIds)) { + List list=policyGroupInfoService.findPolicyByServiceGroupInfoList(groupIds); + for(PolicyGroupInfo p:list) { + groupIdList.put(p.getServiceGroupId(), p.getGroupName()); + } + } + return groupIdList; + } +} diff --git a/src/main/java/com/nis/web/controller/basics/PolicyGroupController.java b/src/main/java/com/nis/web/controller/basics/PolicyGroupController.java index 951ced38b..38e8ca76e 100644 --- a/src/main/java/com/nis/web/controller/basics/PolicyGroupController.java +++ b/src/main/java/com/nis/web/controller/basics/PolicyGroupController.java @@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import com.alibaba.fastjson.JSON; import com.nis.domain.Page; import com.nis.domain.basics.PolicyGroupInfo; import com.nis.util.Constants; @@ -122,6 +123,19 @@ public class PolicyGroupController extends BaseController { } return false; } + @RequestMapping(value="ajaxGetPagedGroup",method=RequestMethod.POST) + @ResponseBody + public Page ajaxGetPagedGroup(HttpServletRequest request + , HttpServletResponse response,Model model,@RequestParam(required=true,value="type")Integer type,@RequestParam(required=true,value="pageNo")Integer pageNo,@RequestParam(required=true,value="pageSize")Integer pageSize){ + + PolicyGroupInfo cfg=new PolicyGroupInfo(); + cfg.setGroupType(type); + Page pageCondition = new Page(request, response,"r"); + pageCondition.setPageNo(pageNo); + pageCondition.setPageSize(pageSize); + Page page = policyGroupInfoService.findPolicyGroupInfoList(pageCondition,cfg); + return page; + } /** * 校验asn号是否已存在 */ diff --git a/src/main/java/com/nis/web/controller/basics/UrlCommGroupController.java b/src/main/java/com/nis/web/controller/basics/UrlCommGroupController.java new file mode 100644 index 000000000..44a1c3c59 --- /dev/null +++ b/src/main/java/com/nis/web/controller/basics/UrlCommGroupController.java @@ -0,0 +1,251 @@ +package com.nis.web.controller.basics; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import com.nis.domain.FunctionRegionDict; +import com.nis.domain.FunctionServiceDict; +import com.nis.domain.Page; +import com.nis.domain.basics.UrlCommCfg; +import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.Constants; +import com.nis.util.DictUtils; +import com.nis.util.StringUtil; +import com.nis.web.controller.BaseController; +import com.nis.web.service.basics.UrlCommGroupService; + +@Controller +@RequestMapping(value = "${adminPath}/basics/url") +public class UrlCommGroupController extends BaseController{ + + @Autowired + private UrlCommGroupService urlCommGroupService; + + @RequestMapping(value = {"/list"}) + public String list(Model model,HttpServletRequest request + ,HttpServletResponse response,@ModelAttribute("cfg")UrlCommCfg entity + ){ + Page page = urlCommGroupService.findPage(new Page(request, response,"r"), entity); + model.addAttribute("page", page); + + List regionList = DictUtils.getFunctionRegionDictList(entity.getFunctionId()); + model.addAttribute("regionList", regionList); + List serviceList = DictUtils.getFunctionServiceDictList(entity.getFunctionId()); + model.addAttribute("serviceList", serviceList); + return "/basics/urlCommGroupList"; + } + + @RequestMapping(value = {"/addForm"}) + public String addForm(Model model,HttpServletRequest request + ,HttpServletResponse response,@ModelAttribute("cfg")CfgIndexInfo cfg + ,RedirectAttributes redirectAttributes){ + + +// UrlCommGroupCfg urlCfg = new UrlCommGroupCfg(); +// urlCfg.setCfgType("NTC_URL_REGION"); +// cfg.setUrlCommGroupCfg(urlCfg); +// List urlList = new ArrayList(); +// urlList.add(urlCfg); +// cfg.setUrlCommGroupList(urlList); +// initFormCondition(model, entity); + cfg.setGroupType(11); + initFormCondition(model,cfg); + //List groupInfos=configGroupInfoService.findAllList(4); + //model.addAttribute("policyGroups", groupInfos); + + model.addAttribute("_cfg", cfg); + return "/basics/urlCommGroupFormAdd"; + } + + @RequestMapping(value = {"/save"}) + @RequiresPermissions(value={"http:url:config"}) + public String save(Model model,HttpServletRequest request,HttpServletResponse response,@ModelAttribute("cfg")CfgIndexInfo cfg,RedirectAttributes redirectAttributes){ + +// System.out.println("URL分组"); + try{ + urlCommGroupService.saveUrlCommGroupCfg(cfg); + }catch(Exception e){ + logger.error("信息保存失败",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error",e.getMessage()); + }else { + addMessage(redirectAttributes,"error","save_failed"); + } + } + + return "redirect:" + adminPath +"/basics/url/list?functionId="+cfg.getFunctionId(); + } + + @RequestMapping(value = {"/updateForm"}) + public String updateForm(Model model,HttpServletRequest request + ,HttpServletResponse response,String ids,@ModelAttribute("cfg")UrlCommCfg cfg + ,RedirectAttributes redirectAttributes){ + cfg = urlCommGroupService.get(Long.parseLong(ids)); +// initUpdateFormCondition(model, cfg); + cfg.setGroupType(11); + initUpdateFormCondition(model,cfg); + //List groupInfos=configGroupInfoService.findAllList(4); + //model.addAttribute("policyGroups", groupInfos); + model.addAttribute("_cfg", cfg); + return "/basics/urlCommGroupFormUpdate"; + } + @RequestMapping(value = {"/update"}) + @RequiresPermissions(value={"http:url:config"}) + public String update(Model model,HttpServletRequest request,HttpServletResponse response,@ModelAttribute("cfg")UrlCommCfg cfg,RedirectAttributes redirectAttributes){ + try{ + urlCommGroupService.update(cfg); + addMessage(redirectAttributes,"success","save_success"); + }catch(Exception e){ + logger.error("信息保存失败",e); + addMessage(redirectAttributes,"error","save_failed"); + } + + return "redirect:" + adminPath +"/basics/url/list?functionId="+cfg.getFunctionId(); + } + + @RequestMapping(value = {"/audit"}) + @RequiresPermissions(value={"http:url:config"}) + public String audit(Model model,@ModelAttribute("cfg")UrlCommCfg cfg + ,Integer isAudit + ,Integer isValid + ,String ids + ,Integer functionId + , HttpServletRequest request + ,HttpServletResponse response + ,RedirectAttributes redirectAttributes) { + //选中配置审核 + if(!StringUtil.isEmpty(ids)) { + List urlGroupCfgs=urlCommGroupService.getByIds(ids); +// Map> urlcfgMap=Maps.newHashMap(); +// for(UrlCommGroupCfg urlCommCfg:urlGroupCfgs) { +// urlCommCfg.setIsAudit(isAudit); +// urlCommCfg.setIsValid(isValid); +// urlCommCfg.setAuditorId(UserUtils.getUser().getId()); +// urlCommCfg.setAuditTime(new Date()); +// urlCommCfg.setFunctionId(functionId); +// if(urlcfgMap.containsKey(Long.parseLong(urlCommCfg.getUserRegion3()))) { +// urlcfgMap.get(Long.parseLong(urlCommCfg.getUserRegion3())).add(urlCommCfg); +// }else { +// List _urlCfgs=Lists.newArrayList(); +// _urlCfgs.add(urlCommCfg); +// urlcfgMap.put(Long.parseLong(urlCommCfg.getUserRegion3()), _urlCfgs); +// } +// } + /********************每次下发一个组的region,保证事物********************/ +// for (Long groupId : urlcfgMap.keySet()) { +// try { +// urlCommGroupService.audit(urlcfgMap.get(groupId),groupId,isValid); +// } catch (Exception e) { +// logger.error("配置下发失败:",e); +// if(e instanceof MaatConvertException) { +// addMessage(redirectAttributes,"error", "request_service_failed"); +// }else { +// addMessage(redirectAttributes,"error", "audit_failed"); +// } +// +// } +// } + for (UrlCommCfg urlCommGroup : urlGroupCfgs) { + try { + urlCommGroupService.audit(urlCommGroup,isAudit,isValid); + } catch (Exception e) { + logger.error("审核失败",e); + addMessage(redirectAttributes,"error","audit_failed"); + } + } + } + return "redirect:" + adminPath +"/basics/url/list?functionId="+cfg.getFunctionId(); + } + + @RequestMapping(value = {"/delete"}) + @RequiresPermissions(value={"http:url:config"}) + public String delete(Integer isValid + ,String ids,Integer functionId + ,RedirectAttributes redirectAttributes){ + try{ + urlCommGroupService.delete(ids); + addMessage(redirectAttributes,"success","delete_success"); + }catch(Exception e){ + logger.error("Delete failed",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error",e.getMessage()); + }else { + addMessage(redirectAttributes,"error","delete_failed"); + } + } + + return "redirect:" + adminPath +"/basics/url/list?functionId="+functionId; + } + //urlComm配置导出 + @RequestMapping(value = "/exportUrlComm") + public void exportAsnIp(Model model,HttpServletRequest request,HttpServletResponse response, + @ModelAttribute("cfg")UrlCommCfg entity,String ids,RedirectAttributes redirectAttributes){ + try { + //export data info + List titleList=new ArrayList(); + Map> classMap=new HashMap>(); + Map dataMap=new HashMap(); + Map noExportMap=new HashMap(); + List list = new ArrayList(); + if (!StringUtil.isEmpty(ids)) { + list = urlCommGroupService.findByPage(ids); + } else { + Page pageInfo=new Page(request, response,"r"); + pageInfo.setPageNo(1); + pageInfo.setPageSize(Constants.MAX_EXPORT_SIZE); + Page page = urlCommGroupService.findPage(pageInfo, entity); + list=page.getList(); + } +// + titleList.add(entity.getMenuNameCode()); + classMap.put(entity.getMenuNameCode(), UrlCommCfg.class); + String cfgIndexInfoNoExport=",block_type,do_log,action" + + ",letter,whether_area_block,classification,attribute,label,expression_type,match_method" + +",userregion1,userregion2,userregion3,userregion4,userregion5,ir_type,asn_no,is_hex,is_case_insenstive,"; + // 时间过滤 + if (entity.getSearch_create_time_start() == null ) { + cfgIndexInfoNoExport = ",config_time" + cfgIndexInfoNoExport; + } + if (entity.getSearch_edit_time_start() == null) { + cfgIndexInfoNoExport = ",edit_time" + cfgIndexInfoNoExport; + } + if (entity.getSearch_audit_time_start() == null) { + cfgIndexInfoNoExport = ",audit_time" + cfgIndexInfoNoExport; + } + if (!StringUtil.isEmpty(entity.gethColumns())) { + cfgIndexInfoNoExport = "," + entity.gethColumns() + "," + cfgIndexInfoNoExport; + } + + noExportMap.put(entity.getMenuNameCode(),cfgIndexInfoNoExport); + dataMap.put(entity.getMenuNameCode(), list); + String timeRange = initTimeMap(entity); + noExportMap.put("timeRange", timeRange); + + if ("csv".equals(entity.getExType())) { + this._exportCsv(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList, + classMap, dataMap, noExportMap); + } else { + this._export(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList, + classMap, dataMap, noExportMap); + } + } catch (Exception e) { + logger.error("urlGroupConfig export failed",e); + addMessage(redirectAttributes,"error","export_failed"); + } + //return "redirect:" + adminPath +"/ntc/iplist/list?functionId="+entity.getFunctionId(); + } +} diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java b/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java index 8da203a5a..1016decbc 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java @@ -55,6 +55,7 @@ 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.IpCommCfgTemplate; import com.nis.domain.configuration.template.IpPayloadTemplate; import com.nis.domain.configuration.template.IpRateLimitTemplate; import com.nis.domain.configuration.template.IpSpoofingTemplate; @@ -476,6 +477,11 @@ public class IpController extends BaseController{ ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, IpRateLimitTemplate.class, 2); excel.setDataList(pro,classList,null). write(request,response, fileName).dispose(); + }else if(regionDict.getFunctionId().equals(110)){ + List classList=new ArrayList(); + ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, IpCommCfgTemplate.class, 2); + excel.setDataList(pro,classList,null). + write(request,response, fileName).dispose(); }else{ List classList=new ArrayList(); ExportExcel excel=new ExportExcel(serviceDict,regionDict,pro,null, IpAllTemplate.class, 2); diff --git a/src/main/java/com/nis/web/dao/basics/IpCommGroupCfgDao.java b/src/main/java/com/nis/web/dao/basics/IpCommGroupCfgDao.java new file mode 100644 index 000000000..09a51548b --- /dev/null +++ b/src/main/java/com/nis/web/dao/basics/IpCommGroupCfgDao.java @@ -0,0 +1,28 @@ +package com.nis.web.dao.basics; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.basics.IpCommCfg; +import com.nis.domain.basics.Varibles; +import com.nis.web.dao.CrudDao; +import com.nis.web.dao.MyBatisDao; +@MyBatisDao +public interface IpCommGroupCfgDao extends CrudDao{ + public List findPage(IpCommCfg cfg); + public List findByPage(@Param("ids")String ids); + public void delete(@Param("ids")String ids); + public void updateIssued(IpCommCfg cfg); + public List getByIds(@Param("ids")String ids); + public List findAllList(IpCommCfg cfg); + public List findOtherIps(@Param("groupId")Integer groupId,@Param("cfgId")Integer cfgId); + public List countValidIPs(@Param("groups")String groups,@Param("ids")String ids); + public int insertBatch(List list); + public Varibles getVaribles(@Param("name")String name); + public void ajaxDeleteAsnIp(@Param("ids")String ids); + public IpCommCfg getOne(IpCommCfg cfg); + public List findAllIpCommGroupCfgList(); + public void insertIpCommGroupCfg(IpCommCfg ipPortCfg); + public int getGroupIdCount(int groupId); +} diff --git a/src/main/java/com/nis/web/dao/basics/IpCommGroupCfgDao.xml b/src/main/java/com/nis/web/dao/basics/IpCommGroupCfgDao.xml new file mode 100644 index 000000000..c2169f6cd --- /dev/null +++ b/src/main/java/com/nis/web/dao/basics/IpCommGroupCfgDao.xml @@ -0,0 +1,514 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + r.cfg_id,r.cfg_desc,r.cfg_type,r.cfg_region_code,r.ip_type,r.src_ip_pattern,r.src_ip_address,r.dest_ip_pattern,r.dest_ip_address, + r.src_port_pattern,r.src_port,r.dest_port_pattern,r.dest_port + ,r.protocol,r.protocol_id,r.direction,r.action + ,r.is_valid,r.is_audit,r.creator_id,r.create_time,r.editor_id + ,r.edit_time,r.auditor_id,r.audit_time,r.service_id,r.request_id, + r.is_area_effective,r.classify,r.attribute,r.lable + ,r.area_effective_ids,r.function_id,r.user_region1 + ,r.user_region2,r.user_region3,r.user_region4,r.user_region5,r.compile_id,r.region_id,r.group_id + + + + + + + + + + SELECT LAST_INSERT_ID() + + insert into ip_comm_cfg ( + CFG_DESC, + ACTION, + IS_VALID, + IS_AUDIT, + CREATOR_ID, + CREATE_TIME, + EDITOR_ID, + EDIT_TIME, + AUDITOR_ID, + AUDIT_TIME, + SERVICE_ID, + REQUEST_ID, + REGION_ID, + GROUP_ID, + COMPILE_ID, + IS_AREA_EFFECTIVE, + CLASSIFY, + ATTRIBUTE, + LABLE, + AREA_EFFECTIVE_IDS, + FUNCTION_ID, + IP_TYPE, + SRC_IP_ADDRESS, + SRC_IP_PATTERN, + DEST_IP_PATTERN, + SRC_PORT_PATTERN, + DEST_PORT_PATTERN, + SRC_PORT, + PROTOCOL, + PROTOCOL_ID, + DIRECTION, + DEST_PORT, + DEST_IP_ADDRESS, + CFG_TYPE, + CFG_REGION_CODE, + USER_REGION1, + USER_REGION2, + USER_REGION3, + USER_REGION4, + USER_REGION5, + )values ( + #{cfgDesc,jdbcType=VARCHAR}, + #{action,jdbcType=INTEGER}, + #{isValid,jdbcType=INTEGER}, + #{isAudit,jdbcType=INTEGER}, + #{creatorId,jdbcType=INTEGER}, + #{createTime,jdbcType=TIMESTAMP}, + #{editorId,jdbcType=INTEGER}, + #{editTime,jdbcType=TIMESTAMP}, + #{auditorId,jdbcType=INTEGER}, + #{auditTime,jdbcType=TIMESTAMP}, + #{serviceId,jdbcType=INTEGER}, + #{requestId,jdbcType=INTEGER}, + #{regionId,jdbcType=INTEGER}, + #{groupId,jdbcType=INTEGER}, + #{compileId,jdbcType=INTEGER}, + #{isAreaEffective,jdbcType=INTEGER}, + #{classify,jdbcType=VARCHAR}, + #{attribute,jdbcType=VARCHAR}, + #{lable,jdbcType=VARCHAR}, + #{areaEffectiveIds,jdbcType=VARCHAR}, + #{functionId,jdbcType=INTEGER}, + #{ipType,jdbcType=INTEGER}, + #{srcIpAddress,jdbcType=VARCHAR}, + #{srcIpPattern,jdbcType=INTEGER},#{destIpPattern,jdbcType=INTEGER}, + #{srcPortPattern,jdbcType=INTEGER},#{destPortPattern,jdbcType=INTEGER}, + #{srcPort,jdbcType=VARCHAR}, + #{protocol,jdbcType=INTEGER}, + #{protocolId,jdbcType=INTEGER}, + #{direction,jdbcType=INTEGER}, + #{destPort,jdbcType=VARCHAR}, + #{destIpAddress,jdbcType=VARCHAR}, + #{cfgType,jdbcType=VARCHAR}, + #{cfgRegionCode,jdbcType=INTEGER}, + #{userRegion1,jdbcType=VARCHAR}, + #{userRegion2,jdbcType=VARCHAR}, + #{userRegion3,jdbcType=VARCHAR}, + #{userRegion4,jdbcType=VARCHAR}, + #{userRegion5,jdbcType=VARCHAR} + ) + + + insert into ip_comm_cfg ( + CFG_DESC, + ACTION, + IS_VALID, + IS_AUDIT, + CREATOR_ID, + CREATE_TIME, + EDITOR_ID, + EDIT_TIME, + AUDITOR_ID, + AUDIT_TIME, + SERVICE_ID, + REQUEST_ID, + REGION_ID, + GROUP_ID, + COMPILE_ID, + IS_AREA_EFFECTIVE, + CLASSIFY, + ATTRIBUTE, + LABLE, + AREA_EFFECTIVE_IDS, + FUNCTION_ID, + IP_TYPE, + SRC_IP_ADDRESS, + SRC_IP_PATTERN, + DEST_IP_PATTERN, + SRC_PORT_PATTERN, + DEST_PORT_PATTERN, + SRC_PORT, + PROTOCOL, + PROTOCOL_ID, + DIRECTION, + DEST_PORT, + DEST_IP_ADDRESS, + CFG_TYPE, + CFG_REGION_CODE, + USER_REGION1, + USER_REGION2, + USER_REGION3, + USER_REGION4, + USER_REGION5 + )values ( + #{cfgDesc,jdbcType=VARCHAR}, + #{action,jdbcType=INTEGER}, + #{isValid,jdbcType=INTEGER}, + #{isAudit,jdbcType=INTEGER}, + #{creatorId,jdbcType=INTEGER}, + #{createTime,jdbcType=TIMESTAMP}, + #{editorId,jdbcType=INTEGER}, + #{editTime,jdbcType=TIMESTAMP}, + #{auditorId,jdbcType=INTEGER}, + #{auditTime,jdbcType=TIMESTAMP}, + #{serviceId,jdbcType=INTEGER}, + #{requestId,jdbcType=INTEGER}, + #{regionId,jdbcType=INTEGER}, + #{groupId,jdbcType=INTEGER}, + #{compileId,jdbcType=INTEGER}, + #{isAreaEffective,jdbcType=INTEGER}, + #{classify,jdbcType=VARCHAR}, + #{attribute,jdbcType=VARCHAR}, + #{lable,jdbcType=VARCHAR}, + #{areaEffectiveIds,jdbcType=VARCHAR}, + #{functionId,jdbcType=INTEGER}, + #{ipType,jdbcType=INTEGER}, + #{srcIpAddress,jdbcType=VARCHAR}, + #{srcIpPattern,jdbcType=INTEGER},#{destIpPattern,jdbcType=INTEGER}, + #{srcPortPattern,jdbcType=INTEGER},#{destPortPattern,jdbcType=INTEGER}, + #{srcPort,jdbcType=VARCHAR}, + #{protocol,jdbcType=INTEGER}, + #{protocolId,jdbcType=INTEGER}, + #{direction,jdbcType=INTEGER}, + #{destPort,jdbcType=VARCHAR}, + #{destIpAddress,jdbcType=VARCHAR}, + #{cfgType,jdbcType=VARCHAR}, + #{cfgRegionCode,jdbcType=INTEGER}, + #{userRegion1,jdbcType=VARCHAR}, + #{userRegion2,jdbcType=VARCHAR}, + #{userRegion3,jdbcType=VARCHAR}, + #{userRegion4,jdbcType=VARCHAR}, + #{userRegion5,jdbcType=VARCHAR} + ) + + + update ip_comm_cfg + + + + CFG_DESC = #{cfgDesc,jdbcType=VARCHAR}, + + + ACTION = #{action,jdbcType=INTEGER}, + + + IS_VALID = #{isValid,jdbcType=INTEGER}, + + + IS_AUDIT = #{isAudit,jdbcType=INTEGER}, + + + EDITOR_ID = #{editorId,jdbcType=INTEGER}, + + + EDIT_TIME = #{editTime,jdbcType=TIMESTAMP}, + + + AUDITOR_ID = #{auditorId,jdbcType=INTEGER}, + + + AUDIT_TIME = #{auditTime,jdbcType=TIMESTAMP}, + + + REGION_ID = #{regionId,jdbcType=TIMESTAMP}, + + + REQUEST_ID = #{requestId,jdbcType=INTEGER}, + + + IS_AREA_EFFECTIVE = #{isAreaEffective,jdbcType=INTEGER}, + + + CLASSIFY = #{classify,jdbcType=VARCHAR}, + + + ATTRIBUTE = #{attribute,jdbcType=VARCHAR}, + + + LABLE = #{lable,jdbcType=VARCHAR}, + + + AREA_EFFECTIVE_IDS = #{areaEffectiveIds,jdbcType=VARCHAR}, + + + FUNCTION_ID = #{functionId,jdbcType=INTEGER}, + + + SERVICE_ID = #{serviceId,jdbcType=INTEGER}, + + + IP_TYPE = #{ipType,jdbcType=INTEGER}, + + + SRC_IP_ADDRESS = #{srcIpAddress,jdbcType=VARCHAR}, + + + SRC_IP_PATTERN = #{srcIpPattern,jdbcType=INTEGER}, + + + DEST_IP_PATTERN =#{destIpPattern,jdbcType=INTEGER}, + + + SRC_PORT_PATTERN = #{srcPortPattern,jdbcType=INTEGER}, + + + DEST_PORT_PATTERN = #{destPortPattern,jdbcType=INTEGER}, + + + SRC_PORT = #{srcPort,jdbcType=VARCHAR}, + + + PROTOCOL = #{protocol,jdbcType=INTEGER}, + + + PROTOCOL_ID = #{protocolId,jdbcType=INTEGER}, + + + DIRECTION = #{direction,jdbcType=INTEGER}, + + + DEST_PORT = #{destPort,jdbcType=VARCHAR}, + + + DEST_IP_ADDRESS = #{destIpAddress,jdbcType=VARCHAR}, + + + CFG_TYPE = #{cfgType,jdbcType=VARCHAR}, + + + CFG_REGION_CODE = #{cfgRegionCode,jdbcType=INTEGER}, + + + USER_REGION1 = #{userRegion1,jdbcType=VARCHAR}, + + + USER_REGION2 = #{userRegion2,jdbcType=VARCHAR}, + + + USER_REGION3 = #{userRegion3,jdbcType=VARCHAR}, + + + USER_REGION4 = #{userRegion4,jdbcType=VARCHAR}, + + + USER_REGION5 = #{userRegion5,jdbcType=VARCHAR}, + + + GROUP_ID = #{groupId,jdbcType=INTEGER}, + + + REGION_ID = #{regionId,jdbcType=INTEGER}, + + + + + and cfg_id = #{cfgId,jdbcType=INTEGER} + + + + + delete from ip_comm_cfg where cfg_id in (${ids}) + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/basics/PolicyGroupInfoDao.java b/src/main/java/com/nis/web/dao/basics/PolicyGroupInfoDao.java index 26cb0e9ec..bee778166 100644 --- a/src/main/java/com/nis/web/dao/basics/PolicyGroupInfoDao.java +++ b/src/main/java/com/nis/web/dao/basics/PolicyGroupInfoDao.java @@ -24,6 +24,9 @@ public interface PolicyGroupInfoDao extends CrudDao { Integer getGroupIdByGroupName(String groupName); PolicyGroupInfo getGroupInfo(PolicyGroupInfo policyGroupInfo); - + List findPolicyGroupInfosByTypeForUD(@Param("groupType")Integer groupType,@Param("flag")Integer flag); + List findLimitedPolicyGroupInfosByTypeForUD(@Param("groupType")Integer groupType,@Param("flag")Integer flag,@Param("limit")Integer limit); List findPolicyByGroupInfoList(@Param("ids")String ids); + void updateUdFlag(@Param("groupId")int groupId,@Param("udFlag")int udFlag,@Param("groupType")int groupType); + List findPolicyByServiceGroupInfoList(@Param("ids")String ids); } \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/basics/PolicyGroupInfoDao.xml b/src/main/java/com/nis/web/dao/basics/PolicyGroupInfoDao.xml index edaba3469..b2fb17e37 100644 --- a/src/main/java/com/nis/web/dao/basics/PolicyGroupInfoDao.xml +++ b/src/main/java/com/nis/web/dao/basics/PolicyGroupInfoDao.xml @@ -266,6 +266,45 @@ WHERE r.group_id IN (${ids}) - + + + + + UPDATE policy_group_info SET ud_flag =#{udFlag} + WHERE service_group_id=#{groupId} + and group_type=#{groupType} + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/basics/UrlCommGroupDao.java b/src/main/java/com/nis/web/dao/basics/UrlCommGroupDao.java new file mode 100644 index 000000000..cb8e2979a --- /dev/null +++ b/src/main/java/com/nis/web/dao/basics/UrlCommGroupDao.java @@ -0,0 +1,38 @@ +package com.nis.web.dao.basics; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.basics.UrlCommCfg; +import com.nis.web.dao.CrudDao; +import com.nis.web.dao.MyBatisDao; + +@MyBatisDao +public interface UrlCommGroupDao extends CrudDao{ + + // 查询列表 + public List findAllPageList(UrlCommCfg entity); + + public List findByPage(@Param("ids")String ids); + + public List findInfoByCfgId(@Param("cfgId")Long cfgId); + //新增 + public int insertUrlCommGroupCfg(UrlCommCfg entity); + + public Integer findUrlUdFlag(@Param("groupId")Integer groupId); + + public int updateUrlUdFlag(@Param("groupId")Integer groupId,@Param("udFlag")Integer udFlag); + + //修改 + public int update(UrlCommCfg entity); + + //删除 + public int delete(@Param("ids")String ids); + + public List getByIds(@Param("ids")String ids); + + + public Integer getGroupIdCount(@Param("groupId")String groupId); + +} diff --git a/src/main/java/com/nis/web/dao/basics/UrlCommGroupDao.xml b/src/main/java/com/nis/web/dao/basics/UrlCommGroupDao.xml new file mode 100644 index 000000000..1f4e35a3d --- /dev/null +++ b/src/main/java/com/nis/web/dao/basics/UrlCommGroupDao.xml @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into http_url_cfg ( + CFG_DESC, + cfg_keywords, + action, + is_valid, + is_audit, + creator_id, + create_time, + editor_id, + edit_time, + auditor_id, + audit_time, + service_id, + request_id, + compile_id, + IS_AREA_EFFECTIVE, + CLASSIFY, + ATTRIBUTE, + LABLE, + expr_type, + match_method, + is_hexbin, + area_effective_ids, + function_id, + cfg_region_code, + cfg_type, + ratelimit, + user_region1, + user_region2, + user_region3, + user_region4, + user_region5 + )values ( + #{cfgDesc,jdbcType=VARCHAR}, + #{cfgKeywords,jdbcType=VARCHAR}, + #{action,jdbcType=INTEGER}, + #{isValid,jdbcType=INTEGER}, + #{isAudit,jdbcType=INTEGER}, + #{creatorId,jdbcType=INTEGER}, + #{createTime,jdbcType=TIMESTAMP}, + #{editorId,jdbcType=INTEGER}, + #{editTime,jdbcType=TIMESTAMP}, + #{auditorId,jdbcType=INTEGER}, + #{auditTime,jdbcType=TIMESTAMP}, + #{serviceId,jdbcType=INTEGER}, + #{requestId,jdbcType=INTEGER}, + #{compileId,jdbcType=INTEGER}, + #{isAreaEffective,jdbcType=INTEGER}, + #{classify,jdbcType=VARCHAR}, + #{attribute,jdbcType=VARCHAR}, + #{lable,jdbcType=VARCHAR}, + #{exprType,jdbcType=INTEGER}, + #{matchMethod,jdbcType=INTEGER}, + #{isHexbin,jdbcType=INTEGER}, + #{areaEffectiveIds,jdbcType=VARCHAR}, + #{functionId,jdbcType=INTEGER}, + #{cfgRegionCode,jdbcType=INTEGER}, + #{cfgType,jdbcType=VARCHAR}, + #{ratelimit,jdbcType=VARCHAR}, + #{userRegion1,jdbcType=VARCHAR}, + #{userRegion2,jdbcType=VARCHAR}, + #{userRegion3,jdbcType=VARCHAR}, + #{userRegion4,jdbcType=VARCHAR}, + #{userRegion5,jdbcType=VARCHAR} + ) + + + + + + UPDATE policy_group_info SET ud_flag =#{udFlag} + WHERE service_group_id=#{groupId} + and group_type=11 + + + + update http_url_cfg + + + + cfg_desc = #{cfgDesc,jdbcType=VARCHAR}, + + + cfg_keywords = #{cfgKeywords,jdbcType=VARCHAR}, + + + action = #{action,jdbcType=INTEGER}, + + + is_valid = #{isValid,jdbcType=INTEGER}, + + + is_audit = #{isAudit,jdbcType=INTEGER}, + + + editor_id = #{editorId,jdbcType=INTEGER}, + + + edit_time = #{editTime,jdbcType=TIMESTAMP}, + + + AUDITOR_ID = #{auditorId,jdbcType=INTEGER}, + + + AUDIT_TIME = #{auditTime,jdbcType=TIMESTAMP}, + + + service_id = #{serviceId,jdbcType=INTEGER}, + + + request_id = #{requestId,jdbcType=INTEGER}, + + + compile_id = #{compileId,jdbcType=INTEGER}, + + + is_area_effective = #{isAreaEffective,jdbcType=INTEGER}, + + + classify = #{classify,jdbcType=VARCHAR}, + + + attribute = #{attribute,jdbcType=VARCHAR}, + + + lable = #{lable,jdbcType=VARCHAR}, + + + expr_type = #{exprType,jdbcType=INTEGER}, + + + match_method = #{matchMethod,jdbcType=INTEGER}, + + + is_hexbin = #{isHexbin,jdbcType=INTEGER}, + + + area_effective_ids = #{areaEffectiveIds,jdbcType=VARCHAR}, + + + function_id = #{functionId,jdbcType=INTEGER}, + + + cfg_type = #{cfgType,jdbcType=VARCHAR}, + + + cfg_region_code = #{cfgRegionCode,jdbcType=INTEGER}, + + + ratelimit = #{ratelimit,jdbcType=VARCHAR}, + + + user_region1 = #{userRegion1,jdbcType=VARCHAR}, + + + user_region2 = #{userRegion2,jdbcType=VARCHAR}, + + + user_region3 = #{userRegion3,jdbcType=VARCHAR}, + + + user_region4 = #{userRegion4,jdbcType=VARCHAR}, + + + user_region5 = #{userRegion5,jdbcType=VARCHAR}, + + + + + and cfg_id = #{cfgId,jdbcType=INTEGER} + + + + + delete from http_url_cfg where cfg_id in (${ids}) + + + + + + diff --git a/src/main/java/com/nis/web/service/BaseService.java b/src/main/java/com/nis/web/service/BaseService.java index 453a7ba12..5a989ca8c 100644 --- a/src/main/java/com/nis/web/service/BaseService.java +++ b/src/main/java/com/nis/web/service/BaseService.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.mapping.MappedStatement; @@ -51,6 +52,8 @@ import com.nis.domain.SysRole; import com.nis.domain.SysUser; import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.basics.AsnIpCfg; +import com.nis.domain.basics.IpCommCfg; +import com.nis.domain.basics.UrlCommCfg; import com.nis.domain.callback.InlineIp; import com.nis.domain.callback.NtcDnsResStrategy; import com.nis.domain.callback.ProxyObjKeyring; @@ -1449,12 +1452,67 @@ public abstract class BaseService { List cfgs = ipConvert(cfg, baseIpCfg); maatIpList.addAll(cfgs); } + } else if(ipCfgList.get(0) instanceof IpCommCfg) { + for (BaseCfg _cfg : ipCfgList) { + IpCfg cfg = new IpCfg(); + BaseIpCfg baseIpCfg = new BaseIpCfg(); + IpCommCfg ipCommGroupCfg = (IpCommCfg) _cfg; + BeanUtils.copyProperties(ipCommGroupCfg, baseIpCfg); + BeanUtils.copyProperties(baseIpCfg, cfg); + if(groupId==null) { + cfg.setGroupId(ipCommGroupCfg.getGroupId()); + }else { + cfg.setGroupId(groupId); + } + cfg.setRegionId(ipCommGroupCfg.getRegionId()); + //user regions + //String userRegion = "APP_ID=" + appIpCfg.getAppCode(); + //cfg.setUserRegion(userRegion); + cfg.setIsValid(isValid); + cfg.setAuditTime(opTime); + List cfgs = ipConvert(cfg, baseIpCfg); + maatIpList.addAll(cfgs); + } } } long end = System.currentTimeMillis(); logger.warn("convert data finish,cost:" + (end - start)); return maatIpList; } + public List groupReuseStringCfgAddRemoveConvert(List> stringCfgList, Integer isValid, + Integer groupId) { + logger.warn("convert data start"); + long start = System.currentTimeMillis(); + Date opTime = new Date(); + List maatStringList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(stringCfgList)) { + // 只用一次instanceof,取代循环中每次都用一次instanceof + if(stringCfgList.get(0) instanceof UrlCommCfg) { + for (BaseCfg _cfg : stringCfgList) { + StringCfg cfg = new StringCfg(); + BaseStringCfg baseStringCfg = new BaseStringCfg(); + UrlCommCfg ipCommGroupCfg = (UrlCommCfg) _cfg; + BeanUtils.copyProperties(_cfg, baseStringCfg); + BeanUtils.copyProperties(baseStringCfg, cfg); + if(groupId==null) { + cfg.setGroupId(ipCommGroupCfg.getGroupId()); + }else { + cfg.setGroupId(groupId); + } + cfg.setRegionId(ipCommGroupCfg.getRegionId()); + //user regions + //String userRegion = "APP_ID=" + appIpCfg.getAppCode(); + //cfg.setUserRegion(userRegion); + cfg.setIsValid(isValid); + cfg.setAuditTime(opTime); + maatStringList.add(cfg); + } + } + } + long end = System.currentTimeMillis(); + logger.warn("convert data finish,cost:" + (end - start)); + return maatStringList; + } public MaatCfg convertMaatCfg(BaseCfg _cfg,Integer cfgType) { MaatCfg maatCfg = new MaatCfg(); maatCfg.initDefaultValue(); diff --git a/src/main/java/com/nis/web/service/basics/IpCommGroupCfgService.java b/src/main/java/com/nis/web/service/basics/IpCommGroupCfgService.java new file mode 100644 index 000000000..b5de70607 --- /dev/null +++ b/src/main/java/com/nis/web/service/basics/IpCommGroupCfgService.java @@ -0,0 +1,250 @@ +package com.nis.web.service.basics; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Map.Entry; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.ibatis.session.ExecutorType; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.beust.jcommander.internal.Maps; +import com.beust.jcommander.internal.Sets; +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.basics.AsnGroupInfo; +import com.nis.domain.basics.AsnIpCfg; +import com.nis.domain.basics.IpCommCfg; +import com.nis.domain.configuration.BaseIpCfg; +import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.domain.maat.GroupReuseAddBean; +import com.nis.domain.maat.GroupReuseCfg; +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.GroupCfg; +import com.nis.domain.maat.MaatCfg.IpCfg; +import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; +import com.nis.domain.maat.MaatCfg.StringCfg; +import com.nis.util.ConfigServiceUtil; +import com.nis.util.Constants; +import com.nis.util.StringUtil; +import com.nis.web.dao.basics.AsnGroupInfoDao; +import com.nis.web.dao.basics.AsnIpCfgDao; +import com.nis.web.dao.basics.IpCommGroupCfgDao; +import com.nis.web.dao.basics.PolicyGroupInfoDao; +import com.nis.web.security.UserUtils; +import com.nis.web.service.BaseService; +import com.nis.web.service.SpringContextHolder; +@Service +public class IpCommGroupCfgService extends BaseService { + @Autowired + private IpCommGroupCfgDao ipCommGroupCfgDao; + @Autowired + private PolicyGroupInfoDao policyGroupInfoDao; + /** + * @param page + * @param entity + * @return + */ + public Page findPage(Page page, IpCommCfg entity) { + entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"r")); + entity.setPage(page); + List list=ipCommGroupCfgDao.findPage(entity); + page.setList(list); + return page; + } + + public List findByPage(String ids) { + List list=ipCommGroupCfgDao.findByPage(ids); + return list; + } + + public IpCommCfg get(Long id ) { + return ipCommGroupCfgDao.get(id); + } + + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void save(List entitys) { + logger.warn("Start to save IP,size:"+entitys.size()); + long start=System.currentTimeMillis(); + for(IpCommCfg ipCfg:entitys) { + ipCommGroupCfgDao.insert(ipCfg); + } + long end=System.currentTimeMillis(); + logger.warn("Save IP finish,cost:"+(end-start)); + } + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void update(IpCommCfg entity){ + ipCommGroupCfgDao.update(entity); + } + + + public List getByIds(String ids) { + if(ids==null) { + throw new RuntimeException("ids is null!"); + } + return ipCommGroupCfgDao.getByIds(ids); + } + + //新增 + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void saveIpCommGroupCfg(CfgIndexInfo entity) { + Date createTime=new Date(); + if(CollectionUtils.isNotEmpty(entity.getIpCommGroupCfgList())) { + for (int i = 0; i < entity.getIpCommGroupCfgList().size(); i++) { + BeanUtils.copyProperties(entity, entity.getIpCommGroupCfgList().get(i), new String[]{"cfgId","userregion3"}); + entity.getIpCommGroupCfgList().get(i).setRequestId(0); + entity.getIpCommGroupCfgList().get(i).setClassify("0"); + entity.getIpCommGroupCfgList().get(i).setAttribute("0"); + entity.getIpCommGroupCfgList().get(i).setLable("0"); + entity.getIpCommGroupCfgList().get(i).setCreateTime(createTime); + entity.getIpCommGroupCfgList().get(i).setCreatorId(entity.getCurrentUser().getId()); + entity.getIpCommGroupCfgList().get(i).setIsValid(Constants.VALID_NO); + entity.getIpCommGroupCfgList().get(i).setIsAudit(Constants.AUDIT_NOT_YET); + entity.getIpCommGroupCfgList().get(i).setGroupId(Integer.parseInt(entity.getUserRegion3())); + ipCommGroupCfgDao.insertForBatch(entity.getIpCommGroupCfgList().get(i)); + } + } + } + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void audit(List ipCommGroupCfgs, Integer isAudit, Integer isValid) { + // TODO Auto-generated method stub + Set groupIds=Sets.newHashSet(); + if(!StringUtil.isEmpty(ipCommGroupCfgs)){ + for(IpCommCfg cfg:ipCommGroupCfgs) { + cfg.setIsValid(isValid); + cfg.setIsAudit(isAudit); + cfg.setAuditorId(UserUtils.getUser().getId()); + cfg.setAuditTime(new Date()); + groupIds.add(cfg.getGroupId()); + ipCommGroupCfgDao.update(cfg); + } + } + //查询有效的Ip配置个数 + for(Integer groupId:groupIds) { + Integer groupCount=ipCommGroupCfgDao.getGroupIdCount(groupId); + if(groupCount>0){//udFlag 设置为1 + policyGroupInfoDao.updateUdFlag(groupId, 1,5); + }else{//udFlag 设置为0 + policyGroupInfoDao.updateUdFlag(groupId, 0,5); + } + } + //下发配置时改变公共组udFlag标识 + send2Maat(ipCommGroupCfgs,isValid); + } + public void send2Maat(List ipCommGroupCfgs,int isValid) { + GroupReuseAddBean maatBean = new GroupReuseAddBean(); + List groupReuseList=new ArrayList<>(); + GroupReuseCfg groupReuseCfg=new GroupReuseCfg(); + List ipRegionList = groupReuseCfgAddRemoveConvert(ipCommGroupCfgs,isValid,null); + List strRegionList = new ArrayList<>(); + List numRegionList = new ArrayList<>(); + groupReuseCfg.setIpRegionList(ipRegionList); + groupReuseCfg.setStrRegionList(strRegionList); + groupReuseCfg.setNumRegionList(numRegionList); + groupReuseList.add(groupReuseCfg); + maatBean.setGroupReuseCfgList(groupReuseList); + maatBean.setAuditTime(new Date()); + maatBean.setCreatorName(UserUtils.getUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + logger.warn("IP Common Region Send To Maat start"); + long start=System.currentTimeMillis(); + if(isValid==Constants.VALID_YES) { + maatBean.setOpAction(Constants.INSERT_ACTION); + //调用服务接口下发配置数据 + String json=gsonToJson(maatBean); + if(ipCommGroupCfgs.size()<=100) { + logger.info("ip 公共组域新增配置下发配置参数:"+json); + }else { + logger.info("ip 公共组域新增配置下发region条数:"+ipCommGroupCfgs.size()); + } + //调用服务接口下发配置 + ToMaatResult result =ConfigServiceUtil.postGroupReuseSources(json); + logger.info("ip 公共组域新增配置响应信息:"+result.getMsg()); + }else { + maatBean.setOpAction(Constants.UPDATE_ACTION); + //调用服务接口下发配置数据 + String json=gsonToJson(maatBean); + if(ipCommGroupCfgs.size()<=100) { + logger.info("ip 公共组域删除配置下发配置参数:"+json); + }else { + logger.info("ip 公共组域删除配置下发region条数:"+ipCommGroupCfgs.size()); + + } + //调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.put(json,3); + logger.info("asn ip复用域删除配置响应信息:"+result.getMsg()); + } + long end=System.currentTimeMillis(); + logger.warn("IP Common Region Send To Maat finish,cost:"+(end-start)); + } + public void delete(String ids) { + // TODO Auto-generated method stub + if(ids==null) { + throw new RuntimeException("ids is null!"); + } + ipCommGroupCfgDao.delete(ids); + } + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void saveAndSend(FunctionRegionDict regionDict, FunctionServiceDict serviceDict, List cfgs, + boolean send) { + // TODO Auto-generated method stub + logger.warn("Start to save IP,size:"+cfgs.size()); + long start=System.currentTimeMillis(); + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + SqlSession batchSqlSession = null; + //需要通过新增域接口新增的ip集合 + Map groupCount=Maps.newHashMap(); +// AsnCacheUtils.init(true); + List ipCommCfgs=new ArrayList(cfgs.size()); + try{ + batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + + for(BaseIpCfg cfg:cfgs) { + IpCommCfg ipCommCfg=new IpCommCfg(); + BeanUtils.copyProperties(cfg, ipCommCfg); + ipCommCfgs.add(ipCommCfg); + ((IpCommGroupCfgDao) batchSqlSession.getMapper(IpCommGroupCfgDao.class)).insertForBatch(ipCommCfg); + if(send) { + if(groupCount.containsKey(ipCommCfg.getGroupId())) { + groupCount.put(ipCommCfg.getGroupId(), groupCount.get(ipCommCfg.getGroupId())+1); + }else { + groupCount.put(ipCommCfg.getGroupId(), 1); + } + } + + } + if(send) { + if(groupCount.size()>0) { + for(Entry groupId:groupCount.entrySet()) { + policyGroupInfoDao.updateUdFlag(groupId.getKey(), 1,5); + } + + this.send2Maat(ipCommCfgs, Constants.VALID_YES); + } + } + batchSqlSession.commit(); + }finally { + if(batchSqlSession != null){ + batchSqlSession.close(); + } + } + long end=System.currentTimeMillis(); + logger.warn("Save IP finish,cost:"+(end-start)); + cfgs.clear(); + cfgs=null; + } + +} diff --git a/src/main/java/com/nis/web/service/basics/PolicyGroupInfoService.java b/src/main/java/com/nis/web/service/basics/PolicyGroupInfoService.java index 4ccf12ee6..ac8aa5cb3 100644 --- a/src/main/java/com/nis/web/service/basics/PolicyGroupInfoService.java +++ b/src/main/java/com/nis/web/service/basics/PolicyGroupInfoService.java @@ -47,6 +47,10 @@ public class PolicyGroupInfoService extends BaseService{ List list=policyGroupInfoDao.findPolicyByGroupInfoList(ids); return list; } + public List findPolicyByServiceGroupInfoList(String ids) { + List list=policyGroupInfoDao.findPolicyByServiceGroupInfoList(ids); + return list; + } public List findPolicyGroupInfos() { @@ -84,7 +88,7 @@ public class PolicyGroupInfoService extends BaseService{ entity.setCreatorId(UserUtils.getUser().getId()); entity.setCreateTime(createTime); //asn类型从综合服务获取groupId - if(4==entity.getGroupType().intValue()) { + if(4==entity.getGroupType().intValue()||5==entity.getGroupType().intValue()||6==entity.getGroupType().intValue()||7==entity.getGroupType().intValue()) { int serviceGroupId=0; List groupIds= ConfigServiceUtil.getId(2,1); if(groupIds.size()>0) { @@ -173,5 +177,15 @@ public class PolicyGroupInfoService extends BaseService{ public PolicyGroupInfo getGroupInfo(PolicyGroupInfo policyGroupInfo){ return policyGroupInfoDao.getGroupInfo(policyGroupInfo); } - + /** + * 公共组相关功能使用 + */ + public List findPolicyGroupInfosByTypeforUD(Integer type,Integer flag) { + List list=policyGroupInfoDao.findPolicyGroupInfosByTypeForUD(type,flag); + return list; + } + public List findPolicyGroupInfosByTypeforUD(Integer type,Integer flag,Integer limit) { + List list=policyGroupInfoDao.findLimitedPolicyGroupInfosByTypeForUD(type,flag,limit); + return list; + } } diff --git a/src/main/java/com/nis/web/service/basics/UrlCommGroupService.java b/src/main/java/com/nis/web/service/basics/UrlCommGroupService.java new file mode 100644 index 000000000..68efbb42d --- /dev/null +++ b/src/main/java/com/nis/web/service/basics/UrlCommGroupService.java @@ -0,0 +1,153 @@ +package com.nis.web.service.basics; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.apache.ibatis.session.ExecutorType; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.nis.domain.Page; +import com.nis.domain.basics.AsnGroupInfo; +import com.nis.domain.basics.AsnIpCfg; +import com.nis.domain.basics.UrlCommCfg; +import com.nis.domain.configuration.BaseIpCfg; +import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.domain.maat.GroupReuseAddBean; +import com.nis.domain.maat.GroupReuseCfg; +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.GroupCfg; +import com.nis.domain.maat.MaatCfg.IpCfg; +import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; +import com.nis.domain.maat.MaatCfg.StringCfg; +import com.nis.util.ConfigServiceUtil; +import com.nis.util.Constants; +import com.nis.util.StringUtil; +import com.nis.web.dao.CrudDao; +import com.nis.web.dao.basics.UrlCommGroupDao; +import com.nis.web.dao.configuration.IpCfgDao; +import com.nis.web.security.UserUtils; +import com.nis.web.service.CrudService; +import com.nis.web.service.SpringContextHolder; + +@Service +public class UrlCommGroupService extends CrudService, UrlCommCfg>{ + + @Autowired + private UrlCommGroupDao urlCommGroupDao; + + + public Page findPage(Page page, UrlCommCfg entity) { + entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"r")); + entity.setPage(page); + List list=urlCommGroupDao.findAllPageList(entity); + for (int i = 0; i < list.size(); i++) { + String key=list.get(i).getCfgKeywords().replace("***and***", " "); + list.get(i).setCfgKeywords(key); + } + page.setList(list); + return page; + } + + + public List findByPage(String ids) { + List list=urlCommGroupDao.findByPage(ids); + return list; + } + + + + public UrlCommCfg get(Long id ) { + return urlCommGroupDao.get(id); + } + + //新增 insertUrlCommGroupCfg + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void saveUrlCommGroupCfg(CfgIndexInfo entity) { + Date createTime=new Date(); + if(entity.getUrlCommGroupList()!=null) { + for (int i = 0; i < entity.getUrlCommGroupList().size(); i++) { + BeanUtils.copyProperties(entity, entity.getUrlCommGroupList().get(i), new String[]{"cfgId"}); + entity.getUrlCommGroupList().get(i).setRequestId(0); + entity.getUrlCommGroupList().get(i).setClassify("0"); + entity.getUrlCommGroupList().get(i).setAttribute("0"); + entity.getUrlCommGroupList().get(i).setLable("0"); + entity.getUrlCommGroupList().get(i).setIsHexbin(0); + entity.getUrlCommGroupList().get(i).setCreateTime(createTime); + entity.getUrlCommGroupList().get(i).setCreatorId(entity.getCurrentUser().getId()); + entity.getUrlCommGroupList().get(i).setIsValid(Constants.VALID_NO); + entity.getUrlCommGroupList().get(i).setIsAudit(Constants.AUDIT_NOT_YET); + if(entity.getUrlCommGroupList().get(i).getCfgKeywords().contains("***and***")){ + entity.getUrlCommGroupList().get(i).setExprType(1); + }else{ + entity.getUrlCommGroupList().get(i).setExprType(0); + } + urlCommGroupDao.insertUrlCommGroupCfg(entity.getUrlCommGroupList().get(i)); + } +// //修改公共组的标识 +// Integer udFlag=urlCommGroupDao.findUrlUdFlag(Integer.parseInt(entity.getUserRegion3())); +// if(udFlag == 0){ +// urlCommGroupDao.updateUrlUdFlag(Integer.parseInt(entity.getUserRegion3()), 1); +// } + } + } + + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void update(UrlCommCfg entity){ + Date editTime=new Date(); + entity.setIsValid(0); + entity.setIsAudit(0); + entity.setEditTime(editTime); + entity.setEditorId(entity.getCurrentUser().getId()); + if(entity.getCfgKeywords().contains("***and***")){ + entity.setExprType(1); + }else{ + entity.setExprType(0); + } + urlCommGroupDao.update(entity); + } + + + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void delete(String ids) { + + urlCommGroupDao.delete(ids); + } + + public List getByIds(String ids) { + if(ids==null) { + throw new RuntimeException("ids is null!"); + } + return urlCommGroupDao.getByIds(ids); + } + + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void audit(UrlCommCfg urlGroupCfg,Integer isAudit,Integer isValid) { + + if(!StringUtil.isEmpty(urlGroupCfg)){ + urlGroupCfg.setIsValid(isValid); + urlGroupCfg.setIsAudit(isAudit); + urlGroupCfg.setAuditorId(UserUtils.getUser().getId()); + urlGroupCfg.setAuditTime(new Date()); + + urlCommGroupDao.update(urlGroupCfg); + } + //下发配置时改变公共组udFlag标识 + //查询有效的url配置个数 + Integer groupCount=urlCommGroupDao.getGroupIdCount(urlGroupCfg.getUserRegion3()); + if(groupCount>0){//udFlag 设置为1 + urlCommGroupDao.updateUrlUdFlag(Integer.parseInt(urlGroupCfg.getUserRegion3()), 1); + }else{//udFlag 设置为0 + urlCommGroupDao.updateUrlUdFlag(Integer.parseInt(urlGroupCfg.getUserRegion3()), 0); + } + } + +} diff --git a/src/main/java/com/nis/web/service/configuration/CommonPolicyService.java b/src/main/java/com/nis/web/service/configuration/CommonPolicyService.java index 857384b3c..5a72c7f8e 100644 --- a/src/main/java/com/nis/web/service/configuration/CommonPolicyService.java +++ b/src/main/java/com/nis/web/service/configuration/CommonPolicyService.java @@ -274,6 +274,73 @@ public class CommonPolicyService extends CrudService auditMap, + boolean hasData){ + long start=System.currentTimeMillis(); + long end=System.currentTimeMillis(); + long totalSize=0; + + if(page.isLastPage()){ + hasData = false; + } + List regionIds = new ArrayList(); + for(Entry e:auditMap.entrySet()) { + List list=e.getValue(); + for (BaseCfg baseCfg : list) { + regionIds.add(baseCfg.getRegionId()); + } + totalSize=totalSize+list.size(); + + } + start=System.currentTimeMillis(); + logger.warn("复用配置批量失效-数据库状态变更:start()"); + commonPolicyDao.auditCfgBatch( entity.getTableName(), entity,regionIds,null); + end=System.currentTimeMillis(); + logger.warn("复用配置批量失效-数据库状态变更:end("+(end-start)+")"); + + //已经下发过的,调用分组复用配置删除接口 + if(!auditMap.isEmpty()) { + GroupReuseAddBean maatBean = new GroupReuseAddBean(); + List groupReuseList=new ArrayList<>(); + GroupReuseCfg groupReuseCfg=new GroupReuseCfg(); + List ipRegionList=new ArrayList<>(); + for (Integer groupId : auditMap.keySet()) { + ipRegionList.addAll(groupReuseCfgAddRemoveConvert(auditMap.get(groupId),Constants.VALID_NO,groupId)); + } + groupReuseCfg.setIpRegionList(ipRegionList); + groupReuseCfg.setStrRegionList(null); + groupReuseCfg.setNumRegionList(null); + groupReuseList.add(groupReuseCfg); + maatBean.setGroupReuseCfgList(groupReuseList); + maatBean.setAuditTime(new Date()); + maatBean.setCreatorName(UserUtils.getUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.UPDATE_ACTION); + //调用服务接口下发配置数据 + String json=gsonToJson(maatBean); + logger.warn("复用域配置批量取消("+page.getPageNo()+"次):"+ipRegionList.size()); + //logger.info("app协议IP域配置批量取消:"+json); + //调用服务接口下发配置 + logger.warn("复用配置批量失效-下发:start()"); + start=System.currentTimeMillis(); + ToMaatResult result = ConfigServiceUtil.put(json,3); + end=System.currentTimeMillis(); + logger.warn("复用域配置批量取消响应信息:"+result.getMsg()); + logger.warn("复用配置批量失效-下发:end("+(end-start)+")"); + } + return hasData; + } /** * 回调类配置下发 * @param className diff --git a/src/main/resources/service/service_config.xml b/src/main/resources/service/service_config.xml index 117c7d22f..6f3b64029 100644 --- a/src/main/resources/service/service_config.xml +++ b/src/main/resources/service/service_config.xml @@ -421,6 +421,7 @@ + \ No newline at end of file diff --git a/src/main/resources/sql/20190425/ip_common_config.sql b/src/main/resources/sql/20190425/ip_common_config.sql new file mode 100644 index 000000000..d0f0c601f --- /dev/null +++ b/src/main/resources/sql/20190425/ip_common_config.sql @@ -0,0 +1,67 @@ +/* +SQLyog Professional v12.08 (64 bit) +MySQL - 10.2.14-MariaDB : Database - ntc_test +********************************************************************* +*/ + +/*!40101 SET NAMES utf8 */; + +/*!40101 SET SQL_MODE=''*/; + +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; +/*Table structure for table `ip_comm_cfg` */ + +CREATE TABLE `ip_comm_cfg` ( + `cfg_id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键,自增', + `cfg_desc` VARCHAR(128) DEFAULT NULL, + `ip_type` INT(11) NOT NULL COMMENT 'IPV4=4,IPV6=6', + `direction` INT(11) NOT NULL COMMENT '0双向,1单向,默认缺省为双向。', + `protocol` INT(11) NOT NULL COMMENT '6表示tcp,17表示udp,0表示任意', + `protocol_id` INT(11) NOT NULL COMMENT '非0时,maat规范需写入通用IP配置表与通用协议类型配置表 此表固定写0', + `action` INT(11) NOT NULL COMMENT '1:阻断,2:监测, 5: FD 白名单,6:监测白名单,7: FD 监测都白名单,应与业务ID所代表的逻辑相匹配,8-灰名单', + `is_valid` INT(11) NOT NULL COMMENT '0无效,1有效,-1删除\r\n1) 未审核时配置可删除\r\n2) 审核通过,此字段置1\r\n3) 取消审核通过,此字段置0', + `is_audit` INT(11) NOT NULL COMMENT '0未审核,1审核通过,2审核未通过,3取消审核通过\r\n1) 审核未通过,配置可修改\r\n2) 审核通过,配置不可删除,只能取消审核通过', + `creator_id` INT(11) NOT NULL COMMENT '取自sys_user.id', + `create_time` DATETIME NOT NULL, + `editor_id` INT(11) DEFAULT NULL COMMENT '取自sys_user.id', + `edit_time` DATETIME DEFAULT NULL, + `auditor_id` INT(11) DEFAULT NULL COMMENT '取自sys_user.id', + `audit_time` DATETIME DEFAULT NULL, + `service_id` INT(11) NOT NULL COMMENT '参考系统业务类型管理表', + `request_id` INT(11) NOT NULL COMMENT '取自request_info.id', + `compile_id` INT(11) NULL COMMENT '取自服务接口返回的maat配置的编译id,配置初始入库时获取。', + `is_area_effective` INT(11) NOT NULL COMMENT '0否,1是', + `classify` VARCHAR(128) DEFAULT NULL COMMENT '分类id,多个用英文逗号分隔', + `attribute` VARCHAR(128) DEFAULT NULL COMMENT '性质id,多个用英文逗号分隔', + `lable` VARCHAR(128) DEFAULT NULL COMMENT '标签id,多个用英文逗号分隔', + `area_effective_ids` VARCHAR(1024) DEFAULT NULL COMMENT '多个英文逗号分隔', + `function_id` INT(11) NOT NULL, + `cfg_region_code` INT(11) DEFAULT NULL, + `cfg_type` VARCHAR(64) DEFAULT NULL, + `src_ip_pattern` INT(11) DEFAULT NULL COMMENT '源ip格式', + `src_ip_address` VARCHAR(128) NOT NULL, + `src_port_pattern` INT(11) DEFAULT NULL COMMENT '源端口格式', + `src_port` VARCHAR(16) NOT NULL, + `dest_ip_address` VARCHAR(128) NOT NULL, + `dest_port` VARCHAR(16) NOT NULL, + `ratelimit` VARCHAR(10) DEFAULT NULL COMMENT '限速比例,0到1之间', + `user_region1` VARCHAR(1024) DEFAULT NULL COMMENT '预留自定义域1', + `user_region2` VARCHAR(1024) DEFAULT NULL COMMENT '预留自定义域2', + `user_region3` VARCHAR(1024) DEFAULT NULL COMMENT '预留自定义域3', + `user_region4` VARCHAR(1024) DEFAULT NULL COMMENT '预留自定义域4', + `user_region5` VARCHAR(1024) DEFAULT NULL COMMENT '预留自定义域5', + `cancel_request_id` INT(11) DEFAULT NULL COMMENT '取消审核来函', + `dest_ip_pattern` INT(11) DEFAULT NULL COMMENT '目的ip格式', + `dest_port_pattern` INT(11) DEFAULT NULL COMMENT '目的ip格式', + `region_id` INT(11) DEFAULT NULL COMMENT '域ID', + `group_id` INT(11) DEFAULT NULL COMMENT '组ID', + PRIMARY KEY (`cfg_id`) +) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; diff --git a/src/main/resources/sql/20190425/ip_group.sql b/src/main/resources/sql/20190425/ip_group.sql new file mode 100644 index 000000000..94826ff54 --- /dev/null +++ b/src/main/resources/sql/20190425/ip_group.sql @@ -0,0 +1,2 @@ +INSERT INTO function_service_dict (function_id,protocol_id,ACTION,action_code,service_id,service_name,service_desc,is_valid,creator_id,create_time,region_code,is_import,sort) VALUES(110,0,1,'monit',400,'ip_group','ip_group',1,1,NULL,1,1,1); +INSERT INTO function_region_dict (function_id,config_district,config_region_code,config_region_value,config_desc,is_valid,is_maat,region_type,creator_id,create_time,config_ip_type,config_ip_pattern,config_port_pattern,config_direction,config_protocol,config_ip_port_show,config_region_sort,is_import)VALUES(110,'',0,'ip_group_region','ip组IP',1,1,1,1,NOW(),'4,6','1,3;1,3','1;1',0,0,3,1,1); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/include/excel/importModal.jsp b/src/main/webapp/WEB-INF/include/excel/importModal.jsp index 889dd2d42..eb727e2b7 100644 --- a/src/main/webapp/WEB-INF/include/excel/importModal.jsp +++ b/src/main/webapp/WEB-INF/include/excel/importModal.jsp @@ -122,7 +122,7 @@ + (cfg.functionId eq 560)||(cfg.functionId eq 110) }">