(1)审核修正userregion,定时userregion修正

(2)form表单monit修正,list group为空报错修复
(3)删除组下的域配置相关逻辑修正
This commit is contained in:
wangxin
2019-06-14 18:47:31 +08:00
parent 0f06c49b48
commit 1d64a1bc0f
11 changed files with 392 additions and 135 deletions

View File

@@ -860,6 +860,8 @@ public class ConfigConvertUtil {
userRegionMap.put("decrypt_mirror", map);
}
return gsonToJson(userRegionMap);
}else if(serviceId.equals(592)){
return "{}";
}
return null;
}

View File

@@ -201,12 +201,7 @@ public class SchedulerTaskUtil {
if(StringUtils.isNotBlank(cfg.getCommonGroupIds())){//公共分组
//处理自定义域
StringBuffer userRegion = new StringBuffer();
if(cfg.getServiceId().equals(512)){
cfg.setAction(2);
userRegion.append(ConfigConvertUtil.generateCommonGroupDefaultUserRegion(null,cfg.getServiceId()));
}else if(cfg.getServiceId().equals(576)){
userRegion.append(ConfigConvertUtil.generateCommonGroupDefaultUserRegion(null,cfg.getServiceId()));
}
//子配置
Map<String,Object> maatTableMap=ConfigConvertUtil.convertCommonGroupMaatTable(cfg,cfgList);
//IP公共分组

View File

@@ -19,14 +19,13 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.function.Predicate;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.nis.web.service.configuration.*;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
@@ -172,43 +171,6 @@ import com.nis.web.service.basics.IpReuseIpCfgService;
import com.nis.web.service.basics.PolicyGroupInfoService;
import com.nis.web.service.basics.ServiceDictInfoService;
import com.nis.web.service.basics.SysDictInfoService;
import com.nis.web.service.configuration.AppBuiltInFeatureService;
import com.nis.web.service.configuration.AppCfgService;
import com.nis.web.service.configuration.AppMultiFeatureCfgService;
import com.nis.web.service.configuration.AsnPolicyCfgService;
import com.nis.web.service.configuration.AvCfgService;
import com.nis.web.service.configuration.AvContentCfgService;
import com.nis.web.service.configuration.BgpCfgService;
import com.nis.web.service.configuration.CachePolicyService;
import com.nis.web.service.configuration.CommonPolicyService;
import com.nis.web.service.configuration.ComplexStringCfgService;
import com.nis.web.service.configuration.ConfigSynchronizationService;
import com.nis.web.service.configuration.ControlPolicyService;
import com.nis.web.service.configuration.DdosCfgService;
import com.nis.web.service.configuration.DnsIpCfgService;
import com.nis.web.service.configuration.DnsResStrategyService;
import com.nis.web.service.configuration.DomainService;
import com.nis.web.service.configuration.FileTransferCfgService;
import com.nis.web.service.configuration.GroupAreaService;
import com.nis.web.service.configuration.HttpRedirectCfgService;
import com.nis.web.service.configuration.InterceptCfgService;
import com.nis.web.service.configuration.IpAddrPoolCfgService;
import com.nis.web.service.configuration.IpCfgService;
import com.nis.web.service.configuration.IpMultiplexPoolCfgService;
import com.nis.web.service.configuration.MailCfgService;
import com.nis.web.service.configuration.ManipulatPolicyService;
import com.nis.web.service.configuration.NumCfgService;
import com.nis.web.service.configuration.ProxyFileHijackService;
import com.nis.web.service.configuration.ProxyFileInsertScriptService;
import com.nis.web.service.configuration.ProxyFileResponsePageService;
import com.nis.web.service.configuration.ProxyFileStrategyService;
import com.nis.web.service.configuration.ProxyFileTrafficMirrorService;
import com.nis.web.service.configuration.PxyObjKeyringService;
import com.nis.web.service.configuration.PxyObjSpoofingIpPoolService;
import com.nis.web.service.configuration.RequestInfoService;
import com.nis.web.service.configuration.UserManageService;
import com.nis.web.service.configuration.WebsiteCfgService;
import com.nis.web.service.configuration.XmppCfgService;
import com.nis.web.service.configuration.statistics.ConfigureStatisticsService;
import com.nis.web.service.specific.ConfigGroupInfoService;
import com.nis.web.service.specific.SpecificServiceCfgService;
@@ -365,7 +327,8 @@ public class BaseController {
@Autowired
protected CommonGroupManageService commonGroupManageService;
@Autowired
protected ObjectGroupService objectGroupService;
/**
* 管理基础路径
*/
@@ -3971,6 +3934,8 @@ public class BaseController {
||baseCfg.getFunctionId().equals(566)//app ssl
||baseCfg.getFunctionId().equals(567)) {//dk_gl
pageResult=appMultiFeatureCfgService.findAppFeatureIndexList(searchPage,searchAppFeatureIndex);
}else if(baseCfg.getFunctionId().equals(888)){
pageResult=objectGroupService.getPolicyListList(searchPage,searchCfg);
}
return pageResult.getList();
}

View File

@@ -2,19 +2,21 @@ package com.nis.web.controller.configuration;
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.PolicyGroupInfo;
import com.nis.domain.configuration.BaseCfg;
import com.nis.domain.configuration.CachePolicyUserRegion;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ObjGroupCfg;
import com.nis.domain.configuration.template.ObjGroupListTemplate;
import com.nis.exceptions.CallExternalProceduresException;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.LogUtils;
import com.nis.util.StringUtil;
import com.nis.exceptions.ServiceException;
import com.nis.util.*;
import com.nis.util.excel.ImportBigExcel;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
import com.nis.web.service.configuration.ObjectGroupService;
@@ -26,21 +28,18 @@ 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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.util.concurrent.BlockingQueue;
@Controller
@RequestMapping("${adminPath}/objgroup")
public class ObjectGroupController extends BaseController {
@Autowired
private ObjectGroupService objectGroupService;
@RequestMapping(value = { "/list" })
public String list(Model model, @ModelAttribute("cfg") CfgIndexInfo cfg, HttpServletRequest request,
HttpServletResponse response){
@@ -438,4 +437,156 @@ public class ObjectGroupController extends BaseController {
LogUtils.saveLog(request, null, e, null);
}
}
/**
* 批量审核
* @param page
* @param auditType
* @param entity
* @return
*/
public void auditAll(Page page,Integer auditType,CfgIndexInfo 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
CfgIndexInfo searchCfg=new CfgIndexInfo();
if(entity != null && (entity instanceof CfgIndexInfo)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchCfg);
}
auditType = (Integer)Reflections.invokeGetter(entity, "isAudit");
//全部审核通过,只查询当前条件下的所有未审核的配置 -批量审核通过/不通过
if(auditType.equals(1) || auditType.equals(2)) {
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 {
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<Map<String,Object>> serviceList = serviceTemplate.getServiceListByFunctionId(functionId);
for(Map<String,Object> 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字段
String serviceIds=service.get("serviceIds").toString();
auditBatchCfg.setServiceId(Integer.valueOf(serviceIdXml));
auditBatchCfg.setTableName(tableNameXml);
//searchCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchCfg.setTableName(tableNameXml);
if("1".equals(serviceTypeXml)){//maat类配置
if(StringUtils.isNotBlank(serviceIds)) {//公共分组
// 存放域配置类型 及 对应表名
Map<Integer,List<Map<String,Object>>> childrenCfgMap=new HashMap<>();
Map<Integer,List<Map<String,Object>>> childrenUserRegionMap=new HashMap<>();
for(String _serviceId:serviceIds.split(",")){
if(StringUtils.isNotBlank(_serviceId)){
Map<String,Object> subService=serviceTemplate.getServiceListByServiceId(Integer.parseInt(_serviceId)).get(0);
childrenCfgMap.put(Integer.parseInt(_serviceId),(List<Map<String,Object>>)subService.get("cfgList"));
}
}
if(childrenCfgMap.size()>0){
for(Map.Entry e:childrenCfgMap.entrySet()){
boolean hasData = true;
while(hasData){
page.setPageNo(1);
page.setLastPage(false);
searchCfg.setServiceId(Integer.parseInt(e.getKey().toString()));
auditBatchCfg.setServiceId(Integer.parseInt(e.getKey().toString()));
List<CfgIndexInfo> list = getDataList(page,searchCfg,null,null,null); // 通过ServiceId获取cfg_index_info主配置表数据
if(!StringUtil.isEmpty(list)){
//配置生效处理 复用全量下发
if(auditBatchCfg.getIsAudit().equals(1)) {
hasData = configSynchronizationService.auditObjGroupListMaatData(childrenCfgMap,childrenUserRegionMap,page,auditBatchCfg,list,hasData,true);
}else {
List<BaseCfg> BaseCfgList=new ArrayList<>();
if(!StringUtil.isEmpty(list)) {
for (CfgIndexInfo cfg : list) {
BaseCfg baseCfg=new BaseCfg();
BeanUtils.copyProperties(cfg, baseCfg);
BaseCfgList.add(baseCfg);
}
}
if(auditBatchCfg.getIsAudit().equals(2)) {// 配置批量审核不通过
hasData = commonPolicyService.batchUnApproveObjGroupListatData(page, auditBatchCfg, BaseCfgList, hasData);
}else {// 配置失效处理 批量处理
hasData = commonPolicyService.auditObjGroupListMaatData(tableNameXml, page, auditBatchCfg, BaseCfgList, hasData);
}
}
}else{
hasData = false;
}
}
}
}
}
}
}
//批量审核通过时如果没有携带isValid检索条件返回界面需要将isValid置为null
if(!StringUtil.isEmpty(entity)) {
BaseCfg base=(BaseCfg)entity ;
base.setBatchAuditValue("");
base.setBatchValidValue("");
//配置目标状态1 1 生效,isAudit条件置为1有selType条件,且不是isValid不改没有sel改为isValid并且为1
if(base.getIsAudit()==1 && base.getIsValid()==1){
base.setIsAudit(1);
if(!StringUtil.isEmpty(base.getSeltype()) && !base.getSeltype().equals("isValid")) {
base.setIsValid(null);
}else{
base.setIsValid(1);
base.setSeltype("isValid");
}
}
//配置目标状态2 0 不通过,isAudit条件置为2有selType条件,且不是isValid不改没有sel改为isValid并且为0
if(base.getIsAudit()==2 && base.getIsValid()==0){
base.setIsAudit(2);
if(!StringUtil.isEmpty(base.getSeltype()) && !base.getSeltype().equals("isValid")) {
base.setIsValid(null);
}else{
base.setIsValid(0);
base.setSeltype("isValid");
}
}
//配置目标状态3 0 取消
if(base.getIsAudit()==3 && base.getIsValid()==0){
base.setIsAudit(3);
if(!StringUtil.isEmpty(base.getSeltype()) && !base.getSeltype().equals("isValid")) {
base.setIsValid(null);
}else{
base.setIsValid(0);
base.setSeltype("isValid");
}
}
BeanUtils.copyProperties(base, entity);
}
long end=System.currentTimeMillis();
logger.warn("配置批量生效/失效耗时:"+(end-start));
}
}

View File

@@ -1110,16 +1110,29 @@
SELECT
<include refid="ConfigIndex_Column" />
FROM cfg_index_info a
where a.common_group_ids like concat('%,',#{groupIds,jdbcType=VARCHAR},',%')
<trim prefix="WHERE" prefixOverrides="AND">
<if test="groupIds!=null">
AND (
<foreach collection="groupIds.split(',')" index="index" item="item" >
<if test="index==0">
a.common_group_ids like concat('%,',#{item,jdbcType=INTEGER},',%')
</if>
<if test="index!=0">
OR a.common_group_ids like concat('%,',#{item,jdbcType=INTEGER},',%')
</if>
</foreach>
)
</if>
<if test="functionId!=null" >
and function_id=#{functionId,jdbcType=INTEGER}
AND function_id=#{functionId,jdbcType=INTEGER}
</if>
<if test="isValid!=null" >
and is_valid=#{isValid,jdbcType=INTEGER}
AND is_valid=#{isValid,jdbcType=INTEGER}
</if>
<if test="isValid==null" >
and is_valid !=-1
AND is_valid !=-1
</if>
</trim>
</select>
<select id="getObjGroupList" resultMap="ObjMap" parameterType="com.nis.domain.configuration.ObjGroupCfg" >
SELECT

View File

@@ -3332,37 +3332,35 @@ public abstract class BaseService {
//遍历,获取需要下发配置的组
StringBuffer realGroupIds=new StringBuffer();
for(PolicyGroupInfo policyGroupInfo:policyGroupInfos){
//删除的时候
if(policyGroupInfo.getUdFlag().equals(2)){
//if(policyGroupInfo.getUdFlag().equals(2)){
realGroupIds.append(policyGroupInfo.getServiceGroupId()).append(",");
//}
//所有域都删除的时候
if(policyGroupInfo.getUdFlag().equals(0)){
if(policyGroupInfo.getGroupType().equals(Constants.IP_OBJ_GROUP_TYPE)){
if(policyGroupInfo.getIsValid().equals(0)){
ipDeletedGroups.add(policyGroupInfo.getServiceGroupId().toString());
}
}
if(policyGroupInfo.getGroupType().equals(Constants.URL_OBJ_GROUP_TYPE)){
if(policyGroupInfo.getIsValid().equals(0)){
urlDeletedGroups.add(policyGroupInfo.getServiceGroupId().toString());
}
}
if(policyGroupInfo.getGroupType().equals(Constants.SUBID_OBJ_GROUP_TYPE)){
if(policyGroupInfo.getIsValid().equals(0)){
subIdDeletedGroups.add(policyGroupInfo.getServiceGroupId().toString());
}
}
if(policyGroupInfo.getGroupType().equals(Constants.DOMAIN_OBJ_GROUP_TYPE)){
if(policyGroupInfo.getIsValid().equals(0)){
domainDeletedGroups.add(policyGroupInfo.getServiceGroupId().toString());
}
}
}
}
if(realGroupIds.toString().endsWith(",")){
realGroupIds.deleteCharAt(realGroupIds.toString().length()-1);
}
List<CfgIndexInfo> toUpdateCfgIndexInfos=new ArrayList<>();
List<CfgIndexInfo> toCancelCfgIndexInfos=new ArrayList<>();
//没有
if(StringUtils.isBlank(realGroupIds.toString())){
return true;
}
//查询cfg_index_info表获取所有用到了这个group_id的非删除配置
List<CfgIndexInfo> cfgIndexInfos=commonPolicyDao.getObjGroupListByGroupIds(realGroupIds.toString(),null,null);
@@ -3404,10 +3402,14 @@ public abstract class BaseService {
if(CollectionUtils.isEmpty(cfgIndexInfo.getIpCommGroupCfgList())&&
CollectionUtils.isEmpty(cfgIndexInfo.getUrlCommGroupList())&&CollectionUtils.isEmpty(cfgIndexInfo.getScriberIdCommGroupList())&&
CollectionUtils.isEmpty(cfgIndexInfo.getDomainCommGroupList())){
cfgIndexInfo.setCommonGroupIds("");
if(cfgIndexInfo.getIsValid()==Constants.VALID_NO){//未生效
toUpdateCfgIndexInfos.add(cfgIndexInfo);
}else{//生效
cfgIndexInfo.setIsValid(Constants.VALID_NO);
cfgIndexInfo.setIsAudit(Constants.AUDIT_NOT_YES);
cfgIndexInfo.setCommonGroupIds("");
toCancelCfgIndexInfos.add(cfgIndexInfo);
}
}else if(!oldCommonGroupIds.equals(cfgIndexInfo.getCommonGroupIds())){
toUpdateCfgIndexInfos.add(cfgIndexInfo);
//commonPolicyDao.updateCfgIndexCommonGroupIds(cfgIndexInfo);
@@ -3454,14 +3456,8 @@ public abstract class BaseService {
if(service.containsKey("userRegionList")){
//Map<String,Object> userregionMap=new HashMap<>();
//userRegionList=(List<Map<String, Object>>) service.get("userRegionList");
if(serviceId.equals(576)){
String _userregion=ConfigConvertUtil.generateCommonGroupDefaultUserRegion(interceptUserRegionMap,serviceId);
userRegion.append(_userregion);
}else if(serviceId.equals(512)){
cfgIndexInfo.setAction(2);
String _userregion=ConfigConvertUtil.generateCommonGroupDefaultUserRegion(interceptUserRegionMap,serviceId);
userRegion.append(_userregion);
}
}
}
compileIds.add(cfgIndexInfo.getCompileId());
@@ -3539,7 +3535,7 @@ public abstract class BaseService {
maatBean.setVersion(Constants.MAAT_VERSION);
maatBean.setOpAction(Constants.UPDATE_ACTION);
}
}else if(cfgIndexInfo.getIsValid().equals(Constants.VALID_NO)){//生效的配置置为了失效
}else if(cfgIndexInfo.getIsValid().equals(Constants.VALID_NO)&&cfgIndexInfo.getIsAudit().equals(Constants.AUDIT_NOT_YES)){//生效的配置 置为了失效
maatCfg.setCompileId(cfgIndexInfo.getCompileId());
maatCfg.setServiceId(cfgIndexInfo.getServiceId());
maatCfg.setIsValid(0);//无效

View File

@@ -203,6 +203,87 @@ public class CommonPolicyService extends CrudService<WebsiteCfgDao, CfgIndexInfo
}
return hasData;
}
/**
* ObjGroupList配置批量失效
* @param tableName
* @param page
* @param entity
* @param list
* @param hasData
* @return
* @throws NoSuchFieldException
* @throws SecurityException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public boolean auditObjGroupListMaatData(String tableName,Page page,
BaseCfg entity,
List<BaseCfg> list,
boolean hasData)throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
long start=System.currentTimeMillis();
long end=System.currentTimeMillis();
ToMaatBean maatBean;
MaatCfg maatCfg;
List<MaatCfg> configCompileList;
maatBean = new ToMaatBean();
configCompileList = new ArrayList();
List<Integer> compileIds = new ArrayList();
List<String> spoofingPoolCfgIds = new ArrayList();
for(BaseCfg cfg:list){
compileIds.add(cfg.getCompileId());
}
if(!StringUtil.isEmpty(compileIds) && !StringUtil.isEmpty(entity.getTableName())) {
List auditHttpCompileIds= new ArrayList();
List deleteHttpCompileIds= new ArrayList();
if(!StringUtil.isEmpty(auditHttpCompileIds)) {
commonPolicyDao.auditCfgBatch("cfg_index_info", entity,auditHttpCompileIds,null);
commonPolicyDao.auditCfgBatch("http_url_cfg", entity,auditHttpCompileIds,null);
}
if(!StringUtil.isEmpty(deleteHttpCompileIds)) {
commonPolicyDao.deleteHttpUrlCfg("cfg_index_info", entity,deleteHttpCompileIds);
commonPolicyDao.deleteHttpUrlCfg("http_url_cfg", entity,deleteHttpCompileIds);
}
commonPolicyDao.auditCfgBatch( entity.getTableName(), entity,compileIds,null);
//更新各配置定时任务信息
handelScheduleCfg(list, entity.getTableName(),entity);
}
commonPolicyDao.auditCfgBatch( tableName, entity,compileIds,null);
for(BaseCfg cfg:list){
maatCfg = new MaatCfg();
maatCfg.setCompileId(cfg.getCompileId());
maatCfg.setServiceId(cfg.getServiceId());
maatCfg.setIsValid(0);//无效
configCompileList.add(maatCfg);
}
page.setList(list);
if(page.isLastPage()){
hasData = false;
}
if(!StringUtil.isEmpty(configCompileList.size())){
maatBean.setConfigCompileList(configCompileList);
maatBean.setAuditTime(entity.getAuditTime());
maatBean.setCreatorName(entity.getCurrentUser().getName());
maatBean.setVersion(Constants.MAAT_VERSION);
maatBean.setOpAction(Constants.UPDATE_ACTION);
//调用服务接口取消配置
String json=gsonToJson(maatBean);
if(!StringUtil.isEmpty(list)) {
logger.warn("批量配置取消("+page.getPageNo()+"次)个数:"+list.size());
}
//调用服务接口下发配置
logger.warn("Maat配置批量失效-下发start()");
//logger.warn("Maat配置批量失效-下发start()"+json);
start=System.currentTimeMillis();
ToMaatResult result = ConfigServiceUtil.put(json,1);
end=System.currentTimeMillis();
logger.warn("配置取消配置响应信息:"+result.getMsg());
logger.warn("Maat配置批量失效-下发end("+(end-start)+")");
}
return hasData;
}
public List<IpPortCfg> getIpDropList(String tabName,List compileIds){
return synchronizationDao.getIpDropList(tabName, compileIds);
}
@@ -590,6 +671,40 @@ public class CommonPolicyService extends CrudService<WebsiteCfgDao, CfgIndexInfo
}
}
// 4.判断是否是当前检索条件下最后一页数据 并返回结果
page.setList(list);
if(page.isLastPage()){
hasData = false;
}
return hasData;
}
/**
* ObjGroupList配置批量审核不通过
* @param page
* @param entity // 保存要审核的状态类
* @param list // 主配置表数据(在调用前查出)
* @param hasData // 标识是否还有数据
* @return
*/
public boolean batchUnApproveObjGroupListatData(Page page, BaseCfg entity,
List<BaseCfg> list, boolean hasData) {
// 1.获取所有配置的编译ID
List<Integer> compileIds = new ArrayList();
List<String> spoofingPoolCfgIds = new ArrayList();
for(BaseCfg cfg:list){
compileIds.add(cfg.getCompileId());
}
// 2.更新配置审核状态(主表)
if(!StringUtil.isEmpty(compileIds) && !StringUtil.isEmpty(entity.getTableName())) {
commonPolicyDao.auditCfgBatch( entity.getTableName(), entity,compileIds,null); // 批量审核并修改配置审核状态(主表)
//更新各配置定时任务信息
handelScheduleCfg(list, entity.getTableName(),entity);
}
// 4.判断是否是当前检索条件下最后一页数据 并返回结果
page.setList(list);
if(page.isLastPage()){

View File

@@ -178,15 +178,21 @@ public class ConfigSynchronizationService extends BaseService{
}
/**
* 处理ntc业务maat类配置
* @param serviceId
* @param cfgList
* @param userRegionList
* @param page
* @param entity
* @param request
* @param response
* @throws SecurityException
* @param isUpdateCfg
* @param tableName
* @throws NoSuchFieldException
* @throws IllegalAccessException
* @throws SecurityException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public void handleNtcMaatData(List<Map<String,Object>>cfgList,List<Map<String,Object>>userRegionList,
Page<T> page,BaseCfg entity,HttpServletRequest request,HttpServletResponse response,
@@ -2280,8 +2286,6 @@ public class ConfigSynchronizationService extends BaseService{
}
ind++;
}
}else{
logger.info("全量同步未知业务");
hasData = false;
@@ -2379,7 +2383,7 @@ public class ConfigSynchronizationService extends BaseService{
cfg.setDomainCommGroupList(commIds);
}
}
compileIds.add(cfg.getCompileId());
}
}
@@ -2414,7 +2418,7 @@ public class ConfigSynchronizationService extends BaseService{
}
//Intercept Policy、http(s) 监测 、http(s) 白名单
if("HTTPS".equalsIgnoreCase(entity.getUserRegion1())||"INTERCEPT".equalsIgnoreCase(entity.getUserRegion1())&&userRegion.toString().length()==0) {
if("HTTPS".equalsIgnoreCase(cfg.getUserRegion1())||"INTERCEPT".equalsIgnoreCase(cfg.getUserRegion1())&&userRegion.toString().length()==0) {
userRegion.append("{}");
}
//子配置
@@ -2426,6 +2430,7 @@ public class ConfigSynchronizationService extends BaseService{
if(CollectionUtils.isNotEmpty(cfg.getIpCommGroupCfgList())){
IpPortCfg _cfg = new IpPortCfg();
BeanUtils.copyProperties(cfg, _cfg, new String[]{"cfgId"});
_cfg.setIsValid(entity.getIsValid());
Map<String,List> map = ConfigConvertUtil.objGroupCfgConvert(ipRegionList,cfg.getIpCommGroupCfgList(),1,_cfg,groupRelationList,maatTableMap,groupIdSet);
groupRelationList=map.get("groupList");
ipRegionList=map.get("dstList");
@@ -2438,6 +2443,7 @@ public class ConfigSynchronizationService extends BaseService{
if(CollectionUtils.isNotEmpty(cfg.getUrlCommGroupList())){
CommonStringCfg _cfg = new CommonStringCfg();
BeanUtils.copyProperties(cfg, _cfg, new String[]{"cfgId"});
_cfg.setIsValid(entity.getIsValid());
Map<String,List> map =ConfigConvertUtil.objGroupCfgConvert(strRegionList,cfg.getUrlCommGroupList(),2,_cfg,groupRelationList,maatTableMap,groupIdSet);
groupRelationList=map.get("groupList");
strRegionList=map.get("dstList");
@@ -2446,7 +2452,7 @@ public class ConfigSynchronizationService extends BaseService{
if(CollectionUtils.isNotEmpty(cfg.getScriberIdCommGroupList())){
CommonStringCfg _cfg = new CommonStringCfg();
BeanUtils.copyProperties(cfg, _cfg, new String[]{"cfgId"});
_cfg.setIsValid(entity.getIsValid());
Map<String,List> map =ConfigConvertUtil.objGroupCfgConvert(strRegionList,cfg.getScriberIdCommGroupList(),2,_cfg,groupRelationList,maatTableMap,groupIdSet);
groupRelationList=map.get("groupList");
strRegionList=map.get("dstList");
@@ -2456,7 +2462,7 @@ public class ConfigSynchronizationService extends BaseService{
if(CollectionUtils.isNotEmpty(cfg.getDomainCommGroupList())){
CommonStringCfg _cfg = new CommonStringCfg();
BeanUtils.copyProperties(cfg, _cfg, new String[]{"cfgId",});
_cfg.setIsValid(entity.getIsValid());
Map<String,List> map =ConfigConvertUtil.objGroupCfgConvert(strRegionList,cfg.getDomainCommGroupList(),2,_cfg,groupRelationList,maatTableMap,groupIdSet);
groupRelationList=map.get("groupList");
strRegionList=map.get("dstList");

View File

@@ -1,5 +1,6 @@
package com.nis.web.service.configuration;
import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
import com.nis.domain.basics.*;
@@ -9,9 +10,7 @@ import com.nis.domain.maat.ToMaatBean;
import com.nis.domain.maat.ToMaatResult;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.*;
import com.nis.web.dao.basics.IpCommGroupCfgDao;
import com.nis.web.dao.basics.PolicyGroupInfoDao;
import com.nis.web.dao.basics.UrlCommGroupDao;
import com.nis.web.dao.basics.*;
import com.nis.web.dao.configuration.AreaIpCfgDao;
import com.nis.web.dao.configuration.CommonPolicyDao;
import com.nis.web.dao.configuration.ObjectGroupDao;
@@ -43,6 +42,10 @@ public class ObjectGroupService extends BaseService {
private IpCommGroupCfgDao ipCommGroupCfgDao;
@Autowired
private UrlCommGroupDao urlCommGroupCfgDao;
@Autowired
private ScriberIdCommGroupDao scriberIdCommGroupDao;
@Autowired
private DomainCommGroupDao domainCommGroupDao;
public Page getPolicyListList(Page searchPage, CfgIndexInfo searchCfg) {
// 生成数据权限过滤条件dsf为dataScopeFilter的简写在xml中使用 ${sqlMap.dsf}调用权限SQL
searchCfg.getSqlMap().put("dsf", configScopeFilter(searchCfg.getCurrentUser(),"a"));
@@ -474,7 +477,10 @@ public class ObjectGroupService extends BaseService {
}
//删除之后恢复组的ud_flag
int size = ipCommGroupCfgDao.getCfgInfoByGroupIds(serviceGroupIds.toString());
if(size==0){
int size1 = urlCommGroupCfgDao.getCfgInfoByGroupIds(serviceGroupIds.toString());
int size2 = scriberIdCommGroupDao.getCfgInfoByGroupIds(serviceGroupIds.toString());
int size3 = domainCommGroupDao.getCfgInfoByGroupIds(serviceGroupIds.toString());
if((size+size1+size2+size3)==0){
policyGroupInfoDao.updateUdFlag(serviceGroupIds.toString(),0,null);
}else{
policyGroupInfoDao.updateUdFlag(serviceGroupIds.toString(),1,null);
@@ -653,4 +659,7 @@ public class ObjectGroupService extends BaseService {
page.setList(list);
return page;
}
public void saveAndSend(FunctionRegionDict regionDict, FunctionServiceDict serviceDict, List<BaseStringCfg<?>> stringCfgs) {
}
}

View File

@@ -240,6 +240,9 @@ var delContent = function(contentClassName, addBtnClassName) {
<c:when test="${service.action eq 16}">
<spring:message code="block"/>
</c:when>
<c:when test="${service.action eq 1}">
<spring:message code="monitor"/>
</c:when>
<c:otherwise>
<spring:message code="${service.actionCode }"/>
</c:otherwise>
@@ -317,7 +320,7 @@ var delContent = function(contentClassName, addBtnClassName) {
<div class="row">
<div class="col-md-6 ipGroup">
<div class="form-group ">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="ip_group"/></label>
<label class="control-label col-md-3"><spring:message code="ip_group"/></label>
<div class="col-md-6">
<select name="ipGroup" data-live-search="true" class="selectpicker form-control form-control" multiple data-live-search="true">
<c:forEach items="${ipGroups}" var="ipGroup">
@@ -330,7 +333,7 @@ var delContent = function(contentClassName, addBtnClassName) {
</div>
<div class="col-md-6 subscribeIdGroup">
<div class="form-group ">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="subscribe_id_group"/></label>
<label class="control-label col-md-3"><spring:message code="subscribe_id_group"/></label>
<div class="col-md-6">
<select name="subscribeIdGroup" data-live-search="true" class="selectpicker form-control form-control " multiple data-live-search="true">
<c:forEach items="${subscribeIdGroups}" var="subscribeIdGroup">
@@ -346,7 +349,7 @@ var delContent = function(contentClassName, addBtnClassName) {
<div class="row">
<div class="col-md-6 urlGroup">
<div class="form-group ">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="url_group"/></label>
<label class="control-label col-md-3"><spring:message code="url_group"/></label>
<div class="col-md-6">
<select name="urlGroup" data-live-search="true" class="selectpicker form-control form-control " multiple data-live-search="true" >
<c:forEach items="${urlGroups}" var="urlGroup">
@@ -359,7 +362,7 @@ var delContent = function(contentClassName, addBtnClassName) {
</div>
<div class="col-md-6 domainGroup">
<div class="form-group ">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="domain_group"/></label>
<label class="control-label col-md-3"><spring:message code="domain_group"/></label>
<div class="col-md-6">
<select name="domainGroup" data-live-search="true" class="selectpicker form-control " multiple data-live-search="true">
<c:forEach items="${domainGroups}" var="domainGroup">

View File

@@ -55,6 +55,7 @@
if($("td[commonGroupIds]")){
var groups=[];
$("td[commonGroupIds]").each(function(){
if($(this).attr("commonGroupIds")!=""){
var json=JSON.parse($(this).attr("commonGroupIds"));
if(json.ipGroup){
groups.push(json.ipGroup.substring(1,json.ipGroup.length-1));
@@ -68,6 +69,7 @@
if(json.domainGroup){
groups.push(json.domainGroup.substring(1,json.domainGroup.length-1));
}
}
});
if(groups.length>0){
$.post("${ctx}/objgroup/ajaxGetNames",{"groupIds":groups.join('\|')},function(data){