diff --git a/src/main/java/com/nis/domain/configuration/AppComplexFeatureCfg.java b/src/main/java/com/nis/domain/configuration/AppComplexFeatureCfg.java index 779681480..230713804 100644 --- a/src/main/java/com/nis/domain/configuration/AppComplexFeatureCfg.java +++ b/src/main/java/com/nis/domain/configuration/AppComplexFeatureCfg.java @@ -55,6 +55,11 @@ public class AppComplexFeatureCfg extends BaseCfg { private String icmpCode; private String icmpIdentifier; private String headerType; + //以下参数为APP payload payload的特殊属性(偏移量表达式时处理) + private Integer payloadOffset; + private Integer payloadSize;//下发综合服务接口时,为单独的域配置 + private String payloadPacketDirection;//下发综合服务接口时,为单独的域配置 + public String getCfgRegionCode1() { return cfgRegionCode1; @@ -299,5 +304,28 @@ public class AppComplexFeatureCfg extends BaseCfg { this.headerType = headerType; } + public Integer getPayloadOffset() { + return payloadOffset; + } + + public void setPayloadOffset(Integer payloadOffset) { + this.payloadOffset = payloadOffset; + } + + public Integer getPayloadSize() { + return payloadSize; + } + + public void setPayloadSize(Integer payloadSize) { + this.payloadSize = payloadSize; + } + + public String getPayloadPacketDirection() { + return payloadPacketDirection; + } + + public void setPayloadPacketDirection(String payloadPacketDirection) { + this.payloadPacketDirection = payloadPacketDirection; + } } diff --git a/src/main/java/com/nis/domain/configuration/AppFeatureIndex.java b/src/main/java/com/nis/domain/configuration/AppFeatureIndex.java index 45ef53501..32c5a2b06 100644 --- a/src/main/java/com/nis/domain/configuration/AppFeatureIndex.java +++ b/src/main/java/com/nis/domain/configuration/AppFeatureIndex.java @@ -46,6 +46,12 @@ public class AppFeatureIndex extends BaseCfg { private String cfgRegionType; private String cfgRegionValue; private String cfgRegionCode1; + private Integer isDrop;// + private Integer isLoop; + private Integer dropTime;//drop持续时间,默认180s,0-1800s + private Integer loopTime;//loop持续时间,默认180s,0-1800s + private Integer isRelation; + private Integer relationTime;//关联持续时间,默认10s,0-180s public static String getTablename() { return tableName; } @@ -133,5 +139,59 @@ public class AppFeatureIndex extends BaseCfg { public void setNumCfgList(List numCfgList) { this.numCfgList = numCfgList; } + public Integer getExprType() { + return exprType; + } + public void setExprType(Integer exprType) { + this.exprType = exprType; + } + public Integer getMatchMethod() { + return matchMethod; + } + public void setMatchMethod(Integer matchMethod) { + this.matchMethod = matchMethod; + } + public Integer getIsHexbin() { + return isHexbin; + } + public void setIsHexbin(Integer isHexbin) { + this.isHexbin = isHexbin; + } + public Integer getIsDrop() { + return isDrop; + } + public void setIsDrop(Integer isDrop) { + this.isDrop = isDrop; + } + public Integer getIsLoop() { + return isLoop; + } + public void setIsLoop(Integer isLoop) { + this.isLoop = isLoop; + } + public Integer getDropTime() { + return dropTime; + } + public void setDropTime(Integer dropTime) { + this.dropTime = dropTime; + } + public Integer getLoopTime() { + return loopTime; + } + public void setLoopTime(Integer loopTime) { + this.loopTime = loopTime; + } + public Integer getIsRelation() { + return isRelation; + } + public void setIsRelation(Integer isRelation) { + this.isRelation = isRelation; + } + public Integer getRelationTime() { + return relationTime; + } + public void setRelationTime(Integer relationTime) { + this.relationTime = relationTime; + } } diff --git a/src/main/java/com/nis/web/dao/configuration/AppMultiFeatureCfgDao.xml b/src/main/java/com/nis/web/dao/configuration/AppMultiFeatureCfgDao.xml index 0997b2ee1..5d77ae0f7 100644 --- a/src/main/java/com/nis/web/dao/configuration/AppMultiFeatureCfgDao.xml +++ b/src/main/java/com/nis/web/dao/configuration/AppMultiFeatureCfgDao.xml @@ -115,6 +115,9 @@ + + + @@ -204,7 +207,7 @@ r.ATTRIBUTE,r.LABLE,r.AREA_EFFECTIVE_IDS,r.FUNCTION_ID,r.CFG_TYPE,r.CFG_REGION_CODE, r.DISTRICT,r.CFG_KEYWORDS,r.EXPR_TYPE,r.MATCH_METHOD,r.IS_HEXBIN,r.DO_LOG, r.ver,r.ihl,r.tos,r.total_length,r.flags,r.fragment_offset,r.protocol,r.icmp_type,r.icmp_code,r.icmp_identifier, - r.header_type + r.header_type,r.payload_offset,r.payload_size,r.payload_packet_direction @@ -540,7 +543,8 @@ SERVICE_ID,REQUEST_ID,COMPILE_ID,IS_AREA_EFFECTIVE,CLASSIFY, ATTRIBUTE,LABLE,AREA_EFFECTIVE_IDS,FUNCTION_ID,CFG_TYPE,CFG_REGION_CODE, DISTRICT,CFG_KEYWORDS,EXPR_TYPE,MATCH_METHOD,IS_HEXBIN,DO_LOG,user_region1,user_region2,user_region3,user_region4,user_region5, - ver,ihl,tos,total_length,flags,fragment_offset,protocol,icmp_type,icmp_code,icmp_identifier,header_type + ver,ihl,tos,total_length,flags,fragment_offset,protocol,icmp_type,icmp_code,icmp_identifier,header_type, + payload_offset,payload_size,payload_packet_direction )values ( , #{cfgType,jdbcType=VARCHAR},#{cfgRegionCode,jdbcType=INTEGER}, @@ -550,7 +554,8 @@ #{userRegion3,jdbcType=VARCHAR},#{userRegion4,jdbcType=VARCHAR},#{userRegion5,jdbcType=VARCHAR}, #{ver,jdbcType=VARCHAR},#{ihl,jdbcType=VARCHAR},#{tos,jdbcType=VARCHAR},#{totalLength,jdbcType=VARCHAR}, #{flags,jdbcType=VARCHAR},#{fragmentOffset,jdbcType=VARCHAR},#{protocol,jdbcType=VARCHAR},#{icmpType,jdbcType=VARCHAR}, - #{icmpCode,jdbcType=VARCHAR},#{icmpIdentifier,jdbcType=VARCHAR},#{headerType,jdbcType=VARCHAR} + #{icmpCode,jdbcType=VARCHAR},#{icmpIdentifier,jdbcType=VARCHAR},#{headerType,jdbcType=VARCHAR}, + #{payloadOffset,jdbcType=INTEGER},#{payloadSize,jdbcType=INTEGER},#{payloadPacketDirection,jdbcType=VARCHAR} ) @@ -562,7 +567,8 @@ SERVICE_ID,REQUEST_ID,COMPILE_ID,IS_AREA_EFFECTIVE,CLASSIFY, ATTRIBUTE,LABLE,AREA_EFFECTIVE_IDS,FUNCTION_ID,CFG_TYPE,CFG_REGION_CODE, DISTRICT,CFG_KEYWORDS,EXPR_TYPE,MATCH_METHOD,IS_HEXBIN,DO_LOG,user_region1,user_region2,user_region3,user_region4,user_region5, - ver,ihl,tos,total_length,flags,fragment_offset,protocol,icmp_type,icmp_code,icmp_identifier,header_type + ver,ihl,tos,total_length,flags,fragment_offset,protocol,icmp_type,icmp_code,icmp_identifier,header_type, + payload_offset,payload_size,payload_packet_direction )values ( , #{cfgType,jdbcType=VARCHAR},#{cfgRegionCode,jdbcType=INTEGER}, @@ -572,7 +578,8 @@ #{userRegion3,jdbcType=VARCHAR},#{userRegion4,jdbcType=VARCHAR},#{userRegion5,jdbcType=VARCHAR}, #{ver,jdbcType=VARCHAR},#{ihl,jdbcType=VARCHAR},#{tos,jdbcType=VARCHAR},#{totalLength,jdbcType=VARCHAR}, #{flags,jdbcType=VARCHAR},#{fragmentOffset,jdbcType=VARCHAR},#{protocol,jdbcType=VARCHAR},#{icmpType,jdbcType=VARCHAR}, - #{icmpCode,jdbcType=VARCHAR},#{icmpIdentifier,jdbcType=VARCHAR},#{headerType,jdbcType=VARCHAR} + #{icmpCode,jdbcType=VARCHAR},#{icmpIdentifier,jdbcType=VARCHAR},#{headerType,jdbcType=VARCHAR}, + #{payloadOffset,jdbcType=INTEGER},#{payloadSize,jdbcType=INTEGER},#{payloadPacketDirection,jdbcType=VARCHAR} ) diff --git a/src/main/java/com/nis/web/service/configuration/AppMultiFeatureCfgService.java b/src/main/java/com/nis/web/service/configuration/AppMultiFeatureCfgService.java index f34f8a9d8..a6a294e52 100644 --- a/src/main/java/com/nis/web/service/configuration/AppMultiFeatureCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/AppMultiFeatureCfgService.java @@ -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 map = cfgConvert(strRegionList,complexList,2,entity,groupRelationList); groupRelationList=map.get("groupList"); strRegionList=map.get("dstList"); + + + + } } List numCfgList = appMultiFeatureCfgDao.getAppTcpCfg(entity.getCompileId(),entity.getFunctionId(),null); diff --git a/src/main/resources/sql/20190113/update_app_paylload_feature_dict.sql b/src/main/resources/sql/20190113/update_app_paylload_feature_dict.sql new file mode 100644 index 000000000..9875f6bd2 --- /dev/null +++ b/src/main/resources/sql/20190113/update_app_paylload_feature_dict.sql @@ -0,0 +1,64 @@ +-- ޸app payloadֵ +UPDATE `function_region_dict` SET `dict_id`='212', `function_id`='563', `config_district`='Payload,L2_header,L3_header_IP,L3_header_ICMP', `config_region_code`='3', `config_region_value`='APP_PAYLOAD', `config_desc`='APPغ', `is_valid`='1', `is_maat`='1', `region_type`='3', `creator_id`=NULL, `create_time`='2018-09-21 19:29:46', `editor_id`=NULL, `edit_time`='2018-09-21 19:29:48', `config_service_type`='', `config_expr_type`='0,1,3', `config_match_method`='0,1,2,3', `config_ip_type`='', `config_hex`='0,1,2', `config_multi_keywords`='1', `config_ip_pattern`='', `config_port_pattern`='', `config_direction`='', `config_protocol`='', `config_ip_port_show`='', `config_region_sort`='2', `is_import`='0' WHERE (`dict_id`='212'); +UPDATE `function_region_dict` SET `dict_id`='213', `function_id`='563', `config_district`='Payload,L2_header,L3_header_IP,L3_header_ICMP', `config_region_code`='4', `config_region_value`='APP_PAYLOAD', `config_desc`='APPغ', `is_valid`='1', `is_maat`='1', `region_type`='3', `creator_id`=NULL, `create_time`='2018-09-21 19:30:16', `editor_id`=NULL, `edit_time`='2018-09-21 19:30:20', `config_service_type`='', `config_expr_type`='0,1,3', `config_match_method`='0,1,2,3', `config_ip_type`='', `config_hex`='0,1,2', `config_multi_keywords`='1', `config_ip_pattern`='', `config_port_pattern`='', `config_direction`='', `config_protocol`='', `config_ip_port_show`='', `config_region_sort`='3', `is_import`='0' WHERE (`dict_id`='213'); +UPDATE `function_region_dict` SET `dict_id`='215', `function_id`='563', `config_district`='Payload,L2_header,L3_header,C2S_session_size,S2C_session_size', `config_region_code`='5', `config_region_value`='APP_PAYLOAD', `config_desc`='APPغ', `is_valid`='0', `is_maat`='1', `region_type`='3', `creator_id`=NULL, `create_time`='2018-09-21 19:30:16', `editor_id`=NULL, `edit_time`='2018-09-21 19:30:20', `config_service_type`='', `config_expr_type`='0,1', `config_match_method`='0,1,2,3', `config_ip_type`='', `config_hex`='0,1,2', `config_multi_keywords`='1', `config_ip_pattern`='', `config_port_pattern`='', `config_direction`='', `config_protocol`='', `config_ip_port_show`='', `config_region_sort`='4', `is_import`='0' WHERE (`dict_id`='215'); + +-- ӱʽֵĿ +INSERT INTO `sys_data_dictionary_item` ( `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('3', 'offset_expression', 'ƫƱʽ', '3', '1', '1', '84'); + +--ؽapp ַͨ +drop table app_complex_feature_cfg; +CREATE TABLE `app_complex_feature_cfg` ( + `cfg_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '', + `district` varchar(128) NOT NULL, + `cfg_keywords` varchar(2048) NOT NULL, + `app_code` int(11) NOT NULL, + `behav_code` int(11) DEFAULT NULL, + `spec_service_id` varchar(255) NOT NULL COMMENT 'specific_service_cfg .spec_service_id', + `cfg_desc` varchar(128) DEFAULT NULL, + `action` int(11) NOT NULL, + `is_valid` int(11) NOT NULL, + `is_audit` int(11) NOT NULL, + `creator_id` int(11) NOT NULL COMMENT 'sys_user.id', + `create_time` datetime NOT NULL, + `editor_id` int(11) DEFAULT NULL COMMENT 'sys_user.id', + `edit_time` datetime DEFAULT NULL, + `auditor_id` int(11) DEFAULT NULL COMMENT 'sys_user.id', + `audit_time` datetime DEFAULT NULL, + `service_id` int(11) NOT NULL COMMENT 'ҵid', + `request_id` int(11) NOT NULL COMMENT 'request_info.id', + `compile_id` int(11) NOT NULL, + `is_area_effective` int(11) NOT NULL DEFAULT 0, + `classify` varchar(128) DEFAULT NULL, + `attribute` varchar(128) DEFAULT NULL, + `lable` varchar(128) DEFAULT NULL, + `area_effective_ids` varchar(1024) DEFAULT NULL, + `function_id` int(11) NOT NULL, + `cfg_type` varchar(64) NOT NULL DEFAULT '', + `cfg_region_code` int(11) NOT NULL, + `expr_type` int(11) NOT NULL DEFAULT 0 COMMENT '0ޱʽ1ʽ', + `match_method` int(11) NOT NULL DEFAULT 3 COMMENT 'expr_type:0ʱ壬00Ӵƥ䣻1ƥ䣻2ƥ䣻3ȫƥ', + `is_hexbin` int(11) NOT NULL DEFAULT 0 COMMENT 'ĬΪ0:СдУҷHEX;1:HEXʽ;2:СдУҷHEX', + `do_log` int(11) DEFAULT NULL, + `user_region1` varchar(1024) DEFAULT NULL COMMENT 'ԤԶ1', + `user_region2` varchar(1024) DEFAULT NULL COMMENT 'ԤԶ2', + `user_region3` varchar(1024) DEFAULT NULL COMMENT 'ԤԶ3', + `user_region4` varchar(1024) DEFAULT NULL COMMENT 'ԤԶ4', + `user_region5` varchar(1024) DEFAULT NULL COMMENT 'ԤԶ5', + `header_type` varchar(16) DEFAULT '', + `ver` varchar(4) DEFAULT '', + `ihl` varchar(4) DEFAULT '', + `tos` varchar(16) DEFAULT '', + `total_length` varchar(16) DEFAULT '', + `flags` varchar(32) DEFAULT '', + `fragment_offset` varchar(32) DEFAULT '', + `protocol` varchar(32) DEFAULT '', + `icmp_type` varchar(32) DEFAULT '', + `icmp_code` varchar(32) DEFAULT '', + `icmp_identifier` varchar(32) DEFAULT '', + `payload_offset` int(11) DEFAULT NULL COMMENT 'payloadƫ', + `payload_size` int(11) DEFAULT NULL COMMENT 'payloadС', + `payload_packet_direction` varchar(8) DEFAULT NULL COMMENT 'payload', + PRIMARY KEY (`cfg_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + diff --git a/src/main/webapp/WEB-INF/views/cfg/app/appMultiFeatureCfgForm.jsp b/src/main/webapp/WEB-INF/views/cfg/app/appMultiFeatureCfgForm.jsp index 9e53339fa..37b1f681a 100644 --- a/src/main/webapp/WEB-INF/views/cfg/app/appMultiFeatureCfgForm.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/app/appMultiFeatureCfgForm.jsp @@ -9,9 +9,9 @@ $(function(){ $("#serviceId").val($(this).attr("serviceId")); }); $(".district").on("change", function() { - if($(this).val()=='L3_header'){ + if($(this).val()=='L3_header_IP'||$(this).val()=='L3_header_ICMP'){ $(this).parents(".boxSolid").find(".keywords").addClass("hidden"); - $(this).parents(".boxSolid").find(".L3_header").removeClass("hidden"); + $(this).parents(".boxSolid").find(".L3_header").find("input[name$='headerType']").val($(this).val()); $(this).parents(".boxSolid").find(".matchMethod").addClass("hidden"); $(this).parents(".boxSolid").find(".exprType").addClass("hidden"); $(this).parents(".boxSolid").find("input:radio[name$='isHex'][value=1]").prop("checked",true); @@ -21,7 +21,7 @@ $(function(){ $(this).parents(".boxSolid").find(".headerType").change(); }else{ $(this).parents(".boxSolid").find(".keywords").removeClass("hidden"); - $(this).parents(".boxSolid").find(".L3_header").addClass("hidden"); + $(this).parents(".boxSolid").find(".L3_header").find("input[name$='headerType']").val(""); $(this).parents(".boxSolid").find(".matchMethod").removeClass("hidden"); $(this).parents(".boxSolid").find(".exprType").removeClass("hidden"); $(this).parents(".boxSolid").find(".IP_header").addClass("hidden"); @@ -32,7 +32,7 @@ $(function(){ }); $(".headerType").on("change", function() { - if($(this).val()=='IP_header'){ + if($(this).val()=='L3_header_IP'){ $(this).parents(".boxSolid").find(".ICMP_header").addClass("hidden"); $(this).parents(".boxSolid").find(".IP_header").removeClass("hidden"); }else{ @@ -40,10 +40,24 @@ $(function(){ $(this).parents(".boxSolid").find(".ICMP_header").removeClass("hidden"); } }); + $("input:radio[name$='exprType']").on("change",function(){ + var exprType = $(this).val(); + changeKeywordFormate(exprType,$(this)); + }); + $(".boxSolid:visible").find(".district").each(function(){ $(this).change(); }); $("#serviceId").val($(".action:checked").attr("serviceId")); + + if($("#serviceId").val()==1025 && $("#cfgId").val()!=null){ + $("input:radio[name$='exprType']").each(function(){ + if($(this).attr("checked") && $(this).val()==3){ + changeKeywordFormate($(this).val(),$(this)); + } + }); + } + $("#cfgFrom").validate({ errorPlacement: function(error,element){ if($(element).parents().hasClass("tagsinput")){ @@ -60,10 +74,9 @@ $(function(){ return; } $(".boxSolid:visible").find("input[name$='cfgKeywords']").each(function(){ - if($(this).val()==''){ var length = 0; - $(this).parents(".boxSolid").find(".l3_header_prop").each(function(){ + $(this).parents(".boxSolid").find(".l3_header_prop:visible").each(function(){ if($(this).val()!=''){ length += 1; } @@ -82,7 +95,7 @@ $(function(){ }else{ var length = 0; - $(this).parents(".boxSolid").find(".l3_header_prop").each(function(){ + $(this).parents(".boxSolid").find(".l3_header_prop:visible").each(function(){ if($(this).val()!=''){ length += 1; } @@ -139,7 +152,13 @@ $(function(){ $(".disabled").each(function(){ $(this).remove(); }); - $("input[name$='exprType']").attr("disabled",false); + + if($("input[name$='exprType']").attr("disabled")){ + $("input[name$='exprType']").attr("disabled",false); + } + /* $(".boxSolid:visible").each(function(){ + alert($(this).find("select[name$='matchMethod'] option[selected]").val()); + }) */ $("#appCode").val($("#specServiceIdId").val()); loading('onloading...'); form.submit(); @@ -172,6 +191,36 @@ var delContent = function(contentClassName, addBtnClassName) { }); */ $("." + addBtnClassName).removeClass("hidden"); } +function changeKeywordFormate(exprType,obj){ + if(exprType==3){ + var keywordObj = $(obj).parents(".boxSolid").find(".keywords").find("input[name$='cfgKeywords']"); + if($(keywordObj).val().indexOf("***and***")>0){ + $(keywordObj).val($(keywordObj).val().split('***and***').join('')); + } + if($(keywordObj).val().indexOf(":")>0){ + $(keywordObj).val($(keywordObj).val().substr($(keywordObj).val().indexOf(":")+1)); + } + + //$(this).parents(".boxSolid").find(".keywords").addClass("hidden"); + //$(this).parents(".boxSolid").find(".keywords").find("input[name$='cfgKeywords']").attr("id").replace("tags","multipKeywords"); + $(obj).parents(".boxSolid").find(".keywords").find("input[name$='cfgKeywords']").css("display","block"); + $(obj).parents(".boxSolid").find(".keywords").find("input[name$='cfgKeywords']").addClass("hexCheck"); + $(obj).parents(".boxSolid").find(".keywords").find("input[name$='cfgKeywords']").next("div").addClass("hidden"); + $(obj).parents(".boxSolid").find(".offsetFeature").removeClass("hidden"); + $(obj).parents(".boxSolid").find("input:radio[name$='isHex'][value=1]").prop("checked",true); + $(obj).parents(".boxSolid").find("input:radio[name$='isCaseSenstive'][value=0]").prop("checked",true); + $(obj).parents(".boxSolid").find("input:radio[name$='isHex']").attr("disabled",true); + $(obj).parents(".boxSolid").find("input:radio[name$='isCaseSenstive']").attr("disabled",true); + }else{ + //$(this).parents(".boxSolid").find(".keywords").removeClass("hidden"); + //$(this).parents(".boxSolid").find(".keywords").find("input[name$='cfgKeywords']").attr("id").replace("multipKeywords","tags"); + $(obj).parents(".boxSolid").find(".keywords").find("input[name$='cfgKeywords']").css("display","none"); + $(obj).parents(".boxSolid").find(".keywords").find("input[name$='cfgKeywords']").next("div").removeClass("hidden"); + $(obj).parents(".boxSolid").find(".offsetFeature").addClass("hidden"); + $(obj).parents(".boxSolid").find("input:radio[name$='isHex']").attr("disabled",false); + $(obj).parents(".boxSolid").find("input:radio[name$='isCaseSenstive']").attr("disabled",false); + } +} @@ -208,7 +257,7 @@ var delContent = function(contentClassName, addBtnClassName) {
- + @@ -355,7 +404,7 @@ var delContent = function(contentClassName, addBtnClassName) { - <%@include file="/WEB-INF/views/cfg/complexCfgForm.jsp"%> + <%@include file="/WEB-INF/views/cfg/app/appCommonFeature.jsp"%> - <%@include file="/WEB-INF/views/cfg/complexCfgForm.jsp"%> + <%@include file="/WEB-INF/views/cfg/app/appCommonFeature.jsp"%> @@ -380,7 +429,7 @@ var delContent = function(contentClassName, addBtnClassName) { - <%@include file="/WEB-INF/views/cfg/complexCfgForm.jsp"%> + <%@include file="/WEB-INF/views/cfg/app/appCommonFeature.jsp"%> @@ -407,7 +456,7 @@ var delContent = function(contentClassName, addBtnClassName) {
- <%@include file="/WEB-INF/views/cfg/complexCfgForm.jsp"%> + <%@include file="/WEB-INF/views/cfg/app/appCommonFeature.jsp"%> @@ -421,7 +470,7 @@ var delContent = function(contentClassName, addBtnClassName) { @@ -434,7 +483,7 @@ var delContent = function(contentClassName, addBtnClassName) { - <%@include file="/WEB-INF/views/cfg/complexCfgForm.jsp"%> + <%@include file="/WEB-INF/views/cfg/app/appCommonFeature.jsp"%>
diff --git a/src/main/webapp/WEB-INF/views/cfg/app/appSubFeatureList.jsp b/src/main/webapp/WEB-INF/views/cfg/app/appSubFeatureList.jsp index bee4cc0c3..2c94ed0fe 100644 --- a/src/main/webapp/WEB-INF/views/cfg/app/appSubFeatureList.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/app/appSubFeatureList.jsp @@ -257,9 +257,9 @@ - +
-
+ <%--
@@ -268,7 +268,7 @@
-
+
--%>
@@ -283,24 +283,24 @@
- +
- +
- +
- +
@@ -319,11 +319,20 @@
- +
- +
@@ -333,26 +342,38 @@
- +
-
-
-
- - +
+
+
+ + +
-
+ +
+
+
+ + ${cfg.payloadOffset } +
+
+
+
diff --git a/src/main/webapp/WEB-INF/views/dashboard/trafficWebTypeList.jsp b/src/main/webapp/WEB-INF/views/dashboard/trafficWebTypeList.jsp index 54d542844..fb6bc5458 100644 --- a/src/main/webapp/WEB-INF/views/dashboard/trafficWebTypeList.jsp +++ b/src/main/webapp/WEB-INF/views/dashboard/trafficWebTypeList.jsp @@ -72,7 +72,9 @@
diff --git a/src/main/webapp/WEB-INF/views/log/ntc/connRecordLogList.jsp b/src/main/webapp/WEB-INF/views/log/ntc/connRecordLogList.jsp index 666cffa9b..c0ef9e90b 100644 --- a/src/main/webapp/WEB-INF/views/log/ntc/connRecordLogList.jsp +++ b/src/main/webapp/WEB-INF/views/log/ntc/connRecordLogList.jsp @@ -266,6 +266,7 @@
" class="selectpicker form-control " data-max-options="10" data-selected-text-format="count > 3" multiple data-live-search="true" data-live-search-placeholder=""> + @@ -288,6 +290,7 @@