APP特征配置导入页修改,app payload增加配置导入功能.

This commit is contained in:
zhangwenqing
2019-01-03 01:11:56 +08:00
parent e6426052cd
commit 8da5a2dc96
15 changed files with 1152 additions and 183 deletions

View File

@@ -5,6 +5,8 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -20,6 +22,7 @@ import com.nis.domain.configuration.AppIpCfg;
import com.nis.domain.configuration.AppStringFeatureCfg;
import com.nis.domain.configuration.AppTcpCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.HttpUrlCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg;
@@ -111,43 +114,9 @@ public class AppMultiFeatureCfgService extends BaseService {
cfg.setIsCaseInsenstive(0);
cfg.setExprType(3);
cfg.setMatchMethod(0);
String keyword = "";
if(cfg.getHeaderType().equals("IP_header")){
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;
}
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;
}
if(StringUtils.isNotBlank(cfg.getProtocol())){
keyword += "72-79:"+cfg.getProtocol()+Constants.KEYWORD_EXPR;
}
}else{
if(StringUtils.isNoneBlank(cfg.getIcmpType())){
keyword += "0-7:"+cfg.getIcmpType()+Constants.KEYWORD_EXPR;
}
if(StringUtils.isNotBlank(cfg.getIcmpCode())){
keyword += "8-15:"+cfg.getIcmpCode()+Constants.KEYWORD_EXPR;
}
if(StringUtils.isNotBlank(cfg.getIcmpIdentifier())){
keyword += "32-47:"+cfg.getIcmpIdentifier()+Constants.KEYWORD_EXPR;
}
}
keyword=keyword.substring(0,keyword.lastIndexOf(Constants.KEYWORD_EXPR));
cfg.setCfgKeywords(keyword);
this.setL3HeaderKeyword(cfg);
appMultiFeatureCfgDao.insertAppComplexFeatureCfg(cfg);
}else if(StringUtils.isNotBlank(cfg.getCfgKeywords())){
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"});
cfg.setHeaderType(null);
@@ -205,43 +174,9 @@ public class AppMultiFeatureCfgService extends BaseService {
cfg.setIsCaseInsenstive(0);
cfg.setExprType(3);
cfg.setMatchMethod(0);
String keyword = "";
if(cfg.getHeaderType().equals("IP_header")){
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;
}
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;
}
if(StringUtils.isNotBlank(cfg.getProtocol())){
keyword += "72-79:"+cfg.getProtocol()+Constants.KEYWORD_EXPR;
}
}else{
if(StringUtils.isNoneBlank(cfg.getIcmpType())){
keyword += "0-7:"+cfg.getIcmpType()+Constants.KEYWORD_EXPR;
}
if(StringUtils.isNotBlank(cfg.getIcmpCode())){
keyword += "8-15:"+cfg.getIcmpCode()+Constants.KEYWORD_EXPR;
}
if(StringUtils.isNotBlank(cfg.getIcmpIdentifier())){
keyword += "32-47:"+cfg.getIcmpIdentifier()+Constants.KEYWORD_EXPR;
}
}
keyword=keyword.substring(0,keyword.lastIndexOf(Constants.KEYWORD_EXPR));
cfg.setCfgKeywords(keyword);
this.setL3HeaderKeyword(cfg);
appMultiFeatureCfgDao.insertAppComplexFeatureCfg(cfg);
}else if(StringUtils.isNotBlank(cfg.getCfgKeywords())){
BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"});
cfg.setHeaderType(null);
@@ -259,6 +194,46 @@ public class AppMultiFeatureCfgService extends BaseService {
}
}
}
public void setL3HeaderKeyword(AppComplexFeatureCfg cfg) {
String keyword = "";
if(cfg.getHeaderType().equals("IP_header")){
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;
}
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;
}
if(StringUtils.isNotBlank(cfg.getProtocol())){
keyword += "72-79:"+cfg.getProtocol()+Constants.KEYWORD_EXPR;
}
}else{
if(StringUtils.isNoneBlank(cfg.getIcmpType())){
keyword += "0-7:"+cfg.getIcmpType()+Constants.KEYWORD_EXPR;
}
if(StringUtils.isNotBlank(cfg.getIcmpCode())){
keyword += "8-15:"+cfg.getIcmpCode()+Constants.KEYWORD_EXPR;
}
if(StringUtils.isNotBlank(cfg.getIcmpIdentifier())){
keyword += "32-47:"+cfg.getIcmpIdentifier()+Constants.KEYWORD_EXPR;
}
}
keyword=keyword.substring(0,keyword.lastIndexOf(Constants.KEYWORD_EXPR));
cfg.setCfgKeywords(keyword);
}
public void auditAppFeatureCfg(AppFeatureIndex entity, Integer isAudit) {
ToMaatBean maatBean = new ToMaatBean();
MaatCfg maatCfg = new MaatCfg();
@@ -460,4 +435,219 @@ public class AppMultiFeatureCfgService extends BaseService {
return dataMap;
}
/**
* APP Payload L3_HEADER导入操作特殊属性限制
* @param baseStringCfg
* @param errInfo
* @param prop
*/
public void checkImportAppPayload(AppComplexFeatureCfg baseStringCfg, StringBuffer errInfo, Properties prop) {
String headerType = baseStringCfg.getHeaderType();
String ver = baseStringCfg.getVer();
String ihl = baseStringCfg.getIhl();
String tos = baseStringCfg.getTos();
String totalLength = baseStringCfg.getTotalLength();
String flags = baseStringCfg.getFlags();
String fragmentOffset = baseStringCfg.getFragmentOffset();
String protocol = baseStringCfg.getProtocol();
String icmpType = baseStringCfg.getIcmpType();
String icmpCode = baseStringCfg.getIcmpCode();
String icmpIdentifier = baseStringCfg.getIcmpIdentifier();
boolean errorFlag = false;
Pattern pattern = Pattern.compile("^([0-9|a-f|A-F]*)$");//.matcher(keyword).matches();
StringBuffer errInfoCopy = new StringBuffer();
errInfoCopy.append(errInfo);
if("IP_header".equals(headerType)) {
boolean ipHeaderFlag = false;
List<Object> ipHeaderList = new ArrayList<>();
if(StringUtils.isNotBlank(baseStringCfg.getVer())) { ipHeaderList.add(baseStringCfg.getVer()); }
if(StringUtils.isNotBlank(baseStringCfg.getIhl())) { ipHeaderList.add(baseStringCfg.getVer()); }
if(StringUtils.isNotBlank(baseStringCfg.getTos())) { ipHeaderList.add(baseStringCfg.getVer()); }
if(StringUtils.isNotBlank(baseStringCfg.getTotalLength())) { ipHeaderList.add(baseStringCfg.getVer()); }
if(StringUtils.isNotBlank(baseStringCfg.getFlags())) { ipHeaderList.add(baseStringCfg.getVer()); }
if(StringUtils.isNotBlank(baseStringCfg.getFragmentOffset())) { ipHeaderList.add(baseStringCfg.getVer()); }
if(StringUtils.isNotBlank(baseStringCfg.getProtocol())) { ipHeaderList.add(baseStringCfg.getVer()); }
if(ipHeaderList.size() > 4) {// IP_header最多填写四个属性值
errInfo.append("IP_header " + prop.getProperty("l3_header_error")+";");
}else {
ipHeaderFlag = true;
}
int count = 0;
if(StringUtils.isBlank(ver) && ipHeaderFlag) {
errInfo.append(
String.format(prop.getProperty("can_not_null"), "VER ") + ";");
}else if(ver.trim().length() != 4 && ipHeaderFlag){
errInfo.append(
"VER "+prop.getProperty("length_error") + ";");
errorFlag = true;
}else if(!pattern.matcher(ver).matches() && ipHeaderFlag) {
errInfo.append(
"VER "+ " '" + ver + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
errorFlag = true;
}else {
count++;
}
if(StringUtils.isBlank(ihl) && ipHeaderFlag) {
errInfo.append(
String.format(prop.getProperty("can_not_null"), "IHL ") + ";");
}else if(ihl.trim().length() != 4 && ipHeaderFlag){
errInfo.append(
"IHL "+prop.getProperty("length_error") + ";");
errorFlag = true;
}else if(!pattern.matcher(ihl).matches() && ipHeaderFlag) {
errInfo.append(
"IHL "+ " '" + ihl + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
errorFlag = true;
}else {
count++;
}
if(StringUtils.isBlank(tos) && ipHeaderFlag) {
errInfo.append(
String.format(prop.getProperty("can_not_null"), "TOS ") + ";");
}else if(tos.trim().length() != 8 && ipHeaderFlag){
errInfo.append(
"TOS "+prop.getProperty("length_error") + ";");
errorFlag = true;
}else if(!pattern.matcher(tos).matches() && ipHeaderFlag) {
errInfo.append(
"TOS "+ " '" + tos + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
errorFlag = true;
}else {
count++;
}
if(StringUtils.isBlank(totalLength) && ipHeaderFlag) {
errInfo.append(
String.format(prop.getProperty("can_not_null"), "Total Length ") + ";");
}else if(totalLength.trim().length() != 16 && ipHeaderFlag){
errInfo.append(
"Total Length "+prop.getProperty("length_error") + ";");
errorFlag = true;
}else if(!pattern.matcher(totalLength).matches() && ipHeaderFlag) {
errInfo.append(
"Total Length "+ " '" + totalLength + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
errorFlag = true;
}else {
count++;
}
if(StringUtils.isBlank(flags) && ipHeaderFlag) {
errInfo.append(
String.format(prop.getProperty("can_not_null"), "Flags ") + ";");
}else if(flags.trim().length() != 3 && ipHeaderFlag){
errInfo.append(
"Flags "+prop.getProperty("length_error") + ";");
errorFlag = true;
}else if(!pattern.matcher(flags).matches() && ipHeaderFlag) {
errInfo.append(
"Flags "+ " '" + flags + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
errorFlag = true;
}else {
count++;
}
if(StringUtils.isBlank(fragmentOffset) && ipHeaderFlag) {
errInfo.append(
String.format(prop.getProperty("can_not_null"), "fragment offset ") + ";");
}else if(fragmentOffset.trim().length() != 8 && ipHeaderFlag){
errInfo.append(
"fragment offset "+prop.getProperty("length_error") + ";");
errorFlag = true;
}else if(!pattern.matcher(fragmentOffset).matches() && ipHeaderFlag) {
errInfo.append(
"fragment offset "+ " '" + fragmentOffset + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
errorFlag = true;
}else {
count++;
}
if(StringUtils.isBlank(protocol) && ipHeaderFlag) {
errInfo.append(
String.format(prop.getProperty("can_not_null"), "Protocol ") + ";");
}else if(protocol.trim().length() != 8 && ipHeaderFlag){
errInfo.append(
"Protocol "+prop.getProperty("length_error") + ";");
errorFlag = true;
}else if(!pattern.matcher(protocol).matches() && ipHeaderFlag) {
errInfo.append(
"Protocol "+ " '" + protocol + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
errorFlag = true;
}else {
count++;
}
if((count >0 || count <5) && (!errorFlag)) {
errInfo.setLength(0);;
errInfo.append(errInfoCopy);
}
baseStringCfg.setIcmpType(null);
baseStringCfg.setIcmpCode(null);
baseStringCfg.setIcmpIdentifier(null);
}else {
int count = 0;
if(StringUtils.isBlank(icmpType)) {
errInfo.append(
String.format(prop.getProperty("can_not_null"), "ICMP type ") + ";");
}else if(icmpType.trim().length() != 8){
errInfo.append(
"ICMP type "+prop.getProperty("length_error") + ";");
errorFlag = true;
}else if(!pattern.matcher(icmpType).matches()) {
errInfo.append(
"ICMP type "+ " '" + icmpType + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
errorFlag = true;
}else {
count++;
}
if(StringUtils.isBlank(icmpCode)) {
errInfo.append(
String.format(prop.getProperty("can_not_null"), "ICMP code ") + ";");
}else if(icmpCode.trim().length() != 8){
errInfo.append(
"ICMP code "+prop.getProperty("length_error") + ";");
errorFlag = true;
}else if(!pattern.matcher(icmpCode).matches()) {
errInfo.append(
"ICMP code "+ " '" + icmpCode + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
errorFlag = true;
}else {
count++;
}
if(StringUtils.isBlank(icmpIdentifier)) {
errInfo.append(
String.format(prop.getProperty("can_not_null"), "ICMP identifier ") + ";");
}else if(icmpIdentifier.trim().length() != 16){
errInfo.append(
"ICMP identifier "+prop.getProperty("length_error") + ";");
errorFlag = true;
}else if(!pattern.matcher(icmpIdentifier).matches()) {
errInfo.append(
"ICMP identifier "+ " '" + icmpIdentifier + "' "+String.format(prop.getProperty("contains_non_hex_char")) + ";");
errorFlag = true;
}else {
count++;
}
if((count >0) && (!errorFlag)) {
errInfo.setLength(0);;
errInfo.append(errInfoCopy);
}
baseStringCfg.setVer(null);
baseStringCfg.setIhl(null);
baseStringCfg.setTos(null);
baseStringCfg.setTotalLength(null);
baseStringCfg.setFlags(null);
baseStringCfg.setFragmentOffset(null);
baseStringCfg.setProtocol(null);
}
}
}