diff --git a/sqlupdate/update_video_spell_error.sql b/sqlupdate/update_video_spell_error.sql new file mode 100644 index 000000000..f7a698511 --- /dev/null +++ b/sqlupdate/update_video_spell_error.sql @@ -0,0 +1,2 @@ +update function_region_dict t set t.config_region_value=insert(t.config_region_value,POSITION('vedio' in t.config_region_value),5,'video') where t.config_region_value like '%vedio%'; +update sys_menu s set s.`code`=insert(s.`code`,POSITION('vedio' in s.`code`),5,'video') where s.`code` like '%vedio%'; diff --git a/src/main/java/com/nis/domain/configuration/IpCfgTemplate.java b/src/main/java/com/nis/domain/configuration/template/IpCfgTemplate.java similarity index 95% rename from src/main/java/com/nis/domain/configuration/IpCfgTemplate.java rename to src/main/java/com/nis/domain/configuration/template/IpCfgTemplate.java index 55cb57966..05bb86e9e 100644 --- a/src/main/java/com/nis/domain/configuration/IpCfgTemplate.java +++ b/src/main/java/com/nis/domain/configuration/template/IpCfgTemplate.java @@ -6,7 +6,7 @@ *@date 2018年2月5日 下午5:26:02 *@version 版本号 */ -package com.nis.domain.configuration; +package com.nis.domain.configuration.template; import com.nis.util.excel.ExcelField; diff --git a/src/main/java/com/nis/domain/configuration/template/IpMultiplexPolicyTemplate.java b/src/main/java/com/nis/domain/configuration/template/IpMultiplexPolicyTemplate.java new file mode 100644 index 000000000..722f9278e --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/template/IpMultiplexPolicyTemplate.java @@ -0,0 +1,75 @@ +package com.nis.domain.configuration.template; + +import com.nis.util.excel.ExcelField; +/** + * wx 将部分字段的标题改变,或者不需要的字段隐藏 + * 隐藏方法,对于不需要的字段或者方法,Override该字段方法,但是@ExcelField注解不需要加上了 + * @author dell + * + */ +public class IpMultiplexPolicyTemplate extends IpCfgTemplate { + @Override + @ExcelField(title="IP",align=2,sort=3) + public String getSrcIpAddress() { + return super.getSrcIpAddress(); + } + @ExcelField(title="port",align=2,sort=6) + @Override + public String getSrcPort() { + // TODO Auto-generated method stub + return super.getSrcPort(); + } + + @Override + @ExcelField(title="group_name",align=2,sort=75) + public Integer getDnsStrategyId() { + // TODO Auto-generated method stub + return super.getDnsStrategyId(); + } + + @Override + public Integer getRatelimit() { + // TODO Auto-generated method stub + return super.getRatelimit(); + } + @Override + public String getDestPort() { + // TODO Auto-generated method stub + return super.getDestPort(); + } + @Override + public String getDestIpAddress() { + // TODO Auto-generated method stub + return super.getDestIpAddress(); + } + + public String getUserRegion1() { + // TODO Auto-generated method stub + return super.getUserRegion1(); + } + + @Override + public String getUserRegion2() { + // TODO Auto-generated method stub + return super.getUserRegion2(); + } + + @Override + public String getUserRegion3() { + // TODO Auto-generated method stub + return super.getUserRegion3(); + } + + @Override + public String getUserRegion4() { + // TODO Auto-generated method stub + return super.getUserRegion4(); + } + + @Override + public String getUserRegion5() { + // TODO Auto-generated method stub + return super.getUserRegion5(); + } + +} diff --git a/src/main/java/com/nis/domain/maat/MaatCfg.java b/src/main/java/com/nis/domain/maat/MaatCfg.java index 9321277ff..0a0792ce7 100644 --- a/src/main/java/com/nis/domain/maat/MaatCfg.java +++ b/src/main/java/com/nis/domain/maat/MaatCfg.java @@ -663,10 +663,10 @@ public class MaatCfg implements Serializable { this.requestId = requestId; } public void initDefaultValue() { - this.doLog=2; - this.doBlackList=1; - this.configPercent=100; - this.configOption=1; + this.doLog=Constants.MAAT_CFG_DOLOG_DEFAULT; + this.doBlackList=Constants.MAAT_CFG_DOLOG_DOBLACKLIST_DEFAULT; + this.configPercent=Constants.MAAT_CFG_DOLOG_CONFIGPERCENT_DEFAULT; + this.configOption=Constants.MAAT_CFG_DOLOG_CONFIGOPTION_DEFAULT; this.startTime=new Date(); this.endTime=DateUtils.addYears(this.startTime, 2099-Integer.parseInt(DateUtils.getYear())); this.fatherCfgId=0; diff --git a/src/main/java/com/nis/util/Constants.java b/src/main/java/com/nis/util/Constants.java index ec6c37c72..76ce20e23 100644 --- a/src/main/java/com/nis/util/Constants.java +++ b/src/main/java/com/nis/util/Constants.java @@ -8,7 +8,28 @@ import com.google.gson.GsonBuilder; public final class Constants { /** - * + * MaatConfig 默认值 + */ + public static Integer MAAT_CFG_DOLOG_DEFAULT=Configurations.getIntProperty("maat_cfg_dolog_default", 1); + public static Integer MAAT_CFG_DOLOG_DOBLACKLIST_DEFAULT=Configurations.getIntProperty("maat_cfg_dolog_doblacklist_default", 1); + public static Integer MAAT_CFG_DOLOG_CONFIGPERCENT_DEFAULT=Configurations.getIntProperty("maat_cfg_dolog_configpercent_default", 100); + public static Integer MAAT_CFG_DOLOG_CONFIGOPTION_DEFAULT=Configurations.getIntProperty("maat_cfg_dolog_configoption_default", 1); + /** + * iP默认值 + */ + public static String IPV4_DEFAULT_IP_VALUE=Configurations.getStringProperty("ipv4_default_ip_value", "0.0.0.0"); + public static String IPV6_DEFAULT_IP_VALUE=Configurations.getStringProperty("ipv4_default_ip_value", "::"); + public static String IPV4_DEFAULT_IP_SUBNET_VALUE=Configurations.getStringProperty("ipv4_default_ip_subnet_value", "0.0.0.0/32"); + public static String IPV6_DEFAULT_IP_SUBNET_VALUE=Configurations.getStringProperty("ipv6_default_ip_subnet_value", "::/64"); + public static String IPV4_DEFAULT_IP_RANGE_VALUE=Configurations.getStringProperty("ipv4_default_ip_range_value", "0.0.0.0-0.0.0.0"); + public static String IPV6_DEFAULT_IP_RANGE_VALUE=Configurations.getStringProperty("ipv6_default_ip_range_value", "::-::"); + /** + * port默认值 + */ + public static String PORT_DEFAULT=Configurations.getStringProperty("port_default", "0"); + public static String PORT_MASK_DEFAULT=Configurations.getStringProperty("port_mask_default", "0/65535"); + /** + *特定服务类型 */ public static String SPECIFIC_SERVICE_CFG_TYPE_APP=Configurations.getStringProperty("specific_service_cfg_type_app", "social_app"); public static String SPECIFIC_SERVICE_CFG_TYPE_ENCRYPTED_TUNNEL_BEHAVIOR=Configurations.getStringProperty("specific_service_cfg_type_encrypted_tunnel_behavior", "encrypted_tunnel_behavior"); @@ -470,17 +491,17 @@ public final class Constants { //YSP文件特征配置相关参数,用于调用外部程序生成特征文件时使用 public static final String AV_FILE_PATH = Configurations.getStringProperty("av_file_path", "/home/ysp/"); public static final String AV_SAMPLE_AUDIO_REGION = Configurations.getStringProperty("av_sample_audio_region", "av_sample_audio"); - public static final String AV_SAMPLE_VEDIO_REGION = Configurations.getStringProperty("av_sample_vedio_region", "av_sample_vedio"); + public static final String AV_SAMPLE_VIDEO_REGION = Configurations.getStringProperty("av_sample_video_region", "av_sample_video"); public static final String AV_SAMPLE_PICTURE_REGION = Configurations.getStringProperty("av_sample_picture_region", "av_sample_picture"); public static final String AV_SAMPLE_VOIP_REGION = Configurations.getStringProperty("av_sample_voip_region", "av_sample_voip"); public static final String AUDIO_SAMPLE_CREATE_PROC = Configurations.getStringProperty("audio_sample_create_proc", "./audio_convert_proc"); - public static final String VEDIO_SAMPLE_CREATE_PROC = Configurations.getStringProperty("vedio_sample_create_proc", "./vedio_convert_proc"); + public static final String VIDEO_SAMPLE_CREATE_PROC = Configurations.getStringProperty("video_sample_create_proc", "./video_convert_proc"); public static final String PICTURE_SAMPLE_CREATE_PROC = Configurations.getStringProperty("picture_sample_create_proc", "./picture_convert_proc"); public static final boolean AUDIO_SAMPLE_PROC_PARAM_IS_QUOTATION = Configurations.getBooleanProperty("audio_sample_proc_param_is_quotation", true); - public static final boolean VEDIO_SAMPLE_PROC_PARAM_IS_QUOTATION = Configurations.getBooleanProperty("vedio_sample_proc_param_is_quotation", true); + public static final boolean VIDEO_SAMPLE_PROC_PARAM_IS_QUOTATION = Configurations.getBooleanProperty("video_sample_proc_param_is_quotation", true); public static final boolean PICTURE_SAMPLE_PROC_PARAM_IS_QUOTATION = Configurations.getBooleanProperty("picture_sample_proc_param_is_quotation", true); public static final boolean AUDIO_SAMPLE_PROC_PARAM_IS_TRANSLATION = Configurations.getBooleanProperty("audio_sample_proc_param_is_translation", false); - public static final boolean VEDIO_SAMPLE_PROC_PARAM_IS_TRANSLATION = Configurations.getBooleanProperty("vedio_sample_proc_param_is_translation", false); + public static final boolean VIDEO_SAMPLE_PROC_PARAM_IS_TRANSLATION = Configurations.getBooleanProperty("video_sample_proc_param_is_translation", false); public static final boolean PICTURE_SAMPLE_PROC_PARAM_IS_TRANSLATION = Configurations.getBooleanProperty("picture_sample_proc_param_is_translation", false); //HTTP自定义域相关参数 diff --git a/src/main/java/com/nis/util/excel/ExportExcel.java b/src/main/java/com/nis/util/excel/ExportExcel.java index 5c7106446..855f123e4 100644 --- a/src/main/java/com/nis/util/excel/ExportExcel.java +++ b/src/main/java/com/nis/util/excel/ExportExcel.java @@ -22,7 +22,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; -import org.apache.derby.tools.sysinfo; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Comment; @@ -45,7 +44,6 @@ import com.nis.util.DictUtils; import com.nis.util.Encodes; import com.nis.util.Reflections; import com.nis.util.StringUtil; -import com.nis.util.excel.fieldtype.RoleListType; /** * 导出Excel文件(导出“XLSX”格式,支持大数据量导出 @see org.apache.poi.ss.SpreadsheetVersion) @@ -83,15 +81,31 @@ public class ExportExcel { /** * //递归获取cls实体对象及父级对象的属性 + * wx:修改,子类覆盖父类的同名方法 * @param list * @param cls */ public void getFields(List list,Class cls) { Field[] fields=cls.getDeclaredFields(); if(fields != null && fields.length > 0){ + List tempList=new ArrayList<>(); for (Field field : fields) { - list.add(field); + if(list.size()==0) { + tempList.add(field); + }else { + boolean has=false; + for(Field checkF:list) { + if(checkF.getName().equals(field.getName())) { + has=true; + break; + } + } + if(!has) { + tempList.add(field); + } + } } + list.addAll(tempList); } if(cls.getSuperclass() != null){ getFields(list,cls.getSuperclass()); @@ -105,9 +119,24 @@ public class ExportExcel { public void getMethods(List list,Class cls) { Method[] methods=cls.getDeclaredMethods(); if(methods != null && methods.length > 0){ + List tempList=new ArrayList<>(); for (Method method : methods) { - list.add(method); + if(list.size()==0) { + tempList.add(method); + }else { + boolean has=false; + for(Method checkM:list) { + if(checkM.getName().equals(method.getName())) { + has=true; + break; + } + } + if(!has) { + tempList.add(method); + } + } } + list.addAll(tempList); } if(cls.getSuperclass() != null){ getMethods(list,cls.getSuperclass()); @@ -254,6 +283,9 @@ public class ExportExcel { if(!StringUtil.isEmpty(ms)){ for (Method m : ms){ ExcelField ef = m.getAnnotation(ExcelField.class); + if(m.getName().equals("getSrcIpAddress")) { + System.out.println(ef.title()); + } if (ef != null && (ef.type()==0 || ef.type()==type)){ if (groups!=null && groups.length>0){ boolean inGroup = false; diff --git a/src/main/java/com/nis/util/excel/ImportExcel.java b/src/main/java/com/nis/util/excel/ImportExcel.java index 639ee191f..f5147571f 100644 --- a/src/main/java/com/nis/util/excel/ImportExcel.java +++ b/src/main/java/com/nis/util/excel/ImportExcel.java @@ -9,6 +9,7 @@ import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; @@ -211,7 +212,69 @@ public class ImportExcel { } return val; } - + /** + * //递归获取cls实体对象及父级对象的属性 + * wx:修改,子类覆盖父类的同名方法 + * @param list + * @param cls + */ + public void getFields(List list,Class cls) { + Field[] fields=cls.getDeclaredFields(); + if(fields != null && fields.length > 0){ + List tempList=new ArrayList<>(); + for (Field field : fields) { + if(list.size()==0) { + tempList.add(field); + }else { + boolean has=false; + for(Field checkF:list) { + if(checkF.getName().equals(field.getName())) { + has=true; + break; + } + } + if(!has) { + tempList.add(field); + } + } + } + list.addAll(tempList); + } + if(cls.getSuperclass() != null){ + getFields(list,cls.getSuperclass()); + } + } + /** + * //递归获取cls实体对象及父级对象的method + * @param list + * @param cls + */ + public void getMethods(List list,Class cls) { + Method[] methods=cls.getDeclaredMethods(); + if(methods != null && methods.length > 0){ + List tempList=new ArrayList<>(); + for (Method method : methods) { + if(list.size()==0) { + tempList.add(method); + }else { + boolean has=false; + for(Method checkM:list) { + if(checkM.getName().equals(method.getName())) { + has=true; + break; + } + } + if(!has) { + tempList.add(method); + } + } + } + list.addAll(tempList); + } + if(cls.getSuperclass() != null){ + getMethods(list,cls.getSuperclass()); + } + } /** * 获取导入数据列表 * @param cls 导入对象类型 @@ -220,7 +283,11 @@ public class ImportExcel { public List getDataList(Class cls, int... groups) throws InstantiationException, IllegalAccessException{ List annotationList = Lists.newArrayList(); // Get annotation field - Field[] fs = cls.getDeclaredFields(); +// Field[] fs = cls.getDeclaredFields(); + List fs=new ArrayList(); + // Get annotation field + //递归获取cls实体对象及父级对象的属性 + getFields(fs, cls); for (Field f : fs){ ExcelField ef = f.getAnnotation(ExcelField.class); if (ef != null && (ef.type()==0 || ef.type()==2)){ @@ -244,7 +311,11 @@ public class ImportExcel { } } // Get annotation method - Method[] ms = cls.getDeclaredMethods(); +// Method[] ms = cls.getDeclaredMethods(); + List ms=new ArrayList(); + // Get annotation method + //递归获取cls实体对象及父级对象的属性 + getMethods(ms, cls); for (Method m : ms){ ExcelField ef = m.getAnnotation(ExcelField.class); if (ef != null && (ef.type()==0 || ef.type()==2)){ diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index c0a03a292..e32855322 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -32,6 +32,7 @@ import com.beust.jcommander.internal.Lists; import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionServiceDict; import com.nis.domain.SysDataDictionaryItem; +import com.nis.domain.basics.PolicyGroupInfo; import com.nis.domain.basics.ServiceDictInfo; import com.nis.domain.basics.SysDictInfo; import com.nis.domain.configuration.AreaBean; @@ -39,7 +40,7 @@ import com.nis.domain.configuration.AreaIpCfg; import com.nis.domain.configuration.BaseCfg; import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.ComplexStringCfgTemplate; -import com.nis.domain.configuration.IpCfgTemplate; +import com.nis.domain.configuration.template.IpCfgTemplate; import com.nis.domain.configuration.RequestInfo; import com.nis.domain.configuration.StringCfgTemplate; import com.nis.domain.log.BaseLogEntity; @@ -584,6 +585,38 @@ public class BaseController { e.printStackTrace(); } } + public void importCfgTemplate(HttpServletRequest request,HttpServletResponse response, + RedirectAttributes redirectAttributes,Integer functionId,Integer cfgRegionCode,Class clazz){ + Properties msgProp = getMsgProp(); + try { + List dictList = DictUtils.getFunctionRegionDictList(functionId); + for(FunctionRegionDict dict:dictList){ + if(dict.getConfigRegionCode()==cfgRegionCode){ + String fileName = dict.getConfigRegionValue()+".xlsx"; + if(dict.getRegionType()==1){ + List list = Lists.newArrayList(); + list.add((IpCfgTemplate)clazz.newInstance()); + new ExportExcel(msgProp,null, clazz, 2).setDataList(msgProp,list,null). + write(request,response, fileName).dispose(); + }else if(dict.getRegionType()==2){ + List list = Lists.newArrayList(); + list.add(new StringCfgTemplate()); + new ExportExcel(msgProp,null, clazz, 2).setDataList(msgProp,list,null). + write(request,response, fileName).dispose(); + }else if(dict.getRegionType()==3){ + List list = Lists.newArrayList(); + list.add(new ComplexStringCfgTemplate()); + new ExportExcel(msgProp,null, clazz, 2).setDataList(msgProp,list,null). + write(request,response, fileName).dispose(); + } + } + } + + } catch (Exception e) { + msgProp = null; + e.printStackTrace(); + } + } public void setLogAction(BaseLogEntity log) { List serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId()); @@ -706,20 +739,67 @@ public class BaseController { // ip_pattern check end //client_ip check start String srcIp=value.getSrcIpAddress(); - String _msg=checkIP(prop,prop.getProperty("client_ip"),srcIp,ipTypeString,ipPatternString); + String _msg=""; + if("ipmulitiplex".equals(specialItem)) { + _msg=checkIP(prop,prop.getProperty("IP"),srcIp,ipTypeString,ipPatternString); + }else { + _msg=checkIP(prop,prop.getProperty("client_ip"),srcIp,ipTypeString,ipPatternString); + } if(StringUtils.isNotBlank(_msg)){ errInfo.append(_msg); } //client_ip check end //server_ip check start String destIp=value.getDestIpAddress(); - if(srcIp.equals(destIp)){ - String info=String.format(prop.getProperty("are_the_same"),prop.getProperty("client_ip"),prop.getProperty("server_ip")); - errInfo.append(info+";"); - } - _msg=checkIP(prop,prop.getProperty("server_ip"),destIp,ipTypeString,ipPatternString); - if(StringUtils.isNotBlank(_msg)){ - errInfo.append(_msg); + if("ipmulitiplex".equals(specialItem)) {//set 默认值 + if(ipPattern!=null&&ipType!=null) { + if("ip_subnet".equals(ipPatternString)) { + if("ipv4".equals(ipTypeString)) { + value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_SUBNET_VALUE); + }else if("ipv6".equals(ipTypeString)) { + value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_SUBNET_VALUE); + }else if("4over6".equals(ipTypeString)) { + value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_SUBNET_VALUE); + }else if("6over4".equals(ipTypeString)) { + value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_SUBNET_VALUE); + }else if("all".equals(ipTypeString)) { + + } + }else if("ip_range".equals(ipPatternString)) { + if("ipv4".equals(ipTypeString)) { + value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_RANGE_VALUE); + }else if("ipv6".equals(ipTypeString)) { + value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_RANGE_VALUE); + }else if("4over6".equals(ipTypeString)) { + value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_RANGE_VALUE); + }else if("6over4".equals(ipTypeString)) { + value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_RANGE_VALUE); + }else if("all".equals(ipTypeString)) { + + } + }else if("ip".equals(ipPatternString)) { + if("ipv4".equals(ipTypeString)) { + value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_VALUE); + }else if("ipv6".equals(ipTypeString)) { + value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_VALUE); + }else if("4over6".equals(ipTypeString)) { + value.setDestIpAddress(Constants.IPV6_DEFAULT_IP_VALUE); + }else if("6over4".equals(ipTypeString)) { + value.setDestIpAddress(Constants.IPV4_DEFAULT_IP_VALUE); + }else if("all".equals(ipTypeString)) { + + } + } + } + }else { + if(srcIp.equals(destIp)){ + String info=String.format(prop.getProperty("are_the_same"),prop.getProperty("client_ip"),prop.getProperty("server_ip")); + errInfo.append(info+";"); + } + _msg=checkIP(prop,prop.getProperty("server_ip"),destIp,ipTypeString,ipPatternString); + if(StringUtils.isNotBlank(_msg)){ + errInfo.append(_msg); + } } //server_ip check end //port_pattern check start @@ -743,14 +823,29 @@ public class BaseController { //port_pattern check end //src_port check start String srcPort=value.getSrcPort(); - _msg=checkPort(prop,prop.getProperty("client_port"), srcPort, portPatternString); + if("ipmulitiplex".equals(specialItem)) { + _msg=checkPort(prop,prop.getProperty("port"), srcPort, portPatternString); + }else { + _msg=checkPort(prop,prop.getProperty("client_port"), srcPort, portPatternString); + } + if(StringUtils.isNotBlank(_msg)){ errInfo.append(_msg); } //src_port check end //dest_port check start String destPort=value.getDestPort(); - _msg=checkPort(prop,prop.getProperty("server_port"), destPort, portPatternString); + if("ipmulitiplex".equals(specialItem)) {//set 默认值 + if(portPattern!=null) { + if("port_mask".equals(portPatternString)) { + value.setDestPort(Constants.PORT_MASK_DEFAULT); + }else if("port".equals(portPatternString)) { + value.setDestPort(Constants.PORT_DEFAULT); + } + } + }else { + _msg=checkPort(prop,prop.getProperty("server_port"), destPort, portPatternString); + } if(StringUtils.isNotBlank(_msg)){ errInfo.append(_msg); } @@ -899,6 +994,46 @@ public class BaseController { errInfo.append(String.format(prop.getProperty("num_split_by_comma"), prop.getProperty("label"))+";"); } } + //group and ir_type check start + if("ipmulitiplex".equals(specialItem)) { + List irTypeList = DictUtils.getDictList("IR_TYPE"); + Integer irType= value.getIrType(); + if(irType==null) { + errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("ir_type"))+";"); + }else { + boolean has=false; + for(SysDataDictionaryItem irTypeItem:irTypeList){ + if(Integer.parseInt(irTypeItem.getItemCode())==protocol.intValue()){ + has=true; + break; + } + } + if(!has){ + errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("ir_type"))+";"); + } + } + Integer dnsStrategyId=value.getDnsStrategyId(); + if(dnsStrategyId==null) { + errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("group_name"))+";"); + }else { + PolicyGroupInfo group=policyGroupInfoService.getById(dnsStrategyId.intValue()); + if(group==null) { + errInfo.append(String.format(prop.getProperty("id_not_exists"),dnsStrategyId, prop.getProperty("group_name"))+";"); + }else if(group.getIsValid()==Constants.VALID_DEL||group.getIsValid()==Constants.VALID_NO) { + errInfo.append(String.format(prop.getProperty("id_not_valid"),dnsStrategyId, prop.getProperty("group_name"))+";"); + } + } + } + if("ipratelimit".equals(specialItem)) { + Integer ratelimit=value.getRatelimit(); + if(ratelimit==null) { + errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("ratelimit"))+";"); + }else { + if(ratelimit.intValue()<0||ratelimit.intValue()>100) { + errInfo.append(prop.getProperty("ratelimit_limit")+";"); + } + } + } //attribute check end if(StringUtils.isNotBlank(errInfo.toString())){ msg.append(lineStart).append(errInfo); @@ -906,6 +1041,7 @@ public class BaseController { msg.append("
"); } } + //group and ir_type check end line++; } if(StringUtils.isNotBlank(msg.toString())){ diff --git a/src/main/java/com/nis/web/controller/configuration/CommonController.java b/src/main/java/com/nis/web/controller/configuration/CommonController.java index 06dc10a59..66bfb7dce 100644 --- a/src/main/java/com/nis/web/controller/configuration/CommonController.java +++ b/src/main/java/com/nis/web/controller/configuration/CommonController.java @@ -28,7 +28,7 @@ import com.nis.domain.Page; import com.nis.domain.basics.ServiceDictInfo; import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.HttpUrlCfg; -import com.nis.domain.configuration.IpCfgTemplate; +import com.nis.domain.configuration.template.IpCfgTemplate; import com.nis.domain.configuration.IpPortCfg; import com.nis.exceptions.MaatConvertException; import com.nis.util.Constants; @@ -240,10 +240,42 @@ public class CommonController extends BaseController { e.printStackTrace(); } } + public void _importIp(String cfgName,RedirectAttributes redirectAttributes,MultipartFile file,IpPortCfg ipCfg,Class clazz) { + redirectAttributes.addAttribute("cfgName", cfgName); + try { + ImportExcel ei = new ImportExcel(file, 0, 0); + List list = ei.getDataList(clazz); + this.checkIpCfg(ipCfg.getFunctionId(),list); + List ipList = new ArrayList<>(); + Date date=new Date(); + for(IpCfgTemplate cfg : list){ + IpPortCfg ip = new IpPortCfg(); + BeanUtils.copyProperties(ipCfg, ip); + BeanUtils.copyProperties(cfg, ip); + ip.setTableName(IpPortCfg.getTablename()); + ip.setIsAreaEffective(0); + ip.setIsValid(Constants.VALID_NO); + ip.setIsAudit(Constants.AUDIT_NOT_YET); + ip.setCreatorId(ipCfg.getCurrentUser().getId()); + ip.setCreateTime(date); + ip.setCompileId(ipCfgService.getCompileId()); + ip.setDnsStrategyId((long)cfg.getDnsStrategyId().intValue()); + ipList.add(ip); + } + ipCfgService.saveBatch(ipList, IpCfgDao.class); + } catch (Exception e) { + addMessage(redirectAttributes, e.getMessage()); + e.printStackTrace(); + } + } public void _importFileTemplate(HttpServletRequest request,HttpServletResponse response, RedirectAttributes redirectAttributes,Integer functionId,Integer cfgRegionCode) { this.importCfgTemplate(request, response, redirectAttributes, functionId, cfgRegionCode); } + public void _importFileTemplate(HttpServletRequest request,HttpServletResponse response, + RedirectAttributes redirectAttributes,Integer functionId,Integer cfgRegionCode,Class clazz) { + this.importCfgTemplate(request, response, redirectAttributes, functionId, cfgRegionCode,clazz); + } //ip配置导出 public void _exportIp(String columns,Model model,HttpServletRequest request,HttpServletResponse response, IpPortCfg entity,String ids,RedirectAttributes redirectAttributes){ diff --git a/src/main/java/com/nis/web/controller/configuration/manipulation/IpMultiplexController.java b/src/main/java/com/nis/web/controller/configuration/manipulation/IpMultiplexController.java index 8054fb080..537bc59ec 100644 --- a/src/main/java/com/nis/web/controller/configuration/manipulation/IpMultiplexController.java +++ b/src/main/java/com/nis/web/controller/configuration/manipulation/IpMultiplexController.java @@ -27,6 +27,7 @@ import com.nis.domain.SysDataDictionaryItem; import com.nis.domain.basics.PolicyGroupInfo; import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.IpPortCfg; +import com.nis.domain.configuration.template.IpMultiplexPolicyTemplate; import com.nis.util.DictUtils; import com.nis.web.controller.configuration.CommonController; @@ -93,7 +94,7 @@ public class IpMultiplexController extends CommonController { @RequestMapping(value = "/import", method=RequestMethod.POST) public String importIp(String cfgName,RedirectAttributes redirectAttributes, @RequestParam("file") MultipartFile file,IpPortCfg cfg) { - this._importIp(cfgName,redirectAttributes, file,cfg); + this._importIp(cfgName,redirectAttributes, file,cfg,IpMultiplexPolicyTemplate.class); redirectAttributes.addAttribute("urlPrefix","/manipulation/ipmulitiplex"); redirectAttributes.addAttribute("requiresPermissionPrefix","ip:mulitiplex"); return "redirect:" + adminPath +"/manipulation/ipmulitiplex/list?functionId="+cfg.getFunctionId(); @@ -102,7 +103,7 @@ public class IpMultiplexController extends CommonController { @RequestMapping(value = "import/template") public void importFileTemplate(HttpServletRequest request,HttpServletResponse response, RedirectAttributes redirectAttributes,Integer functionId,Integer cfgRegionCode) { - this._importFileTemplate(request, response, redirectAttributes, functionId, cfgRegionCode); + this._importFileTemplate(request, response, redirectAttributes, functionId, cfgRegionCode,IpMultiplexPolicyTemplate.class); } //ip配置导出 @RequestMapping(value = "export") diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java b/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java index 353b70ff6..c8f2561f9 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java @@ -25,7 +25,7 @@ import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.ComplexkeywordCfg; import com.nis.domain.configuration.DnsResStrategy; import com.nis.domain.configuration.ComplexStringCfgTemplate; -import com.nis.domain.configuration.IpCfgTemplate; +import com.nis.domain.configuration.template.IpCfgTemplate; import com.nis.domain.configuration.StringCfgTemplate; import com.nis.domain.configuration.HttpBodyCfg; import com.nis.domain.configuration.HttpReqHeadCfg; diff --git a/src/main/java/com/nis/web/service/configuration/AvCfgService.java b/src/main/java/com/nis/web/service/configuration/AvCfgService.java index 2402e942c..8f5d709ce 100644 --- a/src/main/java/com/nis/web/service/configuration/AvCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/AvCfgService.java @@ -151,12 +151,12 @@ public class AvCfgService extends BaseService{ if(Constants.AUDIO_SAMPLE_PROC_PARAM_IS_QUOTATION){//json参数是否需要前后单引号处理 param = "'"+param+"'"; } - }else if(entity.getCfgType().equals(Constants.AV_SAMPLE_VEDIO_REGION)){//视频样例配置 - sampleCreatelProc = Constants.VEDIO_SAMPLE_CREATE_PROC; - if(Constants.VEDIO_SAMPLE_PROC_PARAM_IS_TRANSLATION){ + }else if(entity.getCfgType().equals(Constants.AV_SAMPLE_VIDEO_REGION)){//视频样例配置 + sampleCreatelProc = Constants.VIDEO_SAMPLE_CREATE_PROC; + if(Constants.VIDEO_SAMPLE_PROC_PARAM_IS_TRANSLATION){ param = StringEscapeUtils.escapeJava(param); } - if(Constants.VEDIO_SAMPLE_PROC_PARAM_IS_QUOTATION){//json参数是否需要前后单引号处理 + if(Constants.VIDEO_SAMPLE_PROC_PARAM_IS_QUOTATION){//json参数是否需要前后单引号处理 param = "'"+param+"'"; } }else if(entity.getCfgType().equals(Constants.AV_SAMPLE_PICTURE_REGION)){//图片样例配置 diff --git a/src/main/resources/messages/message_ru.properties b/src/main/resources/messages/message_ru.properties index 82cf99d8c..8828fc4b4 100644 --- a/src/main/resources/messages/message_ru.properties +++ b/src/main/resources/messages/message_ru.properties @@ -541,11 +541,11 @@ av_voip_control=VoIP control av_voip_ip_control=VoIP IP control av_voip_account_control=VoIP account control av_sample_audio_control=audio sample control -av_sample_vedio_control=vedio sample control +av_sample_video_control=video sample control av_sample_picture_control=picture sample control av_sample_voip_control=VoIP sample control av_sample_audio_porn_control=audio porn sample control -av_sample_vedio_porn_control=vedio porn sample control +av_sample_video_porn_control=video porn sample control av_sample_control=sample control configure_statistics_info=Configure statistics info harm_level=harm level @@ -683,7 +683,7 @@ ip_intercept=ip intercept domain_intercept=domain intercept control_policy=control policy domain_forward=domain forward -http_redirect=http redirect +http_redirect=HTTP redirect http_req_replace=http request replace http_res_replace=http response replace replace_content=replace content @@ -698,8 +698,8 @@ policy_group_manage=strateagy grouping management ip_multiplex_policy=ip multiplex policy target_ip_protect=target ip protect ratelimit_config=ratelimit config -ip_ratelimit=ip ratelimit -domain_ratelimit=domain ratelimit +ip_ratelimit=IP speed limit +domain_ratelimit=Domain speed limit ratelimit=ratelimit scale ir_type=multiplex type dns_strategy_id=dns strategy id @@ -834,10 +834,7 @@ app_http_feature_monit=APP HTTP feature monitoring app_domain_feature_monit=APP domain feature monitoring app_byte_feature_monit=APP byte feature monitoring proxy_domain_forward=Domain forward -ip_ratelimit=IP speed limit -domain_ratelimit=Domain speed limit ip_complex_loop=IP complex -http_redirect=HTTP redirect ddos_ip_drop=DDOS IP ip_reuse_adress_pool_loop=IP reuse address pool app_strategy_monit=APP strategy monitoring @@ -855,4 +852,5 @@ src_ip_report=Domestic Source IP Report dest_ip_report=Destination Country IP Report isp_report=Isp Report #=============about report=================== -show_more=Show More \ No newline at end of file +show_more=Show More +ratelimit_limit=Limit Rate must between 0 and 100 \ No newline at end of file diff --git a/src/main/resources/messages/message_zh_CN.properties b/src/main/resources/messages/message_zh_CN.properties index dbf4537c2..d964b03fd 100644 --- a/src/main/resources/messages/message_zh_CN.properties +++ b/src/main/resources/messages/message_zh_CN.properties @@ -397,7 +397,7 @@ login=\u767B\u5F55 owner_company=\u5F52\u5C5E\u516C\u53F8 company=\u516C\u53F8 owner_group=\u5F52\u5C5E\u90E8\u95E8 -group=\u90E8\u95E8 +group=\u6240\u5C5E\u7EC4 template=\u4E0B\u8F7D\u6A21\u677F export=\u5BFC\u51FA import=\u5BFC\u5165 @@ -561,11 +561,11 @@ av_voip_control=\u97F3\u89C6\u9891VoIP av_voip_ip_control=VoIP IP av_voip_account_control=VoIP\u8D26\u53F7 av_sample_audio_control=\u97F3\u9891\u6837\u4F8B -av_sample_vedio_control=\u89C6\u9891\u6837\u4F8B +av_sample_video_control=\u89C6\u9891\u6837\u4F8B av_sample_picture_control=\u56FE\u7247\u6837\u4F8B av_sample_voip_control=VoIP\u6837\u4F8B av_sample_audio_porn_control=\u97F3\u9891\u573A\u666F\u6837\u4F8B -av_sample_vedio_porn_control=\u89C6\u9891\u573A\u666F\u6837\u4F8B +av_sample_video_porn_control=\u89C6\u9891\u573A\u666F\u6837\u4F8B av_sample_control=\u97F3\u89C6\u9891\u6837\u4F8B configure_statistics_info=\u914D\u7F6E\u7EDF\u8BA1\u4FE1\u606F harm_level=\u5371\u5BB3\u7A0B\u5EA6 @@ -773,7 +773,6 @@ all_types=\u6240\u6709\u7C7B\u578B group_type=\u5206\u7EC4\u7C7B\u578B group_name=\u5206\u7EC4\u540D\u79F0 default_group=\u7F3A\u7701\u7EC4 -group=\u6240\u5C5E\u7EC4 policy_group_manage=\u7B56\u7565\u5206\u7EC4\u7BA1\u7406 #===========policy_group_manage end ============= #=============about manipulation========= @@ -828,11 +827,11 @@ not_number=%s\u5FC5\u987B\u4E3A\u6570\u5B57 #=============some validation=========== #=============region_value,config form title================= av_sample_audio=\u97F3\u9891\u6837\u4F8B -av_sample_vedio=\u89C6\u9891\u6837\u4F8B +av_sample_video=\u89C6\u9891\u6837\u4F8B av_sample_picture=\u56FE\u7247\u6837\u4F8B av_sample_voip=VoIP\u6837\u4F8B av_sample_audio_porn=\u97F3\u9891\u573A\u666F\u6837\u4F8B -av_sample_vedio_porn=\u89C6\u9891\u573A\u666F\u6837\u4F8B +av_sample_video_porn=\u89C6\u9891\u573A\u666F\u6837\u4F8B WHITE_LIST_IP=IP\u767D\u540D\u5355 av_voip_ip=VoIP IP\u914D\u7F6E NTC_HTTP_URL=URL\u914D\u7F6E @@ -900,7 +899,6 @@ redirect_response_code=\u91CD\u5B9A\u5411\u5E94\u7B54\u7801 redirect_url=\u91CD\u5B9A\u5411URL replace_zone=\u66FF\u6362\u533A\u57DF replaced_content=\u88AB\u66FF\u6362\u5185\u5BB9 -replace_content=\u66FF\u6362\u5185\u5BB9 http_req_uri=HTTP\u8BF7\u6C42URI http_req_header=HTTP\u8BF7\u6C42\u5934 http_req_body=HTTP\u8BF7\u6C42\u5185\u5BB9 @@ -1039,4 +1037,5 @@ trend=\u8D8B\u52BF traffic_website_list=\u7F51\u7AD9\u6D41\u91CF\u7EDF\u8BA1\u5217\u8868 traffic_website_type_chart=\u7F51\u7AD9\u5206\u7C7B\u6D41\u91CF\u7EDF\u8BA1\u56FE website=\u7F51\u7AD9\u540D\u79F0 -#===============dashboard end=================================== \ No newline at end of file +#===============dashboard end=================================== +ratelimit_limit=\u9650\u901F\u6BD4\u4F8B\u5FC5\u987B\u4ECB\u4E8E0\u5230100#===============dashboard end=================================== \ No newline at end of file diff --git a/src/main/resources/nis.properties b/src/main/resources/nis.properties index 8fe1740d4..f7a663246 100644 --- a/src/main/resources/nis.properties +++ b/src/main/resources/nis.properties @@ -378,32 +378,32 @@ digest_single_file_max_size=10485760 #12M12582912 digest_total_file_max_size=12582912 #YSP文件保存路径 -av_file_path=/home/ysp/ -#av_file_path=D:\\ysp\\ +#av_file_path=/home/ysp/ +av_file_path=D:\\ysp\\ #YSP文件特征类型 av_sample_audio_region=av_sample_audio -av_sample_vedio_region=av_sample_vedio +av_sample_video_region=av_sample_video av_sample_picture_region=av_sample_picture av_sample_voip_region=av_sample_voip #样例文件生成程序 -audio_sample_create_proc=java -jar /home/sampleTest.jar -vedio_sample_create_proc=java -jar /home/sampleTest.jar -picture_sample_create_proc=java -jar /home/sampleTest.jar -audio_sample_proc_param_is_quotation=true -vedio_sample_proc_param_is_quotation=true -picture_sample_proc_param_is_quotation=true -audio_sample_proc_param_is_translation=false -vedio_sample_proc_param_is_translation=false -picture_sample_proc_param_is_translation=false -#audio_sample_create_proc=java -jar D:\\sampleTest.jar -#vedio_sample_create_proc=java -jar D:\\sampleTest.jar -#picture_sample_create_proc=java -jar D:\\sampleTest.jar -#audio_sample_proc_param_is_quotation=false -#vedio_sample_proc_param_is_quotation=false -#picture_sample_proc_param_is_quotation=false -#audio_sample_proc_param_is_translation=true -#vedio_sample_proc_param_is_translation=true -#picture_sample_proc_param_is_translation=true +#audio_sample_create_proc=java -jar /home/sampleTest.jar +#video_sample_create_proc=java -jar /home/sampleTest.jar +#picture_sample_create_proc=java -jar /home/sampleTest.jar +#audio_sample_proc_param_is_quotation=true +#video_sample_proc_param_is_quotation=true +#picture_sample_proc_param_is_quotation=true +#audio_sample_proc_param_is_translation=false +#video_sample_proc_param_is_translation=false +#picture_sample_proc_param_is_translation=false +audio_sample_create_proc=java -jar D:\\sampleTest.jar +video_sample_create_proc=java -jar D:\\sampleTest.jar +picture_sample_create_proc=java -jar D:\\sampleTest.jar +audio_sample_proc_param_is_quotation=false +video_sample_proc_param_is_quotation=false +picture_sample_proc_param_is_quotation=false +audio_sample_proc_param_is_translation=true +video_sample_proc_param_is_translation=true +picture_sample_proc_param_is_translation=true #http自定义域相关参数 http_header_user_region_key=HTTP_HEADER http_header_dict_module=HTTP_HEADER_DISTRICT @@ -414,4 +414,18 @@ specific_service_cfg_type_app=social_app specific_service_cfg_type_encrypted_tunnel_behavior=encrypted_tunnel_behavior specific_service_cfg_type_basic_protocol=basic_protocol #基础协议自定义域 -proto_id_region=PROTO_ID \ No newline at end of file +proto_id_region=PROTO_ID +#IP默认值 +ipv4_default_ip_value=\:\: +ipv4_default_ip_subnet_value=0.0.0.0/32 +ipv6_default_ip_subnet_value=::/64 +ipv4_default_ip_range_value=0.0.0.0-0.0.0.0 +ipv6_default_ip_range_value=::-:: +#端口默认值 +port_default=0 +port_mask_default=0/65535 +#MAAT CFG 一些默认值 +maat_cfg_dolog_default=1 +maat_cfg_dolog_doblacklist_default=1 +maat_cfg_dolog_configpercent_default=100 +maat_cfg_dolog_configoption_default=1 \ No newline at end of file diff --git a/src/main/resources/sql/update_video_spell_error.sql b/src/main/resources/sql/update_video_spell_error.sql new file mode 100644 index 000000000..f7a698511 --- /dev/null +++ b/src/main/resources/sql/update_video_spell_error.sql @@ -0,0 +1,2 @@ +update function_region_dict t set t.config_region_value=insert(t.config_region_value,POSITION('vedio' in t.config_region_value),5,'video') where t.config_region_value like '%vedio%'; +update sys_menu s set s.`code`=insert(s.`code`,POSITION('vedio' in s.`code`),5,'video') where s.`code` like '%vedio%'; diff --git a/src/main/webapp/WEB-INF/views/log/ntc/mmPornVideoSampleList.jsp b/src/main/webapp/WEB-INF/views/log/ntc/mmPornVideoSampleList.jsp index 40162da32..ac370f202 100644 --- a/src/main/webapp/WEB-INF/views/log/ntc/mmPornVideoSampleList.jsp +++ b/src/main/webapp/WEB-INF/views/log/ntc/mmPornVideoSampleList.jsp @@ -38,7 +38,7 @@ $(document).ready(function(){

- +

diff --git a/src/main/webapp/WEB-INF/views/log/ntc/mmSampleVideoList.jsp b/src/main/webapp/WEB-INF/views/log/ntc/mmSampleVideoList.jsp index 28f2f706a..536c62b7e 100644 --- a/src/main/webapp/WEB-INF/views/log/ntc/mmSampleVideoList.jsp +++ b/src/main/webapp/WEB-INF/views/log/ntc/mmSampleVideoList.jsp @@ -38,7 +38,7 @@ $(document).ready(function(){

- +

diff --git a/src/main/webapp/WEB-INF/views/login.jsp b/src/main/webapp/WEB-INF/views/login.jsp index fad1c94bb..aaa2ee0bf 100644 --- a/src/main/webapp/WEB-INF/views/login.jsp +++ b/src/main/webapp/WEB-INF/views/login.jsp @@ -46,7 +46,7 @@ diff --git a/src/main/webapp/static/pages/img/login-02.png b/src/main/webapp/static/pages/img/login-02.png new file mode 100644 index 000000000..f31ce172c Binary files /dev/null and b/src/main/webapp/static/pages/img/login-02.png differ