diff --git a/src/main/java/com/nis/domain/configuration/AppComplexFeatureCfg.java b/src/main/java/com/nis/domain/configuration/AppComplexFeatureCfg.java new file mode 100644 index 000000000..1e8c1a51f --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/AppComplexFeatureCfg.java @@ -0,0 +1,164 @@ +/** + *@Title: BaseStringConfig.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2018年2月5日 下午5:26:02 + *@version 版本号 + */ +package com.nis.domain.configuration; + +import java.util.ArrayList; +import java.util.List; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import com.nis.util.excel.ExcelField; + +/** + * APP Header层头特征配置 + * @author dell + * + */ +public class AppComplexFeatureCfg extends BaseCfg { + + /** + * + */ + private static final long serialVersionUID = 5718725405113991364L; + /** + * + */ + private static final String tableName="app_complex_feature_cfg"; + @Expose + private Integer compileId; + private Integer appCode;//specific_service_cfg表一级节点的spec_service_code + private Integer behavCode;//specific_service_cfg表二级节点的spec_service_code + private Integer specServiceId; + private String district; + private String cfgKeywords; + private String appName; + private List ipPortList = new ArrayList(); + private String cfgRegionCode1; + public String getCfgRegionCode1() { + return cfgRegionCode1; + } + + public void setCfgRegionCode1(String cfgRegionCode1) { + this.cfgRegionCode1 = cfgRegionCode1; + } + + @Expose + @ExcelField(title="expression_type") + @SerializedName("exprType") + protected Integer exprType ; + + @Expose + @ExcelField(title="match_method") + @SerializedName("matchMethod") + protected Integer matchMethod ; + + @Expose + @ExcelField(title="whether_hexbinary") + @SerializedName("isHexbin") + protected Integer isHexbin; + + 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; + } + @Override + public void initDefaultValue() { + // TODO Auto-generated method stub + super.initDefaultValue(); + this.isHexbin = 0; + } + + + public Integer getCompileId() { + return compileId; + } + public void setCompileId(Integer compileId) { + this.compileId = compileId; + } + + public static String getTablename() { + return tableName; + } + + public Integer getAppCode() { + return appCode; + } + public void setAppCode(Integer appCode) { + this.appCode = appCode; + } + public Integer getSpecServiceId() { + return specServiceId; + } + public void setSpecServiceId(Integer specServiceId) { + this.specServiceId = specServiceId; + } + + public String getDistrict() { + return district; + } + + public void setDistrict(String district) { + this.district = district; + } + + public String getCfgKeywords() { + return cfgKeywords; + } + + public void setCfgKeywords(String cfgKeywords) { + this.cfgKeywords = cfgKeywords; + } + + public String getAppName() { + return appName; + } + + public void setAppName(String appName) { + this.appName = appName; + } + + public Integer getBehavCode() { + return behavCode; + } + + public void setBehavCode(Integer behavCode) { + this.behavCode = behavCode; + } + + public List getIpPortList() { + if(ipPortList.size()==0){ + ipPortList.add(new AppIpCfg()); + } + return ipPortList; + } + + public void setIpPortList(List ipPortList) { + this.ipPortList = ipPortList; + } + +} diff --git a/src/main/java/com/nis/domain/configuration/AppFeatureIndex.java b/src/main/java/com/nis/domain/configuration/AppFeatureIndex.java new file mode 100644 index 000000000..cfdb51fe3 --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/AppFeatureIndex.java @@ -0,0 +1,128 @@ +/** + *@Title: CfgIndexInfo.java + *@Package com.nis.domain.restful + *@Description 索引公共表 + *@author dell + *@date 2018年5月17日 下午16:59:17 + *@version 版本号 + */ +package com.nis.domain.configuration; + +import java.util.ArrayList; +import java.util.List; + +import com.nis.domain.basics.AsnIpCfg; + + +/** + * @ClassName: CfgIndexInfo.java + * @author (dell) + * @date 2018年5月17日 下午16:59:17 + * @version V1.0 + */ +public class AppFeatureIndex extends BaseCfg { + + /** + * + */ + private static final long serialVersionUID = -8069201965300255275L; + private static final String tableName="app_feature_index"; + private Integer appCode;//specific_service_cfg表一级节点的spec_service_code + private String appName; + private Integer specServiceId; + private Integer behavCode;//specific_service_cfg表二级节点的spec_service_code + private AppHttpCfg complexStrCfg; + private AppByteCfg strCfg; + private AppIpCfg ipCfg; + private List ipPortList = new ArrayList(); + private List strList = new ArrayList(); + private List complexList = new ArrayList(); + protected Integer exprType ; + protected Integer matchMethod ; + protected Integer isHexbin; + private String cfgRegionType; + private String cfgRegionValue; + private String cfgRegionCode1; + public static String getTablename() { + return tableName; + } + public Integer getAppCode() { + return appCode; + } + public void setAppCode(Integer appCode) { + this.appCode = appCode; + } + public Integer getSpecServiceId() { + return specServiceId; + } + public void setSpecServiceId(Integer specServiceId) { + this.specServiceId = specServiceId; + } + public List getIpPortList() { + return ipPortList; + } + public void setIpPortList(List ipPortList) { + this.ipPortList = ipPortList; + } + public List getComplexList() { + return complexList; + } + public void setComplexList(List complexList) { + this.complexList = complexList; + } + public AppHttpCfg getComplexStrCfg() { + return complexStrCfg; + } + public void setComplexStrCfg(AppHttpCfg complexStrCfg) { + this.complexStrCfg = complexStrCfg; + } + public AppByteCfg getStrCfg() { + return strCfg; + } + public void setStrCfg(AppByteCfg strCfg) { + this.strCfg = strCfg; + } + public AppIpCfg getIpCfg() { + return ipCfg; + } + public void setIpCfg(AppIpCfg ipCfg) { + this.ipCfg = ipCfg; + } + public List getStrList() { + return strList; + } + public void setStrList(List strList) { + this.strList = strList; + } + public String getAppName() { + return appName; + } + public void setAppName(String appName) { + this.appName = appName; + } + public Integer getBehavCode() { + return behavCode; + } + public void setBehavCode(Integer behavCode) { + this.behavCode = behavCode; + } + public String getCfgRegionType() { + return cfgRegionType; + } + public void setCfgRegionType(String cfgRegionType) { + this.cfgRegionType = cfgRegionType; + } + public String getCfgRegionValue() { + return cfgRegionValue; + } + public void setCfgRegionValue(String cfgRegionValue) { + this.cfgRegionValue = cfgRegionValue; + } + public String getCfgRegionCode1() { + return cfgRegionCode1; + } + public void setCfgRegionCode1(String cfgRegionCode1) { + this.cfgRegionCode1 = cfgRegionCode1; + } + +} diff --git a/src/main/java/com/nis/domain/configuration/AppStringFeatureCfg.java b/src/main/java/com/nis/domain/configuration/AppStringFeatureCfg.java new file mode 100644 index 000000000..8cf3044ea --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/AppStringFeatureCfg.java @@ -0,0 +1,139 @@ +/** + *@Title: BaseStringConfig.java + *@Package com.nis.domain.restful + *@Description TODO + *@author dell + *@date 2018年2月5日 下午5:26:02 + *@version 版本号 + */ +package com.nis.domain.configuration; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import com.nis.util.excel.ExcelField; + +/** + * @Description: APP策略配置 + * @author (dell) + * @date 2018年2月5日 下午5:26:02 + * @version V1.0 + */ +public class AppStringFeatureCfg extends BaseCfg { + + /** + * + */ + private static final long serialVersionUID = 8677301658049443801L; + private static final String tableName="app_string_feature_cfg"; + @Expose + private Integer compileId; + private Integer appCode;//specific_service_cfg表一级节点的spec_service_code + private Integer behavCode;//specific_service_cfg表二级节点的spec_service_code + private Integer specServiceId; + private String bytes; + private String cfgKeywords; + private String appName; + + @Expose + @ExcelField(title="expression_type") + @SerializedName("exprType") + protected Integer exprType ; + + @Expose + @ExcelField(title="match_method") + @SerializedName("matchMethod") + protected Integer matchMethod ; + + @Expose + @ExcelField(title="whether_hexbinary") + @SerializedName("isHexbin") + protected Integer isHexbin; + + 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; + } + @Override + public void initDefaultValue() { + // TODO Auto-generated method stub + super.initDefaultValue(); + this.isHexbin = 0; + } + + + public Integer getCompileId() { + return compileId; + } + public void setCompileId(Integer compileId) { + this.compileId = compileId; + } + + public static String getTablename() { + return tableName; + } + + public Integer getAppCode() { + return appCode; + } + public void setAppCode(Integer appCode) { + this.appCode = appCode; + } + public Integer getSpecServiceId() { + return specServiceId; + } + public void setSpecServiceId(Integer specServiceId) { + this.specServiceId = specServiceId; + } + + public String getBytes() { + return bytes; + } + + public void setBytes(String bytes) { + this.bytes = bytes; + } + + public String getCfgKeywords() { + return cfgKeywords; + } + + public void setCfgKeywords(String cfgKeywords) { + this.cfgKeywords = cfgKeywords; + } + + public String getAppName() { + return appName; + } + + public void setAppName(String appName) { + this.appName = appName; + } + + public Integer getBehavCode() { + return behavCode; + } + + public void setBehavCode(Integer behavCode) { + this.behavCode = behavCode; + } + +} diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index a3048bd29..57bcda365 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -69,6 +69,7 @@ import com.nis.web.service.basics.ServiceDictInfoService; import com.nis.web.service.basics.SysDictInfoService; import com.nis.web.service.configuration.AppBuiltInFeatureService; import com.nis.web.service.configuration.AppCfgService; +import com.nis.web.service.configuration.AppMultiFeatureCfgService; import com.nis.web.service.configuration.AsnPolicyCfgService; import com.nis.web.service.configuration.AvCfgService; import com.nis.web.service.configuration.AvContentCfgService; @@ -200,6 +201,8 @@ public class BaseController { protected AsnIpCfgService asnIpCfgService;//asn ip service @Autowired protected AsnPolicyCfgService asnPolicyCfgService;//asn 策略 service + @Autowired + protected AppMultiFeatureCfgService appMultiFeatureCfgService; /** * 管理基础路径 */ diff --git a/src/main/java/com/nis/web/controller/configuration/AppFeatureCfgController.java b/src/main/java/com/nis/web/controller/configuration/AppFeatureCfgController.java new file mode 100644 index 000000000..6e8234f66 --- /dev/null +++ b/src/main/java/com/nis/web/controller/configuration/AppFeatureCfgController.java @@ -0,0 +1,247 @@ +package com.nis.web.controller.configuration; + +import java.io.File; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.nis.domain.Page; +import com.nis.domain.SysDataDictionaryItem; +import com.nis.domain.configuration.AppBuiltInFeatureFile; +import com.nis.domain.configuration.AppByteCfg; +import com.nis.domain.configuration.AppComplexFeatureCfg; +import com.nis.domain.configuration.AppDomainCfg; +import com.nis.domain.configuration.AppFeatureIndex; +import com.nis.domain.configuration.AppHeaderCfg; +import com.nis.domain.configuration.AppHttpCfg; +import com.nis.domain.configuration.AppIpCfg; +import com.nis.domain.configuration.AppPolicyCfg; +import com.nis.domain.configuration.AppSslCertCfg; +import com.nis.domain.configuration.AppStringFeatureCfg; +import com.nis.domain.configuration.AppTcpCfg; +import com.nis.domain.configuration.AppTopicDomainCfg; +import com.nis.domain.configuration.IpPortCfg; +import com.nis.domain.configuration.NtcSubscribeIdCfg; +import com.nis.domain.configuration.WebsiteDomainTopic; +import com.nis.domain.maat.ToMaatResult; +import com.nis.domain.maat.ToMaatResult.ResponseData; +import com.nis.domain.specific.SpecificServiceCfg; +import com.nis.exceptions.CallExternalProceduresException; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.ConfigServiceUtil; +import com.nis.util.Constants; +import com.nis.util.DictUtils; +import com.nis.util.FileUtils; +import com.nis.util.JsonMapper; +import com.nis.util.StringUtil; +import com.nis.web.controller.BaseController; +import com.nis.web.security.UserUtils; + +/** + * 特定协议相关配置控制类 + * @author zhangwei + * + */ +@Controller +@RequestMapping("${adminPath}/app/feature/") +public class AppFeatureCfgController extends BaseController { + /** + * app协议复杂特征配置列表 + * @param model + * @param cfg + * @param request + * @param response + * @return + */ + @RequestMapping(value = {"multiFeatureCfgList"}) + public String multiFeatureCfgList(Model model,@ModelAttribute("cfg")AppFeatureIndex cfg,HttpServletRequest request,HttpServletResponse response) { + Page searchPage=new Page(request,response,"r"); + Page page = appMultiFeatureCfgService.findAppFeatureIndexList(searchPage, cfg); + for(AppFeatureIndex entity:page.getList()){ + SpecificServiceCfg app = specificServiceCfgService.getBySpecServiceId(entity.getSpecServiceId()); + entity.setAppName(app.getSpecServiceName()); + } + model.addAttribute("page", page); + initPageCondition(model,cfg); + return "/cfg/app/appMultiFeatureCfgList"; + } + /** + * 特征配置表单 + * @param model + * @param ids + * @param entity + * @return + */ + @RequestMapping(value = {"multiFeatureCfgForm"}) + public String multiFeatureCfgForm(Model model,String ids,AppFeatureIndex entity) { + if(StringUtils.isNotBlank(ids)){ + entity = appMultiFeatureCfgService.getAppFeatureIndex(Long.parseLong(ids)); + entity.setIpPortList(appMultiFeatureCfgService.getAppIpRangeCfg(entity.getCompileId(), entity.getFunctionId())); + entity.setStrList(appMultiFeatureCfgService.getAppStringFeatureCfg(entity.getCompileId(), entity.getFunctionId(),null)); + entity.setComplexList(appMultiFeatureCfgService.getAppComplexFeatureCfg(entity.getCompileId(), entity.getFunctionId(),null)); + initUpdateFormCondition(model,entity); + }else{ + initFormCondition(model,entity); + } + model.addAttribute("_cfg", entity); + return "/cfg/app/appMultiFeatureCfgForm"; + } + /** + * 特征配置新增修改 + * @param model + * @param request + * @param response + * @param entity + * @param redirectAttributes + * @return + */ + @RequestMapping(value = {"saveAppMultiFeatureCfg"}) + public String saveAppMultiFeatureCfg(Model model,HttpServletRequest request,HttpServletResponse response, + AppFeatureIndex entity,RedirectAttributes redirectAttributes) { + try { + SpecificServiceCfg specificService = specificServiceCfgService.getBySpecServiceId(entity.getSpecServiceId()); + if(specificService!=null){ + entity.setAppCode(specificService.getSpecServiceCode()); + } + appMultiFeatureCfgService.saveOrUpdateAppFeatureCfg(entity); + } catch (Exception e) { + e.printStackTrace(); + addMessage(redirectAttributes, e.getMessage()); + } + + return "redirect:" + adminPath +"/app/feature/multiFeatureCfgList?functionId="+entity.getFunctionId(); + } + /** + * 特征配置审核 + * @param isAudit + * @param isValid + * @param ids + * @param functionId + * @param redirectAttributes + * @return + */ + @RequestMapping(value = {"auditAppFeatureCfg"}) + public String auditAppFeatureCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { + AppFeatureIndex entity = new AppFeatureIndex(); + String[] idArray = ids.split(","); + for(String id :idArray){ + entity = appMultiFeatureCfgService.getAppFeatureIndex(Long.parseLong(id)); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + try { + appMultiFeatureCfgService.auditAppFeatureCfg(entity,isAudit); + } catch (MaatConvertException e) { + e.printStackTrace(); + logger.info("app 特征配置下发失败:"+e.getMessage()); + addMessage(redirectAttributes, e.getMessage()); + } + } + return "redirect:" + adminPath +"/app/feature/multiFeatureCfgList?functionId="+functionId; + } + /** + * 特征配置删除 + * @param isValid + * @param ids + * @param functionId + * @return + */ + @RequestMapping(value = {"updateAppFeatureCfgValid"}) + public String updateAppFeatureCfgValid(Integer isValid,String ids,Integer functionId) { + appMultiFeatureCfgService.updateAppFeatureCfgValid(isValid,ids,functionId); + return "redirect:" + adminPath +"/app/feature/multiFeatureCfgList?functionId="+functionId; + } + + /** + * 查询特征子配置 + * @param model + * @param cfgId + * @param index + * @return + */ + @RequestMapping(value = {"ajaxAppFeatureList"}) + public String ajaxAppFeatureList(Model model,Long cfgId,Integer compileId,Integer functionId,Integer index) { + List ipRangeList = appMultiFeatureCfgService.getAppIpRangeCfg(compileId,functionId); + AppFeatureIndex cfg = appMultiFeatureCfgService.getAppFeatureIndex(cfgId); + List> tabList = new ArrayList(); + String[] cfgRegionValue = cfg.getCfgRegionValue().split(","); + String[] cfgRegionType = cfg.getCfgRegionType().split(","); + String[] cfgRegionCode = cfg.getCfgRegionCode1().split(","); + if(cfgRegionValue.length == cfgRegionType.length && cfgRegionValue.length==cfgRegionCode.length){ + for(int i=0;i map = new HashMap(); + map.put("regionType", cfgRegionType[i]); + map.put("regionValue", cfgRegionValue[i]); + if("1".equals(cfgRegionType[i])){ + map.put("ipRangeList", ipRangeList); + } + if("2".equals(cfgRegionType[i])){ + List strList = appMultiFeatureCfgService.getAppStringFeatureCfg(compileId,functionId,Integer.valueOf(cfgRegionCode[i])); + map.put("strList", strList); + } + if("3".equals(cfgRegionType[i])){ + List complexList = appMultiFeatureCfgService.getAppComplexFeatureCfg(compileId,functionId,Integer.valueOf(cfgRegionCode[i])); + map.put("complexList", complexList); + } + tabList.add(map); + } + }else{ + Map map = new HashMap(); + map.put("regionType", "0"); + map.put("regionValue", "query config detail error"); + tabList.add(map); + } + + /*if(ipRangeList!=null){ + String cfgType = null; + for(AppIpCfg ip:ipRangeList){ + if(!ip.getCfgType().equals(cfgType)){ + tabList.add(new String[]{"1",ip.getCfgType()}); + cfgType = ip.getCfgType(); + } + } + } + if(strList!=null){ + String cfgType = null; + for(AppStringFeatureCfg cfg:strList){ + if(!cfg.getCfgType().equals(cfgType)){ + tabList.add(new String[]{"2",cfg.getCfgType()}); + cfgType = cfg.getCfgType(); + } + } + } + if(complexList!=null){ + String cfgType = null; + for(AppComplexFeatureCfg cfg:complexList){ + if(!cfg.getCfgType().equals(cfgType)){ + tabList.add(new String[]{"3",cfg.getCfgType()}); + cfgType = cfg.getCfgType(); + } + } + }*/ + model.addAttribute("index", index); + model.addAttribute("tabList", tabList); + return "/cfg/app/appSubFeatureList"; + } +} diff --git a/src/main/java/com/nis/web/dao/FunctionRegionDictDao.xml b/src/main/java/com/nis/web/dao/FunctionRegionDictDao.xml index f4e0ac4f0..49996a435 100644 --- a/src/main/java/com/nis/web/dao/FunctionRegionDictDao.xml +++ b/src/main/java/com/nis/web/dao/FunctionRegionDictDao.xml @@ -47,7 +47,7 @@ AND config_region_sort=#{configRegionSort,jdbcType=VARCHAR} - order by dict_id,config_region_sort + order by config_region_sort \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/configuration/AppMultiFeatureCfgDao.java b/src/main/java/com/nis/web/dao/configuration/AppMultiFeatureCfgDao.java new file mode 100644 index 000000000..a20972d83 --- /dev/null +++ b/src/main/java/com/nis/web/dao/configuration/AppMultiFeatureCfgDao.java @@ -0,0 +1,65 @@ +package com.nis.web.dao.configuration; + +import java.util.Date; +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.configuration.AppByteCfg; +import com.nis.domain.configuration.AppComplexFeatureCfg; +import com.nis.domain.configuration.AppComplexKeywordCfg; +import com.nis.domain.configuration.AppDomainCfg; +import com.nis.domain.configuration.AppFeatureIndex; +import com.nis.domain.configuration.AppHeaderCfg; +import com.nis.domain.configuration.AppHttpCfg; +import com.nis.domain.configuration.AppIdCfg; +import com.nis.domain.configuration.AppIdCfg.AppFeaturesIndex; +import com.nis.domain.configuration.AppInnerRuleCfg; +import com.nis.domain.configuration.AppIpCfg; +import com.nis.domain.configuration.AppPolicyCfg; +import com.nis.domain.configuration.AppSslCertCfg; +import com.nis.domain.configuration.AppStringCfg; +import com.nis.domain.configuration.AppStringFeatureCfg; +import com.nis.domain.configuration.AppTcpCfg; +import com.nis.domain.configuration.AppTopicDomainCfg; +import com.nis.domain.configuration.BaseCfg; +import com.nis.domain.configuration.BaseStringCfg; +import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.domain.configuration.ComplexkeywordCfg; +import com.nis.domain.configuration.IpPortCfg; +import com.nis.domain.configuration.WebsiteDomainTopic; +import com.nis.web.dao.CrudDao; +import com.nis.web.dao.MyBatisDao; + + +/** + * 特定协议相关配置数据处理类 + * @author dell + * + */ +@MyBatisDao +public interface AppMultiFeatureCfgDao { + //app复杂多域特征索引配置 + public int insertAppFeatureIndex(AppFeatureIndex entity); + public int updateAppFeatureIndex(AppFeatureIndex entity); + public List findAppFeatureIndexList(AppFeatureIndex entity); + public AppFeatureIndex getAppFeatureIndex(Long cfgId) ; + //审核配置 + public void auditCfg(BaseCfg entity); + //修改配置状态 + public void updateCfgValid(BaseCfg entity); + //字符串类特征配置 + public List getAppStringFeatureCfg(@Param("compileId")Integer compileId, + @Param("functionId")Integer functionId,@Param("cfgRegionCode")Integer cfgRegionCode); + public int insertAppStringFeatureCfg(AppStringFeatureCfg entity); + public void deleteAppStringFeatureCfg(BaseCfg entity); + //增强字符串类特征配置 + public List getAppComplexFeatureCfg(@Param("compileId")Integer compileId, + @Param("functionId")Integer functionId,@Param("cfgRegionCode")Integer cfgRegionCode); + public int insertAppComplexFeatureCfg(AppComplexFeatureCfg entity); + public void deleteAppComplexFeatureCfg(BaseCfg entity); + //IP RANGE配置 + public List getAppIpRangeCfg(@Param("compileId")Integer compileId,@Param("functionId")Integer functionId) ; + public int insertAppIpRangeCfg(AppIpCfg entity); + public void deleteAppIpRangeCfg(BaseCfg entity); +} diff --git a/src/main/java/com/nis/web/dao/configuration/AppMultiFeatureCfgDao.xml b/src/main/java/com/nis/web/dao/configuration/AppMultiFeatureCfgDao.xml new file mode 100644 index 000000000..7039a04cc --- /dev/null +++ b/src/main/java/com/nis/web/dao/configuration/AppMultiFeatureCfgDao.xml @@ -0,0 +1,521 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + r.CFG_ID,r.CFG_DESC,r.ACTION,r.IS_VALID,r.IS_AUDIT, + r.CREATOR_ID,r.CREATE_TIME,r.EDITOR_ID,r.EDIT_TIME,r.AUDITOR_ID,r.AUDIT_TIME, + r.SERVICE_ID,r.REQUEST_ID,r.COMPILE_ID,r.IS_AREA_EFFECTIVE,r.CLASSIFY, + r.ATTRIBUTE,r.LABLE,r.AREA_EFFECTIVE_IDS,r.function_id,r.CFG_REGION_TYPE,r.CFG_REGION_VALUE,r.user_region1, + r.user_region2,r.user_region3,r.user_region4,r.user_region5,r.do_log,r.feature_table, + r.feature_table_type,r.app_code,r.spec_service_id,r.cfg_region_code + + + + r.CFG_ID, r.APP_CODE,r.BEHAV_CODE,r.SPEC_SERVICE_ID, r.CFG_DESC,r.ACTION,r.IS_VALID,r.IS_AUDIT, + r.CREATOR_ID,r.CREATE_TIME,r.EDITOR_ID,r.EDIT_TIME,r.AUDITOR_ID,r.AUDIT_TIME, + r.SERVICE_ID,r.REQUEST_ID,r.COMPILE_ID,r.IS_AREA_EFFECTIVE,r.CLASSIFY, + r.ATTRIBUTE,r.LABLE,AREA_EFFECTIVE_IDS,r.FUNCTION_ID,r.CFG_TYPE,r.CFG_REGION_CODE, + r.IP_TYPE, r.IP_PATTERN, r.SRC_IP_ADDRESS,r.DEST_IP_ADDRESS, r.PORT_PATTERN,r.SRC_PORT,DEST_PORT, + r.DIRECTION,r.PROTOCOL,r.DO_LOG,r.USER_REGION1,r.USER_REGION2,r.USER_REGION3,r.USER_REGION4,r.USER_REGION5 + + + + r.CFG_ID, r.APP_CODE,r.BEHAV_CODE,r.SPEC_SERVICE_ID,r.CFG_DESC,ACTION,r.IS_VALID,r.IS_AUDIT, + r.CREATOR_ID,r.CREATE_TIME,r.EDITOR_ID,r.EDIT_TIME,r.AUDITOR_ID,r.AUDIT_TIME, + r.SERVICE_ID,r.REQUEST_ID,r.COMPILE_ID,r.IS_AREA_EFFECTIVE,r.CLASSIFY, + 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.CFG_ID, r.APP_CODE,r.BEHAV_CODE,r.SPEC_SERVICE_ID,r.CFG_DESC,r.ACTION,r.IS_VALID,r.IS_AUDIT, + r.CREATOR_ID,r.CREATE_TIME,r.EDITOR_ID,r.EDIT_TIME,r.AUDITOR_ID,r.AUDIT_TIME, + r.SERVICE_ID,r.REQUEST_ID,r.COMPILE_ID,r.IS_AREA_EFFECTIVE,r.CLASSIFY, + r.ATTRIBUTE,r.LABLE,r.AREA_EFFECTIVE_IDS,r.FUNCTION_ID,r.CFG_TYPE,r.CFG_REGION_CODE, + r.CFG_KEYWORDS,r.EXPR_TYPE,r.MATCH_METHOD,r.IS_HEXBIN,r.DO_LOG + + + #{appCode,jdbcType=INTEGER},#{behavCode,jdbcType=INTEGER},#{specServiceId,jdbcType=INTEGER}, + #{cfgDesc,jdbcType=VARCHAR},#{action,jdbcType=INTEGER}, + #{isValid,jdbcType=INTEGER},#{isAudit,jdbcType=INTEGER},#{creatorId,jdbcType=INTEGER}, + #{createTime,jdbcType=TIMESTAMP},#{editorId,jdbcType=INTEGER},#{editTime,jdbcType=TIMESTAMP}, + #{auditorId,jdbcType=INTEGER},#{auditTime,jdbcType=TIMESTAMP},#{serviceId,jdbcType=INTEGER}, + #{requestId,jdbcType=INTEGER},#{compileId,jdbcType=INTEGER},#{isAreaEffective,jdbcType=INTEGER}, + #{classify,jdbcType=VARCHAR},#{attribute,jdbcType=VARCHAR},#{lable,jdbcType=VARCHAR}, + #{areaEffectiveIds,jdbcType=VARCHAR},#{functionId,jdbcType=INTEGER} + + + + + + + + + SELECT LAST_INSERT_ID() + + insert into app_feature_index( + APP_CODE,BEHAV_CODE,SPEC_SERVICE_ID, CFG_DESC,ACTION,IS_VALID,IS_AUDIT, + CREATOR_ID,CREATE_TIME,EDITOR_ID,EDIT_TIME,AUDITOR_ID,AUDIT_TIME, + SERVICE_ID,REQUEST_ID,COMPILE_ID,IS_AREA_EFFECTIVE,CLASSIFY, + ATTRIBUTE,LABLE,AREA_EFFECTIVE_IDS,FUNCTION_ID,CFG_REGION_TYPE,CFG_REGION_VALUE,DO_LOG, + user_region1,user_region2,user_region3,user_region4,user_region5,cfg_region_code + )values ( + , + #{cfgRegionType,jdbcType=VARCHAR},#{cfgRegionValue,jdbcType=VARCHAR},#{doLog,jdbcType=INTEGER},#{userRegion1,jdbcType=VARCHAR},#{userRegion2,jdbcType=VARCHAR} + ,#{userRegion3,jdbcType=VARCHAR},#{userRegion4,jdbcType=VARCHAR},#{userRegion5,jdbcType=VARCHAR},#{cfgRegionCode1,jdbcType=VARCHAR} + ) + + + update app_feature_index + + + cfg_desc = #{cfgDesc,jdbcType=VARCHAR}, + APP_CODE = #{appCode,jdbcType=INTEGER}, + BEHAV_CODE = #{behavCode,jdbcType=INTEGER}, + SPEC_SERVICE_ID = #{specServiceId,jdbcType=INTEGER}, + action = #{action,jdbcType=INTEGER}, + is_valid = #{isValid,jdbcType=INTEGER}, + is_audit = #{isAudit,jdbcType=INTEGER}, + + creator_id = #{creatorId,jdbcType=INTEGER}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + editor_id = #{editorId,jdbcType=INTEGER}, + + + edit_time = #{editTime,jdbcType=TIMESTAMP}, + + + auditor_id = #{auditorId,jdbcType=INTEGER}, + + + audit_time = #{auditTime,jdbcType=TIMESTAMP}, + + service_id = #{serviceId,jdbcType=INTEGER}, + request_id = #{requestId,jdbcType=INTEGER}, + compile_id = #{compileId,jdbcType=INTEGER}, + is_area_effective = #{isAreaEffective,jdbcType=INTEGER}, + classify = #{classify,jdbcType=VARCHAR}, + attribute = #{attribute,jdbcType=VARCHAR}, + lable = #{lable,jdbcType=VARCHAR}, + area_effective_ids = #{areaEffectiveIds,jdbcType=VARCHAR}, + function_id = #{functionId,jdbcType=INTEGER}, + CFG_REGION_TYPE=#{cfgRegionType,jdbcType=VARCHAR}, + CFG_REGION_VALUE =#{cfgRegionValue,jdbcType=VARCHAR}, + cfg_region_code=#{cfgRegionCode1,jdbcType=VARCHAR}, + USER_REGION1 =#{userRegion1,jdbcType=VARCHAR}, + USER_REGION2 =#{userRegion2,jdbcType=VARCHAR}, + USER_REGION1 =#{userRegion3,jdbcType=VARCHAR}, + USER_REGION1 =#{userRegion4,jdbcType=VARCHAR}, + USER_REGION1 =#{userRegion5,jdbcType=VARCHAR}, + DO_LOG=#{doLog,jdbcType=INTEGER}, + + expr_type=#{exprType,jdbcType=INTEGER}, + + + match_method=#{matchMethod,jdbcType=INTEGER}, + + + is_hexbin=#{isHexbin,jdbcType=INTEGER}, + + + + where cfg_id = #{cfgId,jdbcType=BIGINT} + + + + update ${tableName} set is_valid = #{isValid,jdbcType=INTEGER}, + editor_id = #{editorId,jdbcType=INTEGER} , + edit_time = #{editTime,jdbcType=TIMESTAMP} + + + AND cfg_id = #{cfgId,jdbcType=BIGINT} + + + AND compile_id = #{compileId,jdbcType=INTEGER} + + and function_id=#{functionId,jdbcType=INTEGER} + + + + + update ${tableName} set is_audit = #{isAudit,jdbcType=INTEGER}, + auditor_id = #{auditorId,jdbcType=INTEGER}, + audit_time = #{auditTime,jdbcType=TIMESTAMP} + + ,is_valid = #{isValid,jdbcType=INTEGER} + + + + AND cfg_id = #{cfgId,jdbcType=BIGINT} + + + AND compile_id = #{compileId,jdbcType=INTEGER} + + and function_id=#{functionId,jdbcType=INTEGER} + + + + + + + + + + + + + SELECT LAST_INSERT_ID() + + insert into app_ip_range_cfg ( + APP_CODE,BEHAV_CODE,SPEC_SERVICE_ID, CFG_DESC,ACTION,IS_VALID,IS_AUDIT, + CREATOR_ID,CREATE_TIME,EDITOR_ID,EDIT_TIME,AUDITOR_ID,AUDIT_TIME, + SERVICE_ID,REQUEST_ID,COMPILE_ID,IS_AREA_EFFECTIVE,CLASSIFY, + ATTRIBUTE,LABLE,AREA_EFFECTIVE_IDS,FUNCTION_ID,CFG_TYPE,CFG_REGION_CODE, + IP_TYPE, IP_PATTERN, SRC_IP_ADDRESS,DEST_IP_ADDRESS, PORT_PATTERN,SRC_PORT,DEST_PORT, + DIRECTION,PROTOCOL,DO_LOG,user_region1,user_region2,user_region3,user_region4,user_region5 + )values ( + , + #{cfgType,jdbcType=VARCHAR},#{cfgRegionCode,jdbcType=INTEGER}, + #{ipType,jdbcType=INTEGER}, #{ipPattern,jdbcType=INTEGER},#{srcIpAddress,jdbcType=VARCHAR},#{destIpAddress,jdbcType=VARCHAR}, + #{portPattern,jdbcType=INTEGER},#{srcPort,jdbcType=VARCHAR},#{destPort,jdbcType=VARCHAR},#{direction,jdbcType=INTEGER}, + #{protocol,jdbcType=INTEGER},#{doLog,jdbcType=INTEGER},#{userRegion1,jdbcType=VARCHAR},#{userRegion2,jdbcType=VARCHAR} + ,#{userRegion3,jdbcType=VARCHAR},#{userRegion4,jdbcType=VARCHAR},#{userRegion5,jdbcType=VARCHAR} + ) + + + + + SELECT LAST_INSERT_ID() + + insert into app_complex_feature_cfg ( + APP_CODE,BEHAV_CODE,SPEC_SERVICE_ID,CFG_DESC,ACTION,IS_VALID,IS_AUDIT, + CREATOR_ID,CREATE_TIME,EDITOR_ID,EDIT_TIME,AUDITOR_ID,AUDIT_TIME, + 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 + )values ( + , + #{cfgType,jdbcType=VARCHAR},#{cfgRegionCode,jdbcType=INTEGER}, + #{district,jdbcType=VARCHAR},#{cfgKeywords,jdbcType=VARCHAR}, + #{exprType,jdbcType=INTEGER},#{matchMethod,jdbcType=INTEGER},#{isHexbin,jdbcType=INTEGER}, + #{doLog,jdbcType=INTEGER},#{userRegion1,jdbcType=VARCHAR},#{userRegion2,jdbcType=VARCHAR}, + #{userRegion3,jdbcType=VARCHAR},#{userRegion4,jdbcType=VARCHAR},#{userRegion5,jdbcType=VARCHAR} + ) + + + + + SELECT LAST_INSERT_ID() + + insert into app_string_feature_cfg ( + APP_CODE,BEHAV_CODE,SPEC_SERVICE_ID,CFG_DESC,ACTION,IS_VALID,IS_AUDIT, + CREATOR_ID,CREATE_TIME,EDITOR_ID,EDIT_TIME,AUDITOR_ID,AUDIT_TIME, + SERVICE_ID,REQUEST_ID,COMPILE_ID,IS_AREA_EFFECTIVE,CLASSIFY, + ATTRIBUTE,LABLE,AREA_EFFECTIVE_IDS,FUNCTION_ID,CFG_TYPE,CFG_REGION_CODE, + CFG_KEYWORDS,EXPR_TYPE,MATCH_METHOD,IS_HEXBIN,DO_LOG,user_region1,user_region2,user_region3,user_region4,user_region5 + )values ( + , + #{cfgType,jdbcType=VARCHAR},#{cfgRegionCode,jdbcType=INTEGER}, + #{cfgKeywords,jdbcType=VARCHAR},#{exprType,jdbcType=INTEGER},#{matchMethod,jdbcType=INTEGER}, + #{isHexbin,jdbcType=INTEGER},#{doLog,jdbcType=INTEGER}, + #{userRegion1,jdbcType=VARCHAR},#{userRegion2,jdbcType=VARCHAR}, + #{userRegion3,jdbcType=VARCHAR},#{userRegion4,jdbcType=VARCHAR},#{userRegion5,jdbcType=VARCHAR} + ) + + + + delete from app_ip_range_cfg where compile_id=#{compileId} and function_id=#{functionId} + + + + delete from app_string_feature_cfg where compile_id=#{compileId} and function_id=#{functionId} + + + + delete from app_complex_feature_cfg where compile_id=#{compileId} and function_id=#{functionId} + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/service/BaseService.java b/src/main/java/com/nis/web/service/BaseService.java index 3ab43fd2b..2abc62f55 100644 --- a/src/main/java/com/nis/web/service/BaseService.java +++ b/src/main/java/com/nis/web/service/BaseService.java @@ -291,7 +291,8 @@ public abstract class BaseService { IpCfg cfg = new IpCfg(); BeanUtils.copyProperties(baseIpCfg, cfg); //区域IP配置,多条IP配置属于同一个分组,其他业务配置IP,一条配置一个分组 - if(groupId==0 || !cfg.getCfgType().equals(Constants.AREA_REGION)){ +// if(groupId==0 || !cfg.getCfgType().equals(Constants.AREA_REGION)){ + if(groupId==0){ GroupCfg group = new GroupCfg(); groupId = ConfigServiceUtil.getId(2, 1).get(0); group.setGroupId(groupId); diff --git a/src/main/java/com/nis/web/service/configuration/AppMultiFeatureCfgService.java b/src/main/java/com/nis/web/service/configuration/AppMultiFeatureCfgService.java new file mode 100644 index 000000000..6a93aa6f0 --- /dev/null +++ b/src/main/java/com/nis/web/service/configuration/AppMultiFeatureCfgService.java @@ -0,0 +1,299 @@ +package com.nis.web.service.configuration; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.nis.domain.Page; +import com.nis.domain.configuration.AppComplexFeatureCfg; +import com.nis.domain.configuration.AppFeatureIndex; +import com.nis.domain.configuration.AppHttpCfg; +import com.nis.domain.configuration.AppIpCfg; +import com.nis.domain.configuration.AppStringFeatureCfg; +import com.nis.domain.configuration.HttpUrlCfg; +import com.nis.domain.maat.MaatCfg; +import com.nis.domain.maat.MaatCfg.DigestCfg; +import com.nis.domain.maat.MaatCfg.GroupCfg; +import com.nis.domain.maat.MaatCfg.IpCfg; +import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; +import com.nis.domain.maat.MaatCfg.StringCfg; +import com.nis.domain.maat.ToMaatBean; +import com.nis.domain.maat.ToMaatResult; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.ConfigServiceUtil; +import com.nis.util.Constants; +import com.nis.util.StringUtil; +import com.nis.web.dao.configuration.AppMultiFeatureCfgDao; +import com.nis.web.security.UserUtils; +import com.nis.web.service.BaseService; + +/** + * 特定协议相关配置事务类 + * + * @author dell + * + */ +@Service +public class AppMultiFeatureCfgService extends BaseService { + @Autowired + protected AppMultiFeatureCfgDao appMultiFeatureCfgDao; + + //分页查询 + public Page findAppFeatureIndexList(Page page, AppFeatureIndex entity) { + entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(), "r")); + entity.setPage(page); + List list = appMultiFeatureCfgDao.findAppFeatureIndexList(entity); + page.setList(list); + return page; + } + public AppFeatureIndex getAppFeatureIndex(Long cfgId) { + return appMultiFeatureCfgDao.getAppFeatureIndex(cfgId); + } + //新增或保存复杂特征配置 + @Transactional(readOnly = false, rollbackFor = RuntimeException.class) + public void saveOrUpdateAppFeatureCfg(AppFeatureIndex entity) throws Exception { + if (entity.getCfgId() == null) { + Integer compileId = 0; + try { + List idList = ConfigServiceUtil.getId(1, 1); + if (idList != null && idList.size() > 0) { + compileId = idList.get(0); + } + entity.setCompileId(compileId); + entity.setCreateTime(new Date()); + entity.setCreatorId(entity.getCurrentUser().getId()); + entity.setIsValid(0); + entity.setIsAudit(0); + appMultiFeatureCfgDao.insertAppFeatureIndex(entity); + if(entity.getIpPortList()!=null){ + for(AppIpCfg cfg:entity.getIpPortList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + appMultiFeatureCfgDao.insertAppIpRangeCfg(cfg); + } + } + if(entity.getStrList()!=null){ + for(AppStringFeatureCfg cfg:entity.getStrList()){ + if(StringUtils.isNotBlank(cfg.getCfgKeywords())){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + appMultiFeatureCfgDao.insertAppStringFeatureCfg(cfg); + } + + } + } + if(entity.getComplexList()!=null){ + for(AppComplexFeatureCfg cfg:entity.getComplexList()){ + if(StringUtils.isNotBlank(cfg.getCfgKeywords())){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + appMultiFeatureCfgDao.insertAppComplexFeatureCfg(cfg); + } + + } + } + + } catch (Exception e) { + e.printStackTrace(); + logger.info("获取编译ID出错"); + throw new MaatConvertException(e.getMessage()); + } + } else { + entity.setEditorId(entity.getCurrentUser().getId()); + entity.setEditTime(new Date()); + entity.setIsValid(0); + entity.setIsAudit(0); + appMultiFeatureCfgDao.updateAppFeatureIndex(entity); + appMultiFeatureCfgDao.deleteAppIpRangeCfg(entity); + appMultiFeatureCfgDao.deleteAppStringFeatureCfg(entity); + appMultiFeatureCfgDao.deleteAppComplexFeatureCfg(entity); + entity.setCreateTime(new Date()); + entity.setCreatorId(entity.getCurrentUser().getId()); + if(entity.getIpPortList()!=null){ + for(AppIpCfg cfg:entity.getIpPortList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + appMultiFeatureCfgDao.insertAppIpRangeCfg(cfg); + } + } + if(entity.getStrList()!=null){ + for(AppStringFeatureCfg cfg:entity.getStrList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + appMultiFeatureCfgDao.insertAppStringFeatureCfg(cfg); + } + } + if(entity.getComplexList()!=null){ + for(AppComplexFeatureCfg cfg:entity.getComplexList()){ + BeanUtils.copyProperties(entity, cfg,new String[]{"cfgRegionCode","cfgType"}); + appMultiFeatureCfgDao.insertAppComplexFeatureCfg(cfg); + } + } + } + } + public void auditAppFeatureCfg(AppFeatureIndex entity, Integer isAudit) { + ToMaatBean maatBean = new ToMaatBean(); + MaatCfg maatCfg = new MaatCfg(); + List configCompileList = new ArrayList(); + List groupRelationList = new ArrayList(); + List ipRegionList = new ArrayList(); + List strRegionList = new ArrayList(); + List numRegionList = new ArrayList(); + List digestRegionList = new ArrayList(); + List areaIpRegionList = new ArrayList(); + entity.setTableName(AppFeatureIndex.getTablename()); + appMultiFeatureCfgDao.auditCfg(entity); + + /*if (isAudit == 1) { + List list = new ArrayList(); + list.add(entity); + Map map = cfgConvert(strRegionList, list, 2, entity, groupRelationList); + groupRelationList = map.get("groupList"); + strRegionList = map.get("dstList"); + }*/ + //查询APP_IP_RANGE子配置并修改审核状态 + List ipRangeList = appMultiFeatureCfgDao.getAppIpRangeCfg(entity.getCompileId(),entity.getFunctionId()); + if(ipRangeList!=null && ipRangeList.size()>0){ + AppIpCfg cfg = new AppIpCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName("APP_IP_RANGE_CFG"); + appMultiFeatureCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map map = cfgConvert(ipRegionList,ipRangeList,1,entity,groupRelationList); + groupRelationList=map.get("groupList"); + ipRegionList=map.get("dstList"); + if(map.get("numRegionList")!=null){ + numRegionList.addAll(map.get("numRegionList")); + } + } + } + List strList = appMultiFeatureCfgDao.getAppStringFeatureCfg(entity.getCompileId(),entity.getFunctionId(),null); + if(strList!=null && strList.size()>0){ + AppStringFeatureCfg cfg = new AppStringFeatureCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(AppStringFeatureCfg.getTablename()); + appMultiFeatureCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map map = cfgConvert(strRegionList,strList,2,entity,groupRelationList); + groupRelationList=map.get("groupList"); + strRegionList=map.get("dstList"); + } + } + List complexList = appMultiFeatureCfgDao.getAppComplexFeatureCfg(entity.getCompileId(),entity.getFunctionId(),null); + if(complexList!=null && complexList.size()>0){ + AppComplexFeatureCfg cfg = new AppComplexFeatureCfg(); + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setTableName(AppComplexFeatureCfg.getTablename()); + appMultiFeatureCfgDao.auditCfg(cfg); + if(isAudit==1){ + Map map = cfgConvert(strRegionList,complexList,2,entity,groupRelationList); + groupRelationList=map.get("groupList"); + strRegionList=map.get("dstList"); + } + } + // 构造提交综合服务参数格式,一条配置提交一次综合服务 + if (isAudit == 1) { + maatCfg.initDefaultValue(); + BeanUtils.copyProperties(entity, maatCfg); + maatCfg.setAction(entity.getAction()); + maatCfg.setAuditTime(entity.getAuditTime()); + maatCfg.setIpRegionList(ipRegionList); + maatCfg.setStrRegionList(strRegionList); + maatCfg.setNumRegionList(numRegionList); + maatCfg.setDigestRegionList(digestRegionList); + maatCfg.setGroupRelationList(groupRelationList); + maatCfg.setGroupNum(groupRelationList.size()); + maatCfg.setAreaIpRegionList(areaIpRegionList); + maatCfg.setIsValid(entity.getIsValid()); + //只有用户自定义域1字段为空,才设置maat的自定义域字段信息为APP_ID + if(StringUtil.isEmpty(entity.getUserRegion1())){ + // 设置APP自定义域 + String userRegion = "APP_ID=" + entity.getAppCode(); + maatCfg.setUserRegion(userRegion); + }else{ + maatCfg.setUserRegion(entity.getUserRegion1()); + } + + configCompileList.add(maatCfg); + maatBean.setConfigCompileList(configCompileList); + maatBean.setAuditTime(entity.getAuditTime()); + maatBean.setCreatorName(entity.getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.INSERT_ACTION); + // 调用服务接口下发配置数据 + String json = gsonToJson(maatBean); + logger.info("app 特征配置下发配置参数:" + json); + // 调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); + logger.info("app 特征配置下发响应信息:" + result.getMsg()); + + } else if (isAudit == 3) { + maatCfg.setCompileId(entity.getCompileId()); + maatCfg.setServiceId(entity.getServiceId()); + maatCfg.setIsValid(0);// 无效 + configCompileList.add(maatCfg); + maatBean.setConfigCompileList(configCompileList); + maatBean.setAuditTime(entity.getAuditTime()); + maatBean.setCreatorName(entity.getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.UPDATE_ACTION); + // 调用服务接口取消配置 + String json = gsonToJson(maatBean); + logger.info("app 特征配置下发配置参数:" + json); + // 调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.put(json, 1); + logger.info("app 特征配置取消配置响应信息:" + result.getMsg()); + } + } + + public void updateAppFeatureCfgValid(Integer isValid, String ids, Integer functionId) { + String[] idArray = ids.split(","); + for (String id : idArray) { + AppFeatureIndex entity = new AppFeatureIndex(); + entity.setCfgId(Long.parseLong(id)); + entity.setIsValid(isValid); + entity.setEditorId(UserUtils.getUser().getId()); + entity.setEditTime(new Date()); + entity.setTableName(AppFeatureIndex.getTablename()); + entity.setFunctionId(functionId); + appMultiFeatureCfgDao.updateCfgValid(entity); + //修改IP范围配置表状态 + if (!StringUtil.isEmpty(entity.getIpPortList())) { + AppIpCfg cfg = new AppIpCfg(); + BeanUtils.copyProperties(entity, cfg, new String[] { "cfgId" }); + cfg.setTableName("APP_IP_RANGE_CFG"); + appMultiFeatureCfgDao.updateCfgValid(cfg); + } + //修改字符串类配置表状态 + if (!StringUtil.isEmpty(entity.getStrList())) { + AppStringFeatureCfg cfg = new AppStringFeatureCfg(); + BeanUtils.copyProperties(entity, cfg, new String[] { "cfgId" }); + cfg.setTableName(AppStringFeatureCfg.getTablename()); + appMultiFeatureCfgDao.updateCfgValid(cfg); + } + //修改增强字符串类配置表状态 + if (!StringUtil.isEmpty(entity.getComplexList())) { + AppComplexFeatureCfg cfg = new AppComplexFeatureCfg(); + BeanUtils.copyProperties(entity, cfg, new String[] { "cfgId" }); + cfg.setTableName(AppComplexFeatureCfg.getTablename()); + appMultiFeatureCfgDao.updateCfgValid(cfg); + } + } + + } + + //字符串类特征配置列表 + public List getAppStringFeatureCfg(Integer compileId,Integer functionId,Integer cfgRegionCode){ + return appMultiFeatureCfgDao.getAppStringFeatureCfg(compileId,functionId,cfgRegionCode); + } + //增强字符串类特征配置列表 + public List getAppComplexFeatureCfg(Integer compileId,Integer functionId,Integer cfgRegionCode){ + return appMultiFeatureCfgDao.getAppComplexFeatureCfg(compileId,functionId,cfgRegionCode); + } + //IP RANGE配置 + public List getAppIpRangeCfg(Integer compileId,Integer functionId){ + return appMultiFeatureCfgDao.getAppIpRangeCfg(compileId,functionId); + } +} diff --git a/src/main/resources/messages/message_en.properties b/src/main/resources/messages/message_en.properties index ee2a2b904..cd53c3e1b 100644 --- a/src/main/resources/messages/message_en.properties +++ b/src/main/resources/messages/message_en.properties @@ -1067,7 +1067,6 @@ req_hdr_key=Request Header File Key req_body_key=Request Body File Key res_hdr_key=Response Header File Key res_body_key=Response Body File Key -website=Website p2p_ip_config_type=IP Config Type p2p_hash_type=Hash Type @@ -1171,4 +1170,7 @@ av_content_url_whitelist=Multimedia Content Url White List av_content_ip_whitelist=Multimedia Content IP White List active_port=Active Port TOP10 visits=Visits -percentage=Percentage \ No newline at end of file +percentage=Percentage +APP_SSL=APP SSL Feature +APP_IP_RANGE=APP IP RANGE +APP_DK=APP DK Feature \ No newline at end of file diff --git a/src/main/resources/messages/message_ru.properties b/src/main/resources/messages/message_ru.properties index d1863cbed..c1fc64816 100644 --- a/src/main/resources/messages/message_ru.properties +++ b/src/main/resources/messages/message_ru.properties @@ -223,7 +223,7 @@ task_time=\u0412\u0440\u0435\u043C\u044F \u0417\u0430\u0434\u0430\u0447\u0438 #==========laihan end===================== #==========message begin===================== -required=\u042D\u0442\u043E \u043F\u043E\u043B\u0435 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E \u043A \u0437\u0430\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044E! +required=\u042D\u0442\u043E \u043F\u043E\u043B\u0435 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E \u043A \u0437\u0430\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044E\! select=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 date_list=\u0421\u043F\u0438\u0441\u043E\u043A \u0414\u0430\u043D\u043D\u044B\u0445 confirm_message=\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C? @@ -231,7 +231,7 @@ export_confirm_message=\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u0 fill_loginName=\u0417\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u041B\u043E\u0433\u0438\u043D fill_loginPassWord=\u0417\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u041F\u0430\u0440\u043E\u043B\u044C loginName_error=\u041B\u043E\u0433\u0438\u043D \u0438\u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u044C \u0432\u0432\u0435\u0434\u0435\u043D\u044B \u043D\u0435\u0432\u0435\u0440\u043D\u043E, \u0438\u0441\u043F\u0440\u0430\u0432\u044C\u0442\u0435 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430. -system_error=\u041F\u0440\u043E\u0431\u043B\u0435\u043C\u0430 \u0441 \u0441\u0438\u0441\u0442\u0435\u043C\u043E\u0439, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043F\u043E\u0437\u0436\u0435! +system_error=\u041F\u0440\u043E\u0431\u043B\u0435\u043C\u0430 \u0441 \u0441\u0438\u0441\u0442\u0435\u043C\u043E\u0439, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043F\u043E\u0437\u0436\u0435\! save_success=\u0423\u0441\u043F\u0435\u0448\u043D\u043E\u0435 \u0421\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435 save_failed=\u041D\u0435\u0443\u0434\u0430\u0447\u043D\u043E\u0435 \u0421\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435 update_success=\u0423\u0441\u043F\u0435\u0448\u043D\u043E\u0435 \u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 @@ -242,7 +242,7 @@ delete_failed_admin=\u041E\u0448\u0438\u0431\u043A\u0430 \u0443\u0434\u0430\u043 audit_success=\u0423\u0441\u043F\u0435\u0448\u043D\u043E\u0435 \u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 audit_failed=\u041D\u0435\u0443\u0434\u0430\u0447\u043D\u043E\u0435 \u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 turning_page=\u0418\u0434\u0435\u0442 \u043F\u0435\u0440\u0435\u0445\u043E\u0434 \u043D\u0430 \u0434\u0440\u0443\u0433\u0443\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 -login_timeout=\u041D\u0435\u0442 \u041B\u043E\u0433\u0438\u043D\u0430 \u0438\u043B\u0438 \u043B\u043E\u0433\u0438\u043D \u0442\u0430\u0439\u043C\u0430\u0443\u0442, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0432\u043E\u0439\u0434\u0438\u0442\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0441\u043D\u043E\u0432\u0430. \u0421\u043F\u0430\u0441\u0438\u0431\u043E! +login_timeout=\u041D\u0435\u0442 \u041B\u043E\u0433\u0438\u043D\u0430 \u0438\u043B\u0438 \u043B\u043E\u0433\u0438\u043D \u0442\u0430\u0439\u043C\u0430\u0443\u0442, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0432\u043E\u0439\u0434\u0438\u0442\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0441\u043D\u043E\u0432\u0430. \u0421\u043F\u0430\u0441\u0438\u0431\u043E\! captcha_error= \u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u041A\u043E\u0434 \u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F enter_captcha=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u041A\u043E\u0434 \u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F input=\u0412\u0432\u043E\u0434 @@ -252,17 +252,17 @@ filter=\u0424\u0438\u043B\u044C\u0442\u0440 to=\u0434\u043E reset=\u0421\u0431\u043E\u0440\u0441 info=\u041F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0430 -has_approved=\u0415\u0441\u043B\u0438 \u0434\u0430\u043D\u043D\u044B\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u044B, \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0430! -hasnot_approved=\u041D\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0435\u043D\u0430, \u044D\u0442\u0430 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0430! -check_one=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0434\u043D\u0438 \u0434\u0430\u043D\u043D\u044B\u0435! -one_more=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0434\u043D\u0438 \u0434\u0430\u043D\u043D\u044B\u0435 \u043A\u0430\u043A \u043C\u0438\u043D\u0438\u043C\u0443\u043C! -one_more_area=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 ISP! +has_approved=\u0415\u0441\u043B\u0438 \u0434\u0430\u043D\u043D\u044B\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u044B, \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0430\! +hasnot_approved=\u041D\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0435\u043D\u0430, \u044D\u0442\u0430 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0430\! +check_one=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0434\u043D\u0438 \u0434\u0430\u043D\u043D\u044B\u0435\! +one_more=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0434\u043D\u0438 \u0434\u0430\u043D\u043D\u044B\u0435 \u043A\u0430\u043A \u043C\u0438\u043D\u0438\u043C\u0443\u043C\! +one_more_area=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 ISP\! custom_columns=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u041F\u043E\u043B\u044F \u0421\u0442\u043E\u043B\u0431\u0446\u043E\u0432 -maxlength_64=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u0438\u043D\u043D\u043E\u0439 \u0434\u043E 64 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432! -maxlength_128=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043B\u0438\u043D\u043E\u0439 \u0434\u043E 128 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432! -maxlength_256=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043B\u0438\u043D\u043E\u0439 \u0434\u043E 256 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432! -maxlength_512=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043B\u0438\u043D\u043E\u0439 \u0434\u043E 512 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432! -maxlength_4000=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043B\u0438\u043D\u043E\u0439 \u0434\u043E 4000 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432! +maxlength_64=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u0438\u043D\u043D\u043E\u0439 \u0434\u043E 64 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\! +maxlength_128=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043B\u0438\u043D\u043E\u0439 \u0434\u043E 128 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\! +maxlength_256=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043B\u0438\u043D\u043E\u0439 \u0434\u043E 256 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\! +maxlength_512=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043B\u0438\u043D\u043E\u0439 \u0434\u043E 512 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\! +maxlength_4000=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043B\u0438\u043D\u043E\u0439 \u0434\u043E 4000 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\! ok=OK clear=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C close=\u0412\u044B\u043A\u043B\u044E\u0447\u0438\u0442\u044C @@ -277,7 +277,7 @@ sendind_org=\u041E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u044F \ no_node=\u041D\u0435\u043B\u044C\u0437\u044F \u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0423\u0437\u0435\u043B select_icon=\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0417\u043D\u0430\u0447\u043E\u043A nothing=\u041D\u0438\u0447\u0435\u0433\u043E -noneData=\u041D\u0435\u0442 \u0414\u0430\u043D\u043D\u044B\u0445! +noneData=\u041D\u0435\u0442 \u0414\u0430\u043D\u043D\u044B\u0445\! #==========message end===================== #==========yewuliexingguanli begin===================== @@ -417,12 +417,12 @@ success=\u0423\u0441\u043F\u0435\u0448\u043D\u043E password=\u041F\u0430\u0440\u043E\u043B\u044C nochange_blank=\u0415\u0441\u043B\u0438 \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u044F\u0442\u044C, \u043E\u0441\u0442\u0430\u0432\u044C\u0442\u0435 \u0435\u0433\u043E \u043F\u0443\u0441\u0442\u044B\u043C. confirm_password=\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 \u041F\u0430\u0440\u043E\u043B\u044F -manager_info=\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440 \u0434\u043E\u043B\u0436\u0435\u043D \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u043A\u0430\u043A "\u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440", \u0438\u043D\u0430\u0447\u0435 \u044D\u0442\u043E \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u043F\u0440\u043E\u0446\u0435\u0441\u0441 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438! +manager_info=\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440 \u0434\u043E\u043B\u0436\u0435\u043D \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u043A\u0430\u043A "\u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440", \u0438\u043D\u0430\u0447\u0435 \u044D\u0442\u043E \u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u043F\u0440\u043E\u0446\u0435\u0441\u0441 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438\! name_existed=\u041B\u043E\u0433\u0438\u043D \u0443\u0436\u0435 \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 parent_org=\u0420\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0430\u044F \u041E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u044F is_useable=\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E? address=\u0410\u0434\u0440\u0435\u0441 -nochange=\u041D\u0435\u0442 \u0418\u0441\u0442\u043E\u0440\u0438\u0438 \u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F! +nochange=\u041D\u0435\u0442 \u0418\u0441\u0442\u043E\u0440\u0438\u0438 \u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\! module_name=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u041C\u043E\u0434\u0443\u043B\u044F dict_mark=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0421\u043B\u043E\u0432\u0430\u0440\u044F run_state=\u0421\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u0420\u0430\u0431\u043E\u0442\u044B @@ -436,10 +436,10 @@ edit_record=\u0417\u0430\u043F\u0438\u0441\u044C \u0418\u0437\u043C\u0435\u043D\ edit_record_view=\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0417\u0430\u043F\u0438\u0441\u0438 \u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F dict_edit_info=\u0421\u043B\u043E\u0432\u0430\u0440\u044C \u043E\u0447\u0435\u043D\u044C \u0432\u0430\u0436\u0435\u043D \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0435. \u0412\u044B \u0443\u0432\u0435\u0440\u0435\u043D\u044B, \u0447\u0442\u043E \u0435\u0433\u043E \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C? dict_delete_info=\u0421\u043B\u043E\u0432\u0430\u0440\u044C \u043E\u0447\u0435\u043D\u044C \u0432\u0430\u0436\u0435\u043D \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0435. \u0412\u044B \u0443\u0432\u0435\u0440\u0435\u043D\u044B, \u0447\u0442\u043E \u0435\u0433\u043E \u0443\u0434\u0430\u043B\u0438\u0442\u044C? -dict_saveitem_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435\u043C, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0434\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u043F\u0443\u043D\u043A\u0442 \u0441\u043B\u043E\u0432\u0430! -dict_saveitem_nullerror=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435\u043C, \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u043B\u044C\u0437\u044F \u0431\u044B\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u043C\u0438! -submit_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441 \u0423\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435\u043C! -form_validate=\u0424\u043E\u0440\u043C\u0430 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0443\u0441\u043F\u0435\u0445\u0430! +dict_saveitem_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435\u043C, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0434\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u043F\u0443\u043D\u043A\u0442 \u0441\u043B\u043E\u0432\u0430\! +dict_saveitem_nullerror=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435\u043C, \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0438 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043D\u0435\u043B\u044C\u0437\u044F \u0431\u044B\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u043C\u0438\! +submit_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441 \u0423\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435\u043C\! +form_validate=\u0424\u043E\u0440\u043C\u0430 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0443\u0441\u043F\u0435\u0445\u0430\! entry=\u0417\u0430\u043F\u0438\u0441\u044C add_entry=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0417\u0430\u043F\u0438\u0441\u044C click_add_entry=\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0417\u0430\u043F\u0438\u0441\u0438 @@ -466,7 +466,7 @@ icon=\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 is_top_menu_info=\u042F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043B\u0438 \u044D\u0442\u043E \u043C\u0435\u043D\u044E \u0432\u0435\u0440\u0445\u043D\u0438\u043C \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u043C \u043C\u0435\u043D\u044E sort_info=\u041F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0438 \u043F\u043E \u0432\u043E\u0437\u0440\u0430\u0441\u0442\u0430\u043D\u0438\u044E. is_show_sysmenu=\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044F \u043B\u0438 \u044D\u0442\u043E \u043C\u0435\u043D\u044E \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u043E\u043C \u043C\u0435\u043D\u044E -control_permission_info=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u044F, \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0439 \u0432 \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u043B\u0435\u0440\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: @RequiresPermissions (\uFFFD\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F\uFFFD) +control_permission_info=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u044F, \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0439 \u0432 \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u043B\u0435\u0440\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440\: @RequiresPermissions (\uFFFD\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F\uFFFD) role_name=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0420\u043E\u043B\u044F data_range=\u0414\u0438\u0430\u043F\u043E\u0437\u043E\u043D \u0414\u0430\u043D\u043D\u044B\u0445 allot=\u0420\u0430\u0437\u0434\u0430\u0432\u0430\u0442\u044C @@ -481,7 +481,7 @@ system_prompt=\u041F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0430 \u0421\u043 old_password=\u0421\u0442\u0430\u0440\u044B\u0439 \u041F\u0430\u0440\u043E\u043B\u044C new_password=\u041D\u043E\u0432\u044B\u0439 \u041F\u0430\u0440\u043E\u043B\u044C sure_new_password=\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \u041D\u043E\u0432\u044B\u0439 \u041F\u0430\u0440\u043E\u043B\u044C -cancel_clear=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C! +cancel_clear=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C\! sure_clear=\u041F\u043E\u0434\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 \u041E\u0447\u0438\u0441\u0442\u043A\u0438 role_unique=\u0418\u043C\u044F \u0420\u043E\u043B\u0438 \u0443\u0436\u0435 \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 role_error_info=\u0412\u0432\u043E\u0434 \u043D\u0435\u0432\u0435\u0440\u043D\u044B\u0439, \u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u0438\u0441\u043F\u0440\u0430\u0432\u044C\u0442\u0435. @@ -533,7 +533,7 @@ sample_file=\u041F\u0440\u0438\u043C\u0435\u0440 \u0424\u0430\u0439\u043B\u0430 sample_sign=\u041F\u0440\u0438\u043C\u0435\u0440 \u0417\u043D\u0430\u043A\u0430 off=\u0412\u044B\u043A\u043B\u044E\u0447\u0438\u0442\u044C on=\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C -click_detail=\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0414\u0435\u0442\u0430\u043B\u0438", \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 \u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0443 \u0441\u0438\u0441\u0442\u0435\u043C\u044B. \u0421\u043F\u0430\u0441\u0438\u0431\u043E! +click_detail=\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0414\u0435\u0442\u0430\u043B\u0438", \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043E\u0431 \u043E\u0448\u0438\u0431\u043A\u0435 \u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u0443 \u0441\u0438\u0441\u0442\u0435\u043C\u044B. \u0421\u043F\u0430\u0441\u0438\u0431\u043E\! return_lastpage=\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043D\u0430 \u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0443\u044E \u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0443 show_detail=\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0414\u0435\u0442\u0430\u043B\u0438 hidden_detail=\u0421\u043A\u0440\u044B\u0442\u044C \u0414\u0435\u0442\u0430\u043B\u0438 @@ -605,8 +605,8 @@ chooseFile=\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0424\u0430\u0439\u043B download=\u0428\u0430\u0431\u043B\u043E\u043D \u0421\u043A\u0430\u0447\u0430\u0442\u044C import_success=\u0423\u0441\u043F\u0435\u0448\u043D\u044B\u0439 \u0418\u043C\u043F\u043E\u0440\u0442\u0430 import_error=\u0418\u043C\u043F\u043E\u0440\u0442 \u0441 \u041E\u0448\u0438\u0431\u043A\u043E\u0439 -import_failed=\u041D\u0435\u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435! -import_template_failed=\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D! \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E\u0431 \u044D\u0442\u043E\u043C: +import_failed=\u041D\u0435\u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435\! +import_template_failed=\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\! \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E\u0431 \u044D\u0442\u043E\u043C\: the_line_of=\u0421\u0442\u0440\u043E\u043A\u0430 rowNum val_protocol_id=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u0430 \u043F\u0443\u0441\u0442\u043E \u0438\u043B\u0438 \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 val_ip_type=\u0422\u0438\u043F IP \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u043C \u0438 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C 4 (IPv4) \u0438\u043B\u0438 6 (IPv6) @@ -618,7 +618,7 @@ val_dst_ip=IP-\u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u044 val_dst_mask=\u0424\u043E\u0440\u043C\u0430\u0442 \u043C\u0430\u0441\u043A\u0438 IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043D\u0435\u0432\u0435\u0440\u0435\u043D \u0438\u043B\u0438 \u043D\u0435\u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C \u0441 \u0442\u0438\u043F\u043E\u043C IP val_dst_port=\u041F\u043E\u0440\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043F\u0443\u0441\u0442 \u0438\u043B\u0438 \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 (0-65535) val_dst_port_mask=\u043D\u0435\u0432\u0435\u0440\u043D\u043E \u0444\u043E\u0440\u043C\u0430\u0442 \u043C\u0430\u0441\u043A\u0438 \u043F\u043E\u0440\u0442\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (0-65535) -val_protocol=\u041F\u0440\u043E\u0442\u043E\u043A\u043E\u043B \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u043C \u0438 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C 6 (TCP), 17 (UDP), 0 (\ u4EFB \ u610F) +val_protocol=\u041F\u0440\u043E\u0442\u043E\u043A\u043E\u043B \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u043C \u0438 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C 6 (TCP), 17 (UDP), 0 ( u4EFB u610F) val_direction=\u041D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C 0 (\u0434\u0432\u0443\u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u043E\u0435) \u0438\u043B\u0438 1 (\u043E\u0434\u043D\u043E\u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u043E\u0435) #===============protocol IP Import end================= @@ -877,10 +877,10 @@ userregion4=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u userregion5=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0420\u0435\u0433\u0438\u043E\u043D 5 #=============userregions=============== #=============multipart upload error info================= -single_file_upload_size_error=\u0420\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430 \u0444\u0430\u0439\u043B\u0430%s %s, \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043E\u0434\u043D\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 \u0432 %s! -total_file_upload_size_error=\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u043D\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 \u0440\u0430\u0432\u0435\u043D %s. \u041E\u0431\u0449\u0438\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u043D\u043E\u0433\u043E \u0434\u043B\u044F \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438, \u0441\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 %s! -file_upload_type_error=%s \u0442\u0438\u043F \u0444\u0430\u0439\u043B\u0430 \u043D\u0435\u0432\u0435\u0440\u0435\u043D, \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u0442\u0438\u043F \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043C\u044B\u0445 \u0444\u0430\u0439\u043B\u043E\u0432 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 %s! -file_upload_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438 \u0444\u0430\u0439\u043B\u0430! +single_file_upload_size_error=\u0420\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430 \u0444\u0430\u0439\u043B\u0430%s %s, \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043E\u0434\u043D\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 \u0432 %s\! +total_file_upload_size_error=\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u043D\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 \u0440\u0430\u0432\u0435\u043D %s. \u041E\u0431\u0449\u0438\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u043D\u043E\u0433\u043E \u0434\u043B\u044F \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438, \u0441\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u0435\u0442 %s\! +file_upload_type_error=%s \u0442\u0438\u043F \u0444\u0430\u0439\u043B\u0430 \u043D\u0435\u0432\u0435\u0440\u0435\u043D, \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u0442\u0438\u043F \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043C\u044B\u0445 \u0444\u0430\u0439\u043B\u043E\u0432 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 %s\! +file_upload_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438 \u0444\u0430\u0439\u043B\u0430\! #=============multipart upload error info================= #=============multipart upload error info================= audio_sample_reject=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u041C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0438\u0439\u043D\u044B\u043C \u041E\u0431\u0440\u0430\u0437\u0446\u043E\u043C @@ -930,7 +930,7 @@ openvpn_reject=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 Open openvpn_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 OpenVPN l2tp_reject=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 L2TP l2tp_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 L2TP -pptp_reject=l2tp_reject=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 L2TP +pptp_reject=l2tp_reject\=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 L2TP pptp_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 PPTP socks_reject=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 SOCKS socks_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 SOCKS @@ -1068,7 +1068,6 @@ req_hdr_key=\u041A\u043B\u044E\u0447 \u0424\u0430\u0439\u043B\u0430 \u0417\u0430 req_body_key=\u041A\u043B\u044E\u0447 \u0424\u0430\u0439\u043B\u0430 \u0422\u0435\u043B\u0430 \u0417\u0430\u043F\u0440\u043E\u0441\u0430 res_hdr_key=\u041A\u043B\u044E\u0447 \u0424\u0430\u0439\u043B\u0430 \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u041E\u0442\u0432\u0435\u0442\u0430 res_body_key=\u041A\u043B\u044E\u0447 \u0424\u0430\u0439\u043B\u0430 \u0422\u0435\u043B\u0430 \u041E\u0442\u0432\u0435\u0442\u0430 -website=\u0412\u0435\u0431-\u0441\u0430\u0439\u0442 p2p_ip_config_type=\u0422\u0438\u043F IP-\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 p2p_hash_type=\u0422\u0438\u043F \u0425\u0435\u0448\u0430 @@ -1076,13 +1075,12 @@ NTC_SUBSCRIBE_ID=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0 WHITE_LIST_SUBSCRIBE_ID=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F \u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0438 \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 app_header_config=\u041F\u0440\u0438\u0437\u043D\u0430\u043A\u0438 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F -app_ssl_config=\u041F\u0440\u0438\u0437\u043D\u0430\u043A \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 \u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F +app_ssl_config=\u041F\u0440\u0438\u0437\u043D\u0430\u043A \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 SSL \u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F ip_intercepter_replace=\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u041F\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0430 IP domain_intercepter_replace=\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u041F\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0430 \u0414\u043E\u043C\u0435\u043D\u0430 ip_intercepter_ratelimit=\u041F\u0435\u0440\u0435\u0445\u0432\u0430\u0442 IP \u0441 \u041E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u0435\u043C \u0421\u043A\u043E\u0440\u043E\u0441\u0442\u0438 domain_intercepter_ratelimit=\u041F\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0414\u043E\u043C\u0435\u043D \u0441 \u041E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u0435\u043C \u0421\u043A\u043E\u0440\u043E\u0441\u0442\u0438 app_built_in_features_config=\u0412\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0435 \u041F\u0440\u0438\u0437\u043D\u0430\u043A\u0438 \u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F -app_ssl_config=\u041F\u0440\u0438\u0437\u043D\u0430\u043A \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 SSL \u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F PXY_INTERCEPT_PKT_BIN=\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u041F\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0430 certificate=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442 do_log=\u041D\u0430\u0434\u043E \u043B\u0438 \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0436\u0443\u0440\u043D\u0430\u043B @@ -1091,7 +1089,7 @@ all_log=\u0417\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0412\u0441\u0435 \u04 framework_log=\u0421\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0416\u0443\u0440\u043D\u0430\u043B\u044B file_strategy=\u041F\u043E\u043B\u0438\u0442\u0438\u043A\u0430 \u0424\u0430\u0439\u043B\u043E\u0432 -file_desc=\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0424\u0430\u0439\u043B\u043E\u0432 +file_desc=\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0424\u0430\u0439\u043B\u043E\u0432\t content_type=\u0422\u0438\u043F \u0421\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u044F content_length=\u0414\u043B\u0438\u043D\u0430 \u0421\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u044F response_file=\u0424\u0430\u0439\u043B \u041E\u0442\u0432\u0435\u0442\u0430 @@ -1112,7 +1110,7 @@ pxy_intercept_monit_keyring=\u041F\u043E\u043B\u0438\u0442\u0438\u043A\u0430 \u0 intercept_file_strategy=\u041F\u043E\u043B\u0438\u0442\u0438\u043A\u0430 \u041F\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0430 \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 root=\u041A\u043E\u0440\u043D\u0435\u0432\u043E\u0439 \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442 intermediate=\u041F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u044B\u0439 \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442 -end_entity=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442 \u041A\u043E\u043D\u0435\u0447\u043D\u043E\u0439 \u0422\u043E\u0447\u043A\u0438 +end_entity=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442 \u041A\u043E\u043D\u0435\u0447\u043D\u043E\u0433\u043E \u041E\u0431\u044A\u0435\u043A\u0442\u0430 keyring_name=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u041F\u0430\u0440\u044B \u041A\u043B\u044E\u0447\u0435\u0439 keyring_type=\u0422\u0438\u043F \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 private_key_file=\u0424\u0430\u0439\u043B \u0441 \u041F\u0440\u0438\u0432\u0430\u0442\u043D\u043E\u043C \u041A\u043B\u044E\u0447\u043E\u043C @@ -1123,7 +1121,6 @@ certificate_subject=\u041F\u0440\u0435\u0434\u043C\u0435\u0442 \u0421\u0435\u044 not_before_time=\u0412\u0440\u0435\u043C\u044F \u041D\u0430\u0447\u0430\u043B\u0430 \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 not_after_time=\u0412\u0440\u0435\u043C\u044F \u041E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 certificate_validity=\u0421\u0440\u043E\u043A \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 -end_entity=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442 \u041A\u043E\u043D\u0435\u0447\u043D\u043E\u0433\u043E \u041E\u0431\u044A\u0435\u043A\u0442\u0430 header=\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A layer=\u0421\u043B\u043E\u0439 can_not_delete_issued_asn_group=\u041D\u0435\u043B\u044C\u0437\u044F \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u044B\u043F\u0443\u0449\u0435\u043D\u043D\u0443\u044E \u0433\u0440\u0443\u043F\u043F\u0443 ASN @@ -1174,4 +1171,7 @@ av_content_url_whitelist=Multimedia Content Url White List av_content_ip_whitelist=Multimedia Content IP White List active_port=Active Port TOP10 visits=visits -percentage=Percentage \ No newline at end of file +percentage=Percentage +APP_SSL=APP SSL Feature +APP_IP_RANGE=APP IP RANGE +APP_DK=APP DK Feature \ 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 c2163c350..2aeca4d0e 100644 --- a/src/main/resources/messages/message_zh_CN.properties +++ b/src/main/resources/messages/message_zh_CN.properties @@ -1004,7 +1004,7 @@ browser=\u6D4F\u89C8\u5668 trend=\u8D8B\u52BF traffic_website_list=\u7F51\u7AD9\u6D41\u91CFTOP10 traffic_website_type_chart=\u7F51\u7AD9\u5206\u7C7B -website=\u7F51\u7AD9\u540D\u79F0 +website=\u7F51\u7AD9\u57DF\u540D #===============dashboard end=================================== ratelimit_limit=\u9650\u901F\u6BD4\u4F8B\u5FC5\u987B\u4ECB\u4E8E0\u5230100 Maintenance=\u9AD8\u7EA7\u529F\u80FD @@ -1065,7 +1065,6 @@ req_hdr_key=\u8BF7\u6C42\u5934\u8F6C\u50A8\u6587\u4EF6KEY req_body_key=\u8BF7\u6C42\u4F53\u8F6C\u50A8\u6587\u4EF6KEY res_hdr_key=\u5E94\u7B54\u5934\u8F6C\u50A8\u6587\u4EF6KEY res_body_key=\u5E94\u7B54\u4F53\u8F6C\u50A8\u6587\u4EF6KEY -website=\u7F51\u7AD9\u57DF\u540D p2p_ip_config_type=IP\u914D\u7F6E\u7C7B\u578B p2p_hash_type=HASH\u7C7B\u578B @@ -1086,7 +1085,7 @@ no_log=\u4E0D\u8BB0\u5F55 all_log=\u8BB0\u5F55\u6240\u6709\u65E5\u5FD7 framework_log=\u53EA\u8BB0\u5F55\u7ED3\u6784\u5316\u65E5\u5FD7 file_strategy=\u6587\u4EF6\u7B56\u7565 -file_desc=\u6587\u4EF6\u63CF\u8FF0 +file_desc=\u6587\u4EF6\u63CF\u8FF0\t content_type=\u5185\u5BB9\u7C7B\u578B content_length=\u6587\u4EF6\u957F\u5EA6 response_file=\u54CD\u5E94\u6587\u4EF6 @@ -1151,7 +1150,7 @@ av_voip_account_monit=VoIP \u8D26\u53F7\u76D1\u6D4B p2p_proto=P2P\u534F\u8BAE p2p_file_id=\u6587\u4EF6\u6807\u8BC6 p2p_keyword=Emule\u641C\u7D22\u5173\u952E\u8BCD -APP_PAYLOAD=APP\u8F7D\u8377\u7279 +APP_PAYLOAD=APP\u8F7D\u8377\u7279\u5F81 APP_DNS=APP DNS statistic_time=\u6700\u540E\u7EDF\u8BA1\u65F6\u95F4 mm_speaker_recognization_reject=\u8BF4\u8BDD\u4EBA\u8BC6\u522B\u963B\u65AD @@ -1168,4 +1167,7 @@ av_content_url_whitelist=\u591A\u5A92\u4F53\u5185\u5BB9URL\u914D\u7F6E\u767D\u54 av_content_ip_whitelist=\u591A\u5A92\u4F53\u5185\u5BB9IP\u914D\u7F6E\u767D\u540D\u5355 active_port=\u6D3B\u8DC3\u7AEF\u53E3 TOP10 visits=\u8BBF\u95EE\u6B21\u6570 -percentage=\u767E\u5206\u6BD4 \ No newline at end of file +percentage=\u767E\u5206\u6BD4 +APP_SSL=APP SSL\u7279\u5F81 +APP_IP_RANGE=APP IP RANGE +APP_DK=APP DK\u7279\u5F81 diff --git a/src/main/webapp/WEB-INF/sitemesh3.xml b/src/main/webapp/WEB-INF/sitemesh3.xml index a83b330e8..1f3d7275c 100644 --- a/src/main/webapp/WEB-INF/sitemesh3.xml +++ b/src/main/webapp/WEB-INF/sitemesh3.xml @@ -36,6 +36,7 @@ + /articles/* diff --git a/src/main/webapp/WEB-INF/views/cfg/app/appHeaderCfgForm.jsp b/src/main/webapp/WEB-INF/views/cfg/app/appHeaderCfgForm.jsp index 845e90f9e..b30f94274 100644 --- a/src/main/webapp/WEB-INF/views/cfg/app/appHeaderCfgForm.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/app/appHeaderCfgForm.jsp @@ -63,9 +63,9 @@ $(function(){

<%-- --%> - - - + + +

@@ -155,6 +155,7 @@ $(function(){ +
@@ -401,6 +402,38 @@ $(function(){
+
+ + + + +

+ + +

+ + + + +
+ <%@include file="/WEB-INF/views/cfg/ipCfgForm.jsp"%> + + + + + +
+ <%@include file="/WEB-INF/views/cfg/ipCfgForm.jsp"%> + + + + + +
+
diff --git a/src/main/webapp/WEB-INF/views/cfg/app/appHeaderCfgList.jsp b/src/main/webapp/WEB-INF/views/cfg/app/appHeaderCfgList.jsp index ed6c0423c..8e052a7ed 100644 --- a/src/main/webapp/WEB-INF/views/cfg/app/appHeaderCfgList.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/app/appHeaderCfgList.jsp @@ -40,6 +40,52 @@ $("#specServiceIdName").val(""); $("#specServiceIdName").attr("placeholder",''); }); + //异步获取voip相关信息 + $("span[id^=open]").click(function(){ + var openId=$(this).attr("id"); + var closeId=$(this).attr("id").replace("open","close"); + var index=$(this).attr("id").replace("open",""); + $("#"+openId).hide(); + $("#"+closeId).show(); + var compileId=$(this).attr("compileId"); + var functionId=$(this).attr("functionId"); + var cfgId=$(this).attr("cfgId"); + if($("#"+openId).parent().parent().next("tr").hasClass("child")){ + $("#"+openId).parent().parent().next("tr").show(); + }else{ + $.ajax({ + type:'post', + async:false, + url:'${ctx}/app/ajaxAppIpRangeList', + data:{"compileId":compileId,"functionId":functionId,"index":index}, + dataType:"html", + success:function(data){ + var subTab=""+ + ""+ + ""+ + ""+ + ""; + var html=""; + html+="
"; + html = html+data; + subTab=subTab+html; + subTab+=""; + subTab+=""; + $("#"+openId).parent().parent().after(subTab); + $("div[name='tabTitle"+index+"']").get(0).click(); + } + }); + } + + }); + + $("span[id^=close]").on("click",function(){ + var closeId=$(this).attr("id"); + var openId=$(this).attr("id").replace("close","open"); + $("#"+closeId).hide(); + $("#"+openId).show(); + $("#"+closeId).parent().parent().next("tr").hide(); + }); }); @@ -47,8 +93,15 @@
+ + + + + + +
- + - +
+
+
+
+
+ +
+
+
+
+ + + +
+ + +
+
+ +
+ + + + +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/cfg/app/appMultiFeatureCfgForm.jsp b/src/main/webapp/WEB-INF/views/cfg/app/appMultiFeatureCfgForm.jsp new file mode 100644 index 000000000..21a31a93c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/app/appMultiFeatureCfgForm.jsp @@ -0,0 +1,379 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +<spring:message code="${cfgName}"></spring:message> + + + + + +
+ + + + + +

+ +

+
+
+
+
+
+ + + + + + + +
+
+
+ +
+ + + + + + + + +
+
+
+
+ + +
+ +
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+ + + + + + + + +

+ + hidden" + onClick="addContent(this,'${tabName}')" title="add"> +

+ + <%-- --%> + + + + +
+ + + + <%@include file="/WEB-INF/views/cfg/ipCfgForm.jsp"%> +
+ +
+
+
+ +
1 and status.index>0 }"> hidden disabled"> + + + + <%@include file="/WEB-INF/views/cfg/ipCfgForm.jsp"%> +
+ +
+
+ +
+ + +

+ + hidden" + onClick="addContent(this,'${tabName}')" title="add"> +

+ + <%-- --%> + + + + + + + +
+ + + + <%@include file="/WEB-INF/views/cfg/complexCfgForm.jsp"%> +
+ + +
+
+
+ + + + +
+ + +
1 and status.index>0}"> hidden disabled"> + + + + <%@include file="/WEB-INF/views/cfg/complexCfgForm.jsp"%> +
+ +
+
+
+ + +

+ + hidden" + onClick="addContent(this,'${tabName}')" title="add"> +

+ + <%-- --%> + + + + + + + +
+ <%@include file="/WEB-INF/views/cfg/complexCfgForm.jsp"%> + + + +
+ + +
+
+
+ + + + +
+ + +
1 and status.index>0}"> hidden disabled"> + + + + <%@include file="/WEB-INF/views/cfg/complexCfgForm.jsp"%> +
+ +
+
+
+
+ +
+
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/cfg/app/appMultiFeatureCfgList.jsp b/src/main/webapp/WEB-INF/views/cfg/app/appMultiFeatureCfgList.jsp new file mode 100644 index 000000000..ac2dc0073 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/app/appMultiFeatureCfgList.jsp @@ -0,0 +1,386 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +<spring:message code="${cfgName}"></spring:message> + + + + + + +
+ + + + + + + + + +

+ +

+ +
+
+
+
+ + + + + + + + + + +
+
+ + + + + + + +
+ +
+ + +
+
+
+
+ + + + + + + +
+ + +
+ + + + + +
+
+
+
+ + + +
+
+ + + + + +
+ + +
+
+ href="javascript:;"> + + +
+
+ + + +
+ + +
+
+
+ + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+ +
+
+ + " onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/> + +
+
+
+ +
+ + +
+
+
+ + + + + + + + + + <%-- --%> + + + + + + + + + + + + + + + + + + <%-- --%> + + + + + + + + + +
+ + + ${cfg.compileId }${cfg.cfgDesc }${cfg.appName } + + + + + + + + + + +
${cfg.creatorName }${cfg.editorName }${cfg.auditorName }
+
${page}
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/cfg/app/appSubFeatureList.jsp b/src/main/webapp/WEB-INF/views/cfg/app/appSubFeatureList.jsp new file mode 100644 index 000000000..351db7d1c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/cfg/app/appSubFeatureList.jsp @@ -0,0 +1,363 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + + + +<%-- +
+ + + +
+
+ +
+ + +
+
+ +
+ + +
+
--%> + + +
+ + +
+
+ +
+ + + + ${region.regionValue}_${regionStatus.index} + + + + +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+
+ + +
+
+
+
+ +
+
+ +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ +
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ +
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+ +
+
+ + + +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ +
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ +
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_ru.js b/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_ru.js index 720eba4fb..5f22d2d0e 100644 --- a/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_ru.js +++ b/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_ru.js @@ -1,72 +1,72 @@ /* * Translated default messages for the jQuery validation plugin. - * Locale: ZH (Chinese, 中文 (Zhōngwén), 汉语, 漢語) + * Locale: RU (Russian; Русский Язык) */ (function ($) { $.extend($.validator.messages, { - required: "Необходимая информация", - remote: "Исправьте эту информацию", - email: "Введите правильный адрес электронной почты", - url: "Введите действительный URL-адрес", - date: "Введите действительную дату", + required: "Поле обязательно для заполнения.", + remote: "Пожалуйста, исправьте это поле.", + email: "Введите действующий адрес эл. почты.", + url: "Введите действительный URL.", + date: "Введите действительную дату.", dateISO: "Введите действительную дату (ISO).", number: "Введите действительный номер", - digits: "Может вводить только целые числа", - creditcard: "Введите действительный номер кредитной карты", - equalTo: "Повторите одно и то же значение", - accept: "Введите строку с юридическим суффиксом", - maxlength: $.validator.format("Введите строку с максимальной длиной {0}"), - minlength: $.validator.format("Введите строку с минимальной длиной {0}"), - rangelength: $.validator.format("Введите строку символов,длина которой между {0} и {1}"), - range: $.validator.format("Введите значение между {0} и {1}"), - max: $.validator.format("Введите значение до {0}"), - min: $.validator.format("Введите значение с минимальным значением {0}"), - noBlankSpace:"Не может быть пробела", - ip:"Заполните правильный IP-адрес", - ipCheck:"Заполните правильный IP-адрес", - ipMask:"Заполните правильный IP-адрес / маска", - ipPart:"Ошибка формата части IP", + digits: "Введите только целое число.", + creditcard: "Введите действительный номер кредитной карты.", + equalTo: "Введите такое же значение ещё раз.", + accept: "Введите строку с действительным суффиксом", + maxlength: $.validator.format("Введите не больше {0} символов длинной."), + minlength: $.validator.format("Введите не менее {0} символов длинной."), + rangelength: $.validator.format("Введите между {0} и {1} символов длинной."), + range: $.validator.format("Введите значение от {0} до {1}."), + max: $.validator.format("Введите значение, меньшее или равно {0}."), + min: $.validator.format("Введите значение больше или равно {0}."), + noBlankSpace:"Не может быть пробелом", + ip:"Введите правильный IP-адрес", + ipCheck:"Введите правильный IP-адрес", + ipMask:"Введите правильный IP/маску", + ipPart:"Недопустимая часть IP", //ipv6MaskPart:"Mаска-показатель степени 2, небольше 128", ipv6MaskPart:"掩码必须为128", //ipMaskRange:"Маска IP между 0 и 32", - ipMaskRange:"Маска IP между 16 и 32", - srcIpNotEqDestIp:"IP-адрес источника ", - destIpNotEqDestIp:" с IP-адресом назначения", - IpNotEqDestIp:" не может быть одинаковым", - srcIpIsNotValue:"IP-адрес источника не может быть ", - destIpIsNotValue:"IP-адрес назначения не может быть", - ipRange:"Формат диапазона IP неверен, или начальный IP-адрес и конечный IP-адрес не относятся к одному и тому же сегменту сети.", - ipRange1:"Начальное значение IP должно меньше конечного значения IP.", - portCheck:"Заполните правильный порт", - notStartZero:"Пожалуйста, введите правильное значение", - portRange:"Порт должен быть меньше 65536, отличные от нуля номера не могут начинаться с 0", - portMaskRange:"Порт должен меньше 65536, отличные от нуля номера не могут начинаться с 0.Формат\"порт/маска\"", - chooseAreaOrIsp:"Необходимо выбрать один регион и оператор", - areaControl:"Действия выброса и рефлюкса не могут контролироваться на региональном уровне", - ip_type: "Тип ip", - ip_pattern: "Формат ip", - area: "Зона", - isp: "Оператор", - close_info: "Закрыть", - client_ip: " IP", + ipMaskRange:"Маска IP должна между 16 и 32", + srcIpNotEqDestIp:"IP Источник", + destIpNotEqDestIp:"IP Назначение", + IpNotEqDestIp:"Не может быть одинаковым", + srcIpIsNotValue:"Исходный IP не может быть ", + destIpIsNotValue:"IP назначение не может быть", + ipRange:"Неверный IP-формат или начальный IP и конечный IP в двух подсети", + ipRange1:"Начальный IP должен быть меньше конечного IP", + portCheck: "Введите  правильный  порт.", + notStartZero:"Введите действительное целое число", + portRange:"Порт должен между 0 и 65535", + portMaskRange:"Порт и маска должны находиться между 0 и 65535. Правильный шаблон -«порт/маска».", + chooseAreaOrIsp:"Регион или оператор должны выбрать один", + areaControl:"Действие сброса и петли не требуется управление областью", + ip_type: "IP Тип", + ip_pattern: "IP Формат", + area: "Район", + isp: "ISP", + close_info: "Выключить", + client_ip: "Клиент IP", ipv4: "IPv4", ipv6: "IPv6", over6: "4over6", over4: "6over4", - ipv4v6:"Введите действительный IP-адрес, например IPv4 (0.0.0.0) или IPv6 (::)", + ipv4v6:"Введите правильный IPv4 (0.0.0.0) или IPv6 (::)", all: "Все", - ip_subnet:"Маска IP-адреса/Маска подсети", - ip_range: "Диапазон IP", - timeout:"Превышение срока", - areaIpPrefix:"Запрещенное значение: ", - domainCheck:"Введите действительное доменное имя", - checkParent:"Тип конфигурации должен соответствовать предыдущей конфигурации!", - specServiceCodeCheck:"Повторяющийся номер протокола", - compareDate:"Время окончания нельзя раньше времени начала", - hexCheck:"Введите шестнадцатеричный символ", - invisibleChar:"Введите видимые символы", - hasInvisibleChar:"The tag {0} has invisible character", - haveInvisibleChar:"The tags {0} have invisible character", + ip_subnet: "IP/Маска Подсети", + ip_range: "IP Диапазон", + timeout:"Тайм-аут", + areaIpPrefix:"Запрещенное Значение: ", + domainCheck:"Введите действительный домен.", + checkParent:"Тип конфигурации должен совпадать с родительским типом.", + specServiceCodeCheck:"Номер протокола повторяется.", + compareDate:"Время окончания не должно быть раньше времени начала.", + hexCheck:"Введите символ шестнадцатеричного формата", + invisibleChar:"Введите видимый символ", + hasInvisibleChar:"Тег {0} включает невидимый символ", + haveInvisibleChar:"Теги {0} включают невидимый символ" httpCheck:"Please enter a correct url(http[s]://xxx.xx)", failed:"Failed", go_back:"Go Back Policies",