配置全量下发代码提公共方法

This commit is contained in:
DuanDongmei
2018-11-27 16:17:51 +08:00
parent 5618531c6d
commit 64a42af4c1

View File

@@ -62,15 +62,6 @@ import com.nis.web.service.BaseService;
public class ConfigSynchronizationService extends BaseService{
@Autowired
protected ConfigSynchronizationDao configSynchronizationDao;
private ToMaatBean maatBean;
private MaatCfg maatCfg;
private List<MaatCfg> configCompileList;
private List<GroupCfg> groupRelationList;
private List<IpCfg> ipRegionList;
private List<StringCfg> strRegionList;
private List<NumBoundaryCfg> numRegionList;
private List<DigestCfg> digestRegionList;
private List<IpCfg> areaIpRegionList;
/**
* 配置全量更新下发
@@ -139,212 +130,247 @@ public class ConfigSynchronizationService extends BaseService{
boolean hasData = true;
while(hasData){
List<IpPortCfg> ipList = new ArrayList();
List<BaseStringCfg> strList = new ArrayList();
List<ComplexkeywordCfg> complexStrList = new ArrayList();
List<com.nis.domain.configuration.NumBoundaryCfg> numList = new ArrayList();
List<FileDigestCfg> fileList = new ArrayList();
maatBean = new ToMaatBean();
configCompileList = new ArrayList();
entity.setPage(page);
List<CfgIndexInfo> list = configSynchronizationDao.getCfgIndexList(entity);
if(!StringUtil.isEmpty(list)){
List<Integer> compileIds = new ArrayList();
for(CfgIndexInfo cfg:list){
compileIds.add(cfg.getCompileId());
}
if(cfgList!=null){
for(Map<String,Object> m:cfgList){
String tableName = m.get("tableName").toString();
if("1".equals(m.get("cfgType"))){
if(tableName.equals("asn_ip_cfg")){
}else{
ipList.addAll(configSynchronizationDao.getIpPortList(tableName, compileIds));
}
}else if("2".equals(m.get("cfgType"))){
strList.addAll(configSynchronizationDao.getStrList(tableName,compileIds));
}else if("3".equals(m.get("cfgType"))){
complexStrList.addAll(configSynchronizationDao.getComplexStrList(tableName,compileIds));
}else if("4".equals(m.get("cfgType"))){
}else if("5".equals(m.get("cfgType"))){
fileList.addAll(configSynchronizationDao.getFileDigestList(tableName, compileIds));
}
}
}
for(CfgIndexInfo cfg:list){
maatCfg = new MaatCfg();
maatCfg.initDefaultValue();
groupRelationList = new ArrayList();
ipRegionList = new ArrayList();
strRegionList = new ArrayList();
numRegionList = new ArrayList();
digestRegionList = new ArrayList();
areaIpRegionList = new ArrayList();
List<IpPortCfg> list1 = new ArrayList();
List<BaseStringCfg> list2 = new ArrayList();
List<ComplexkeywordCfg> list3 = new ArrayList();
List<com.nis.domain.configuration.NumBoundaryCfg> list4 = new ArrayList();
List<FileDigestCfg> list5 = new ArrayList();
String userRegion = "";
//处理自定义域
if(userRegionList!=null){
for(Map<String,Object> n:userRegionList){
Object userRegionPosition = n.get("userRegionPosition");
if(userRegionPosition!=null && (userRegionPosition.toString().equals("1")||userRegionPosition.toString().equals("0"))){
//通过反射机制获取自定义域字段值
String regionColumn = n.get("regionColumn").toString();
Class aClass = null;
if(userRegionPosition.toString().equals(("0"))){
aClass = BaseCfg.class;
}else{
aClass = CfgIndexInfo.class;
}
Object value = "";
if(entity.getServiceId().equals(517)||entity.getServiceId().equals(560)){//代理替换策略
String[] regionArray = regionColumn.split(",");
for(int r=0;r<regionArray.length;r++){
Field field = aClass.getDeclaredField(regionArray[r]);
field.setAccessible(true);
value += "/"+replaceContentEscape(field.get(cfg)==null?"":field.get(cfg).toString());//自定义域以/分割时的处理
}
userRegion += n.get("regionKey")+"="+value+Constants.USER_REGION_SPLIT;
}else{
Field field = aClass.getDeclaredField(regionColumn);
field.setAccessible(true);
value = field.get(cfg);
if(!StringUtil.isEmpty(value)){
if(StringUtil.isEmpty(n.get("regionKey"))){
userRegion = value.toString();
}else{
userRegion += n.get("regionKey")+"="+value+Constants.USER_REGION_SPLIT;
}
}
}
}
// System.out.println("userRegionList:"+n.get("regionKey")+","+n.get("regionColumn")+","+n.get("handleType"));
}
if(userRegion.endsWith(Constants.USER_REGION_SPLIT)){
userRegion = userRegion.substring(0, userRegion.length()-1);
}
}
for(IpPortCfg ip:ipList){
if(ip.getCompileId().equals(cfg.getCompileId())){
list1.add(ip);
}
}
for(BaseStringCfg str:strList){
if(str.getCompileId().equals(cfg.getCompileId())){
list2.add(str);
if(entity.getServiceId().equals(513)||entity.getServiceId().equals(515)){
if(userRegion.equals("")){
userRegion += Constants.USERREGION_DOMAIN_STR+"="+str.getCfgKeywords();
}else{
userRegion += Constants.USER_REGION_SPLIT+Constants.USERREGION_DOMAIN_STR+"="+str.getCfgKeywords();
}
}
}
}
for(ComplexkeywordCfg str:complexStrList){
if(str.getCompileId().equals(cfg.getCompileId())){
list3.add(str);
if(entity.getServiceId().equals(129) && str.getDistrict()!=null){//http监测
String dictValue = DictUtils.getDictCode(Constants.HTTP_HEADER_DICT_MODULE, str.getDistrict());
if(StringUtil.isEmpty(dictValue) || dictValue.equals("默认")){
if(userRegion.equals("")){
userRegion += Constants.HTTP_HEADER_USER_REGION_KEY+"="+str.getDistrict();
}else{
userRegion += Constants.USER_REGION_SPLIT+Constants.HTTP_HEADER_USER_REGION_KEY+"="+str.getDistrict();
}
}
}
}
}
for(com.nis.domain.configuration.NumBoundaryCfg num:numList){
if(num.getCompileId().equals(cfg.getCompileId())){
list4.add(num);
}
}
for(FileDigestCfg file:fileList){
if(file.getCompileId().equals(cfg.getCompileId())){
list5.add(file);
}
}
if(list1.size()>0){
ipList.removeAll(list1);
Map<String,List> map = cfgConvert(ipRegionList,list1,1,cfg,groupRelationList);
groupRelationList=map.get("groupList");
ipRegionList=map.get("dstList");
if(map.get("numRegionList")!=null){
numRegionList.addAll(map.get("numRegionList"));
}
}
if(list2.size()>0){
strList.removeAll(list2);
Map<String,List> map = cfgConvert(strRegionList,list2,2,cfg,groupRelationList);
groupRelationList=map.get("groupList");
strRegionList=map.get("dstList");
}
if(list3.size()>0){
complexStrList.removeAll(list3);
Map<String,List> map = cfgConvert(strRegionList,list3,3,cfg,groupRelationList);
groupRelationList=map.get("groupList");
strRegionList=map.get("dstList");
}
if(list4.size()>0){
numList.removeAll(list4);
Map<String,List> map = cfgConvert(numRegionList,list4,4,cfg,groupRelationList);
groupRelationList=map.get("groupList");
numRegionList=map.get("dstList");
}
if(list5.size()>0){
fileList.removeAll(list5);
Map<String,List> map = cfgConvert(digestRegionList,list5,5,cfg,groupRelationList);
groupRelationList=map.get("groupList");
digestRegionList=map.get("dstList");
}
BeanUtils.copyProperties(cfg, maatCfg);
maatCfg.setAction(cfg.getAction());
maatCfg.setAuditTime(cfg.getAuditTime());
maatCfg.setIpRegionList(ipRegionList);
maatCfg.setStrRegionList(strRegionList);
maatCfg.setNumRegionList(numRegionList);
maatCfg.setDigestRegionList(digestRegionList);
maatCfg.setGroupRelationList(groupRelationList);
maatCfg.setGroupNum(groupRelationList.size());
maatCfg.setAreaIpRegionList(areaIpRegionList);
maatCfg.setIsValid(cfg.getIsValid());
if(!StringUtil.isEmpty(userRegion)){
maatCfg.setUserRegion(userRegion);
}
configCompileList.add(maatCfg);
}
page.setList(list);
if(page.isLastPage()){
hasData = false;
}else{
hasData=auditNtcMaatData(cfgList,userRegionList,page,entity,list,hasData,isUpdateCfg);
if(hasData) {
page.setPageNo(page.getNext());
}
if(!StringUtil.isEmpty(configCompileList.size())){
maatBean.setConfigCompileList(configCompileList);
maatBean.setAuditTime(new Date());
maatBean.setCreatorName(UserUtils.getUser().getName());
maatBean.setVersion(Constants.MAAT_VERSION);
maatBean.setOpAction(Constants.INSERT_ACTION);
String json=gsonToJson(maatBean);
// System.out.println(json);
//调用服务接口配置全量更新
ToMaatResult result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
}
}else{
hasData = false;
}
}
}
/**
* MAAT配置批量下发
* @param cfgList
* @param userRegionList
* @param page
* @param entity
* @param list
* @param hasData
* @param isUpdateCfg 业务配置全部生效时需同步更新库表配置状态
* @return
* @throws NoSuchFieldException
* @throws SecurityException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public boolean auditNtcMaatData(List<Map<String,Object>> cfgList,
List<Map<String,Object>> userRegionList,
Page page,
BaseCfg entity,
List<CfgIndexInfo> list,
boolean hasData,
boolean isUpdateCfg)throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
ToMaatBean maatBean;
MaatCfg maatCfg;
List<MaatCfg> configCompileList;
List<GroupCfg> groupRelationList;
List<IpCfg> ipRegionList;
List<StringCfg> strRegionList;
List<NumBoundaryCfg> numRegionList;
List<DigestCfg> digestRegionList;
List<IpCfg> areaIpRegionList;
List<IpPortCfg> ipList = new ArrayList();
List<BaseStringCfg> strList = new ArrayList();
List<ComplexkeywordCfg> complexStrList = new ArrayList();
List<com.nis.domain.configuration.NumBoundaryCfg> numList = new ArrayList();
List<FileDigestCfg> fileList = new ArrayList();
maatBean = new ToMaatBean();
configCompileList = new ArrayList();
List<Integer> compileIds = new ArrayList();
for(CfgIndexInfo cfg:list){
compileIds.add(cfg.getCompileId());
}
if(cfgList!=null){
for(Map<String,Object> m:cfgList){
String tableName = m.get("tableName").toString();
if("1".equals(m.get("cfgType"))){
if(tableName.equals("asn_ip_cfg")){
}else{
ipList.addAll(configSynchronizationDao.getIpPortList(tableName, compileIds));
}
}else if("2".equals(m.get("cfgType"))){
strList.addAll(configSynchronizationDao.getStrList(tableName,compileIds));
}else if("3".equals(m.get("cfgType"))){
complexStrList.addAll(configSynchronizationDao.getComplexStrList(tableName,compileIds));
}else if("4".equals(m.get("cfgType"))){
}else if("5".equals(m.get("cfgType"))){
fileList.addAll(configSynchronizationDao.getFileDigestList(tableName, compileIds));
}
}
}
for(CfgIndexInfo cfg:list){
maatCfg = new MaatCfg();
maatCfg.initDefaultValue();
groupRelationList = new ArrayList();
ipRegionList = new ArrayList();
strRegionList = new ArrayList();
numRegionList = new ArrayList();
digestRegionList = new ArrayList();
areaIpRegionList = new ArrayList();
List<IpPortCfg> list1 = new ArrayList();
List<BaseStringCfg> list2 = new ArrayList();
List<ComplexkeywordCfg> list3 = new ArrayList();
List<com.nis.domain.configuration.NumBoundaryCfg> list4 = new ArrayList();
List<FileDigestCfg> list5 = new ArrayList();
String userRegion = "";
//处理自定义域
if(userRegionList!=null){
for(Map<String,Object> n:userRegionList){
Object userRegionPosition = n.get("userRegionPosition");
if(userRegionPosition!=null && (userRegionPosition.toString().equals("1")||userRegionPosition.toString().equals("0"))){
//通过反射机制获取自定义域字段值
String regionColumn = n.get("regionColumn").toString();
Class aClass = null;
if(userRegionPosition.toString().equals(("0"))){
aClass = BaseCfg.class;
}else{
aClass = CfgIndexInfo.class;
}
Object value = "";
if(entity.getServiceId().equals(517)||entity.getServiceId().equals(560)){//代理替换策略
String[] regionArray = regionColumn.split(",");
for(int r=0;r<regionArray.length;r++){
Field field = aClass.getDeclaredField(regionArray[r]);
field.setAccessible(true);
value += "/"+replaceContentEscape(field.get(cfg)==null?"":field.get(cfg).toString());//自定义域以/分割时的处理
}
userRegion += n.get("regionKey")+"="+value+Constants.USER_REGION_SPLIT;
}else{
Field field = aClass.getDeclaredField(regionColumn);
field.setAccessible(true);
value = field.get(cfg);
if(!StringUtil.isEmpty(value)){
if(StringUtil.isEmpty(n.get("regionKey"))){
userRegion = value.toString();
}else{
userRegion += n.get("regionKey")+"="+value+Constants.USER_REGION_SPLIT;
}
}
}
}
// System.out.println("userRegionList:"+n.get("regionKey")+","+n.get("regionColumn")+","+n.get("handleType"));
}
if(userRegion.endsWith(Constants.USER_REGION_SPLIT)){
userRegion = userRegion.substring(0, userRegion.length()-1);
}
}
for(IpPortCfg ip:ipList){
if(ip.getCompileId().equals(cfg.getCompileId())){
list1.add(ip);
}
}
for(BaseStringCfg str:strList){
if(str.getCompileId().equals(cfg.getCompileId())){
list2.add(str);
if(entity.getServiceId().equals(513)||entity.getServiceId().equals(515)){
if(userRegion.equals("")){
userRegion += Constants.USERREGION_DOMAIN_STR+"="+str.getCfgKeywords();
}else{
userRegion += Constants.USER_REGION_SPLIT+Constants.USERREGION_DOMAIN_STR+"="+str.getCfgKeywords();
}
}
}
}
for(ComplexkeywordCfg str:complexStrList){
if(str.getCompileId().equals(cfg.getCompileId())){
list3.add(str);
if(entity.getServiceId().equals(129) && str.getDistrict()!=null){//http监测
String dictValue = DictUtils.getDictCode(Constants.HTTP_HEADER_DICT_MODULE, str.getDistrict());
if(StringUtil.isEmpty(dictValue) || dictValue.equals("默认")){
if(userRegion.equals("")){
userRegion += Constants.HTTP_HEADER_USER_REGION_KEY+"="+str.getDistrict();
}else{
userRegion += Constants.USER_REGION_SPLIT+Constants.HTTP_HEADER_USER_REGION_KEY+"="+str.getDistrict();
}
}
}
}
}
for(com.nis.domain.configuration.NumBoundaryCfg num:numList){
if(num.getCompileId().equals(cfg.getCompileId())){
list4.add(num);
}
}
for(FileDigestCfg file:fileList){
if(file.getCompileId().equals(cfg.getCompileId())){
list5.add(file);
}
}
if(list1.size()>0){
ipList.removeAll(list1);
Map<String,List> map = cfgConvert(ipRegionList,list1,1,cfg,groupRelationList);
groupRelationList=map.get("groupList");
ipRegionList=map.get("dstList");
if(map.get("numRegionList")!=null){
numRegionList.addAll(map.get("numRegionList"));
}
}
if(list2.size()>0){
strList.removeAll(list2);
Map<String,List> map = cfgConvert(strRegionList,list2,2,cfg,groupRelationList);
groupRelationList=map.get("groupList");
strRegionList=map.get("dstList");
}
if(list3.size()>0){
complexStrList.removeAll(list3);
Map<String,List> map = cfgConvert(strRegionList,list3,3,cfg,groupRelationList);
groupRelationList=map.get("groupList");
strRegionList=map.get("dstList");
}
if(list4.size()>0){
numList.removeAll(list4);
Map<String,List> map = cfgConvert(numRegionList,list4,4,cfg,groupRelationList);
groupRelationList=map.get("groupList");
numRegionList=map.get("dstList");
}
if(list5.size()>0){
fileList.removeAll(list5);
Map<String,List> map = cfgConvert(digestRegionList,list5,5,cfg,groupRelationList);
groupRelationList=map.get("groupList");
digestRegionList=map.get("dstList");
}
BeanUtils.copyProperties(cfg, maatCfg);
maatCfg.setAction(cfg.getAction());
maatCfg.setAuditTime(cfg.getAuditTime());
maatCfg.setIpRegionList(ipRegionList);
maatCfg.setStrRegionList(strRegionList);
maatCfg.setNumRegionList(numRegionList);
maatCfg.setDigestRegionList(digestRegionList);
maatCfg.setGroupRelationList(groupRelationList);
maatCfg.setGroupNum(groupRelationList.size());
maatCfg.setAreaIpRegionList(areaIpRegionList);
maatCfg.setIsValid(cfg.getIsValid());
if(!StringUtil.isEmpty(userRegion)){
maatCfg.setUserRegion(userRegion);
}
configCompileList.add(maatCfg);
}
page.setList(list);
if(page.isLastPage()){
hasData = false;
}
if(!StringUtil.isEmpty(configCompileList.size())){
maatBean.setConfigCompileList(configCompileList);
maatBean.setAuditTime(new Date());
maatBean.setCreatorName(UserUtils.getUser().getName());
maatBean.setVersion(Constants.MAAT_VERSION);
maatBean.setOpAction(Constants.INSERT_ACTION);
String json=gsonToJson(maatBean);
//调用服务接口配置全量更新
ToMaatResult result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
}
return hasData;
}
/**
* 处理ddos配置
@@ -362,102 +388,140 @@ public class ConfigSynchronizationService extends BaseService{
boolean hasData = true;
while(hasData){
List<IpPortCfg> ipList = new ArrayList();
maatBean = new ToMaatBean();
configCompileList = new ArrayList();
entity.setPage(page);
List<DdosIpCfg> list = configSynchronizationDao.getDdosIpCfgList(entity);
if(!StringUtil.isEmpty(list)){
for(DdosIpCfg cfg:list){
maatCfg = new MaatCfg();
maatCfg.initDefaultValue();
groupRelationList = new ArrayList();
ipRegionList = new ArrayList();
strRegionList = new ArrayList();
numRegionList = new ArrayList();
digestRegionList = new ArrayList();
areaIpRegionList = new ArrayList();
List<DdosIpCfg> list1 = new ArrayList();
String userRegion = "";
//处理自定义域
if(userRegionList!=null){
for(Map<String,Object> n:userRegionList){
Object userRegionPosition = n.get("userRegionPosition");
if(userRegionPosition!=null && (userRegionPosition.toString().equals("1")||userRegionPosition.toString().equals("0"))){
//通过反射机制获取自定义域字段值
String regionColumn = n.get("regionColumn").toString();
Class aClass = null;
if(userRegionPosition.toString().equals(("0"))){
aClass = BaseCfg.class;
}else{
aClass = DdosIpCfg.class;
}
Object value = "";
Field field = aClass.getDeclaredField(regionColumn);
field.setAccessible(true);
value = field.get(cfg);
if(!StringUtil.isEmpty(value)){
if(StringUtil.isEmpty(n.get("regionKey"))){
userRegion = value.toString();
}else{
userRegion += n.get("regionKey")+"="+value+Constants.USER_REGION_SPLIT;
}
}
}
}
if(userRegion.endsWith(Constants.USER_REGION_SPLIT)){
userRegion = userRegion.substring(0, userRegion.length()-1);
}
}
list1.add(cfg);
if(list1.size()>0){
ipList.removeAll(list1);
Map<String,List> map = cfgConvert(ipRegionList,list1,1,cfg,groupRelationList);
groupRelationList=map.get("groupList");
ipRegionList=map.get("dstList");
if(map.get("numRegionList")!=null){
numRegionList.addAll(map.get("numRegionList"));
}
}
BeanUtils.copyProperties(cfg, maatCfg);
maatCfg.setAction(cfg.getAction());
maatCfg.setAuditTime(cfg.getAuditTime());
maatCfg.setIpRegionList(ipRegionList);
maatCfg.setStrRegionList(strRegionList);
maatCfg.setNumRegionList(numRegionList);
maatCfg.setDigestRegionList(digestRegionList);
maatCfg.setGroupRelationList(groupRelationList);
maatCfg.setGroupNum(groupRelationList.size());
maatCfg.setAreaIpRegionList(areaIpRegionList);
maatCfg.setIsValid(cfg.getIsValid());
if(!StringUtil.isEmpty(userRegion)){
maatCfg.setUserRegion(userRegion);
}
configCompileList.add(maatCfg);
}
page.setList(list);
if(page.isLastPage()){
hasData = false;
}else{
hasData=auditDdosMaatData(cfgList,userRegionList,
page,entity,list,hasData,isUpdateCfg);
if(hasData) {
page.setPageNo(page.getNext());
}
if(!StringUtil.isEmpty(configCompileList.size())){
maatBean.setConfigCompileList(configCompileList);
maatBean.setAuditTime(new Date());
maatBean.setCreatorName(UserUtils.getUser().getName());
maatBean.setVersion(Constants.MAAT_VERSION);
maatBean.setOpAction(Constants.INSERT_ACTION);
String json=gsonToJson(maatBean);
// System.out.println(json);
//调用服务接口配置全量更新
ToMaatResult result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
}
}else{
hasData = false;
}
}
}
/**
* ddos配置批量下发
* @param cfgList
* @param userRegionList
* @param page
* @param entity
* @param list
* @param hasData
* @param isUpdateCfg 业务配置全部生效时需同步更新库表配置状态
* @return
* @throws NoSuchFieldException
* @throws SecurityException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public boolean auditDdosMaatData(List<Map<String,Object>> cfgList,
List<Map<String,Object>>userRegionList,
Page<DdosIpCfg> page,
BaseCfg entity,
List<DdosIpCfg> list,
boolean hasData,
boolean isUpdateCfg) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
ToMaatBean maatBean;
MaatCfg maatCfg;
List<MaatCfg> configCompileList;
List<GroupCfg> groupRelationList;
List<IpCfg> ipRegionList;
List<StringCfg> strRegionList;
List<NumBoundaryCfg> numRegionList;
List<DigestCfg> digestRegionList;
List<IpCfg> areaIpRegionList;
List<IpPortCfg> ipList = new ArrayList();
maatBean = new ToMaatBean();
configCompileList = new ArrayList();
for(DdosIpCfg cfg:list){
maatCfg = new MaatCfg();
maatCfg.initDefaultValue();
groupRelationList = new ArrayList();
ipRegionList = new ArrayList();
strRegionList = new ArrayList();
numRegionList = new ArrayList();
digestRegionList = new ArrayList();
areaIpRegionList = new ArrayList();
List<DdosIpCfg> list1 = new ArrayList();
String userRegion = "";
//处理自定义域
if(userRegionList!=null){
for(Map<String,Object> n:userRegionList){
Object userRegionPosition = n.get("userRegionPosition");
if(userRegionPosition!=null && (userRegionPosition.toString().equals("1")||userRegionPosition.toString().equals("0"))){
//通过反射机制获取自定义域字段值
String regionColumn = n.get("regionColumn").toString();
Class aClass = null;
if(userRegionPosition.toString().equals(("0"))){
aClass = BaseCfg.class;
}else{
aClass = DdosIpCfg.class;
}
Object value = "";
Field field = aClass.getDeclaredField(regionColumn);
field.setAccessible(true);
value = field.get(cfg);
if(!StringUtil.isEmpty(value)){
if(StringUtil.isEmpty(n.get("regionKey"))){
userRegion = value.toString();
}else{
userRegion += n.get("regionKey")+"="+value+Constants.USER_REGION_SPLIT;
}
}
}
}
if(userRegion.endsWith(Constants.USER_REGION_SPLIT)){
userRegion = userRegion.substring(0, userRegion.length()-1);
}
}
list1.add(cfg);
if(list1.size()>0){
ipList.removeAll(list1);
Map<String,List> map = cfgConvert(ipRegionList,list1,1,cfg,groupRelationList);
groupRelationList=map.get("groupList");
ipRegionList=map.get("dstList");
if(map.get("numRegionList")!=null){
numRegionList.addAll(map.get("numRegionList"));
}
}
BeanUtils.copyProperties(cfg, maatCfg);
maatCfg.setAction(cfg.getAction());
maatCfg.setAuditTime(cfg.getAuditTime());
maatCfg.setIpRegionList(ipRegionList);
maatCfg.setStrRegionList(strRegionList);
maatCfg.setNumRegionList(numRegionList);
maatCfg.setDigestRegionList(digestRegionList);
maatCfg.setGroupRelationList(groupRelationList);
maatCfg.setGroupNum(groupRelationList.size());
maatCfg.setAreaIpRegionList(areaIpRegionList);
maatCfg.setIsValid(cfg.getIsValid());
if(!StringUtil.isEmpty(userRegion)){
maatCfg.setUserRegion(userRegion);
}
configCompileList.add(maatCfg);
}
page.setList(list);
if(page.isLastPage()){
hasData = false;
}
if(!StringUtil.isEmpty(configCompileList.size())){
maatBean.setConfigCompileList(configCompileList);
maatBean.setAuditTime(new Date());
maatBean.setCreatorName(UserUtils.getUser().getName());
maatBean.setVersion(Constants.MAAT_VERSION);
maatBean.setOpAction(Constants.INSERT_ACTION);
String json=gsonToJson(maatBean);
//调用服务接口配置全量更新
ToMaatResult result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED"));
}
return hasData;
}
/**
* 处理app业务maat类配置
* @param serviceId
@@ -494,64 +558,91 @@ public class ConfigSynchronizationService extends BaseService{
boolean hasData = true;
while(hasData){
maatBean = new ToMaatBean();
configCompileList = new ArrayList();
entity.setPage(page);
List list = new ArrayList();
List newList = new ArrayList();
if(className.equals("AvFileSampleCfg")){
list = configSynchronizationDao.getAvFileCfgList(entity);
}else if(className.equals("PxyObjKeyring")){
list = configSynchronizationDao.getPxyObjKeyringCfgList(entity);
for(int i=0;i<list.size();i++){
PxyObjKeyring cfg = (PxyObjKeyring) list.get(i);
newList.add(convertCallBackProxyObjKeyring(cfg));
}
}else if(className.equals("PxyObjTrustedCaCert")){
list = configSynchronizationDao.getPxyObjTrustedCertCfgList(entity);
for(int i=0;i<list.size();i++){
PxyObjTrustedCaCert cfg = (PxyObjTrustedCaCert) list.get(i);
newList.add(convertCallBackProxyObjTrustedCa(cfg,null));
}
}else if(className.equals("PxyObjTrustedCaCrl")){
list = configSynchronizationDao.getPxyObjTrustedCrlCfgList(entity);
for(int i=0;i<list.size();i++){
PxyObjTrustedCaCrl cfg = (PxyObjTrustedCaCrl) list.get(i);
newList.add(convertCallBackProxyObjTrustedCa(null,cfg));
}
}else if(className.equals("DnsResStrategy")){
list = configSynchronizationDao.getDnsStrategyList(entity);
for(int i=0;i<list.size();i++){
DnsResStrategy cfg = (DnsResStrategy) list.get(i);
newList.add(convertCallBackDnsResStrategy(cfg));
}
}else if(className.equals("DnsIpCfg")){
list = configSynchronizationDao.getDnsIpCfgList(entity);
for(int i=0;i<list.size();i++){
DnsIpCfg cfg = (DnsIpCfg) list.get(i);
newList.add(convertCallBackIp(cfg,cfg.getGroupId()));
}
}else if(className.equals("IpPortCfg")){
list = configSynchronizationDao.getIpPortListByService(entity);
for(int i=0;i<list.size();i++){
IpPortCfg cfg = (IpPortCfg) list.get(i);
newList.add(convertCallBackIp(cfg,cfg.getGroupId()));
}
}
page.setList(list);
if(page.isLastPage()){
hasData = false;
}else{
hasData=auditCallbackData(className,page,entity,hasData,isUpdateCfg);
if(hasData){
page.setPageNo(page.getNext());
}
//调用服务接口下发配置数据
String json=gsonToJson(newList);
logger.info("回调类配置同步:"+json);
//调用服务接口同步回调类配置
ToMaatResult result = ConfigServiceUtil.configSync(json,2,entity.getServiceId(),entity.getTableName(),(hasData?null:"FINISHED"));
// logger.info("回调类配置同步:"+result.getMsg());
}
}
/**
* 回调类配置下发
* @param className
* @param page
* @param entity
* @param hasData
* @param isUpdateCfg
* @throws ClassNotFoundException
*/
public boolean auditCallbackData(String className,
Page<BaseCfg> page,BaseCfg entity,
boolean hasData,
boolean isUpdateCfg) throws ClassNotFoundException{
ToMaatBean maatBean;
MaatCfg maatCfg;
List<MaatCfg> configCompileList;
List<GroupCfg> groupRelationList;
List<IpCfg> ipRegionList;
List<StringCfg> strRegionList;
List<NumBoundaryCfg> numRegionList;
List<DigestCfg> digestRegionList;
List<IpCfg> areaIpRegionList;
maatBean = new ToMaatBean();
configCompileList = new ArrayList();
List list = new ArrayList();
List newList = new ArrayList();
if(className.equals("AvFileSampleCfg")){
list = configSynchronizationDao.getAvFileCfgList(entity);
}else if(className.equals("PxyObjKeyring")){
list = configSynchronizationDao.getPxyObjKeyringCfgList(entity);
for(int i=0;i<list.size();i++){
PxyObjKeyring cfg = (PxyObjKeyring) list.get(i);
newList.add(convertCallBackProxyObjKeyring(cfg));
}
}else if(className.equals("PxyObjTrustedCaCert")){
list = configSynchronizationDao.getPxyObjTrustedCertCfgList(entity);
for(int i=0;i<list.size();i++){
PxyObjTrustedCaCert cfg = (PxyObjTrustedCaCert) list.get(i);
newList.add(convertCallBackProxyObjTrustedCa(cfg,null));
}
}else if(className.equals("PxyObjTrustedCaCrl")){
list = configSynchronizationDao.getPxyObjTrustedCrlCfgList(entity);
for(int i=0;i<list.size();i++){
PxyObjTrustedCaCrl cfg = (PxyObjTrustedCaCrl) list.get(i);
newList.add(convertCallBackProxyObjTrustedCa(null,cfg));
}
}else if(className.equals("DnsResStrategy")){
list = configSynchronizationDao.getDnsStrategyList(entity);
for(int i=0;i<list.size();i++){
DnsResStrategy cfg = (DnsResStrategy) list.get(i);
newList.add(convertCallBackDnsResStrategy(cfg));
}
}else if(className.equals("DnsIpCfg")){
list = configSynchronizationDao.getDnsIpCfgList(entity);
for(int i=0;i<list.size();i++){
DnsIpCfg cfg = (DnsIpCfg) list.get(i);
newList.add(convertCallBackIp(cfg,cfg.getGroupId()));
}
}else if(className.equals("IpPortCfg")){
list = configSynchronizationDao.getIpPortListByService(entity);
for(int i=0;i<list.size();i++){
IpPortCfg cfg = (IpPortCfg) list.get(i);
newList.add(convertCallBackIp(cfg,cfg.getGroupId()));
}
}
page.setList(list);
if(page.isLastPage()){
hasData = false;
}
//调用服务接口下发配置数据
String json=gsonToJson(newList);
logger.info("回调类配置同步:"+json);
//调用服务接口同步回调类配置
ToMaatResult result = ConfigServiceUtil.configSync(json,2,entity.getServiceId(),entity.getTableName(),(hasData?null:"FINISHED"));
// logger.info("回调类配置同步:"+result.getMsg());
return hasData;
}
}