白名单增加定时任务处理;

修复白名单热修改被覆盖jsp
This commit is contained in:
duandongmei
2019-04-21 13:15:29 +08:00
parent c716cb1fc3
commit 28f07f00f2
8 changed files with 653 additions and 598 deletions

View File

@@ -22,12 +22,18 @@ public interface SchedulerDao extends CrudDao<ScheduleCfg> {
*/
List<ScheduleCfg> findNewlyCfg(@Param("id")Long id,@Param("limit")Long limit,@Param("type")int type,@Param("delFlag")Integer delFlag);
/**
* 删除定时任务
* @param cfg
* @return
*/
int deleteByCompileIds(@Param("compileIds")String compileIds,@Param("type")Integer type);
/**
* 更新 del_flag 字段为删除标识
* @param cfg
* @return
*/
int deleteByCompileIds(String compileIds);
int inValidByCompileIds(@Param("compileIds")String compileIds);
/**
* 查找 配置 下发 最新记录

View File

@@ -94,7 +94,6 @@
<include refid="scheduleCfgColumns"/>
from schedule_cfg a
<where>
del_Flag = #{DEL_FLAG_NORMAL}
<if test="id != null">
and id = #{id}
</if>
@@ -116,12 +115,15 @@
<if test="tableName != null and tableName != ''">
and table_name = #{tableName}
</if>
and type = 1
<!-- del_Flag = #{DEL_FLAG_NORMAL} -->
and name is null
<!-- 动态where条件 -->
<if test=" whereStr != null and whereStr !=''">
${whereStr}
</if>
</where>
order by a.id
order by a.id desc
</select>
<!-- 查找最新的更新数据 -->
@@ -242,12 +244,17 @@
</insert>
<!-- 根据 compileIds 将定时任务失效,定时任务的修改策略为:删除之前的所有配置,新增 -->
<update id="deleteByCompileIds" parameterType="com.nis.domain.ScheduleCfg">
<update id="inValidByCompileIds" parameterType="com.nis.domain.ScheduleCfg">
update schedule_cfg
<set>
del_flag = 0
</set>
WHERE compile_Id in (#{compileIds}) and del_flag =1
WHERE compile_Id in (${compileIds}) and del_flag =1
</update>
<!-- 根据 compileIds 将定时任务删除 -->
<update id="deleteByCompileIds">
delete from schedule_cfg
WHERE compile_Id in (${compileIds}) and type=#{type}
</update>

View File

@@ -2951,7 +2951,7 @@ public abstract class BaseService {
* @param tableName
* @throws SQLException
*/
public void handelScheduleCfg(Object parameterObject,String tableName){
public void handelScheduleCfg(Object parameterObject,String tableName,BaseCfg cfg){
logger.info("handelScheduleCfg==》开始处理定时任务");
List<BaseCfg> cfgList = Lists.newArrayList();
//确保 单个,批量都适用
@@ -2970,31 +2970,16 @@ public abstract class BaseService {
}
//存放需要删除的定时任务根据compileId删除之前所有的定时任务
String compileIds="";
//存放需要删除的定时任务trigger的sche
List<ScheduleCfg> delScheduleList = Lists.newArrayList();
String delCompileIds="";
//存放需要失效的定时任务
String inValidCompileIds="";
//存放需要新增的定时任务
List<ScheduleCfg> addScheduleList = Lists.newArrayList();
for(BaseCfg<?> baseCfg : cfgList) {
//定时任务删除需要新增一条无效的sche用来清理旧的trigger
if(baseCfg.getIsValid()==-1 || baseCfg.getIsAudit()==2 || baseCfg.getIsAudit()==3) {
ScheduleCfg scheduleCfgdel =new ScheduleCfg();
scheduleCfgdel.setDelFlag(0);
scheduleCfgdel.setType(1);
scheduleCfgdel.setTableName(tableName);
scheduleCfgdel.setName("DELETE TRIGGER SCHE");
scheduleCfgdel.setCompileId(baseCfg.getCompileId());
scheduleCfgdel.setFunctionId(baseCfg.getFunctionId());
scheduleCfgdel.setIsValid(baseCfg.getIsValid());
scheduleCfgdel.setIsAudit(baseCfg.getIsAudit());
scheduleCfgdel.setCfgId(baseCfg.getCfgId());
scheduleCfgdel.setCreateTime(new Date());
scheduleCfgdel.setCreatorId(UserUtils.getUser().getId());
scheduleCfgdel.setServiceId(baseCfg.getServiceId());
delScheduleList.add(scheduleCfgdel);
}else {
//有新的定时任务时不需要在新增无效sche来清理旧的trigger扫描到新增的sche时也会有清理操作
//有新的定时任务时,新增新的
if(cfg.getIsValid()==0 && cfg.getIsAudit()==0){
delCompileIds+=baseCfg.getCompileId()+",";
ScheduleCfg scheduleCfgAdd = copyScheduleCfgFromBaseCfg(baseCfg, tableName);
if(scheduleCfgAdd!=null){
scheduleCfgAdd.setIsValid(0);
@@ -3003,18 +2988,22 @@ public abstract class BaseService {
addScheduleList.add(scheduleCfgAdd);
}
}
compileIds+=baseCfg.getCompileId()+",";
//需要失效的定时任务
if(cfg.getIsValid()==-1 || cfg.getIsAudit()==2 ||cfg.getIsAudit()==3){
inValidCompileIds+=baseCfg.getCompileId()+",";
}
}
//将之前的定时任务置为无效
if(!StringUtil.isEmpty(compileIds)) {
compileIds=compileIds.substring(0,compileIds.length()-1);
//将type=2定时任务删除
if(!StringUtil.isEmpty(inValidCompileIds) || !StringUtil.isEmpty(delCompileIds) ) {
String syncDelCompileIds=delCompileIds+inValidCompileIds;
syncDelCompileIds=syncDelCompileIds.substring(0,syncDelCompileIds.length()-1);
SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
SqlSession batchSqlSession = null;
try {
batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
((SchedulerDao) batchSqlSession.getMapper(SchedulerDao.class)).deleteByCompileIds(compileIds.toString());
((SchedulerDao) batchSqlSession.getMapper(SchedulerDao.class)).deleteByCompileIds(syncDelCompileIds,2);
batchSqlSession.commit();
} finally {
if(batchSqlSession != null) {
@@ -3022,16 +3011,31 @@ public abstract class BaseService {
}
}
}
//新增sche用于删除旧的定时任务
if(!StringUtil.isEmpty(delScheduleList)) {
compileIds=compileIds.substring(0,compileIds.length()-1);
//将type=1定时任务删除
if(!StringUtil.isEmpty(delCompileIds) ) {
delCompileIds=delCompileIds.substring(0,delCompileIds.length()-1);
SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
SqlSession batchSqlSession = null;
try {
batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
for(ScheduleCfg entity : delScheduleList) {
((SchedulerDao) batchSqlSession.getMapper(SchedulerDao.class)).insert(entity);
((SchedulerDao) batchSqlSession.getMapper(SchedulerDao.class)).deleteByCompileIds(delCompileIds,1);
batchSqlSession.commit();
} finally {
if(batchSqlSession != null) {
batchSqlSession.close();
}
}
}
//将定时任务失效
if(!StringUtil.isEmpty(inValidCompileIds)) {
inValidCompileIds=inValidCompileIds.substring(0,inValidCompileIds.length()-1);
SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
SqlSession batchSqlSession = null;
try {
batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
((SchedulerDao) batchSqlSession.getMapper(SchedulerDao.class)).inValidByCompileIds(inValidCompileIds);
batchSqlSession.commit();
} finally {
if(batchSqlSession != null) {
@@ -3042,7 +3046,6 @@ public abstract class BaseService {
//新增sche用于新增新定时任务
if(!StringUtil.isEmpty(addScheduleList)) {
compileIds=compileIds.substring(0,compileIds.length()-1);
SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
SqlSession batchSqlSession = null;
try {

View File

@@ -30,7 +30,10 @@ public class ScheduleService extends BaseService{
BaseCfg baseCfg = dao.getCfgTableInfo(cfg.getTableName(),compileId);//查询当前配置的最新状态
ScheduleCfg curSchedule = dao.get(cfg.getId());//查询当前任务的最新状态
Integer curIsValid = baseCfg.getIsValid();//当前配置的最新 是否有效信息
Integer curScheduleFlag = curSchedule.getDelFlag();//当前任务最新状态是否有效
Integer curScheduleFlag =0;
if(curSchedule!=null){
curScheduleFlag = curSchedule.getDelFlag();//当前任务最新状态是否有效
}
if(curScheduleFlag == 0) {
logger.info(String.format("当前任务已失效 : id:%s,delFlag:%s", cfg.getId(),curScheduleFlag));
return;

View File

@@ -129,7 +129,7 @@ public class CommonPolicyService extends CrudService<WebsiteCfgDao, CfgIndexInfo
}
}
//更新各配置定时任务信息
handelScheduleCfg(httpUrlCfgs, entity.getTableName());
handelScheduleCfg(httpUrlCfgs, entity.getTableName(),entity);
}
if(!StringUtil.isEmpty(auditHttpCompileIds)) {
commonPolicyDao.auditCfgBatch("cfg_index_info", entity,auditHttpCompileIds,null);
@@ -141,7 +141,7 @@ public class CommonPolicyService extends CrudService<WebsiteCfgDao, CfgIndexInfo
}
commonPolicyDao.auditCfgBatch( entity.getTableName(), entity,compileIds,null);
//更新各配置定时任务信息
handelScheduleCfg(list, entity.getTableName());
handelScheduleCfg(list, entity.getTableName(),entity);
}
if(cfgList!=null){
@@ -280,18 +280,18 @@ public class CommonPolicyService extends CrudService<WebsiteCfgDao, CfgIndexInfo
commonPolicyDao.auditCfgBatch( "cfg_index_info", entity,compileIds,null);
if(entity.getIsAudit()!=1) {
//更新各配置定时任务信息
handelScheduleCfg(auditList, entity.getTableName());
handelScheduleCfg(auditList, entity.getTableName(),entity);
//更新各配置定时任务信息
handelScheduleCfg(notAuditList, entity.getTableName());
handelScheduleCfg(notAuditList, entity.getTableName(),entity);
}
}
if(!StringUtil.isEmpty(ids) && !StringUtil.isEmpty(entity.getTableName())) {
commonPolicyDao.auditCfgBatch( entity.getTableName(), entity,ids,null);
if(entity.getIsAudit()!=1) {
//更新各配置定时任务信息
handelScheduleCfg(auditList, entity.getTableName());
handelScheduleCfg(auditList, entity.getTableName(),entity);
//更新各配置定时任务信息
handelScheduleCfg(notAuditList, entity.getTableName());
handelScheduleCfg(notAuditList, entity.getTableName(),entity);
}
if(entity.getTableName().equals("pxy_obj_trusted_ca_cert")) {
commonPolicyDao.auditCfgBatch("pxy_obj_trusted_ca_crl", entity,ids,null);
@@ -351,7 +351,7 @@ public class CommonPolicyService extends CrudService<WebsiteCfgDao, CfgIndexInfo
if(!StringUtil.isEmpty(compileIds) && !StringUtil.isEmpty(entity.getTableName())) {
commonPolicyDao.auditCfgBatch( entity.getTableName(), entity,compileIds,null); // 批量审核并修改配置审核状态(主表)
//更新各配置定时任务信息
handelScheduleCfg(list, entity.getTableName());
handelScheduleCfg(list, entity.getTableName(),entity);
}
// 3.更新域配置审核状态(子表)
@@ -390,7 +390,7 @@ public class CommonPolicyService extends CrudService<WebsiteCfgDao, CfgIndexInfo
if(!StringUtil.isEmpty(compileIds) && !StringUtil.isEmpty(entity.getTableName())) {
commonPolicyDao.deleteCfgBatch(entity.getTableName(), entity,compileIds); // 批量修改配置状态(主表)
//更新各配置定时任务信息
handelScheduleCfg(list, entity.getTableName());
handelScheduleCfg(list, entity.getTableName(),entity);
}
// 3.更新域配置状态(子表)

View File

@@ -1,66 +1,66 @@
--#function_region_dict 对应ip_patternport_pattern的字段长度拓展一倍使用分号分隔源/目的
#function_region_dict 对应ip_patternport_pattern的字段长度拓展一倍使用分号分隔源/目的
ALTER TABLE function_region_dict MODIFY config_ip_pattern VARCHAR(20) COMMENT "ip的格式 1:ip掩码;2:IP范围;3:IP;使用逗号分隔,源ip与目的IP使用;分隔";
ALTER TABLE function_region_dict MODIFY config_port_pattern VARCHAR(20) COMMENT "端口的格式1:port;2:port_mask;使用逗号分隔,源端口与目的端口使用;分隔";
--#各表修改ip_patternport_pattern
--#app_ip_cfg
#各表修改ip_patternport_pattern
#app_ip_cfg
ALTER TABLE app_ip_cfg CHANGE ip_pattern src_ip_pattern INT COMMENT '源ip格式';
ALTER TABLE app_ip_cfg ADD dest_ip_pattern INT COMMENT '目的ip格式';
ALTER TABLE app_ip_cfg CHANGE port_pattern src_port_pattern INT COMMENT '源端口格式';
ALTER TABLE app_ip_cfg ADD dest_port_pattern INT COMMENT '目的端口格式';
--#app_ip_range_cfg
#app_ip_range_cfg
ALTER TABLE app_ip_range_cfg CHANGE ip_pattern src_ip_pattern INT COMMENT '源ip格式';
ALTER TABLE app_ip_range_cfg ADD dest_ip_pattern INT COMMENT '目的ip格式';
ALTER TABLE app_ip_range_cfg CHANGE port_pattern src_port_pattern INT COMMENT '源端口格式';
ALTER TABLE app_ip_range_cfg ADD dest_port_pattern INT COMMENT '目的端口格式';
--#area_ip_cfg
#area_ip_cfg
ALTER TABLE area_ip_cfg CHANGE ip_pattern src_ip_pattern INT COMMENT '源ip格式';
ALTER TABLE area_ip_cfg ADD dest_ip_pattern INT COMMENT '目的ip格式';
ALTER TABLE area_ip_cfg CHANGE port_pattern src_port_pattern INT COMMENT '源端口格式';
ALTER TABLE area_ip_cfg ADD dest_port_pattern INT COMMENT '目的端口格式';
--#asn_ip_cfg
#asn_ip_cfg
ALTER TABLE asn_ip_cfg CHANGE ip_pattern src_ip_pattern INT COMMENT '源ip格式';
ALTER TABLE asn_ip_cfg ADD dest_ip_pattern INT COMMENT '目的ip格式';
ALTER TABLE asn_ip_cfg CHANGE port_pattern src_port_pattern INT COMMENT '源端口格式';
ALTER TABLE asn_ip_cfg ADD dest_port_pattern INT COMMENT '目的端口格式';
--#av_cont_ip_cfg
#av_cont_ip_cfg
ALTER TABLE av_cont_ip_cfg change ip_pattern src_ip_pattern int COMMENT '源ip格式';
ALTER TABLE av_cont_ip_cfg add dest_ip_pattern INT COMMENT '目的ip格式';
ALTER TABLE av_cont_ip_cfg CHANGE port_pattern src_port_pattern INT COMMENT '源端口格式';
ALTER TABLE av_cont_ip_cfg ADD dest_port_pattern INT COMMENT '目的端口格式';
--#av_pic_ip_cfg
#av_pic_ip_cfg
ALTER TABLE av_pic_ip_cfg CHANGE ip_pattern src_ip_pattern INT COMMENT '源ip格式';
ALTER TABLE av_pic_ip_cfg ADD dest_ip_pattern INT COMMENT '目的ip格式';
ALTER TABLE av_pic_ip_cfg CHANGE port_pattern src_port_pattern INT COMMENT '源端口格式';
ALTER TABLE av_pic_ip_cfg ADD dest_port_pattern INT COMMENT '目的端口格式';
--#av_voip_ip_cfg
#av_voip_ip_cfg
ALTER TABLE av_voip_ip_cfg CHANGE ip_pattern src_ip_pattern INT COMMENT '源ip格式';
ALTER TABLE av_voip_ip_cfg ADD dest_ip_pattern INT COMMENT '目的ip格式';
ALTER TABLE av_voip_ip_cfg CHANGE port_pattern src_port_pattern INT COMMENT '源端口格式';
ALTER TABLE av_voip_ip_cfg ADD dest_port_pattern INT COMMENT '目的端口格式';
--#ddos_ip_cfg
#ddos_ip_cfg
ALTER TABLE ddos_ip_cfg CHANGE ip_pattern src_ip_pattern INT COMMENT '源ip格式';
ALTER TABLE ddos_ip_cfg ADD dest_ip_pattern INT COMMENT '目的ip格式';
ALTER TABLE ddos_ip_cfg CHANGE port_pattern src_port_pattern INT COMMENT '源端口格式';
ALTER TABLE ddos_ip_cfg ADD dest_port_pattern INT COMMENT '目的端口格式';
--#dns_ip_cfg
#dns_ip_cfg
ALTER TABLE dns_ip_cfg CHANGE ip_pattern src_ip_pattern INT COMMENT '源ip格式';
ALTER TABLE dns_ip_cfg ADD dest_ip_pattern INT COMMENT '目的ip格式';
ALTER TABLE dns_ip_cfg CHANGE port_pattern src_port_pattern INT COMMENT '源端口格式';
ALTER TABLE dns_ip_cfg ADD dest_port_pattern INT COMMENT '目的端口格式';
--#ip_port_cfg
#ip_port_cfg
ALTER TABLE ip_port_cfg CHANGE ip_pattern src_ip_pattern INT COMMENT '源ip格式';
ALTER TABLE ip_port_cfg ADD dest_ip_pattern INT COMMENT '目的ip格式';
ALTER TABLE ip_port_cfg CHANGE port_pattern src_port_pattern INT COMMENT '源端口格式';
ALTER TABLE ip_port_cfg ADD dest_port_pattern INT COMMENT '目的端口格式';
--#ip_reuse_ip_cfg
--ALTER TABLE ip_reuse_ip_cfg CHANGE ip_pattern src_ip_pattern INT COMMENT '源ip格式';
--ALTER TABLE ip_reuse_ip_cfg ADD dest_ip_pattern INT COMMENT '目的ip格式';
--ALTER TABLE ip_reuse_ip_cfg CHANGE port_pattern src_port_pattern INT COMMENT '源端口格式';
--ALTER TABLE ip_reuse_ip_cfg ADD dest_port_pattern INT COMMENT '目的端口格式';
--#ip_reuse_policy_cfg
--ALTER TABLE ip_reuse_policy_cfg CHANGE ip_pattern src_ip_pattern INT COMMENT '源ip格式';
--ALTER TABLE ip_reuse_policy_cfg ADD dest_ip_pattern INT COMMENT '目的ip格式';
--#修改字典的值
#ip_reuse_ip_cfg
ALTER TABLE ip_reuse_ip_cfg CHANGE ip_pattern src_ip_pattern INT COMMENT '源ip格式';
ALTER TABLE ip_reuse_ip_cfg ADD dest_ip_pattern INT COMMENT '目的ip格式';
ALTER TABLE ip_reuse_ip_cfg CHANGE port_pattern src_port_pattern INT COMMENT '源端口格式';
ALTER TABLE ip_reuse_ip_cfg ADD dest_port_pattern INT COMMENT '目的端口格式';
#ip_reuse_policy_cfg
ALTER TABLE ip_reuse_policy_cfg CHANGE ip_pattern src_ip_pattern INT COMMENT '源ip格式';
ALTER TABLE ip_reuse_policy_cfg ADD dest_ip_pattern INT COMMENT '目的ip格式';
#修改字典的值
UPDATE function_region_dict SET config_ip_pattern ="1,2,3;1,2,3" WHERE config_ip_pattern="1,2,3";
UPDATE function_region_dict SET config_ip_pattern ="1;1" WHERE config_ip_pattern="1";
UPDATE function_region_dict SET config_ip_pattern ="3;3" WHERE config_ip_pattern="3";
@@ -68,11 +68,11 @@ UPDATE function_region_dict SET config_ip_pattern ="1,3;1,3" WHERE config_ip_pat
UPDATE function_region_dict SET config_port_pattern ="1;1" WHERE config_port_pattern="1";
UPDATE function_region_dict SET config_port_pattern ="1,2;1,2" WHERE config_port_pattern="1,2";
-- Spoofing IP修改只显示目的IP
#Spoofing IP修改只显示目的IP
UPDATE function_region_dict SET config_ip_port_show=3 WHERE function_id=401;
--ASN IP修改只显示目的IP
#ASN IP修改只显示目的IP
UPDATE function_region_dict SET config_ip_port_show=3 WHERE function_id=600;
--sql
#sql 更新字段语句
UPDATE app_ip_cfg c SET c.dest_ip_pattern =(SELECT b.src_ip_pattern FROM ( SELECT a.src_ip_pattern,a.`cfg_id` FROM ip_port_cfg a) b WHERE b.cfg_id=c.`cfg_id`)
UPDATE app_ip_cfg c SET c.dest_port_pattern =(SELECT b.src_port_pattern FROM ( SELECT a.src_port_pattern,a.`cfg_id` FROM port_port_cfg a) b WHERE b.cfg_id=c.`cfg_id`)

View File

@@ -169,6 +169,8 @@
<input type="hidden" name="cfgId" value="${_cfg.cfgId}">
<input type="hidden" name="compileId" value="${_cfg.compileId}">
<input type="hidden" name="functionId" value="${_cfg.functionId}">
<input type="hidden" name="isValid" value="${_cfg.isValid}">
<input type="hidden" name="isAudit" value="${_cfg.isAudit}">
<!-- <input type="hidden" name="protocol" value="0">
<input type="hidden" name="direction" value="0"> -->
<input type="hidden" name="isAreaEffective" value="0" >