1.修改app payload特征,拆分L3_header为L3_header_IP,L3_header_ICMP,支持偏移量表达式;
2.域名统计界面的域名查询条件,去除id=0(Other)的域名查询; 3.通联关系日志的下拉列表查询条件,增select为空的条件,否则reset时,全部定位在了Other。
This commit is contained in:
@@ -100,7 +100,14 @@ public class AppMultiFeatureCfgService extends BaseService {
|
||||
if(entity.getStrList()!=null){
|
||||
for(AppStringFeatureCfg cfg:entity.getStrList()){
|
||||
if(StringUtils.isNotBlank(cfg.getCfgKeywords())){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"});
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType","exprType","matchMethod","isHexbin"});
|
||||
if(cfg.getExprType()==null){
|
||||
if(cfg.getCfgKeywords().contains(Constants.KEYWORD_EXPR)){
|
||||
cfg.setExprType(1);//与表达式
|
||||
}else{
|
||||
cfg.setExprType(0);//无表达式
|
||||
}
|
||||
}
|
||||
appMultiFeatureCfgDao.insertAppStringFeatureCfg(cfg);
|
||||
}
|
||||
|
||||
@@ -108,8 +115,8 @@ public class AppMultiFeatureCfgService extends BaseService {
|
||||
}
|
||||
if(entity.getComplexList()!=null){
|
||||
for(AppComplexFeatureCfg cfg:entity.getComplexList()){
|
||||
if(StringUtils.isNotBlank(cfg.getDistrict()) && cfg.getDistrict().equals("L3_header")){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"});
|
||||
if(StringUtils.isNotBlank(cfg.getDistrict()) && (cfg.getDistrict().equals("L3_header_IP")||cfg.getDistrict().equals("L3_header_ICMP"))){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType","exprType","matchMethod","isHexbin"});
|
||||
cfg.setIsHexbin(1);
|
||||
cfg.setIsCaseInsenstive(0);
|
||||
cfg.setExprType(3);
|
||||
@@ -117,9 +124,28 @@ public class AppMultiFeatureCfgService extends BaseService {
|
||||
this.setL3HeaderKeyword(cfg);
|
||||
appMultiFeatureCfgDao.insertAppComplexFeatureCfg(cfg);
|
||||
|
||||
}else if(StringUtils.isNotBlank(cfg.getCfgKeywords())){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"});
|
||||
}else if(StringUtils.isNotBlank(cfg.getDistrict()) && cfg.getDistrict().equals("Payload") && cfg.getExprType()==3){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType","exprType","matchMethod","isHexbin"});
|
||||
cfg.setIsHexbin(1);
|
||||
cfg.setIsCaseInsenstive(0);
|
||||
cfg.setExprType(3);
|
||||
cfg.setMatchMethod(0);
|
||||
cfg.setHeaderType(null);
|
||||
//设置payload特征的偏移量表达之关键字字符串
|
||||
cfg.setCfgKeywords(cfg.getPayloadOffset()+"-"+cfg.getCfgKeywords().length()/2+":"+cfg.getCfgKeywords());
|
||||
appMultiFeatureCfgDao.insertAppComplexFeatureCfg(cfg);
|
||||
|
||||
}else if(StringUtils.isNotBlank(cfg.getCfgKeywords())){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType","exprType","matchMethod","isHexbin"});
|
||||
cfg.setHeaderType(null);
|
||||
if(cfg.getExprType()==null){
|
||||
if(cfg.getCfgKeywords().contains(Constants.KEYWORD_EXPR)){
|
||||
cfg.setExprType(1);//与表达式
|
||||
}else{
|
||||
cfg.setExprType(0);//无表达式
|
||||
}
|
||||
}
|
||||
|
||||
appMultiFeatureCfgDao.insertAppComplexFeatureCfg(cfg);
|
||||
}
|
||||
|
||||
@@ -161,15 +187,22 @@ public class AppMultiFeatureCfgService extends BaseService {
|
||||
if(entity.getStrList()!=null){
|
||||
for(AppStringFeatureCfg cfg:entity.getStrList()){
|
||||
if(StringUtils.isNotBlank(cfg.getCfgKeywords())){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"});
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType","exprType","matchMethod","isHexbin"});
|
||||
if(cfg.getExprType()==null){
|
||||
if(cfg.getCfgKeywords().contains(Constants.KEYWORD_EXPR)){
|
||||
cfg.setExprType(1);//与表达式
|
||||
}else{
|
||||
cfg.setExprType(0);//无表达式
|
||||
}
|
||||
}
|
||||
appMultiFeatureCfgDao.insertAppStringFeatureCfg(cfg);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(entity.getComplexList()!=null){
|
||||
for(AppComplexFeatureCfg cfg:entity.getComplexList()){
|
||||
if(StringUtils.isNotBlank(cfg.getDistrict()) && cfg.getDistrict().equals("L3_header")){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"});
|
||||
if(StringUtils.isNotBlank(cfg.getDistrict()) && (cfg.getDistrict().equals("L3_header_IP")||cfg.getDistrict().equals("L3_header_ICMP"))){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType","exprType","matchMethod","isHexbin"});
|
||||
cfg.setIsHexbin(1);
|
||||
cfg.setIsCaseInsenstive(0);
|
||||
cfg.setExprType(3);
|
||||
@@ -177,9 +210,27 @@ public class AppMultiFeatureCfgService extends BaseService {
|
||||
this.setL3HeaderKeyword(cfg);
|
||||
appMultiFeatureCfgDao.insertAppComplexFeatureCfg(cfg);
|
||||
|
||||
}else if(StringUtils.isNotBlank(cfg.getCfgKeywords())){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"});
|
||||
}else if(StringUtils.isNotBlank(cfg.getDistrict()) && cfg.getDistrict().equals("Payload") && cfg.getExprType()==3){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType","exprType","matchMethod","isHexbin"});
|
||||
cfg.setIsHexbin(1);
|
||||
cfg.setIsCaseInsenstive(0);
|
||||
cfg.setExprType(3);
|
||||
cfg.setMatchMethod(0);
|
||||
cfg.setHeaderType(null);
|
||||
//设置payload特征的偏移量表达之关键字字符串
|
||||
cfg.setCfgKeywords(cfg.getPayloadOffset()+"-"+cfg.getCfgKeywords().length()/2+":"+cfg.getCfgKeywords());
|
||||
appMultiFeatureCfgDao.insertAppComplexFeatureCfg(cfg);
|
||||
|
||||
}else if(StringUtils.isNotBlank(cfg.getCfgKeywords())){
|
||||
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType","exprType","matchMethod","isHexbin"});
|
||||
cfg.setHeaderType(null);
|
||||
if(cfg.getExprType()==null){
|
||||
if(cfg.getCfgKeywords().contains(Constants.KEYWORD_EXPR)){
|
||||
cfg.setExprType(1);//与表达式
|
||||
}else{
|
||||
cfg.setExprType(0);//无表达式
|
||||
}
|
||||
}
|
||||
appMultiFeatureCfgDao.insertAppComplexFeatureCfg(cfg);
|
||||
}
|
||||
}
|
||||
@@ -197,37 +248,38 @@ public class AppMultiFeatureCfgService extends BaseService {
|
||||
|
||||
public void setL3HeaderKeyword(AppComplexFeatureCfg cfg) {
|
||||
String keyword = "";
|
||||
if(cfg.getHeaderType().equals("IP_header")){
|
||||
if(StringUtils.isNoneBlank(cfg.getVer())){
|
||||
if(cfg.getHeaderType().equals("L3_header_IP")){
|
||||
/*if(StringUtils.isNoneBlank(cfg.getVer())){
|
||||
keyword += "0-3:"+cfg.getVer()+Constants.KEYWORD_EXPR;
|
||||
}
|
||||
if(StringUtils.isNotBlank(cfg.getIhl())){
|
||||
keyword += "4-7:"+cfg.getIhl()+Constants.KEYWORD_EXPR;
|
||||
}
|
||||
}*/
|
||||
if(StringUtils.isNotBlank(cfg.getTos())){
|
||||
keyword += "8-15:"+cfg.getTos()+Constants.KEYWORD_EXPR;
|
||||
keyword += "1-2:"+cfg.getTos()+Constants.KEYWORD_EXPR;
|
||||
}
|
||||
if(StringUtils.isNotBlank(cfg.getTotalLength())){
|
||||
keyword += "16-31:"+cfg.getTotalLength()+Constants.KEYWORD_EXPR;
|
||||
}
|
||||
if(StringUtils.isNotBlank(cfg.getFlags())){
|
||||
keyword += "48-50:"+cfg.getFlags()+Constants.KEYWORD_EXPR;
|
||||
}
|
||||
if(StringUtils.isNotBlank(cfg.getFragmentOffset())){
|
||||
keyword += "56-63:"+cfg.getFragmentOffset()+Constants.KEYWORD_EXPR;
|
||||
keyword += "2-4:"+cfg.getTotalLength()+Constants.KEYWORD_EXPR;
|
||||
}
|
||||
if(StringUtils.isNotBlank(cfg.getProtocol())){
|
||||
keyword += "72-79:"+cfg.getProtocol()+Constants.KEYWORD_EXPR;
|
||||
keyword += "9-10:"+cfg.getProtocol()+Constants.KEYWORD_EXPR;
|
||||
}
|
||||
if(StringUtils.isNotBlank(cfg.getFragmentOffset())){//记录IP头的客户端IP
|
||||
keyword += "12-16:"+cfg.getFragmentOffset()+Constants.KEYWORD_EXPR;
|
||||
}
|
||||
if(StringUtils.isNotBlank(cfg.getFlags())){//记录IP头的服务端IP
|
||||
keyword += "16-20:"+cfg.getFlags()+Constants.KEYWORD_EXPR;
|
||||
}
|
||||
|
||||
}else{
|
||||
if(StringUtils.isNoneBlank(cfg.getIcmpType())){
|
||||
keyword += "0-7:"+cfg.getIcmpType()+Constants.KEYWORD_EXPR;
|
||||
keyword += "0-1:"+cfg.getIcmpType()+Constants.KEYWORD_EXPR;
|
||||
}
|
||||
if(StringUtils.isNotBlank(cfg.getIcmpCode())){
|
||||
keyword += "8-15:"+cfg.getIcmpCode()+Constants.KEYWORD_EXPR;
|
||||
keyword += "1-2:"+cfg.getIcmpCode()+Constants.KEYWORD_EXPR;
|
||||
}
|
||||
if(StringUtils.isNotBlank(cfg.getIcmpIdentifier())){
|
||||
keyword += "32-47:"+cfg.getIcmpIdentifier()+Constants.KEYWORD_EXPR;
|
||||
keyword += "4-6:"+cfg.getIcmpIdentifier()+Constants.KEYWORD_EXPR;
|
||||
}
|
||||
}
|
||||
keyword=keyword.substring(0,keyword.lastIndexOf(Constants.KEYWORD_EXPR));
|
||||
@@ -289,9 +341,44 @@ public class AppMultiFeatureCfgService extends BaseService {
|
||||
cfg.setTableName(AppComplexFeatureCfg.getTablename());
|
||||
appMultiFeatureCfgDao.auditCfg(cfg);
|
||||
if(isAudit==1){
|
||||
//如果是payload特征,需要判断匹配区域是否为Payload,并且判断包大小或者本包方向,如果不为空,需要创建域配置
|
||||
if(entity.getServiceId().equals(1025)){//app payload特征
|
||||
for(AppComplexFeatureCfg c:complexList){
|
||||
if(c.getDistrict().equals("Payload")){
|
||||
//payload特征的payloadSize,payloadPacketDirection两个参数各自为单独的域配置下发
|
||||
if(c.getPayloadSize()!=null){
|
||||
AppComplexFeatureCfg payloadSizeCfg = new AppComplexFeatureCfg();
|
||||
BeanUtils.copyProperties(c, payloadSizeCfg, new String[]{"cfgId"});
|
||||
payloadSizeCfg.setCfgKeywords(c.getPayloadSize().toString());
|
||||
payloadSizeCfg.setCfgType("APP_PAYLOAD_SIZE");//综合服务前端redis表名
|
||||
payloadSizeCfg.setDistrict(null);
|
||||
payloadSizeCfg.setExprType(0);;
|
||||
payloadSizeCfg.setMatchMethod(3);
|
||||
payloadSizeCfg.setIsHexbin(0);
|
||||
complexList.add(payloadSizeCfg);
|
||||
}
|
||||
if(c.getPayloadPacketDirection()!=null){
|
||||
AppComplexFeatureCfg packetDirectionCfg = new AppComplexFeatureCfg();
|
||||
BeanUtils.copyProperties(c, packetDirectionCfg, new String[]{"cfgId"});
|
||||
packetDirectionCfg.setCfgKeywords(c.getPayloadPacketDirection().toString());
|
||||
packetDirectionCfg.setCfgType("APP_PKT_SEQ");//综合服务前端redis表名
|
||||
packetDirectionCfg.setDistrict(null);
|
||||
packetDirectionCfg.setExprType(0);;
|
||||
packetDirectionCfg.setMatchMethod(3);
|
||||
packetDirectionCfg.setIsHexbin(0);
|
||||
complexList.add(packetDirectionCfg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Map<String,List> map = cfgConvert(strRegionList,complexList,2,entity,groupRelationList);
|
||||
groupRelationList=map.get("groupList");
|
||||
strRegionList=map.get("dstList");
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
List<AppTcpCfg> numCfgList = appMultiFeatureCfgDao.getAppTcpCfg(entity.getCompileId(),entity.getFunctionId(),null);
|
||||
|
||||
Reference in New Issue
Block a user