1183 lines
56 KiB
Java
1183 lines
56 KiB
Java
package com.nis.util;
|
||
|
||
import java.lang.reflect.Field;
|
||
import java.lang.reflect.Type;
|
||
import java.text.SimpleDateFormat;
|
||
import java.util.*;
|
||
|
||
import com.google.gson.*;
|
||
import com.google.gson.reflect.TypeToken;
|
||
import com.nis.domain.FunctionServiceDict;
|
||
import com.nis.domain.basics.*;
|
||
import com.nis.domain.configuration.*;
|
||
import com.nis.web.service.configuration.ObjGroupCfgConvert;
|
||
import com.nis.web.service.configuration.ObjectGroupService;
|
||
import org.apache.commons.collections.CollectionUtils;
|
||
import org.apache.commons.lang3.StringEscapeUtils;
|
||
import org.apache.shiro.SecurityUtils;
|
||
import org.apache.shiro.authc.UsernamePasswordToken;
|
||
import org.apache.shiro.config.IniSecurityManagerFactory;
|
||
import org.apache.shiro.mgt.SecurityManager;
|
||
import org.apache.shiro.subject.Subject;
|
||
import org.apache.shiro.util.Factory;
|
||
import org.slf4j.Logger;
|
||
import org.slf4j.LoggerFactory;
|
||
import org.springframework.beans.BeanUtils;
|
||
|
||
import com.google.common.collect.Lists;
|
||
import com.nis.domain.callback.InlineIp;
|
||
import com.nis.domain.maat.MaatCfg;
|
||
import com.nis.domain.maat.ManipulatActionParam;
|
||
import com.nis.domain.maat.ToMaatBean;
|
||
import com.nis.domain.maat.ToMaatResult;
|
||
import com.nis.domain.maat.ToUpdateMaatBeanStatus;
|
||
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.domain.maat.ToUpdateMaatBeanStatus.UpdateMaatCfgStatus;
|
||
import com.nis.web.dao.configuration.ConfigSynchronizationDao;
|
||
import com.nis.web.security.UserUtils;
|
||
import com.nis.web.service.BaseService;
|
||
import com.nis.web.service.SpringContextHolder;
|
||
import com.nis.web.service.configuration.ConfigSynchronizationService;
|
||
|
||
/**
|
||
* 配置任务调度通用类
|
||
* 定时任务调用,处理界面配置状态修改,以及下发综合服务处理
|
||
* @author ThinkPad
|
||
*
|
||
*/
|
||
public class SchedulerTaskUtil {
|
||
|
||
//调度任务的配置信息,复用配置同步DAO
|
||
private Logger logger = LoggerFactory.getLogger(getClass());
|
||
|
||
/**
|
||
* 根据业务与编译ID查询配置,修改失效或生效状态,并下发至综合服务
|
||
* @param serviceId 不可空
|
||
* @param compileId 不可空
|
||
* @param isValid 配置生效状态:0停用,1启用
|
||
* @param isIssueContent 是否下发内容:0不下发,1下发
|
||
* @return boolean
|
||
* @throws SecurityException
|
||
* @throws NoSuchFieldException
|
||
* @throws IllegalAccessException
|
||
* @throws IllegalArgumentException
|
||
*/
|
||
public void updateConfigByServiceAndCompile(Integer serviceId,Integer compileId,Integer isValid,Integer isIssueContent,ConfigSynchronizationDao configSynchronizationDao)throws Exception{
|
||
// SecurityManagerInit();
|
||
// Subject subject = login("admin","zdjzsoft");
|
||
// System.out.println(subject.getPrincipal());
|
||
// System.out.println(subject.hasRole("role1"));
|
||
// System.out.println(subject.hasRole("Superman"));
|
||
//根据业务查询配置文件,获取该业务的配置域表信息
|
||
ServiceConfigTemplateUtil serviceTemplate = new ServiceConfigTemplateUtil();
|
||
List<Map<String,Object>> serviceList = serviceTemplate.getServiceListByServiceId(serviceId);
|
||
//根据编译ID查询配置表中的配置信息
|
||
for(Map<String,Object> service:serviceList){
|
||
String tableName = service.get("tableName").toString();
|
||
String serviceType = service.get("serviceType").toString();
|
||
String className = service.get("className").toString();
|
||
String functionId= service.get("functionId").toString();
|
||
BaseCfg entity = new BaseCfg();
|
||
entity.setServiceId(serviceId);
|
||
entity.setTableName(tableName);
|
||
List callBackCfgList = Lists.newArrayList();
|
||
|
||
if("1".equals(serviceType)){//maat类配置
|
||
Date updateTime = new Date();
|
||
ToMaatBean maatBean;
|
||
MaatCfg maatCfg;
|
||
maatCfg = new MaatCfg();
|
||
maatCfg.initDefaultValue();
|
||
List<MaatCfg> configCompileList;
|
||
if(isIssueContent.equals(1)){
|
||
//修改配置内容以及状态
|
||
// 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<AsnIpCfg> asnIpList = new ArrayList();
|
||
List<BaseStringCfg> strList = new ArrayList();
|
||
List<ComplexkeywordCfg> complexStrList = new ArrayList();
|
||
List<com.nis.domain.configuration.NumBoundaryCfg> numList = new ArrayList();
|
||
//公共分组
|
||
boolean isCommonGroup=false;
|
||
List<IpCommCfg> ipCommCfgList=new ArrayList<>();
|
||
List<UrlCommCfg> urlCommCfgList=new ArrayList<>();
|
||
List<ScriberIdCommCfg> scriberIdCommCfgList=new ArrayList<>();
|
||
List<DomainCommCfg> domainCommCfgList=new ArrayList<>();
|
||
Map<String,Object> commGroupMap=new HashMap<>();
|
||
Set<Integer> groupIdSet=new HashSet<>();
|
||
List<FileDigestCfg> fileList = new ArrayList();
|
||
maatBean = new ToMaatBean();
|
||
configCompileList = new ArrayList();
|
||
List<Integer> compileIds = new ArrayList();
|
||
List<String> asnGroupIds = new ArrayList();
|
||
//获取业务下的配置域
|
||
List<Map<String,Object>> cfgList = (List<Map<String, Object>>) service.get("cfgList");
|
||
//获取业务下的自定义域
|
||
List<Map<String,Object>> userRegionList = (List<Map<String, Object>>) service.get("userRegionList");
|
||
entity.setCompileId(compileId);
|
||
compileIds.add(compileId);
|
||
Map<Integer, FunctionServiceDict> serviceDictMap=ConfigConvertUtil.objGetServiceDict(Integer.parseInt(functionId));
|
||
//查询配置
|
||
if("cfg_index_info".equals(tableName)){
|
||
List<CfgIndexInfo> list = configSynchronizationDao.getCfgIndexList(entity);
|
||
|
||
if(CollectionUtils.isNotEmpty(list)&&StringUtils.isNotBlank(list.get(0).getCommonGroupIds())){
|
||
isCommonGroup=true;
|
||
}
|
||
if(isIssueContent.equals(1)){
|
||
//用于存储自定义域为关键字的业务,key=compileId,value=keyword.
|
||
Map<Integer, BaseStringCfg> keywordMap=new HashMap<>();
|
||
//查询子域配置详情
|
||
if(cfgList!=null){
|
||
if(isCommonGroup){
|
||
groupIdSet=Collections.synchronizedSet(new HashSet<Integer>());
|
||
commGroupMap=ConfigConvertUtil.gsonFromJson(list.get(0).getCommonGroupIds(),Map.class);
|
||
//将组中的域设置到cfg_index_info中
|
||
covertCommongroupIdsMap(commGroupMap,"ipGroup",list.get(0),configSynchronizationDao,IpCommCfg.class);
|
||
if(CollectionUtils.isNotEmpty(list.get(0).getIpCommGroupCfgList())){
|
||
ipCommCfgList.addAll(list.get(0).getIpCommGroupCfgList());
|
||
}
|
||
covertCommongroupIdsMap(commGroupMap,"urlGroup",list.get(0),configSynchronizationDao,UrlCommCfg.class);
|
||
if(CollectionUtils.isNotEmpty(list.get(0).getUrlCommGroupList())){
|
||
urlCommCfgList.addAll(list.get(0).getUrlCommGroupList());
|
||
}
|
||
covertCommongroupIdsMap(commGroupMap,"subscribeIdGroup",list.get(0),configSynchronizationDao,ScriberIdCommCfg.class);
|
||
if(CollectionUtils.isNotEmpty(list.get(0).getScriberIdCommGroupList())){
|
||
scriberIdCommCfgList.addAll(list.get(0).getScriberIdCommGroupList());
|
||
}
|
||
covertCommongroupIdsMap(commGroupMap,"domainGroup",list.get(0),configSynchronizationDao,DomainCommCfg.class);
|
||
if(CollectionUtils.isNotEmpty(list.get(0).getDomainCommGroupList())){
|
||
domainCommCfgList.addAll(list.get(0).getDomainCommGroupList());
|
||
}
|
||
}else{
|
||
for(Map<String,Object> m:cfgList){
|
||
String regionTable = m.get("tableName").toString();
|
||
if("1".equals(m.get("cfgType"))){
|
||
ipList.addAll(configSynchronizationDao.getIpPortList(regionTable, compileIds));
|
||
}else if("2".equals(m.get("cfgType"))){
|
||
strList.addAll(configSynchronizationDao.getStrList(regionTable,compileIds));
|
||
//512/521/514/1026业务的用户自定义域取DOMAIN_STR取自Keyword
|
||
if(/*entity.getServiceId()==512
|
||
||*/entity.getServiceId()==521
|
||
||entity.getServiceId()==514
|
||
||entity.getServiceId()==1026) {
|
||
keywordMap=configSynchronizationDao.getCompileIdWithKeyword(regionTable, compileIds);
|
||
}
|
||
|
||
}else if("3".equals(m.get("cfgType"))){
|
||
complexStrList.addAll(configSynchronizationDao.getComplexStrList(regionTable,compileIds));
|
||
}else if("4".equals(m.get("cfgType"))){
|
||
|
||
}else if("5".equals(m.get("cfgType"))){
|
||
fileList.addAll(configSynchronizationDao.getFileDigestList(regionTable, compileIds));
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
//批量获取regionId,groupId(相同编译下的IP类配置多条ip只获取一个组号),分组复用的域配置不需要重新获取regionId,groupId
|
||
List<Integer> regionIds=new ArrayList<>(),groupIds=new ArrayList<>();
|
||
if(!isCommonGroup){
|
||
regionIds = ConfigServiceUtil.getId(3, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size());
|
||
groupIds = ConfigServiceUtil.getId(2, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size());
|
||
}
|
||
entity.setIsValid(isValid);//将最新的配置状态赋给配置对象
|
||
entity.setAuditTime(updateTime);
|
||
for(CfgIndexInfo cfg:list){
|
||
groupRelationList = Collections.synchronizedList(new ArrayList());
|
||
ipRegionList = Collections.synchronizedList(new ArrayList());
|
||
strRegionList = Collections.synchronizedList(new ArrayList());
|
||
numRegionList =Collections.synchronizedList(new ArrayList());
|
||
digestRegionList = new ArrayList();
|
||
areaIpRegionList = new ArrayList();
|
||
if(StringUtils.isNotBlank(cfg.getCommonGroupIds())){//公共分组
|
||
//处理自定义域
|
||
StringBuffer userRegion = new StringBuffer();
|
||
userRegion.append(ConfigConvertUtil.generateCommonGroupDefaultUserRegion(null,cfg.getServiceId()));
|
||
//子配置
|
||
Map<String,Object> maatTableMap=ConfigConvertUtil.convertCommonGroupMaatTable(cfg,cfgList);
|
||
//多线程转换
|
||
ObjGroupCfgConvert ipConvert=new ObjGroupCfgConvert("ipGroup",cfg,1,serviceDictMap,maatTableMap,groupIdSet);
|
||
ipConvert.setGroupRelationList(groupRelationList);
|
||
ipConvert.setIpRegionList(ipRegionList);
|
||
ipConvert.setNumRegionList(numRegionList);
|
||
ipConvert.setStrRegionList(strRegionList);
|
||
ObjGroupCfgConvert subscribeIdConvert=new ObjGroupCfgConvert("subscribeIdGroup",cfg,1,serviceDictMap,maatTableMap,groupIdSet);
|
||
subscribeIdConvert.setGroupRelationList(groupRelationList);
|
||
subscribeIdConvert.setIpRegionList(ipRegionList);
|
||
subscribeIdConvert.setNumRegionList(numRegionList);
|
||
subscribeIdConvert.setStrRegionList(strRegionList);
|
||
ObjGroupCfgConvert urlConvert=new ObjGroupCfgConvert("urlGroup",cfg,1,serviceDictMap,maatTableMap,groupIdSet);
|
||
urlConvert.setGroupRelationList(groupRelationList);
|
||
urlConvert.setIpRegionList(ipRegionList);
|
||
urlConvert.setNumRegionList(numRegionList);
|
||
urlConvert.setStrRegionList(strRegionList);
|
||
ObjGroupCfgConvert domainConvert=new ObjGroupCfgConvert("domainGroup",cfg,1,serviceDictMap,maatTableMap,groupIdSet);
|
||
domainConvert.setGroupRelationList(groupRelationList);
|
||
domainConvert.setIpRegionList(ipRegionList);
|
||
domainConvert.setNumRegionList(numRegionList);
|
||
domainConvert.setStrRegionList(strRegionList);
|
||
Thread t1=new Thread(ipConvert);
|
||
Thread t2=new Thread(subscribeIdConvert);
|
||
Thread t3=new Thread(urlConvert);
|
||
Thread t4=new Thread(domainConvert);
|
||
t1.start();
|
||
t2.start();
|
||
t3.start();
|
||
t4.start();
|
||
try {
|
||
t1.join();
|
||
t2.join();
|
||
t3.join();
|
||
t4.join();
|
||
} catch (InterruptedException e) {
|
||
logger.error("多线程join异常",e);
|
||
}
|
||
//IP公共分组
|
||
// if(CollectionUtils.isNotEmpty(cfg.getIpCommGroupCfgList())){
|
||
// IpPortCfg _cfg = new IpPortCfg();
|
||
// BeanUtils.copyProperties(cfg, _cfg, new String[]{"cfgId","menuNameCode"});
|
||
// Map<String,List> map = ConfigConvertUtil.objGroupCfgConvert(serviceDictMap,ipRegionList,cfg.getIpCommGroupCfgList(),1,_cfg,groupRelationList,maatTableMap,groupIdSet);
|
||
// groupRelationList=map.get("groupList");
|
||
// ipRegionList=map.get("dstList");
|
||
// if(map.get("numRegionList")!=null){
|
||
// numRegionList.addAll(map.get("numRegionList"));
|
||
// }
|
||
//
|
||
// }
|
||
//URL公共分组
|
||
// if(CollectionUtils.isNotEmpty(cfg.getUrlCommGroupList())){
|
||
// CommonStringCfg _cfg = new CommonStringCfg();
|
||
// BeanUtils.copyProperties(cfg, _cfg, new String[]{"cfgId","menuNameCode"});
|
||
// Map<String,List> map =ConfigConvertUtil.objGroupCfgConvert(serviceDictMap,strRegionList,cfg.getUrlCommGroupList(),2,_cfg,groupRelationList,maatTableMap,groupIdSet);
|
||
// groupRelationList=map.get("groupList");
|
||
// strRegionList=map.get("dstList");
|
||
// }
|
||
//账号公共分组
|
||
// if(CollectionUtils.isNotEmpty(cfg.getScriberIdCommGroupList())){
|
||
// CommonStringCfg _cfg = new CommonStringCfg();
|
||
// BeanUtils.copyProperties(cfg, _cfg, new String[]{"cfgId","menuNameCode"});
|
||
//
|
||
// Map<String,List> map =ConfigConvertUtil.objGroupCfgConvert(serviceDictMap,strRegionList,cfg.getScriberIdCommGroupList(),2,_cfg,groupRelationList,maatTableMap,groupIdSet);
|
||
// groupRelationList=map.get("groupList");
|
||
// strRegionList=map.get("dstList");
|
||
//
|
||
// }
|
||
//域名公共分组
|
||
// if(CollectionUtils.isNotEmpty(cfg.getDomainCommGroupList())){
|
||
// CommonStringCfg _cfg = new CommonStringCfg();
|
||
// BeanUtils.copyProperties(cfg, _cfg, new String[]{"cfgId","menuNameCode"});
|
||
//
|
||
// Map<String,List> map =ConfigConvertUtil.objGroupCfgConvert(serviceDictMap,strRegionList,cfg.getDomainCommGroupList(),2,_cfg,groupRelationList,maatTableMap,groupIdSet);
|
||
// groupRelationList=map.get("groupList");
|
||
// strRegionList=map.get("dstList");
|
||
// }
|
||
BeanUtils.copyProperties(cfg, maatCfg);
|
||
if(cfg.getServiceId().equals(512)){
|
||
maatCfg.setAction(2);
|
||
}else{
|
||
maatCfg.setAction(cfg.getAction());
|
||
}
|
||
maatCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.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(entity.getIsValid());
|
||
if(!StringUtil.isEmpty(userRegion.toString())){
|
||
maatCfg.setUserRegion(userRegion.toString());
|
||
}
|
||
configCompileList.add(maatCfg);
|
||
}else{//非公共分组
|
||
List 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();
|
||
String regionKey = n.get("regionKey").toString();
|
||
Object value = "";
|
||
Class aClass = null;
|
||
if(userRegionPosition.toString().equals(("0"))){
|
||
aClass = BaseCfg.class;
|
||
}else{
|
||
aClass = CfgIndexInfo.class;
|
||
}
|
||
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);
|
||
if(n.get("regionKey").equals("substitute")){
|
||
value += "/"+BaseService.replaceContentEscape(field.get(cfg)==null?"":field.get(cfg).toString());//自定义域以/分割时的处理
|
||
}else{
|
||
value += BaseService.replaceContentEscape(field.get(cfg)==null?"":field.get(cfg).toString());
|
||
}
|
||
|
||
}
|
||
userRegion += n.get("regionKey")+"="+value+Constants.USER_REGION_SPLIT;
|
||
}else{
|
||
/*if(regionKey.equals("keyring_id") && StringUtil.isEmpty(value)){
|
||
value = "0";
|
||
}else*/ if(regionKey.equals("DOMAIN_STR")) {
|
||
if(!StringUtil.isEmpty(keywordMap) && !StringUtil.isEmpty(keywordMap.get(cfg.getCompileId()))) {
|
||
value = keywordMap.get(cfg.getCompileId()).getCfgKeywords();
|
||
}
|
||
}else if(regionKey.equals("DOMAIN_ID")) {
|
||
if(!StringUtil.isEmpty(keywordMap) && !StringUtil.isEmpty(keywordMap.get(cfg.getCompileId()))) {
|
||
value = cfg.getCompileId();
|
||
}
|
||
|
||
}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;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if(userRegion.endsWith(Constants.USER_REGION_SPLIT)){
|
||
userRegion = userRegion.substring(0, userRegion.length()-1);
|
||
}
|
||
}
|
||
// Proxy Block --xml无法描述的user_region
|
||
if(entity.getServiceId().equals(576)) {
|
||
ManipulatActionParam actionParam = new ManipulatActionParam();
|
||
actionParam.setMethod("block");
|
||
actionParam.setCode(Integer.valueOf(cfg.getUserRegion1()));
|
||
actionParam.setMessage(!StringUtil.isBlank(cfg.getUserRegion2()) ? cfg.getUserRegion2():"");
|
||
actionParam.setHtml_profile(Integer.valueOf(!StringUtil.isBlank(cfg.getUserRegion3()) ? cfg.getUserRegion3():"0"));
|
||
userRegion = StringEscapeUtils.unescapeJson(BaseService.gsonToJson(actionParam));
|
||
}
|
||
|
||
// Proxy Manipulate
|
||
if(entity.getServiceId().equals(656)) {
|
||
userRegion = BaseService.setUserRegionOfMantipulateCfg(cfg, userRegion);
|
||
}
|
||
//Intercept Policy、http(s) 监测 、http(s) 白名单
|
||
else if(entity.getServiceId().equals(521) || entity.getServiceId().equals(592)
|
||
|| entity.getServiceId().equals(750)) {
|
||
userRegion="{}";
|
||
}
|
||
for(AsnIpCfg ip:asnIpList){//asn不需要再次获取regionId,groupId
|
||
if(ip.getAsnIpGroup().toString().equals(cfg.getUserRegion4())){//根据组号对应
|
||
ip.setIsValid(entity.getIsValid());
|
||
ip.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
|
||
list1.add(ip);
|
||
}
|
||
}
|
||
//ip spoofing
|
||
if(cfg.getServiceId().equals(518)){
|
||
//IP仿冒策略
|
||
//仿冒IP池配置匹配下发或者取消
|
||
PxyObjSpoofingIpPool pool=new PxyObjSpoofingIpPool();
|
||
pool.setCfgId(Long.valueOf(cfg.getUserRegion3()));
|
||
// pxyObjSpoofingIpPoolDao.update(pool);
|
||
pool = configSynchronizationDao.getPxyObjSpoofingIpPool(pool.getCfgId());
|
||
pool.setIsValid(entity.getIsValid());
|
||
pool.setIsAudit(entity.getIsAudit());
|
||
pool.setAuditorId(entity.getAuditorId());
|
||
pool.setAuditTime(entity.getAuditTime());
|
||
List<PxyObjSpoofingIpPool> poolList = new ArrayList<PxyObjSpoofingIpPool>();
|
||
String json="";
|
||
String areaEffectiveIds="0";
|
||
if(isValid==1){
|
||
pool.setAreaEffectiveIds(areaEffectiveIds);
|
||
pool.setGroupId(pool.getCfgId().intValue());//界面端的配置ID作为策略分组ID
|
||
poolList.add(pool);
|
||
//调用服务接口下发配置数据
|
||
json=BaseService.gsonToJson(poolList);
|
||
logger.info("欺骗IP池配置下发配置参数:"+json);
|
||
//调用服务接口下发配置
|
||
try {
|
||
ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json);
|
||
if(result!=null){
|
||
logger.info("欺骗IP池配置下发响应信息:"+result.getMsg());
|
||
}
|
||
} catch (Exception e) {
|
||
logger.error("欺骗IP池配置配置下发失败",e);
|
||
throw e;
|
||
}
|
||
}
|
||
}
|
||
if(list1.size()>0){
|
||
GroupCfg groupCfg=new GroupCfg();
|
||
groupCfg.setCompileId(cfg.getCompileId());
|
||
groupCfg.setGroupId(Integer.parseInt(cfg.getUserRegion4()));
|
||
groupCfg.setIsValid(entity.getIsValid());
|
||
groupCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
|
||
groupRelationList.add(groupCfg);
|
||
ipRegionList.addAll(ConfigConvertUtil.groupReuseCfgAddRemoveConvert(list1,Constants.VALID_YES,null));
|
||
}else if(!StringUtil.isEmpty(asnGroupIds)) {
|
||
GroupCfg groupCfg=new GroupCfg();
|
||
groupCfg.setCompileId(cfg.getCompileId());
|
||
groupCfg.setGroupId(Integer.parseInt(cfg.getUserRegion4()));
|
||
groupCfg.setIsValid(entity.getIsValid());
|
||
groupCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
|
||
groupRelationList.add(groupCfg);
|
||
ipRegionList.addAll(ipRegionList);
|
||
}
|
||
//配置域转换
|
||
userRegion = ConfigConvertUtil.configCovert(ipList,strList,complexStrList,
|
||
numList,fileList,regionIds,groupIds,entity,cfg.getCompileId(),
|
||
StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime(),
|
||
groupRelationList,ipRegionList,strRegionList,numRegionList,digestRegionList,areaIpRegionList,userRegion);
|
||
|
||
BeanUtils.copyProperties(cfg, maatCfg);
|
||
maatCfg.setAction(cfg.getAction());
|
||
maatCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.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(entity.getIsValid());
|
||
if(!StringUtil.isEmpty(userRegion)){
|
||
maatCfg.setUserRegion(userRegion);
|
||
}
|
||
configCompileList.add(maatCfg);
|
||
}
|
||
|
||
}
|
||
maatBean.setConfigCompileList(configCompileList);
|
||
maatBean.setAuditTime(new Date());
|
||
maatBean.setCreatorName("TaskScheduler");
|
||
maatBean.setVersion(Constants.MAAT_VERSION);
|
||
maatBean.setOpAction(Constants.INSERT_ACTION);
|
||
String json=BaseService.gsonToJson(maatBean);
|
||
if(json.length()<Constants.JSON_PRINT_LENTH){
|
||
logger.info("定时任务修改NTC/PROXY策略的MAAT配置内容:"+json);
|
||
}else{
|
||
logger.info("定时任务修改NTC/PROXY策略的MAAT配置内容超过"+Constants.JSON_PRINT_LENTH+",不打印");
|
||
}
|
||
//调用服务接口修改配置内容与状态
|
||
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
|
||
if(result!=null){
|
||
logger.info("定时任务修改NTC/PROXY策略的MAAT配置内容响应信息:"+result.getMsg());
|
||
}
|
||
}else{
|
||
/*maatCfg = new MaatCfg();
|
||
maatCfg.initDefaultValue();
|
||
maatBean = new ToMaatBean();
|
||
configCompileList = new ArrayList();
|
||
for(CfgIndexInfo cfg:list){
|
||
if(StringUtils.isNotEmpty(cfg.getCommonGroupIds())){
|
||
maatCfg.setKeepGroupList(Arrays.asList(cfg.getCommonGroupIds().split(",")));
|
||
}
|
||
maatCfg.setCompileId(compileId);
|
||
maatCfg.setServiceId(serviceId);
|
||
maatCfg.setIsValid(isValid);//配置状态
|
||
configCompileList.add(maatCfg);
|
||
|
||
}
|
||
maatBean.setConfigCompileList(configCompileList);
|
||
maatBean.setAuditTime(entity.getAuditTime());
|
||
maatBean.setCreatorName(entity.getCurrentUser().getName());
|
||
maatBean.setVersion(Constants.MAAT_VERSION);
|
||
maatBean.setOpAction(Constants.UPDATE_ACTION);
|
||
//调用服务接口取消配置
|
||
String json=BaseService.gsonToJson(maatBean);
|
||
logger.info("定时器修改配置状态:"+json);
|
||
//调用服务接口下发配置
|
||
ToMaatResult result = ConfigServiceUtil.put(json,1);
|
||
logger.info("定时器修改配置状态响应时间:"+result.getMsg());
|
||
if(result!=null){
|
||
logger.info("定时任务修改NTC/PROXY策略的MAAT配置内容响应信息:"+result.getMsg());
|
||
return true;
|
||
}else{
|
||
return false;
|
||
}*/
|
||
}
|
||
|
||
}else if("ddos_ip_cfg".equals(tableName)){
|
||
List<DdosIpCfg> list = configSynchronizationDao.getDdosIpCfgList(entity);
|
||
if(isIssueContent.equals(1)){
|
||
//查询子域配置详情
|
||
if(cfgList!=null){
|
||
for(Map<String,Object> m:cfgList){
|
||
String regionTable = m.get("tableName").toString();
|
||
if("1".equals(m.get("cfgType"))){
|
||
ipList.addAll(configSynchronizationDao.getIpPortList(regionTable, compileIds));
|
||
}else if("2".equals(m.get("cfgType"))){
|
||
strList.addAll(configSynchronizationDao.getStrList(regionTable,compileIds));
|
||
}else if("3".equals(m.get("cfgType"))){
|
||
complexStrList.addAll(configSynchronizationDao.getComplexStrList(regionTable,compileIds));
|
||
}else if("4".equals(m.get("cfgType"))){
|
||
|
||
}else if("5".equals(m.get("cfgType"))){
|
||
fileList.addAll(configSynchronizationDao.getFileDigestList(regionTable, compileIds));
|
||
}
|
||
}
|
||
}
|
||
//批量获取regionId,groupId(相同编译下的IP类配置多条ip只获取一个组号),分组复用的域配置不需要重新获取regionId,groupId
|
||
List<Integer> regionIds = ConfigServiceUtil.getId(3, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size()+list.size());
|
||
List<Integer> groupIds = ConfigServiceUtil.getId(2, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size()+list.size());
|
||
entity.setIsValid(isValid);//将最新的配置状态赋给配置对象
|
||
entity.setAuditTime(updateTime);
|
||
for(int i=0;i<list.size();i++){
|
||
DdosIpCfg cfg=list.get(i);
|
||
cfg.setRegionId(regionIds.get(i));
|
||
cfg.setGroupId(groupIds.get(i));
|
||
cfg.setIsValid(entity.getIsValid());
|
||
cfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
|
||
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 = "";
|
||
//处理自定义域【DDOS自定义域组成json结构】
|
||
Map ddosUserRegion= new HashMap();
|
||
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;
|
||
ddosUserRegion.put(n.get("regionKey"), value);
|
||
}
|
||
}else{
|
||
ddosUserRegion.put(n.get("regionKey"), "");
|
||
}
|
||
}
|
||
}
|
||
if(userRegion.endsWith(Constants.USER_REGION_SPLIT)){
|
||
userRegion = userRegion.substring(0, userRegion.length()-1);
|
||
}else if(!StringUtil.isEmpty(ddosUserRegion)){
|
||
userRegion = new Gson().toJson(ddosUserRegion);
|
||
}
|
||
}
|
||
list1.add(cfg);
|
||
if(list1.size()>0){
|
||
Map<String,List> map = ConfigConvertUtil.cfgToMaatConvert(ipRegionList,list1,1,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(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.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(entity.getIsValid());
|
||
if(!StringUtil.isEmpty(userRegion)){
|
||
maatCfg.setUserRegion(userRegion);
|
||
}
|
||
configCompileList.add(maatCfg);
|
||
}
|
||
maatBean.setConfigCompileList(configCompileList);
|
||
maatBean.setAuditTime(new Date());
|
||
maatBean.setCreatorName("TaskScheduler");
|
||
maatBean.setVersion(Constants.MAAT_VERSION);
|
||
maatBean.setOpAction(Constants.INSERT_ACTION);
|
||
String json=BaseService.gsonToJson(maatBean);
|
||
logger.info("定时任务修改DDOS配置内容:"+json);
|
||
//调用服务接口修改配置内容与状态
|
||
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
|
||
if(result!=null){
|
||
logger.info("定时任务修改DDOS配置内容响应信息:"+result.getMsg());
|
||
}
|
||
}else{
|
||
/*maatCfg = new MaatCfg();
|
||
maatCfg.initDefaultValue();
|
||
maatBean = new ToMaatBean();
|
||
configCompileList = new ArrayList();
|
||
for(CfgIndexInfo cfg:list){
|
||
if(StringUtils.isNotEmpty(cfg.getCommonGroupIds())){
|
||
maatCfg.setKeepGroupList(Arrays.asList(cfg.getCommonGroupIds().split(",")));
|
||
}
|
||
maatCfg.setCompileId(compileId);
|
||
maatCfg.setServiceId(serviceId);
|
||
maatCfg.setIsValid(isValid);//配置状态
|
||
configCompileList.add(maatCfg);
|
||
|
||
}
|
||
maatBean.setConfigCompileList(configCompileList);
|
||
maatBean.setAuditTime(entity.getAuditTime());
|
||
maatBean.setCreatorName(entity.getCurrentUser().getName());
|
||
maatBean.setVersion(Constants.MAAT_VERSION);
|
||
maatBean.setOpAction(Constants.UPDATE_ACTION);
|
||
//调用服务接口取消配置
|
||
String json=BaseService.gsonToJson(maatBean);
|
||
logger.info("定时器修改配置状态:"+json);
|
||
//调用服务接口下发配置
|
||
ToMaatResult result = ConfigServiceUtil.put(json,1);
|
||
logger.info("定时器修改配置状态响应时间:"+result.getMsg());
|
||
if(result!=null){
|
||
logger.info("定时任务修改NTC/PROXY策略的MAAT配置内容响应信息:"+result.getMsg());
|
||
return true;
|
||
}else{
|
||
return false;
|
||
}*/
|
||
}
|
||
|
||
}else if("file_digest_cfg".equals(tableName)){
|
||
List<FileDigestCfg> list = configSynchronizationDao.getFileDigestListByService(entity);
|
||
if(isIssueContent.equals(1)){
|
||
if(cfgList!=null){
|
||
for(Map<String,Object> m:cfgList){
|
||
String regionTable = m.get("tableName").toString();
|
||
if("1".equals(m.get("cfgType"))){
|
||
ipList.addAll(configSynchronizationDao.getIpPortList(regionTable, compileIds));
|
||
}else if("2".equals(m.get("cfgType"))){
|
||
strList.addAll(configSynchronizationDao.getStrList(regionTable,compileIds));
|
||
}else if("3".equals(m.get("cfgType"))){
|
||
complexStrList.addAll(configSynchronizationDao.getComplexStrList(regionTable,compileIds));
|
||
}else if("4".equals(m.get("cfgType"))){
|
||
|
||
}else if("5".equals(m.get("cfgType"))){
|
||
fileList.addAll(configSynchronizationDao.getFileDigestList(regionTable, compileIds));
|
||
}
|
||
}
|
||
}
|
||
//批量获取regionId,groupId(相同编译下的IP类配置多条ip只获取一个组号),分组复用的域配置不需要重新获取regionId,groupId
|
||
List<Integer> regionIds = ConfigServiceUtil.getId(3, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size());
|
||
List<Integer> groupIds = ConfigServiceUtil.getId(2, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size());
|
||
entity.setIsValid(isValid);//将最新的配置状态赋给配置对象
|
||
entity.setAuditTime(updateTime);
|
||
for(FileDigestCfg 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 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 = FileDigestCfg.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;
|
||
}
|
||
}
|
||
}
|
||
// 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);
|
||
}
|
||
}
|
||
//配置域转换
|
||
ConfigConvertUtil.configCovert(ipList,strList,complexStrList,
|
||
numList,fileList,regionIds,groupIds,entity,cfg.getCompileId(),
|
||
StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime(),
|
||
groupRelationList,ipRegionList,strRegionList,numRegionList,digestRegionList,areaIpRegionList,userRegion);
|
||
BeanUtils.copyProperties(cfg, maatCfg);
|
||
maatCfg.setAction(cfg.getAction());
|
||
maatCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.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(entity.getIsValid());
|
||
if(!StringUtil.isEmpty(userRegion)){
|
||
maatCfg.setUserRegion(userRegion);
|
||
}
|
||
configCompileList.add(maatCfg);
|
||
}
|
||
|
||
maatBean.setConfigCompileList(configCompileList);
|
||
maatBean.setAuditTime(new Date());
|
||
maatBean.setCreatorName("TaskScheduler");
|
||
maatBean.setVersion(Constants.MAAT_VERSION);
|
||
maatBean.setOpAction(Constants.INSERT_ACTION);
|
||
String json=BaseService.gsonToJson(maatBean);
|
||
logger.info("定时任务下发文件摘要配置内容:"+json);
|
||
//调用服务接口更新配置
|
||
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
|
||
if(result!=null){
|
||
logger.info("定时任务修改文件摘要类配置内容响应信息:"+result.getMsg());
|
||
}
|
||
}else{
|
||
/*maatCfg = new MaatCfg();
|
||
maatCfg.initDefaultValue();
|
||
maatBean = new ToMaatBean();
|
||
configCompileList = new ArrayList();
|
||
for(FileDigestCfg cfg:list){
|
||
if(StringUtils.isNotEmpty(cfg.getCommonGroupIds())){
|
||
maatCfg.setKeepGroupList(Arrays.asList(cfg.getCommonGroupIds().split(",")));
|
||
}
|
||
maatCfg.setCompileId(compileId);
|
||
maatCfg.setServiceId(serviceId);
|
||
maatCfg.setIsValid(isValid);//配置状态
|
||
configCompileList.add(maatCfg);
|
||
|
||
}
|
||
maatBean.setConfigCompileList(configCompileList);
|
||
maatBean.setAuditTime(entity.getAuditTime());
|
||
maatBean.setCreatorName(entity.getCurrentUser().getName());
|
||
maatBean.setVersion(Constants.MAAT_VERSION);
|
||
maatBean.setOpAction(Constants.UPDATE_ACTION);
|
||
//调用服务接口取消配置
|
||
String json=BaseService.gsonToJson(maatBean);
|
||
logger.info("定时器修改配置状态:"+json);
|
||
//调用服务接口下发配置
|
||
ToMaatResult result = ConfigServiceUtil.put(json,1);
|
||
logger.info("定时器修改配置状态响应时间:"+result.getMsg());
|
||
if(result!=null){
|
||
logger.info("定时任务修改NTC/PROXY策略的MAAT配置内容响应信息:"+result.getMsg());
|
||
return true;
|
||
}else{
|
||
return false;
|
||
}*/
|
||
}
|
||
|
||
|
||
}else if("app_policy_cfg".equals(tableName)){
|
||
List<AppPolicyCfg> list = configSynchronizationDao.getAppPolicyList(entity);
|
||
if(isIssueContent.equals(1)){
|
||
if(cfgList!=null){
|
||
for(Map<String,Object> m:cfgList){
|
||
String regionTable = m.get("tableName").toString();
|
||
if("1".equals(m.get("cfgType"))){
|
||
ipList.addAll(configSynchronizationDao.getIpPortList(regionTable, compileIds));
|
||
}else if("2".equals(m.get("cfgType"))){
|
||
strList.addAll(configSynchronizationDao.getStrList(regionTable,compileIds));
|
||
}else if("3".equals(m.get("cfgType"))){
|
||
complexStrList.addAll(configSynchronizationDao.getComplexStrList(regionTable,compileIds));
|
||
}else if("4".equals(m.get("cfgType"))){
|
||
|
||
}else if("5".equals(m.get("cfgType"))){
|
||
fileList.addAll(configSynchronizationDao.getFileDigestList(regionTable, compileIds));
|
||
}
|
||
}
|
||
}
|
||
//批量获取regionId,groupId(相同编译下的IP类配置多条ip只获取一个组号),compileIds.size()表示app策略本身有一个字符串域
|
||
List<Integer> regionIds = ConfigServiceUtil.getId(3, ipList.size()+strList.size()+compileIds.size()+complexStrList.size()+numList.size()+fileList.size());
|
||
List<Integer> groupIds = ConfigServiceUtil.getId(2, ipList.size()+strList.size()+compileIds.size()+complexStrList.size()+numList.size()+fileList.size());
|
||
entity.setIsValid(isValid);//将最新的配置状态赋给配置对象
|
||
entity.setAuditTime(updateTime);
|
||
for(AppPolicyCfg 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 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 = AppPolicyCfg.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);
|
||
}
|
||
}
|
||
//将app码与行为码设置为字符串域
|
||
StringBuffer cfgKeywords = new StringBuffer();
|
||
BaseStringCfg strCfg = new BaseStringCfg();
|
||
if(cfg.getServiceId().equals(35)||cfg.getServiceId().equals(147)||cfg.getServiceId().equals(1059)){//基础协议
|
||
cfgKeywords.append(Constants.PROTO_ID_REGION + "=" + cfg.getAppCode());
|
||
}else if(cfg.getServiceId().equals(33)||cfg.getServiceId().equals(145)||cfg.getServiceId().equals(1056)){
|
||
cfgKeywords.append(Constants.APP_ID_REGION + "=" + cfg.getAppCode());
|
||
if(cfg.getBehavCode()!=null){
|
||
cfgKeywords.append(Constants.KEYWORD_EXPR);
|
||
cfgKeywords.append(Constants.BEHAV_ID_REGION + "=" + cfg.getBehavCode());
|
||
}
|
||
}else if(cfg.getServiceId().equals(36)||cfg.getServiceId().equals(148)||cfg.getServiceId().equals(1060)){//隧道加密协议
|
||
cfgKeywords.append(Constants.PROTO_ID_REGION + "=" + cfg.getAppCode());
|
||
if(cfg.getBehavCode()!=null){
|
||
cfgKeywords.append(Constants.KEYWORD_EXPR);
|
||
cfgKeywords.append(Constants.BEHAV_ID_REGION + "=" + cfg.getBehavCode());
|
||
}
|
||
}
|
||
cfg.setCfgKeywords(cfgKeywords.toString());
|
||
BeanUtils.copyProperties(cfg, strCfg,new String[]{"menuNameCode"});
|
||
strList.add(strCfg);
|
||
//配置域转换
|
||
ConfigConvertUtil.configCovert(ipList,strList,complexStrList,
|
||
numList,fileList,regionIds,groupIds,entity,cfg.getCompileId(),
|
||
StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime(),
|
||
groupRelationList,ipRegionList,strRegionList,numRegionList,digestRegionList,areaIpRegionList,userRegion);
|
||
|
||
BeanUtils.copyProperties(cfg, maatCfg);
|
||
maatCfg.setAction(cfg.getAction());
|
||
maatCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.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(entity.getIsValid());
|
||
if(!StringUtil.isEmpty(userRegion)){
|
||
maatCfg.setUserRegion(userRegion);
|
||
}
|
||
configCompileList.add(maatCfg);
|
||
}
|
||
maatBean.setConfigCompileList(configCompileList);
|
||
maatBean.setAuditTime(new Date());
|
||
maatBean.setCreatorName("TaskScheduler");
|
||
maatBean.setVersion(Constants.MAAT_VERSION);
|
||
maatBean.setOpAction(Constants.INSERT_ACTION);
|
||
String json=BaseService.gsonToJson(maatBean);
|
||
logger.info("定时任务下发APP POLICY MAAT配置内容:"+json);
|
||
//调用服务接口下发配置数据
|
||
ToMaatResult result = ConfigServiceUtil.postMaatCfg(json);
|
||
if(result!=null){
|
||
logger.info("定时任务更新APP POLICY配置内容响应信息:"+result.getMsg());
|
||
}
|
||
}else{
|
||
/*maatCfg = new MaatCfg();
|
||
maatCfg.initDefaultValue();
|
||
maatBean = new ToMaatBean();
|
||
configCompileList = new ArrayList();
|
||
for(AppPolicyCfg cfg:list){
|
||
if(StringUtils.isNotEmpty(cfg.getCommonGroupIds())){
|
||
maatCfg.setKeepGroupList(Arrays.asList(cfg.getCommonGroupIds().split(",")));
|
||
}
|
||
maatCfg.setCompileId(compileId);
|
||
maatCfg.setServiceId(serviceId);
|
||
maatCfg.setIsValid(isValid);//配置状态
|
||
configCompileList.add(maatCfg);
|
||
|
||
}
|
||
maatBean.setConfigCompileList(configCompileList);
|
||
maatBean.setAuditTime(entity.getAuditTime());
|
||
maatBean.setCreatorName(entity.getCurrentUser().getName());
|
||
maatBean.setVersion(Constants.MAAT_VERSION);
|
||
maatBean.setOpAction(Constants.UPDATE_ACTION);
|
||
//调用服务接口取消配置
|
||
String json=BaseService.gsonToJson(maatBean);
|
||
logger.info("定时器修改配置状态:"+json);
|
||
//调用服务接口下发配置
|
||
ToMaatResult result = ConfigServiceUtil.put(json,1);
|
||
logger.info("定时器修改配置状态响应时间:"+result.getMsg());
|
||
if(result!=null){
|
||
logger.info("定时任务修改NTC/PROXY策略的MAAT配置内容响应信息:"+result.getMsg());
|
||
return true;
|
||
}else{
|
||
return false;
|
||
}*/
|
||
}
|
||
|
||
}
|
||
|
||
}else{//只修改配置状态
|
||
//下发并修改配置状态的参数类
|
||
/*ToUpdateMaatBeanStatus maatStatusBean = new ToUpdateMaatBeanStatus();
|
||
UpdateMaatCfgStatus updateCfg = new UpdateMaatCfgStatus();
|
||
List<UpdateMaatCfgStatus> configCompileStartStopList = new ArrayList();
|
||
maatStatusBean.setVersion(Constants.MAAT_VERSION);
|
||
maatStatusBean.setOpAction(Constants.UPDATE_ACTION);
|
||
maatStatusBean.setAuditTime(updateTime);
|
||
maatStatusBean.setCreatorName("TaskScheduler");//任务调度定时修改状态
|
||
updateCfg.setIsValid(isValid);
|
||
updateCfg.setCompileId(compileId);
|
||
updateCfg.setAuditTime(updateTime);
|
||
updateCfg.setService(serviceId);
|
||
configCompileStartStopList.add(updateCfg);
|
||
maatStatusBean.setConfigCompileStartStopList(configCompileStartStopList);
|
||
|
||
//ip spoofing
|
||
if(serviceId.equals(518)){
|
||
entity.setCompileId(compileId);
|
||
List<CfgIndexInfo> list = configSynchronizationDao.getCfgIndexList(entity);
|
||
for(CfgIndexInfo cfg:list){
|
||
PxyObjSpoofingIpPool pool=new PxyObjSpoofingIpPool();
|
||
pool.setCfgId(Long.valueOf(cfg.getUserRegion3()));
|
||
pool = configSynchronizationDao.getPxyObjSpoofingIpPool(pool.getCfgId());
|
||
List<PxyObjSpoofingIpPool> poolList = new ArrayList<PxyObjSpoofingIpPool>();
|
||
pool.setIsValid(0);
|
||
pool.setCompileId(pool.getCompileId());
|
||
pool.setServiceId(pool.getServiceId());
|
||
poolList.add(pool);
|
||
//调用服务接口取消配置
|
||
String json=BaseService.gsonToJson(poolList);
|
||
logger.info("欺骗IP池配置配置参数:"+json);
|
||
//调用服务接口取消配置
|
||
try {
|
||
ToMaatResult result = ConfigServiceUtil.put(json, 2);
|
||
logger.info("欺骗IP池配置响应信息:"+result.getMsg());
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
logger.info("欺骗IP池配置配置失败");
|
||
throw e;
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
String json=BaseService.gsonToJson(maatStatusBean);
|
||
logger.info("MAAT类配置启停状态修改内容:"+json);
|
||
//调用服务启停接口
|
||
ToMaatResult result = ConfigServiceUtil.put(json,1);
|
||
if(result!=null){
|
||
logger.info("MAAT类配置启停状态修改结果:"+result.getMsg());
|
||
}else{
|
||
return false;
|
||
}*/
|
||
|
||
//ip spoofing
|
||
if(serviceId.equals(518)){
|
||
entity.setCompileId(compileId);
|
||
List<CfgIndexInfo> list = configSynchronizationDao.getCfgIndexList(entity);
|
||
entity.setCompileId(compileId);
|
||
for(CfgIndexInfo cfg:list){
|
||
if(isValid==0){
|
||
PxyObjSpoofingIpPool pool=new PxyObjSpoofingIpPool();
|
||
pool.setCfgId(Long.valueOf(cfg.getUserRegion3()));
|
||
pool = configSynchronizationDao.getPxyObjSpoofingIpPool(pool.getCfgId());
|
||
List<PxyObjSpoofingIpPool> poolList = new ArrayList<PxyObjSpoofingIpPool>();
|
||
pool.setIsValid(0);
|
||
pool.setCompileId(pool.getCompileId());
|
||
pool.setServiceId(pool.getServiceId());
|
||
poolList.add(pool);
|
||
//调用服务接口取消配置
|
||
String json=BaseService.gsonToJson(poolList);
|
||
logger.info("欺骗IP池配置配置参数:"+json);
|
||
//调用服务接口取消配置
|
||
try {
|
||
ToMaatResult result = ConfigServiceUtil.put(json, 2);
|
||
logger.info("欺骗IP池配置响应信息:"+result.getMsg());
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
logger.info("欺骗IP池配置配置失败");
|
||
throw e;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
maatCfg = new MaatCfg();
|
||
maatCfg.initDefaultValue();
|
||
maatBean = new ToMaatBean();
|
||
configCompileList = new ArrayList();
|
||
maatCfg.setCompileId(compileId);
|
||
maatCfg.setServiceId(serviceId);
|
||
maatCfg.setIsValid(isValid);//配置状态
|
||
configCompileList.add(maatCfg);
|
||
maatBean.setConfigCompileList(configCompileList);
|
||
maatBean.setAuditTime(entity.getAuditTime());
|
||
maatBean.setCreatorName("TaskScheduler");
|
||
maatBean.setVersion(Constants.MAAT_VERSION);
|
||
maatBean.setOpAction(Constants.UPDATE_ACTION);
|
||
//调用服务接口取消配置
|
||
String json=BaseService.gsonToJson(maatBean);
|
||
logger.info("定时器修改配置状态:"+json);
|
||
//调用服务接口下发配置
|
||
ToMaatResult result = ConfigServiceUtil.put(json,1);
|
||
logger.info("定时器修改配置状态响应:"+result.getMsg());
|
||
}
|
||
|
||
}else if("2".equals(serviceType)){//回调类配置
|
||
List ids = Lists.newArrayList();
|
||
if(isIssueContent.equals(1)){//修改配置内容以及状态
|
||
entity.setCompileId(compileId);
|
||
//查询配置
|
||
if(entity.getServiceId().equals(3)){//ip drop回调类配置用了主表和子表关系
|
||
List<CfgIndexInfo> list = configSynchronizationDao.getCfgIndexList(entity);
|
||
if(!StringUtil.isEmpty(list)){
|
||
List<Integer> compileIdArray = Lists.newArrayList();
|
||
compileIdArray.add(compileId);
|
||
List subList = configSynchronizationDao.getIpDropList("ip_port_cfg", compileIdArray);
|
||
Date updateTime = new Date();
|
||
for(int i=0;i<subList.size();i++){
|
||
IpPortCfg cfg = (IpPortCfg) subList.get(i);
|
||
cfg.setIsValid(isValid);
|
||
cfg.setAuditTime(updateTime);
|
||
callBackCfgList.add(BaseService.convertCallBackIp(cfg,cfg.getGroupId()));
|
||
}
|
||
}
|
||
|
||
}else{
|
||
if(className.equals("AvFileSampleCfg")){//YSP文件样例配置
|
||
List<AvFileSampleCfg> list = configSynchronizationDao.getAvFileCfgList(entity);
|
||
for(int i=0;i<list.size();i++){
|
||
AvFileSampleCfg cfg = list.get(i);
|
||
Date updateTime = new Date();
|
||
cfg.setIsValid(isValid);;
|
||
cfg.setAuditTime(updateTime);
|
||
callBackCfgList.add(cfg);
|
||
}
|
||
|
||
}else if(className.equals("IpPortCfg")){//dns 欺骗IP等IP类的回调配置
|
||
List<IpPortCfg> list = configSynchronizationDao.getIpPortListByService(entity);
|
||
Date updateTime = new Date();
|
||
for(int i=0;i<list.size();i++){
|
||
IpPortCfg cfg = (IpPortCfg) list.get(i);
|
||
cfg.setIsValid(isValid);;
|
||
cfg.setAuditTime(updateTime);
|
||
callBackCfgList.add(BaseService.convertCallBackIp(cfg,cfg.getGroupId()));
|
||
}
|
||
}
|
||
}
|
||
}else{
|
||
Date updateTime = new Date();
|
||
InlineIp updateCfg = new InlineIp();//复用IP回调类的配置表设置下发取消回调配置的参数
|
||
updateCfg.setIsValid(isValid);
|
||
updateCfg.setCfgId(compileId);
|
||
updateCfg.setService(serviceId);
|
||
callBackCfgList.add(updateCfg);
|
||
}
|
||
if(!StringUtil.isEmpty(callBackCfgList)){
|
||
//调用服务接口下发配置数据
|
||
String json=BaseService.gsonToJson(callBackCfgList);
|
||
logger.info("定时器修改回调类配置状态:"+json);
|
||
//调用服务接口修改回调类配置状态
|
||
ToMaatResult result = ConfigServiceUtil.put(json,2);
|
||
logger.info("定时器修改回调类配置状态响应信息:"+result);
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
//定时器非前台业务,需要设置shiro的SecurityManager
|
||
private void SecurityManagerInit(){
|
||
//1. 获取SecurityManager 工厂,此处使用INI配置文件初始化SecurityManager
|
||
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
|
||
//2.得道SecurityManager 实例,并绑定给SecurityUtils。
|
||
SecurityManager securityManager = factory.getInstance();
|
||
SecurityUtils.setSecurityManager(securityManager);
|
||
}
|
||
private Subject login(String username,String password) {
|
||
Subject subject = SecurityUtils.getSubject();
|
||
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
|
||
subject.login(token);
|
||
return subject;
|
||
}
|
||
public static void main(String[] args) {
|
||
|
||
}
|
||
private void covertCommongroupIdsMap(Map commGroupMap,String key,CfgIndexInfo cfg,ConfigSynchronizationDao configSynchronizationDao,Class clazz){
|
||
if(commGroupMap.containsKey(key)){
|
||
String groups=commGroupMap.get(key).toString();
|
||
List<Integer> _groupIds=new ArrayList<>();
|
||
for(String group:groups.split(",")){
|
||
if(StringUtils.isNotBlank(group)){
|
||
_groupIds.add(Integer.parseInt(group));
|
||
}
|
||
}
|
||
if(_groupIds.size()>0){
|
||
if("IpCommCfg".equals(clazz.getSimpleName())){
|
||
cfg.setIpCommGroupCfgList(configSynchronizationDao.getIpCommCfgPortList(_groupIds));
|
||
}else if("UrlCommCfg".equals(clazz.getSimpleName())){
|
||
cfg.setUrlCommGroupList(configSynchronizationDao.getUrlCommCfgPortList(_groupIds));
|
||
}else if("ScriberIdCommCfg".equals(clazz.getSimpleName())){
|
||
cfg.setScriberIdCommGroupList(configSynchronizationDao.getSubscribeIdCommCfgPortList(_groupIds));
|
||
}else if("DomainCommCfg".equals(clazz.getSimpleName())){
|
||
cfg.setDomainCommGroupList(configSynchronizationDao.getDomainCommCfgPortList(_groupIds));
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|