批量下发功能增加,delRow.tag中暂时不打开此功能。

app topic domain和app domain业务修改domain存储cfgkeyword属性。
摘要修改level属性存储为下发的最终数值。
同步的单域配置的增加时间和状态属性从entity中获取
This commit is contained in:
DuanDongmei
2018-12-05 17:56:41 +08:00
parent e5fa7cbca8
commit bb302e3f13
37 changed files with 2406 additions and 703 deletions

View File

@@ -33,8 +33,8 @@ public class AppDomainCfg extends BaseCfg<AppDomainCfg> {
private Integer appCode;//specific_service_cfg表一级节点的spec_service_code
private Integer behavCode;//specific_service_cfg表二级节点的spec_service_code
private Integer specServiceId;
@ExcelField(title="domain",sort=3)
private String domain;
private String cfgKeywords;
@ExcelField(title="social_app",sort=2)
private String appName;
@@ -148,12 +148,6 @@ public class AppDomainCfg extends BaseCfg<AppDomainCfg> {
public void setSpecServiceId(Integer specServiceId) {
this.specServiceId = specServiceId;
}
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
public String getCfgKeywords() {
return cfgKeywords;
}

View File

@@ -32,8 +32,8 @@ public class AppTopicDomainCfg extends BaseCfg<AppTopicDomainCfg> {
@ExcelField(title="website_server",dictType="WEBSITE_SERVER",sort=3)
private Long websiteServiceId;//specific_service_cfg表二级节点的spec_service_code
private Integer specServiceId;
@ExcelField(title="domain",sort=4)
private String domain;
private String cfgKeywords;
private String appName;
@ExcelField(title="topic",dictType="TOPIC",sort=2)
@@ -156,12 +156,6 @@ public class AppTopicDomainCfg extends BaseCfg<AppTopicDomainCfg> {
public void setSpecServiceId(Integer specServiceId) {
this.specServiceId = specServiceId;
}
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
public String getCfgKeywords() {
return cfgKeywords;
}

View File

@@ -13,6 +13,8 @@ import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import com.nis.domain.FunctionServiceDict;
public class ServiceConfigTemplateUtil {
private Logger logger = Logger.getLogger(getClass());
@@ -67,30 +69,22 @@ public class ServiceConfigTemplateUtil {
* @param serviceId
* @return
*/
public List<Map<String,Object>> getServiceList(String functionId,String serviceId){
public List<Map<String,Object>> getServiceList(Integer functionId){
List<Map<String,Object>> list =new ArrayList();
List<Element> elements = root.selectNodes("service");
boolean flag=false;
for(Element element:elements){
if(!StringUtil.isEmpty(functionId) || !StringUtil.isEmpty(serviceId) ) {
flag=false;
String serviceIdC=element.attributeValue("id");
String functionIdC=element.attributeValue("functionId");
if(!StringUtil.isEmpty(functionId) && !StringUtil.isEmpty(serviceId)) {
if(serviceIdC.equals(serviceId) && functionIdC.equals(functionId)) {
flag=true;
}
}else {
if(!StringUtil.isEmpty(serviceId) && serviceIdC.equals(serviceId) ) {
flag=true;
}
if(!StringUtil.isEmpty(functionId) && functionIdC.equals(functionId) ) {
flag=true;
}
if(!StringUtil.isEmpty(functionId)) {
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(functionId);
List<String> serviceIdList = new ArrayList();
for (FunctionServiceDict service : serviceList) {
if(!StringUtil.isEmpty(service.getServiceId())) {
serviceIdList.add(service.getServiceId().toString());
}
if(flag) {
}
List<Element> elements = root.selectNodes("service");
for(Element element:elements){
String serviceIdC=element.attributeValue("id");
if(!StringUtil.isEmpty(serviceIdC)
&& !StringUtil.isEmpty(serviceIdList)
&& serviceIdList.contains(serviceIdC)) {
Map<String,Object> map = new HashMap();
for(int i=0;i<element.attributes().size();i++){
String attributeName = element.attribute(i).getName();
@@ -101,16 +95,8 @@ public class ServiceConfigTemplateUtil {
map.put("userRegionList",getUserRegionList(element));
list.add(map);
}
}else {
Map<String,Object> map = new HashMap();
for(int i=0;i<element.attributes().size();i++){
String attributeName = element.attribute(i).getName();
map.put(attributeName, element.attributeValue(attributeName));
}
map.put("cfgList", getServiceCfgList(element));
map.put("userRegionList",getUserRegionList(element));
list.add(map);
}
}
return list;
@@ -165,7 +151,7 @@ public class ServiceConfigTemplateUtil {
public static void main(String[] args) {
try {
ServiceConfigTemplateUtil serviceTemplate = new ServiceConfigTemplateUtil();
List<Map<String,Object>> list = serviceTemplate.getServiceList("","128");
List<Map<String,Object>> list = serviceTemplate.getServiceList(5);
for(Map<String,Object> map :list){
System.out.println("业务配置:"+map.get("id")+","+map.get("functionId")+","+map.get("serviceType")+","+map.get("tableName"));
List<Map<String,Object>> cfgList = (List<Map<String, Object>>) map.get("cfgList");

View File

@@ -27,6 +27,8 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.apache.poi.ss.formula.functions.T;
import org.eclipse.jetty.util.ajax.JSON;
import org.jets3t.service.ServiceException;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -41,20 +43,37 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.beust.jcommander.internal.Lists;
import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
import com.nis.domain.SysDataDictionaryItem;
import com.nis.domain.basics.AsnIpCfg;
import com.nis.domain.basics.ServiceDictInfo;
import com.nis.domain.basics.SysDictInfo;
import com.nis.domain.callback.ProxyObjKeyring;
import com.nis.domain.configuration.AppDomainCfg;
import com.nis.domain.configuration.AppFeatureIndex;
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.AppTopicDomainCfg;
import com.nis.domain.configuration.AreaBean;
import com.nis.domain.configuration.AreaIpCfg;
import com.nis.domain.configuration.AvFileSampleCfg;
import com.nis.domain.configuration.AvSignSampleCfg;
import com.nis.domain.configuration.BaseCfg;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.ComplexStringCfgTemplate;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.DdosIpCfg;
import com.nis.domain.configuration.DnsIpCfg;
import com.nis.domain.configuration.DnsResStrategy;
import com.nis.domain.configuration.FileDigestCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.PxyObjKeyring;
import com.nis.domain.configuration.PxyObjTrustedCaCert;
import com.nis.domain.configuration.PxyObjTrustedCaCrl;
import com.nis.domain.configuration.RequestInfo;
import com.nis.domain.configuration.StringCfgTemplate;
import com.nis.domain.configuration.template.AppDomainTemplate;
@@ -73,6 +92,14 @@ import com.nis.domain.configuration.template.P2pIpTemplate;
import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.domain.log.BaseLogEntity;
import com.nis.domain.log.SearchReport;
import com.nis.domain.maat.MaatCfg;
import com.nis.domain.maat.ToMaatBean;
import com.nis.domain.maat.ToMaatResult;
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.specific.ConfigGroupInfo;
import com.nis.domain.specific.SpecificServiceCfg;
import com.nis.exceptions.MaatConvertException;
@@ -83,7 +110,9 @@ import com.nis.util.Configurations;
import com.nis.util.Constants;
import com.nis.util.DateUtils;
import com.nis.util.DictUtils;
import com.nis.util.FileUtils;
import com.nis.util.JsonMapper;
import com.nis.util.ServiceConfigTemplateUtil;
import com.nis.util.StringUtil;
import com.nis.util.excel.ExportExcel;
import com.nis.util.excel.ImportBigExcel;
@@ -95,6 +124,7 @@ import com.nis.web.security.UserUtils;
import com.nis.web.service.ArchiveServcie;
import com.nis.web.service.AreaService;
import com.nis.web.service.BaseService;
import com.nis.web.service.CrudService;
import com.nis.web.service.DictService;
import com.nis.web.service.LogService;
import com.nis.web.service.MenuService;
@@ -115,6 +145,7 @@ import com.nis.web.service.configuration.AvCfgService;
import com.nis.web.service.configuration.AvContentCfgService;
import com.nis.web.service.configuration.BgpCfgService;
import com.nis.web.service.configuration.CachePolicyService;
import com.nis.web.service.configuration.CommonPolicyService;
import com.nis.web.service.configuration.ComplexStringCfgService;
import com.nis.web.service.configuration.ConfigSynchronizationService;
import com.nis.web.service.configuration.ControlPolicyService;
@@ -143,6 +174,7 @@ import com.nis.web.service.specific.SpecificServiceHostCfgService;
import com.nis.web.service.systemService.ServiceConfigInfoService;
import jersey.repackaged.com.google.common.collect.Maps;
import net.sf.json.JSONObject;
public class BaseController {
@@ -254,9 +286,11 @@ public class BaseController {
//@Autowired
//protected ConfigGroupInfoService configGroupInfoService;
@Autowired
protected ConfigSynchronizationService configSynchronizationService;
@Autowired
protected CachePolicyService cachePolicyService;
@Autowired
protected ConfigSynchronizationService configSynchronizationService;
protected CommonPolicyService commonPolicyService;
@Autowired
protected UserManageService userManageService;
@@ -1800,8 +1834,10 @@ public class BaseController {
ei.getUploadFile().delete();
}
}
if(e instanceof MaatConvertException||e instanceof ServiceException) {
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else if(e instanceof ServiceException) {
addMessage(redirectAttributes,"error", e.getMessage());
}else {
addMessage(redirectAttributes,"error", "import_failed");
}
@@ -1902,4 +1938,655 @@ public class BaseController {
new ExportExcel(msgProp, titleList, noExportMap, classMap, 1).setDataList(msgProp, dataMap, map)
.write(response, fileName).dispose();
}
/**
* 批量审核
* @param isAudit
* @param isValid
* @param ids
* @param functionId
* @param redirectAttributes
* @return
*/
public void auditAll(Page page,Integer auditType,Object entity)throws Exception {
page.setPageSize(Constants.MAAT_JSON_SEND_SIZE);
page.setOrderBy("");
//携带审核状态信息的BaseCfg
BaseCfg auditBatchCfg=new BaseCfg();
//携带审核条件的BaseCfg
CfgIndexInfo searchCfg=new CfgIndexInfo();
AppPolicyCfg searchAppCfg=new AppPolicyCfg();
FileDigestCfg searchDigestCfg=new FileDigestCfg();
AvFileSampleCfg searchFileSampleCfg=new AvFileSampleCfg();
PxyObjKeyring searchObjKeyringCfg=new PxyObjKeyring();
PxyObjTrustedCaCert searchTrustedCaCertCfg=new PxyObjTrustedCaCert();
PxyObjTrustedCaCrl searchTrustedCaCrlCfg=new PxyObjTrustedCaCrl();
DnsResStrategy searchDnsResStrategy=new DnsResStrategy();
DnsIpCfg searchDnsIpCfg=new DnsIpCfg();
IpPortCfg searchIpPortCfg=new IpPortCfg();
AvSignSampleCfg searchSignSampleCfg=new AvSignSampleCfg();
DdosIpCfg searchDdosIpCfg=new DdosIpCfg();
AppIpCfg searchAppIpCfg=new AppIpCfg();
AppHttpCfg searchAppHttpCfg=new AppHttpCfg();
AppDomainCfg searchAppDomainCfg=new AppDomainCfg();
AppTopicDomainCfg searchAppTopicCfg=new AppTopicDomainCfg();
AppFeatureIndex searchAppFeatureIndex=new AppFeatureIndex();
AppSslCertCfg searchAppSslCertCfg=new AppSslCertCfg();
if(entity != null && (entity instanceof CfgIndexInfo)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchCfg);
}
if(entity != null && (entity instanceof AppPolicyCfg)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchAppCfg);
}
if(entity != null && (entity instanceof FileDigestCfg)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchDigestCfg);
}
if(entity != null && (entity instanceof AvFileSampleCfg)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchFileSampleCfg);
}
if(entity != null && (entity instanceof PxyObjKeyring)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchObjKeyringCfg);
}
if(entity != null && (entity instanceof PxyObjTrustedCaCert)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchTrustedCaCertCfg);
}
if(entity != null && (entity instanceof PxyObjTrustedCaCrl)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchTrustedCaCrlCfg);
}
if(entity != null && (entity instanceof CfgIndexInfo)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchDnsResStrategy);
}
if(entity != null && (entity instanceof DnsIpCfg)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchDnsIpCfg);
}
if(entity != null && (entity instanceof CfgIndexInfo)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchIpPortCfg);
}
if(entity != null && (entity instanceof AvSignSampleCfg)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchSignSampleCfg);
}
if(entity != null && (entity instanceof DdosIpCfg)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchDdosIpCfg);
}
if(entity != null && (entity instanceof CfgIndexInfo)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchAppIpCfg);
}
if(entity != null && (entity instanceof AppHttpCfg)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchAppHttpCfg);
}
if(entity != null && (entity instanceof AppDomainCfg)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchAppDomainCfg);
}
if(entity != null && (entity instanceof AppTopicDomainCfg)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchAppTopicCfg);
}
if(entity != null && (entity instanceof AppFeatureIndex)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchAppFeatureIndex);
}
if(entity != null && (entity instanceof AppSslCertCfg)) {
BeanUtils.copyProperties(entity, auditBatchCfg);
BeanUtils.copyProperties(entity, searchAppSslCertCfg);
}
//全部审核通过,只查询当前条件下的所有未审核的配置
if(auditType.equals(1)) {
searchCfg.setIsValid(0);
searchCfg.setIsAudit(0);
searchAppCfg.setIsValid(0);
searchAppCfg.setIsAudit(0);
searchDigestCfg.setIsValid(0);
searchDigestCfg.setIsAudit(0);
searchFileSampleCfg.setIsValid(0);
searchFileSampleCfg.setIsAudit(0);
searchObjKeyringCfg.setIsValid(0);
searchObjKeyringCfg.setIsAudit(0);
searchTrustedCaCertCfg.setIsValid(0);
searchTrustedCaCertCfg.setIsAudit(0);
searchTrustedCaCrlCfg.setIsValid(0);
searchTrustedCaCrlCfg.setIsAudit(0);
searchDnsResStrategy.setIsValid(0);
searchDnsResStrategy.setIsAudit(0);
searchDnsIpCfg.setIsValid(0);
searchDnsIpCfg.setIsAudit(0);
searchIpPortCfg.setIsValid(0);
searchIpPortCfg.setIsAudit(0);
searchSignSampleCfg.setIsValid(0);
searchSignSampleCfg.setIsAudit(0);
searchDdosIpCfg.setIsValid(0);
searchDdosIpCfg.setIsAudit(0);
searchAppIpCfg.setIsValid(0);
searchAppIpCfg.setIsAudit(0);
searchAppHttpCfg.setIsValid(0);
searchAppHttpCfg.setIsAudit(0);
searchAppDomainCfg.setIsValid(0);
searchAppDomainCfg.setIsAudit(0);
searchAppTopicCfg.setIsValid(0);
searchAppTopicCfg.setIsAudit(0);
searchAppFeatureIndex.setIsValid(0);
searchAppFeatureIndex.setIsAudit(0);
searchAppSslCertCfg.setIsValid(0);
searchAppSslCertCfg.setIsAudit(0);
auditBatchCfg.setIsAudit(1);
auditBatchCfg.setIsValid(1);
auditBatchCfg.setAuditTime(new Date());
auditBatchCfg.setAuditorId(UserUtils.getUser().getId());
}else {
//全部取消通过,只查询当前条件下的所有审核通过的配置
searchCfg.setIsValid(1);
searchCfg.setIsAudit(1);
searchAppCfg.setIsValid(1);
searchAppCfg.setIsAudit(1);
searchDigestCfg.setIsValid(1);
searchDigestCfg.setIsAudit(1);
searchFileSampleCfg.setIsValid(1);
searchFileSampleCfg.setIsAudit(1);
searchObjKeyringCfg.setIsValid(1);
searchObjKeyringCfg.setIsAudit(1);
searchTrustedCaCertCfg.setIsValid(1);
searchTrustedCaCertCfg.setIsAudit(1);
searchTrustedCaCrlCfg.setIsValid(1);
searchTrustedCaCrlCfg.setIsAudit(1);
searchDnsResStrategy.setIsValid(1);
searchDnsResStrategy.setIsAudit(1);
searchDnsIpCfg.setIsValid(1);
searchDnsIpCfg.setIsAudit(1);
searchIpPortCfg.setIsValid(1);
searchIpPortCfg.setIsAudit(1);
searchSignSampleCfg.setIsValid(1);
searchSignSampleCfg.setIsAudit(1);
searchDdosIpCfg.setIsValid(1);
searchDdosIpCfg.setIsAudit(1);
searchAppIpCfg.setIsValid(1);
searchAppIpCfg.setIsAudit(1);
searchAppHttpCfg.setIsValid(1);
searchAppHttpCfg.setIsAudit(1);
searchAppDomainCfg.setIsValid(1);
searchAppDomainCfg.setIsAudit(1);
searchAppTopicCfg.setIsValid(1);
searchAppTopicCfg.setIsAudit(1);
searchAppFeatureIndex.setIsValid(1);
searchAppFeatureIndex.setIsAudit(1);
searchAppSslCertCfg.setIsValid(1);
searchAppSslCertCfg.setIsAudit(1);
auditBatchCfg.setIsAudit(3);
auditBatchCfg.setIsValid(0);
auditBatchCfg.setAuditTime(new Date());
auditBatchCfg.setAuditorId(UserUtils.getUser().getId());
}
ServiceConfigTemplateUtil serviceTemplate = new ServiceConfigTemplateUtil();
Integer functionId=0;
if(auditBatchCfg != null && !StringUtil.isEmpty(auditBatchCfg.getFunctionId())) {
functionId=auditBatchCfg.getFunctionId();
}
List<Map<String,Object>> serviceList = serviceTemplate.getServiceList(functionId);
for(Map<String,Object> service:serviceList){
String tableNameXml = service.get("tableName").toString();
String serviceTypeXml = service.get("serviceType").toString();
String classNameXml = service.get("className").toString();
String serviceIdXml = service.get("id").toString();
auditBatchCfg.setServiceId(Integer.valueOf(serviceIdXml));
auditBatchCfg.setTableName(tableNameXml);
searchCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchCfg.setTableName(tableNameXml);
searchAppCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchAppCfg.setTableName(tableNameXml);
searchDigestCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchDigestCfg.setTableName(tableNameXml);
searchFileSampleCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchFileSampleCfg.setTableName(tableNameXml);
searchObjKeyringCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchObjKeyringCfg.setTableName(tableNameXml);
searchTrustedCaCertCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchTrustedCaCertCfg.setTableName(tableNameXml);
searchTrustedCaCrlCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchTrustedCaCrlCfg.setTableName(tableNameXml);
searchDnsResStrategy.setServiceId(Integer.valueOf(serviceIdXml));
searchDnsResStrategy.setTableName(tableNameXml);
searchDnsIpCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchDnsIpCfg.setTableName(tableNameXml);
searchIpPortCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchIpPortCfg.setTableName(tableNameXml);
searchSignSampleCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchSignSampleCfg.setTableName(tableNameXml);
searchDdosIpCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchDdosIpCfg.setTableName(tableNameXml);
searchAppIpCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchAppIpCfg.setTableName(tableNameXml);
searchAppHttpCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchAppHttpCfg.setTableName(tableNameXml);
searchAppDomainCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchAppDomainCfg.setTableName(tableNameXml);
searchAppTopicCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchAppTopicCfg.setTableName(tableNameXml);
searchAppFeatureIndex.setServiceId(Integer.valueOf(serviceIdXml));
searchAppFeatureIndex.setTableName(tableNameXml);
searchAppSslCertCfg.setServiceId(Integer.valueOf(serviceIdXml));
searchAppSslCertCfg.setTableName(tableNameXml);
if("1".equals(serviceTypeXml)){//maat类配置
List<Map<String,Object>> cfgList = (List<Map<String, Object>>) service.get("cfgList");
List<Map<String,Object>> userRegionList = (List<Map<String, Object>>) service.get("userRegionList");
if(!StringUtil.isEmpty(cfgList)) {
if("cfg_index_info".equals(tableNameXml)){
/************************多域maat cfg_index_info 处理****************************************/
boolean hasData = true;
while(hasData){
List<CfgIndexInfo> list=getDataList(page,searchCfg,null,null,null);
if(!StringUtil.isEmpty(list)){
//配置生效处理 复用全量下发
if(auditBatchCfg.getIsValid().equals(1)) {
hasData=configSynchronizationService.auditNtcMaatData(cfgList,userRegionList,page,auditBatchCfg,list,hasData,true);
}else {//配置失效处理 批量处理
List<BaseCfg> cfgIndexList=new ArrayList<>();
if(!StringUtil.isEmpty(list)) {
for (CfgIndexInfo cfg : list) {
BaseCfg baseCfg=new BaseCfg();
BeanUtils.copyProperties(cfg, baseCfg);
cfgIndexList.add(baseCfg);
}
}
hasData=commonPolicyService.auditNtcMaatData(cfgList, page, auditBatchCfg, cfgIndexList, hasData);
}
if(hasData) {
page.setPageNo(1);
}
}else{
hasData = false;
}
}
}else if("file_digest_cfg".equals(tableNameXml)){
/************************多域 maat 摘要处理****************************************/
boolean hasData = true;
while(hasData){
List<FileDigestCfg> list=getDataList(page,null,null,searchDigestCfg,null);
if(!StringUtil.isEmpty(list)){
//配置生效处理 复用全量下发
if(auditBatchCfg.getIsValid().equals(1)) {
hasData=configSynchronizationService.auditFileDigestData(cfgList, userRegionList, page, auditBatchCfg, list, hasData, true);
}else {//配置失效处理 批量处理
List<BaseCfg> baseCfgList=new ArrayList<>();
if(!StringUtil.isEmpty(list)) {
for (FileDigestCfg cfg : list) {
BaseCfg baseCfg=new BaseCfg();
BeanUtils.copyProperties(cfg, baseCfg);
baseCfgList.add(baseCfg);
}
}
hasData=commonPolicyService.auditNtcMaatData(cfgList, page, auditBatchCfg,baseCfgList, hasData);
}
if(hasData) {
page.setPageNo(1);
}
}else{
hasData = false;
}
}
}else if("app_policy_cfg".equals(tableNameXml)){
/************************多域 maat app策略处理****************************************/
boolean hasData = true;
while(hasData){
List<AppPolicyCfg> list=getDataList(page,null,searchAppCfg,null,null);
if(!StringUtil.isEmpty(list)){
//配置生效处理 复用全量下发
if(auditBatchCfg.getIsValid().equals(1)) {
hasData=configSynchronizationService.auditAppPolicyData(cfgList,userRegionList,page,auditBatchCfg,list,hasData,true);
}else {//配置失效处理 批量处理
List<BaseCfg> cfgAppList=new ArrayList<>();
if(!StringUtil.isEmpty(list)) {
for (AppPolicyCfg cfg : list) {
BaseCfg baseCfg=new BaseCfg();
BeanUtils.copyProperties(cfg, baseCfg);
cfgAppList.add(baseCfg);
}
}
hasData=commonPolicyService.auditNtcMaatData(cfgList, page, auditBatchCfg,cfgAppList, hasData);
}
if(hasData) {
page.setPageNo(1);
}
}else{
hasData = false;
}
}
}else if("app_feature_index".equals(tableNameXml)){
/************************多域 maat app特征处理****************************************/
boolean hasData = true;
while(hasData){
List<AppFeatureIndex> list=getDataList(page,null,null,null,searchAppFeatureIndex);
if(!StringUtil.isEmpty(list)){
//配置生效处理 复用全量下发
if(auditBatchCfg.getIsValid().equals(1)) {
hasData=configSynchronizationService.auditAppFeatureData(cfgList,userRegionList,page,auditBatchCfg,list,hasData,true);
}else {//配置失效处理 批量处理
List<BaseCfg> cfgFeatrureList=new ArrayList<>();
if(!StringUtil.isEmpty(list)) {
for (AppFeatureIndex cfg : list) {
BaseCfg baseCfg=new BaseCfg();
BeanUtils.copyProperties(cfg, baseCfg);
cfgFeatrureList.add(baseCfg);
}
}
hasData=commonPolicyService.auditNtcMaatData(cfgList, page, auditBatchCfg,cfgFeatrureList, hasData);
}
if(hasData) {
page.setPageNo(1);
}
}else{
hasData = false;
}
}
}else{
logger.info("未知业务");
}
}else {
/************************单域maat处理****************************************/
int cfgType = Integer.parseInt(service.get("cfgType").toString());
if("ddos_ip_cfg".equals(tableNameXml)){
boolean hasData = true;
while(hasData){
List<DdosIpCfg> list=ddosCfgService.findPage(page, searchDdosIpCfg).getList();
if(!StringUtil.isEmpty(list)){
if(auditBatchCfg.getIsValid().equals(1)) {
hasData=configSynchronizationService.auditDdosMaatData(cfgList,userRegionList,
page,auditBatchCfg,list,hasData,true);
}else {
List<BaseCfg> newList=new ArrayList<>();
if(!StringUtil.isEmpty(list)) {
for (Object obj : list) {
BaseCfg cfg=(BaseCfg)obj;
newList.add(cfg);
}
}
hasData=commonPolicyService.auditNtcMaatData(cfgList, page, auditBatchCfg,newList, hasData);
}
if(hasData) {
page.setPageNo(1);
}
}else{
hasData = false;
}
}
}else{
boolean hasData = true;
while(hasData){
List list = Lists.newArrayList();
/*
1026 app_domain_cfg
1028 app_ip_cfg
1029 app_ssl_cert_cfg
1152 app_topic_domain_cfg
1024 app_http_cfg
1026 app_domain_cfg
*/
if(auditBatchCfg.getServiceId().equals(1026)) {
list=appCfgService.findAppDomainList(page, searchAppDomainCfg).getList();
}
if(auditBatchCfg.getServiceId().equals(1028)) {
list=appCfgService.findAppIpList(page, searchAppIpCfg).getList();
}
if(auditBatchCfg.getServiceId().equals(1029)) {
list=appCfgService.findAppSslList(page, searchAppSslCertCfg).getList();
}
if(auditBatchCfg.getServiceId().equals(1152)) {
list=appCfgService.findAppTopicDomainList(page, searchAppTopicCfg).getList();
}
if(auditBatchCfg.getServiceId().equals(1024)) {
list=appCfgService.findAppHttpList(page, searchAppHttpCfg).getList();
}
if(!StringUtil.isEmpty(list)){
if(auditBatchCfg.getIsValid().equals(1)) {
if(auditBatchCfg.getServiceId().equals(1028)){
hasData=configSynchronizationService.auditAppIpData(userRegionList,
page,auditBatchCfg,list,hasData,true);
}else{
hasData=configSynchronizationService.auditSingleMaatData(cfgType,userRegionList,
page,auditBatchCfg,list,hasData,true);
}
}else {
List<BaseCfg> newList=new ArrayList<>();
if(!StringUtil.isEmpty(list)) {
for (Object obj : list) {
BaseCfg cfg=(BaseCfg)obj;
newList.add(cfg);
}
}
hasData=commonPolicyService.auditNtcMaatData(cfgList, page, auditBatchCfg,newList, hasData);
}
if(hasData) {
page.setPageNo(1);
}
}else{
hasData = false;
}
}
}
}
}else if("2".equals(serviceTypeXml)){
/********************回调类处理生效和失效一个方法【由于每个表检索条件不一样,需要自己处理,无法复用全量下发】*********/
boolean hasData = true;
while(hasData){
hasData=handelCallbackData(classNameXml, page, hasData, auditBatchCfg
, searchCfg
, searchAppCfg
, searchDigestCfg
, searchFileSampleCfg
, searchObjKeyringCfg
, searchTrustedCaCertCfg
, searchTrustedCaCrlCfg
, searchDnsResStrategy
, searchDnsIpCfg
, searchIpPortCfg
, searchSignSampleCfg);
if(hasData){
page.setPageNo(page.getNext());
}
}
}
}
}
public List getDataList(Page searchPage
,CfgIndexInfo searchCfg
,AppPolicyCfg searchAppCfg
,FileDigestCfg searchDigestCfg
,AppFeatureIndex searchAppFeatureIndex){
BaseCfg baseCfg=new BaseCfg<>();
if(!StringUtil.isEmpty(searchCfg)) {
BeanUtils.copyProperties(searchCfg, baseCfg);
}
if(!StringUtil.isEmpty(searchAppCfg)) {
BeanUtils.copyProperties(searchAppCfg, baseCfg);
}
if(!StringUtil.isEmpty(searchDigestCfg)) {
BeanUtils.copyProperties(searchDigestCfg, baseCfg);
}
if(!StringUtil.isEmpty(searchAppFeatureIndex)) {
BeanUtils.copyProperties(searchAppFeatureIndex, baseCfg);
}
Page pageResult=new Page();
if(baseCfg.getFunctionId().equals(5)//IP
|| baseCfg.getFunctionId().equals(3)) { //IP WHITELIST
pageResult=ipCfgService.getIpCfgList(searchPage,searchCfg);
}else if(baseCfg.getFunctionId().equals(212) //IP Payload
|| baseCfg.getFunctionId().equals(7) //DNS
|| baseCfg.getFunctionId().equals(8)//HTTP ADVANCED
|| baseCfg.getFunctionId().equals(635) //HTTP 关键字
|| baseCfg.getFunctionId().equals(37) //MAIL ADDRESS
|| baseCfg.getFunctionId().equals(35) //MAIL ADVANCED
|| baseCfg.getFunctionId().equals(34)) {//SSL
pageResult=websiteCfgService.getWebsiteList(searchPage, searchCfg);
}else if(baseCfg.getFunctionId().equals(6)) {//HTTP URL
pageResult=domainService.getDomainList(searchPage, searchCfg);
}else if(baseCfg.getFunctionId().equals(63)//Stream basic
|| baseCfg.getFunctionId().equals(407)//Stream app
|| baseCfg.getFunctionId().equals(408)) {//Stream behavior
pageResult=appCfgService.findAppPolicyList(searchPage, searchAppCfg);
}else if(baseCfg.getFunctionId().equals(61)) {//BGP
pageResult=bgpCfgService.getBgpList(searchPage, searchCfg);
}else if(baseCfg.getFunctionId().equals(51)) {//FTP
pageResult=fileTransferCfgService.getFtpList(searchPage, searchCfg);
}else if(baseCfg.getFunctionId().equals(510)) {//P2P
pageResult=fileTransferCfgService.getFtpList(searchPage, searchCfg);
}else if(baseCfg.getFunctionId().equals(22)) {//Stream Media
pageResult=avContentCfgService.findPage(searchPage, searchCfg);
}else if(baseCfg.getFunctionId().equals(24)) {//VOIP
pageResult=avContentCfgService.findPage(searchPage, searchCfg);
}else if(baseCfg.getFunctionId().equals(52)) {//Digest
pageResult=fileTransferCfgService.getFileDigestList(searchPage, searchDigestCfg);
}else if(baseCfg.getFunctionId().equals(200)//intercept ip
||baseCfg.getFunctionId().equals(201)) {//intercept domain
pageResult=interceptCfgService.getWebsiteList(searchPage, searchCfg);
}else if(baseCfg.getFunctionId().equals(207) //control
||baseCfg.getFunctionId().equals(208)
||baseCfg.getFunctionId().equals(209)
||baseCfg.getFunctionId().equals(210)
||baseCfg.getFunctionId().equals(211)) {
pageResult=httpRedirectCfgService.getHttpRedirectList(searchPage, searchCfg);
}else if(baseCfg.getFunctionId().equals(213)) {// cache
pageResult=cachePolicyService.getCachePolicyList(searchPage, searchCfg);
}else if(baseCfg.getFunctionId().equals(52)) {//appFeatre
pageResult=appMultiFeatureCfgService.findAppFeatureIndexList(searchPage,searchAppFeatureIndex);
}
return pageResult.getList();
}
private boolean handelCallbackData(String className,Page page,boolean hasData,BaseCfg entity
,CfgIndexInfo searchCfg
,AppPolicyCfg searchAppCfg
,FileDigestCfg searchDigestCfg
,AvFileSampleCfg searchFileSampleCfg
,PxyObjKeyring searchObjKeyringCfg
,PxyObjTrustedCaCert searchTrustedCaCertCfg
,PxyObjTrustedCaCrl searchTrustedCaCrlCfg
,DnsResStrategy searchDnsResStrategy
,DnsIpCfg searchDnsIpCfg
,IpPortCfg searchIpPortCfg
,AvSignSampleCfg searchSignSampleCfg) {
ToMaatBean maatBean;
MaatCfg maatCfg;
List<MaatCfg> configCompileList;
List<GroupCfg> groupRelationList;
List<IpCfg> ipRegionList;
List<StringCfg> strRegionList;
List<NumBoundaryCfg> numRegionList;
List<DigestCfg> digestRegionList;
List<IpCfg> areaIpRegionList;
maatBean = new ToMaatBean();
configCompileList = new ArrayList();
List list = new ArrayList();
List newList = new ArrayList();
List ids = new ArrayList();
List<Integer> compileIds = Lists.newArrayList();
if(entity.getServiceId().equals(3)){//ip drop回调类配置用了主表和子表关系
list = getDataList(page, searchCfg, null, null,null);
if(!StringUtil.isEmpty(list)){
for(int i=0;i<list.size();i++){
CfgIndexInfo cfg = (CfgIndexInfo) list.get(i);
compileIds.add(cfg.getCompileId());
}
List subList = commonPolicyService.getIpDropList("ip_port_cfg", compileIds);
for(int i=0;i<subList.size();i++){
IpPortCfg cfg = (IpPortCfg) subList.get(i);
newList.add(BaseService.convertCallBackIp(cfg,cfg.getGroupId()));
}
}
}else{
if(className.equals("AvFileSampleCfg")){
list = avCfgService.getAvFileSampleList(page,searchFileSampleCfg).getList();
for(int i=0;i<list.size();i++){
BaseCfg cfg = (BaseCfg) list.get(i);
ids.add(cfg.getCompileId());
}
newList.addAll(list);
}else if(className.equals("AvSignSampleCfg")){
list = avCfgService.getSignSampleList(searchSignSampleCfg);
for(int i=0;i<list.size();i++){
BaseCfg cfg = (BaseCfg) list.get(i);
ids.add(cfg.getCompileId());
}
newList.addAll(list);
}else if(className.equals("PxyObjKeyring")){
list = pxyObjKeyringService.findPage(page, searchObjKeyringCfg).getList();
for(int i=0;i<list.size();i++){
PxyObjKeyring cfg = (PxyObjKeyring) list.get(i);
newList.add(BaseService.convertCallBackProxyObjKeyring(cfg));
ids.add(cfg.getCompileId());
}
}else if(className.equals("PxyObjTrustedCaCert")){
list = pxyObjKeyringService.findTrustedCertPage(page,searchTrustedCaCertCfg).getList();
for(int i=0;i<list.size();i++){
PxyObjTrustedCaCert cfg = (PxyObjTrustedCaCert) list.get(i);
newList.addAll(BaseService.convertCallBackProxyObjTrustedCa(cfg,null));
//TODO 要保证cert下发成功crl必须也同时下发成功需要单个查询
ids.add(cfg.getCompileId());
}
}/*else if(className.equals("PxyObjTrustedCaCrl")){ //批量下发时不需要单独下发CRL
list = pxyObjKeyringService;
for(int i=0;i<list.size();i++){
PxyObjTrustedCaCrl cfg = (PxyObjTrustedCaCrl) list.get(i);
newList.add(BaseService.convertCallBackProxyObjTrustedCa(null,cfg));
ids.add(cfg.getCompileId());
}
}*/else if(className.equals("DnsResStrategy")){
list = dnsResStrategyService.findPage(page,searchDnsResStrategy).getList();
for(int i=0;i<list.size();i++){
DnsResStrategy cfg = (DnsResStrategy) list.get(i);
newList.add(BaseService.convertCallBackDnsResStrategy(cfg));
ids.add(cfg.getCompileId());
}
}else if(className.equals("DnsIpCfg")){
list = dnsIpCfgService.findPage(page,searchDnsIpCfg).getList();
for(int i=0;i<list.size();i++){
DnsIpCfg cfg = (DnsIpCfg) list.get(i);
newList.add(BaseService.convertCallBackIp(cfg,cfg.getGroupId()));
ids.add(cfg.getCompileId());
}
}else if(className.equals("IpPortCfg")){
list = commonPolicyService.getIpPortList(searchIpPortCfg);
for(int i=0;i<list.size();i++){
IpPortCfg cfg = (IpPortCfg) list.get(i);
newList.add(BaseService.convertCallBackIp(cfg,cfg.getGroupId()));
ids.add(cfg.getCompileId());
}
}
}
//批量修改和下发回调配置
commonPolicyService.auditCallBackData(newList, compileIds, ids, entity);
page.setList(list);
if(page.isLastPage()){
hasData = false;
}
return hasData;
}
}

View File

@@ -13,6 +13,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.taglibs.standard.functions.Functions;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
@@ -223,29 +224,57 @@ public class AppCfgController extends BaseController {
*/
@RequestMapping(value = {"auditAppPolicyCfg"})
@RequiresPermissions(value={"app:policy:confirm"})
public String auditAppPolicyCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
AppPolicyCfg entity = new AppPolicyCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appCfgService.getAppPolicyCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
entity.setConfigType(Constants.SPECIFIC_SERVICE_CFG_TYPE_APP);
try {
appCfgService.auditAppPolicyCfg(entity,isAudit);
} catch (Exception e) {
e.printStackTrace();
logger.error("app策略配置下发失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
public String auditAppPolicyCfg(Model model,@ModelAttribute("cfg")AppPolicyCfg cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
AppPolicyCfg entity = new AppPolicyCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appCfgService.getAppPolicyCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
entity.setConfigType(Constants.SPECIFIC_SERVICE_CFG_TYPE_APP);
try {
appCfgService.auditAppPolicyCfg(entity,isAudit);
} catch (Exception e) {
e.printStackTrace();
logger.error("app策略配置下发失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
}
}
}
}else {
Page<AppPolicyCfg> searchPage=new Page<AppPolicyCfg>(request,response,"r");
Page<AppPolicyCfg> auditPage=new Page<AppPolicyCfg>(request,response,"r");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return policyCfgList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/app/policyCfgList?functionId="+functionId;
}
/**
@@ -477,27 +506,54 @@ public class AppCfgController extends BaseController {
*/
@RequestMapping(value = {"auditAppHttpCfg"})
// @RequiresPermissions(value={"app:http:confirm"})
public String auditAppHttpCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
AppHttpCfg entity = new AppHttpCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appCfgService.getAppHttpCfg(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
appCfgService.auditAppHttpCfg(entity,isAudit);
} catch (Exception e) {
e.printStackTrace();
logger.error("app http配置下发失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
public String auditAppHttpCfg(Model model,@ModelAttribute("cfg")AppHttpCfg cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
AppHttpCfg entity = new AppHttpCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appCfgService.getAppHttpCfg(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
appCfgService.auditAppHttpCfg(entity,isAudit);
} catch (Exception e) {
e.printStackTrace();
logger.error("app http配置下发失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
}
}
}
}else {
Page<AppHttpCfg> searchPage=new Page<AppHttpCfg>(request,response,"r");
Page<AppHttpCfg> auditPage=new Page<AppHttpCfg>(request,response,"r");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return httpCfgList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/app/httpCfgList?functionId="+functionId;
}
@@ -595,27 +651,54 @@ public class AppCfgController extends BaseController {
*/
@RequestMapping(value = {"auditAppDomainCfg"})
// @RequiresPermissions(value={"app:domain:confirm"})
public String auditAppDomainCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
AppDomainCfg entity = new AppDomainCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appCfgService.getAppDomainCfg(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
appCfgService.auditAppDomainCfg(entity,isAudit);
} catch (Exception e) {
e.printStackTrace();
logger.error("app协议domain配置下发失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
public String auditAppDomainCfg(Model model,@ModelAttribute("cfg")AppDomainCfg cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
AppDomainCfg entity = new AppDomainCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appCfgService.getAppDomainCfg(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
appCfgService.auditAppDomainCfg(entity,isAudit);
} catch (Exception e) {
e.printStackTrace();
logger.error("app协议domain配置下发失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
}
}
}
}else {
Page<AppDomainCfg> searchPage=new Page<AppDomainCfg>(request,response,"r");
Page<AppDomainCfg> auditPage=new Page<AppDomainCfg>(request,response,"r");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return domainCfgList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/app/domainCfgList?functionId="+functionId;
}
@@ -834,27 +917,55 @@ public class AppCfgController extends BaseController {
*/
@RequestMapping(value = {"auditAppSslCfg"})
@RequiresPermissions(value={"app:ssl:confirm"})
public String auditAppSslCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
AppSslCertCfg entity = new AppSslCertCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appCfgService.getAppSslCfg(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
appCfgService.auditAppSslCfg(entity,isAudit);
} catch (Exception e) {
logger.error("app SSL配置下发失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
public String auditAppSslCfg(Model model,@ModelAttribute("cfg")AppSslCertCfg cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
AppSslCertCfg entity = new AppSslCertCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appCfgService.getAppSslCfg(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
appCfgService.auditAppSslCfg(entity,isAudit);
} catch (Exception e) {
logger.error("app SSL配置下发失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
}
}
}
}else {
Page<AppPolicyCfg> searchPage=new Page<AppPolicyCfg>(request,response,"r");
Page<AppPolicyCfg> auditPage=new Page<AppPolicyCfg>(request,response,"r");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return sslCfgList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/app/sslCfgList?functionId="+functionId;
}
/**
@@ -1194,9 +1305,9 @@ public class AppCfgController extends BaseController {
AppTopicDomainCfg entity,RedirectAttributes redirectAttributes) {
try {
//验证域名的重复行
if(!StringUtil.isBlank(entity.getDomain())){
if(!StringUtil.isBlank(entity.getCfgKeywords())){
WebsiteDomainTopic websiteDomainTopic = new WebsiteDomainTopic();
websiteDomainTopic.setDomain(entity.getDomain());
websiteDomainTopic.setDomain(entity.getCfgKeywords());
List<WebsiteDomainTopic> domainDict = appCfgService.getDomainDict(websiteDomainTopic);
if((domainDict==null || domainDict.size()==0)){
//保存到域名关联表中
@@ -1213,8 +1324,8 @@ public class AppCfgController extends BaseController {
}
}
}
if(entity!=null&&StringUtil.isBlank(entity.getDomain())&&!StringUtil.isBlank(entity.getDomain())){
entity.setDomain(entity.getDomain());
if(entity!=null&&StringUtil.isBlank(entity.getCfgKeywords())&&!StringUtil.isBlank(entity.getCfgKeywords())){
entity.setCfgKeywords(entity.getCfgKeywords());
}
appCfgService.saveOrUpdateAppTopicDomainCfg(entity);
addMessage(redirectAttributes,"success","save_success");
@@ -1243,27 +1354,54 @@ public class AppCfgController extends BaseController {
*/
@RequestMapping(value = {"auditAppTopicDomainCfg"})
// @RequiresPermissions(value={"app:domain:confirm"})
public String auditAppTopicDomainCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
AppTopicDomainCfg entity = new AppTopicDomainCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appCfgService.getAppTopicDomainCfg(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
appCfgService.auditAppTopicDomainCfg(entity,isAudit);
addMessage(redirectAttributes,"success","audit_success");
} catch (Exception e) {
logger.error("app主题网站配置下发失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
public String auditAppTopicDomainCfg(Model model,@ModelAttribute("cfg")AppTopicDomainCfg cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
AppTopicDomainCfg entity = new AppTopicDomainCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appCfgService.getAppTopicDomainCfg(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
appCfgService.auditAppTopicDomainCfg(entity,isAudit);
addMessage(redirectAttributes,"success","audit_success");
} catch (Exception e) {
logger.error("app主题网站配置下发失败",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
}
}
}
}else {
Page<AppTopicDomainCfg> searchPage=new Page<AppTopicDomainCfg>(request,response,"r");
Page<AppTopicDomainCfg> auditPage=new Page<AppTopicDomainCfg>(request,response,"r");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return TopicDomainCfgList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/app/topicDomainCfgList?functionId="+functionId;
}

View File

@@ -10,6 +10,7 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.taglibs.standard.functions.Functions;
@@ -148,28 +149,56 @@ public class AppFeatureCfgController extends BaseController {
* @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.error("app 特征配置下发失败:"+e.getMessage());
addMessage(redirectAttributes,"error", "request_service_failed");
} catch (Exception e) {
e.printStackTrace();
logger.error("app 特征配置下发失败:"+e.getMessage());
addMessage(redirectAttributes,"error", "audit_failed");
public String auditAppFeatureCfg(Model model,@ModelAttribute("cfg")AppFeatureIndex cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
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.error("app 特征配置下发失败:"+e.getMessage());
addMessage(redirectAttributes,"error", "request_service_failed");
} catch (Exception e) {
e.printStackTrace();
logger.error("app 特征配置下发失败:"+e.getMessage());
addMessage(redirectAttributes,"error", "audit_failed");
}
}
}else {
Page<AppPolicyCfg> searchPage=new Page<AppPolicyCfg>(request,response,"r");
Page<AppPolicyCfg> auditPage=new Page<AppPolicyCfg>(request,response,"r");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return multiFeatureCfgList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/app/feature/multiFeatureCfgList?functionId="+functionId;
}
/**

View File

@@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
@@ -162,32 +163,59 @@ public class BasicProtocolController extends BaseController {
*/
@RequestMapping(value = {"audit"})
@RequiresPermissions(value={"basicprotocol:confirm"})
public String auditAppPolicyCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
AppPolicyCfg entity = new AppPolicyCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appCfgService.getAppPolicyCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
entity.setConfigType(Constants.SPECIFIC_SERVICE_CFG_TYPE_BASIC_PROTOCOL);
public String auditAppPolicyCfg(Model model,@ModelAttribute("cfg")AppPolicyCfg cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
AppPolicyCfg entity = new AppPolicyCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appCfgService.getAppPolicyCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
entity.setConfigType(Constants.SPECIFIC_SERVICE_CFG_TYPE_BASIC_PROTOCOL);
try {
appCfgService.auditAppPolicyCfg(entity,isAudit);
addMessage(redirectAttributes,"success","audit_success");
} catch (Exception e) {
if(e instanceof MaatConvertException) {
e.printStackTrace();
logger.info("app策略配置下发失败"+e.getMessage());;
addMessage(redirectAttributes,"error","request_service_failed");
}else {
e.printStackTrace();
logger.error("app策略配置下发失败",e);
addMessage(redirectAttributes,"error","audit_failed");
}
}
}
}else {
Page<AppPolicyCfg> searchPage=new Page<AppPolicyCfg>(request,response,"r");
Page<AppPolicyCfg> auditPage=new Page<AppPolicyCfg>(request,response,"r");
BeanUtils.copyProperties(searchPage, auditPage);
try {
appCfgService.auditAppPolicyCfg(entity,isAudit);
addMessage(redirectAttributes,"success","audit_success");
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
e.printStackTrace();
logger.info("app策略配置下发失败"+e.getMessage());;
addMessage(redirectAttributes,"error","request_service_failed");
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
e.printStackTrace();
logger.error("app策略配置下发失败",e);
addMessage(redirectAttributes,"error","audit_failed");
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return policyCfgList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/basicprotocol/list?functionId="+functionId;
}

View File

@@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
@@ -30,6 +31,7 @@ import com.nis.exceptions.CallExternalProceduresException;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
@@ -183,32 +185,61 @@ public class EncryptedTunnelBehaviorController extends BaseController {
*/
@RequestMapping(value = {"audit"})
@RequiresPermissions(value={"encryptedtunnelbehav:confirm"})
public String auditAppPolicyCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
AppPolicyCfg entity = new AppPolicyCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appCfgService.getAppPolicyCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
entity.setConfigType(Constants.SPECIFIC_SERVICE_CFG_TYPE_ENCRYPTED_TUNNEL_BEHAVIOR);
try {
appCfgService.auditAppPolicyCfg(entity,isAudit);
addMessage(redirectAttributes,"success","audit_success");
} catch (Exception e) {
if(e instanceof MaatConvertException) {
e.printStackTrace();
logger.info("加密隧道配置下发失败:"+e.getMessage());;
addMessage(redirectAttributes,"error","request_service_failed");
}else {
e.printStackTrace();
logger.error("加密隧道配置下发失败",e);
addMessage(redirectAttributes,"error","audit_failed");
public String auditAppPolicyCfg(Model model,@ModelAttribute("cfg")AppPolicyCfg cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
AppPolicyCfg entity = new AppPolicyCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appCfgService.getAppPolicyCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
entity.setConfigType(Constants.SPECIFIC_SERVICE_CFG_TYPE_ENCRYPTED_TUNNEL_BEHAVIOR);
try {
appCfgService.auditAppPolicyCfg(entity,isAudit);
addMessage(redirectAttributes,"success","audit_success");
} catch (Exception e) {
if(e instanceof MaatConvertException) {
e.printStackTrace();
logger.info("加密隧道配置下发失败:"+e.getMessage());;
addMessage(redirectAttributes,"error","request_service_failed");
}else {
e.printStackTrace();
logger.error("加密隧道配置下发失败",e);
addMessage(redirectAttributes,"error","audit_failed");
}
}
}
}else {
Page<AppPolicyCfg> searchPage=new Page<AppPolicyCfg>(request,response,"r");
Page<AppPolicyCfg> auditPage=new Page<AppPolicyCfg>(request,response,"r");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return policyCfgList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/encryptedtunnelbehav/list?functionId="+functionId;
}
/**

View File

@@ -10,6 +10,7 @@ import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.cxf.common.util.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
@@ -100,8 +101,14 @@ public class DnsIpCfgController extends BaseController {
}
@RequestMapping(value = {"/audit"})
@RequiresPermissions(value={"dns:fake:ip:confirm"})
public String audit(Integer isAudit,Integer isValid,String ids
,Integer functionId, RedirectAttributes redirectAttributes) {
public String audit(Model model,@ModelAttribute("cfg")DnsIpCfg cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
String[] idArray = ids.split(",");
Date auditTime=new Date();
@@ -120,6 +127,24 @@ public class DnsIpCfgController extends BaseController {
}
}else {
Page<DnsIpCfg> searchPage=new Page<DnsIpCfg>(request,response,"r");
Page<DnsIpCfg> auditPage=new Page<DnsIpCfg>(request,response,"r");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return list(model, request, response,cfg, redirectAttributes);
}
return "redirect:" + adminPath +"/cfg/dnsIp/list?functionId="+functionId;
}

View File

@@ -9,6 +9,7 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.taglibs.standard.functions.Functions;
import org.springframework.stereotype.Controller;
@@ -118,8 +119,14 @@ public class DnsResStrategyController extends BaseController {
@RequestMapping(value = {"/audit"})
@RequiresPermissions(value={"dns:res:strategy:confirm"})
public String audit(Integer isAudit,Integer isValid,String ids,Integer functionId,
RedirectAttributes redirectAttributes) {
public String audit(Model model,@ModelAttribute("cfg")DnsResStrategy cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
String[] idArray = ids.split(",");
Date auditTime=new Date();
@@ -133,6 +140,24 @@ public class DnsResStrategyController extends BaseController {
}
}
}else {
Page<DnsResStrategy> searchPage=new Page<DnsResStrategy>(request,response,"r");
Page<DnsResStrategy> auditPage=new Page<DnsResStrategy>(request,response,"r");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return list(model, request, response, cfg,redirectAttributes);
}
return "redirect:" + adminPath +"/maintenance/dnsResStrategy/list?functionId="+functionId;
}

View File

@@ -9,6 +9,7 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.cxf.common.util.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
@@ -87,7 +88,14 @@ public class DdosCfgController extends BaseController {
}
@RequestMapping(value = {"/audit"})
//@RequiresPermissions(value={"ddos:ip:confirm"})
public String audit(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
public String audit(Model model,@ModelAttribute("cfg")DdosIpCfg cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
String[] idArray = ids.split(",");
Date auditTime=new Date();
@@ -105,7 +113,24 @@ public class DdosCfgController extends BaseController {
}
}
}else {
Page<DdosIpCfg> searchPage=new Page<DdosIpCfg>(request,response,"r");
Page<DdosIpCfg> auditPage=new Page<DdosIpCfg>(request,response,"r");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return list(model, request, response, cfg);
}
return "redirect:" + adminPath +"/manipulation/ddos/list?functionId="+functionId;
}

View File

@@ -12,6 +12,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
@@ -202,7 +203,14 @@ public class AvContentController extends BaseController {
//修改VOIP IP配置审核状态
@RequestMapping(value = {"/auditAvVoip"})
@RequiresPermissions(value={"avVoip:confirm"})
public String auditVoip(Integer isAudit,Integer isValid,String ids ,String compileIds,Integer functionId ,RedirectAttributes redirectAttributes) {
public String auditVoip(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
String[] idArray = ids.split(",");
Date auditTime=new Date();
@@ -223,6 +231,23 @@ public class AvContentController extends BaseController {
}
}
}else {
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"r");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"r");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return voipCfgList(model, request, response, cfg, redirectAttributes);
}
return "redirect:" + adminPath +"/ntc/av/voipList?functionId="+functionId;
}
@@ -639,9 +664,14 @@ public class AvContentController extends BaseController {
//修改CONTUrl配置审核
@RequestMapping(value = {"/auditAvContUrl"})
@RequiresPermissions(value={"avContUrl:confirm"})
public String auditContUrl(Integer isAudit,Integer isValid,String ids
,String compileIds,Integer functionId
, RedirectAttributes redirectAttributes) {
public String auditContUrl(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
String[] idArray = ids.split(",");
Date auditTime=new Date();
@@ -659,6 +689,23 @@ public class AvContentController extends BaseController {
}
}
}else {
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"r");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"r");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return contUrlList(model, request, response, cfg, redirectAttributes);
}
return "redirect:" + adminPath +"/ntc/av/contUrlList?functionId="+functionId;
}

View File

@@ -20,6 +20,7 @@ import net.sf.json.JSONObject;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.tools.zip.ZipOutputStream;
import org.springframework.beans.BeanUtils;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -35,6 +36,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.nis.domain.FunctionRegionDict;
import com.nis.domain.FunctionServiceDict;
import com.nis.domain.Page;
import com.nis.domain.configuration.AppPolicyCfg;
import com.nis.domain.configuration.AvFileSampleCfg;
import com.nis.domain.configuration.AvSignSampleCfg;
import com.nis.domain.configuration.AvSignSampleCfgModel;
@@ -330,80 +332,107 @@ public class AvController extends BaseController {
* @return
*/
@RequestMapping(value = {"/sample/auditAvFileSample"})
public String auditAvFileSample(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes){
// avCfgService.auditAvFileSample(isAudit,isValid,ids);
AvFileSampleCfg entity = new AvFileSampleCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = avCfgService.getAvFileSampleById(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
// String oldSrcUrl = entity.getSrcPath();
// String oldSampleUrl = entity.getSamplePath();
try {
/*if(isAudit==1){
Date creatTime = entity.getCreateTime();
//音视频文件上传接口调用
File srcFile = new File(oldSrcUrl);
Map<String,Object> srcMap = new HashMap();
srcMap.put("filetype", FileUtils.getSuffix(srcFile.getName(), false));
srcMap.put("datatype", "dbSystem");//源文件存入数据中心
srcMap.put("createTime",creatTime);
srcMap.put("key",FileUtils.getPrefix(srcFile.getName(), false));
srcMap.put("fileName", srcFile.getName());
srcMap.put("checksum", entity.getSrcMd5());
ToMaatResult result1 = ConfigServiceUtil.postFileCfg(null, srcFile, JsonMapper.toJsonString(srcMap));
logger.info("音视频源文件上传响应信息:"+result1);
//获取文件上传响应信息(新的文件访问路径)
String srcAccessUrl = null;
if(!StringUtil.isEmpty(result1)){
ResponseData data = result1.getData();
srcAccessUrl=data.getAccessUrl();
entity.setSrcUrl(srcAccessUrl);
// entity.setSrcPath("");
}
File sampleFile = new File(oldSampleUrl);
Map<String,Object> sampleMap = new HashMap();
sampleMap.put("filetype", FileUtils.getSuffix(sampleFile.getName(), false));
sampleMap.put("datatype", "fileSystem");//样例文件存入fastdfs
sampleMap.put("createTime", creatTime);
sampleMap.put("key",FileUtils.getPrefix(sampleFile.getName(), false));
sampleMap.put("fileName", sampleFile.getName());
sampleMap.put("checksum", entity.getSampleMd5());
ToMaatResult result2 = ConfigServiceUtil.postFileCfg(null, sampleFile, JsonMapper.toJsonString(sampleMap));
logger.info("音视频样例文件上传响应信息:"+result2);
//获取文件上传响应信息(新的文件访问路径)
String sampleAccessUrl = null;
if(!StringUtil.isEmpty(result2)){
ResponseData data = result2.getData();
sampleAccessUrl = data.getAccessUrl();
entity.setSampleUrl(sampleAccessUrl);
// entity.setSamplePath("");
public String auditAvFileSample(Model model,@ModelAttribute("cfg")AvFileSampleCfg cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request){
if(!StringUtil.isEmpty(ids)){
//avCfgService.auditAvFileSample(isAudit,isValid,ids);
AvFileSampleCfg entity = new AvFileSampleCfg();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = avCfgService.getAvFileSampleById(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
// String oldSrcUrl = entity.getSrcPath();
// String oldSampleUrl = entity.getSamplePath();
try {
/*if(isAudit==1){
Date creatTime = entity.getCreateTime();
//音视频文件上传接口调用
File srcFile = new File(oldSrcUrl);
Map<String,Object> srcMap = new HashMap();
srcMap.put("filetype", FileUtils.getSuffix(srcFile.getName(), false));
srcMap.put("datatype", "dbSystem");//源文件存入数据中心
srcMap.put("createTime",creatTime);
srcMap.put("key",FileUtils.getPrefix(srcFile.getName(), false));
srcMap.put("fileName", srcFile.getName());
srcMap.put("checksum", entity.getSrcMd5());
ToMaatResult result1 = ConfigServiceUtil.postFileCfg(null, srcFile, JsonMapper.toJsonString(srcMap));
logger.info("音视频源文件上传响应信息:"+result1);
//获取文件上传响应信息(新的文件访问路径)
String srcAccessUrl = null;
if(!StringUtil.isEmpty(result1)){
ResponseData data = result1.getData();
srcAccessUrl=data.getAccessUrl();
entity.setSrcUrl(srcAccessUrl);
// entity.setSrcPath("");
}
File sampleFile = new File(oldSampleUrl);
Map<String,Object> sampleMap = new HashMap();
sampleMap.put("filetype", FileUtils.getSuffix(sampleFile.getName(), false));
sampleMap.put("datatype", "fileSystem");//样例文件存入fastdfs
sampleMap.put("createTime", creatTime);
sampleMap.put("key",FileUtils.getPrefix(sampleFile.getName(), false));
sampleMap.put("fileName", sampleFile.getName());
sampleMap.put("checksum", entity.getSampleMd5());
ToMaatResult result2 = ConfigServiceUtil.postFileCfg(null, sampleFile, JsonMapper.toJsonString(sampleMap));
logger.info("音视频样例文件上传响应信息:"+result2);
//获取文件上传响应信息(新的文件访问路径)
String sampleAccessUrl = null;
if(!StringUtil.isEmpty(result2)){
ResponseData data = result2.getData();
sampleAccessUrl = data.getAccessUrl();
entity.setSampleUrl(sampleAccessUrl);
// entity.setSamplePath("");
}
}*/
avCfgService.auditAvFileSample(entity,isAudit);
//删除本地源文件和样例文件
/*if(!oldSrcUrl.equals(entity.getSrcUrl())){
FileUtils.deleteFile(oldSrcUrl);
}
if(!oldSampleUrl.equals(entity.getSampleUrl())){
FileUtils.deleteFile(oldSampleUrl);
}*/
}catch(Exception e){
e.printStackTrace();
if(e instanceof MaatConvertException) {
logger.info("音视频文件样例配置下发失败:"+e.getMessage());
addMessage(redirectAttributes,"error","request_service_failed");
}else {
logger.error("auditAvFileSample failed",e);
addMessage(redirectAttributes,"error","audit_failed");
}
}*/
avCfgService.auditAvFileSample(entity,isAudit);
//删除本地源文件和样例文件
/*if(!oldSrcUrl.equals(entity.getSrcUrl())){
FileUtils.deleteFile(oldSrcUrl);
}
if(!oldSampleUrl.equals(entity.getSampleUrl())){
FileUtils.deleteFile(oldSampleUrl);
}*/
}catch(Exception e){
e.printStackTrace();
if(e instanceof MaatConvertException) {
logger.info("音视频文件样例配置下发失败:"+e.getMessage());
addMessage(redirectAttributes,"error","request_service_failed");
}else {
logger.error("auditAvFileSample failed",e);
addMessage(redirectAttributes,"error","audit_failed");
}
}
}else {
Page<AvFileSampleCfg> searchPage=new Page<AvFileSampleCfg>(request,response,"a");
Page<AvFileSampleCfg> auditPage=new Page<AvFileSampleCfg>(request,response,"a");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return fileSampleList(model, request, response, cfg);
}
return "redirect:" + adminPath +"/ntc/av/sample/fileSampleList?functionId="+functionId;
}

View File

@@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
@@ -26,6 +27,7 @@ import com.nis.domain.configuration.NtcBgpAsCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.Constants;
import com.nis.util.StringUtil;
import com.nis.util.StringUtils;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
@@ -41,9 +43,8 @@ public class BgpCfgController extends BaseController{
@RequestMapping(value = {"bgpList"})
// @RequiresPermissions(value={"other:bgp:config"})
public String httpList(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg
,HttpServletRequest request,HttpServletResponse response
,RedirectAttributes redirectAttributes) {
public String bgpList(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg
,HttpServletRequest request,HttpServletResponse response) {
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
Page<CfgIndexInfo> page = bgpCfgService.getBgpList(searchPage, cfg);
model.addAttribute("page", page);
@@ -129,28 +130,54 @@ public class BgpCfgController extends BaseController{
@RequestMapping(value = {"auditBgpCfg"})
@RequiresPermissions(value={"other:bgp:confirm"})
public String auditBgpCfg(Integer isAudit,Integer isValid,String ids
,Integer functionId, RedirectAttributes redirectAttributes) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = bgpCfgService.getBgpCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
bgpCfgService.auditBgpCfg(entity,isAudit);
} catch (MaatConvertException e) {
e.printStackTrace();
logger.error("bgp配置下发失败",e);
addMessage(redirectAttributes,"error","request_service_failed");
}catch (Exception e) {
e.printStackTrace();
logger.error("bgp配置下发失败",e);
addMessage(redirectAttributes,"error","audit_failed");
public String auditBgpCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = bgpCfgService.getBgpCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
bgpCfgService.auditBgpCfg(entity,isAudit);
} catch (MaatConvertException e) {
e.printStackTrace();
logger.error("bgp配置下发失败",e);
addMessage(redirectAttributes,"error","request_service_failed");
}catch (Exception e) {
e.printStackTrace();
logger.error("bgp配置下发失败",e);
addMessage(redirectAttributes,"error","audit_failed");
}
}
}else {
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"a");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return bgpList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/ntc/other/bgpList?functionId="+functionId;
}

View File

@@ -17,6 +17,7 @@ import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.taglibs.standard.functions.Functions;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.FileCopyUtils;
@@ -159,30 +160,56 @@ public class FileTransferCfgController extends BaseController{
}
@RequestMapping(value = {"auditFtpCfg"})
@RequiresPermissions(value={"fileTransfer:ftp:confirm"})
public String auditFtpCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = fileTransferCfgService.getFtpCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
fileTransferCfgService.auditFtpCfg(entity,isAudit);
addMessage(redirectAttributes,"success","audit_success");
} catch ( Exception e) {
if(e instanceof MaatConvertException) {
e.printStackTrace();
logger.error("ftp配置下发失败"+e.getMessage());;
addMessage(redirectAttributes,"error","request_service_failed");
}else {
e.printStackTrace();
logger.error("ftp配置下发失败",e);
addMessage(redirectAttributes,"error","audit_failed");
public String auditFtpCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = fileTransferCfgService.getFtpCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
fileTransferCfgService.auditFtpCfg(entity,isAudit);
addMessage(redirectAttributes,"success","audit_success");
} catch ( Exception e) {
if(e instanceof MaatConvertException) {
e.printStackTrace();
logger.error("ftp配置下发失败"+e.getMessage());;
addMessage(redirectAttributes,"error","request_service_failed");
}else {
e.printStackTrace();
logger.error("ftp配置下发失败",e);
addMessage(redirectAttributes,"error","audit_failed");
}
}
}
}else {
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"a");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return ftpList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/ntc/fileTransfer/ftpList?functionId="+functionId;
}
@@ -276,8 +303,14 @@ public class FileTransferCfgController extends BaseController{
@RequestMapping(value = {"auditFileDigestCfg"})
@RequiresPermissions(value={"fileTransfer:fileDigest:confirm"})
public String auditFileDigestCfg(Integer isAudit,Integer isValid
,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
public String auditFileDigestCfg(Model model,@ModelAttribute("cfg")FileDigestCfg cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
String[] idArray = ids.split(",");
Date auditTime=new Date();
@@ -298,6 +331,23 @@ public class FileTransferCfgController extends BaseController{
}
}
}else {
Page<FileDigestCfg> searchPage=new Page<FileDigestCfg>(request,response,"a");
Page<FileDigestCfg> auditPage=new Page<FileDigestCfg>(request,response,"a");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return fileDigestList(model, cfg, request, response, redirectAttributes);
}
return "redirect:" + adminPath +"/ntc/fileTransfer/fileDigestList?functionId="+functionId;
}
@@ -450,30 +500,56 @@ public class FileTransferCfgController extends BaseController{
@RequestMapping(value = {"auditP2pCfg"})
@RequiresPermissions(value={"fileTransfer:p2p:confirm"})
public String auditP2pCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = fileTransferCfgService.getP2pCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
fileTransferCfgService.auditP2pCfg(entity,isAudit);
} catch ( Exception e) {
e.printStackTrace();
logger.info("p2p配置下发失败"+e.getMessage());
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else if(e instanceof CallExternalProceduresException) {
addMessage(redirectAttributes,"error","call_external_procedures_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
public String auditP2pCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = fileTransferCfgService.getP2pCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
fileTransferCfgService.auditP2pCfg(entity,isAudit);
} catch ( Exception e) {
e.printStackTrace();
logger.info("p2p配置下发失败"+e.getMessage());
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else if(e instanceof CallExternalProceduresException) {
addMessage(redirectAttributes,"error","call_external_procedures_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
}
}
}
}else {
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"a");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return p2pList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/ntc/fileTransfer/p2pList?functionId="+functionId;
}

View File

@@ -12,6 +12,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
@@ -45,6 +46,7 @@ import com.nis.domain.configuration.template.SnatTemplate;
import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.domain.specific.ConfigGroupInfo;
import com.nis.exceptions.MaatConvertException;
import com.nis.index.Configurations;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
@@ -126,28 +128,67 @@ public class IpController extends BaseController{
ipCfgService.updateIpCfgValid(isValid, ids, functionId);
return "redirect:" + adminPath +"/ntc/iplist/list?functionId="+functionId;
}
/**
*
* @param model
* @param cfg
* @param auditType 审核类型 批量审核时使用1批量生效0批量失效
* @param isAudit
* @param isValid
* @param ids
* @param functionId
* @param request
* @param response
* @param redirectAttributes
* @return
*/
@RequestMapping(value = {"audit"})
@RequiresPermissions("iplist:confirm")
public String audit(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = ipCfgService.getIpPortCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
if(StringUtils.isNoneBlank(entity.getUserRegion4())) {
ipCfgService.auditAsnCfg(entity, isAudit);
}else {
ipCfgService.auditIpCfg(entity,isAudit);
public String audit(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg
,Integer isAudit
,Integer isValid
,String ids
,Integer functionId
, HttpServletRequest request
,HttpServletResponse response
,RedirectAttributes redirectAttributes) {
//选中配置审核
if(!StringUtil.isEmpty(ids)) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = ipCfgService.getIpPortCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
if(StringUtils.isNoneBlank(entity.getUserRegion4())) {
ipCfgService.auditAsnCfg(entity, isAudit);
}else {
ipCfgService.auditIpCfg(entity,isAudit);
}
} catch (Exception e) {
logger.info("ip配置下发失败"+e.getMessage());
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
}
}else{//条件下所有配置审核
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"a");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.info("ip配置下发失败:"+e.getMessage());
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
@@ -155,7 +196,10 @@ public class IpController extends BaseController{
}
}
return list(model, cfg, request, response);
}
return "redirect:" + adminPath +"/ntc/iplist/list?functionId="+functionId;
}
/*//ip配置导入

View File

@@ -15,6 +15,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.FileCopyUtils;
@@ -37,6 +38,7 @@ import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
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;
@@ -164,30 +166,56 @@ public class MailCfgController extends BaseController{
}
@RequestMapping(value = {"auditMailCfg"})
@RequiresPermissions(value={"mail:confirm"})
public String auditMailCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = mailCfgService.getMailCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
mailCfgService.auditMailCfg(entity,isAudit);
} catch ( Exception e) {
e.printStackTrace();
logger.error("mail配置下发失败"+e.getMessage());
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else if(e instanceof CallExternalProceduresException) {
addMessage(redirectAttributes,"error","call_external_procedures_failed");
}else {
addMessage(redirectAttributes,"error","save_failed");
public String auditMailCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = mailCfgService.getMailCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
mailCfgService.auditMailCfg(entity,isAudit);
} catch ( Exception e) {
e.printStackTrace();
logger.error("mail配置下发失败"+e.getMessage());
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else if(e instanceof CallExternalProceduresException) {
addMessage(redirectAttributes,"error","call_external_procedures_failed");
}else {
addMessage(redirectAttributes,"error","save_failed");
}
}
}
}else {
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"a");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return mailList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/ntc/mail/mailList?functionId="+functionId;
}

View File

@@ -208,25 +208,52 @@ public class WebsiteController extends BaseController{
}
@RequestMapping(value = {"auditHttpCfg"})
@RequiresPermissions(value={"website:http:confirm"})
public String auditHttpCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = websiteCfgService.getHttpCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
websiteCfgService.auditHttpCfg(entity,isAudit);
} catch (MaatConvertException e) {
logger.error("http配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error", "request_service_failed");
}catch (Exception e) {
logger.error("http配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error", "audit_failed");
public String auditHttpCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = websiteCfgService.getHttpCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
websiteCfgService.auditHttpCfg(entity,isAudit);
} catch (MaatConvertException e) {
logger.error("http配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error", "request_service_failed");
}catch (Exception e) {
logger.error("http配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error", "audit_failed");
}
}
}else{//条件下所有配置审核
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"a");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return httpList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/ntc/website/httpList?functionId="+functionId;
}
@@ -303,30 +330,57 @@ public class WebsiteController extends BaseController{
}
@RequestMapping(value = {"auditSslCfg"})
@RequiresPermissions(value={"website:ssl:confirm"})
public String auditSslCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = websiteCfgService.getSslCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
websiteCfgService.auditSslCfg(entity,isAudit);
} catch ( Exception e) {
e.printStackTrace();
logger.error("ssl配置下发失败"+e.getMessage());
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else if(e instanceof CallExternalProceduresException) {
addMessage(redirectAttributes,"error","call_external_procedures_failed");
}else {
addMessage(redirectAttributes,"error","save_failed");
public String auditSslCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,
Integer isAudit,
Integer isValid,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletRequest request,
HttpServletResponse response) {
if(!StringUtil.isEmpty(ids)) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = websiteCfgService.getSslCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
websiteCfgService.auditSslCfg(entity,isAudit);
} catch ( Exception e) {
e.printStackTrace();
logger.error("ssl配置下发失败"+e.getMessage());
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else if(e instanceof CallExternalProceduresException) {
addMessage(redirectAttributes,"error","call_external_procedures_failed");
}else {
addMessage(redirectAttributes,"error","save_failed");
}
}
}
}else{//条件下所有配置审核
try {
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"a");
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return sslList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/ntc/website/sslList?functionId="+functionId;
}
@@ -396,27 +450,54 @@ public class WebsiteController extends BaseController{
}
@RequestMapping(value = {"auditDnsCfg"})
@RequiresPermissions(value={"website:dns:confirm"})
public String auditDnsCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = websiteCfgService.getDnsCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
websiteCfgService.auditDnsCfg(entity,isAudit);
} catch (MaatConvertException e) {
e.printStackTrace();
logger.info("dns配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error", "request_service_failed");
}catch (Exception e) {
e.printStackTrace();
logger.info("dns配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error", "audit_failed");
public String auditDnsCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,
Integer isAudit,
Integer isValid,
String ids,
Integer functionId,
HttpServletRequest request,
HttpServletResponse response,
RedirectAttributes redirectAttributes) {
if(!StringUtil.isEmpty(ids)) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = websiteCfgService.getDnsCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
websiteCfgService.auditDnsCfg(entity,isAudit);
} catch (MaatConvertException e) {
e.printStackTrace();
logger.info("dns配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error", "request_service_failed");
}catch (Exception e) {
e.printStackTrace();
logger.info("dns配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error", "audit_failed");
}
}
}else{//条件下所有配置审核
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"a");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return dnsList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/ntc/website/dnsList?functionId="+functionId;
}
@@ -842,5 +923,4 @@ public class WebsiteController extends BaseController{
}
//return "redirect:" + adminPath +"/ntc/website/httpList?functionId="+entity.getFunctionId();
}
}

View File

@@ -96,28 +96,56 @@ public class WhiteListController extends CommonController{
}
@RequestMapping(value = {"ip/audit"})
@RequiresPermissions("whitelist:ip:confirm")
public String auditIp(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = ipCfgService.getIpPortCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
ipCfgService.auditIpCfg(entity,isAudit);
addMessage(redirectAttributes,"success", "audit_success");
} catch (MaatConvertException e) {
logger.info("ip配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error", "request_service_failed");
}catch (Exception e) {
logger.info("ip配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error", "audit_failed");
public String auditIp(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request
) {
if(!StringUtil.isEmpty(ids)){
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = ipCfgService.getIpPortCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
ipCfgService.auditIpCfg(entity,isAudit);
addMessage(redirectAttributes,"success", "audit_success");
} catch (MaatConvertException e) {
logger.info("ip配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error", "request_service_failed");
}catch (Exception e) {
logger.info("ip配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error", "audit_failed");
}
}
}else{
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"a");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return ipList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/ntc/whitelist/ip/list?functionId="+entity.getFunctionId();
return "redirect:" + adminPath +"/ntc/whitelist/ip/list?functionId="+functionId;
}
@RequestMapping(value = {"updateIpValid"})
@RequiresPermissions(value={"whitelist:ip:config"})
@@ -230,27 +258,54 @@ public class WhiteListController extends CommonController{
@RequestMapping(value = {"domain/audit"})
@RequiresPermissions("whitelist:domain:confirm")
public String auditDomain(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = domainService.getDomainCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
domainService.auditDomainCfg(entity,isAudit);
} catch (MaatConvertException e) {
e.printStackTrace();
logger.error("domain配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error","request_service_failed");
}catch (Exception e) {
e.printStackTrace();
logger.error("domain配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error","audit_failed");
public String auditDomain(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = domainService.getDomainCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
domainService.auditDomainCfg(entity,isAudit);
} catch (MaatConvertException e) {
e.printStackTrace();
logger.error("domain配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error","request_service_failed");
}catch (Exception e) {
e.printStackTrace();
logger.error("domain配置下发失败"+e.getMessage());
addMessage(redirectAttributes,"error","audit_failed");
}
}
}else{//条件下所有配置审核
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"a");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return domainList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/ntc/whitelist/domain/list?functionId="+functionId;
}

View File

@@ -11,6 +11,7 @@ import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -175,27 +176,55 @@ public class CachePolicyController extends BaseController{
}
@RequestMapping(value = {"audit"})
@RequiresPermissions(value={"cache:policy:confirm"})
public String audit(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = cachePolicyService.getCachePolicy(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
cachePolicyService.auditCachePolicy(entity,isAudit);
} catch ( Exception e) {
e.printStackTrace();
logger.info("代理缓存策略下发失败:"+e.getMessage());
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
public String audit(Model model,@ModelAttribute("cfg") CfgIndexInfo cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = cachePolicyService.getCachePolicy(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
cachePolicyService.auditCachePolicy(entity,isAudit);
} catch ( Exception e) {
e.printStackTrace();
logger.info("代理缓存策略下发失败:"+e.getMessage());
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
}
}
}
}else {
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"r");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"r");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return list(model, request, response, cfg);
}
return "redirect:" + adminPath +"/proxy/cache/list?functionId="+functionId;
}

View File

@@ -13,6 +13,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
@@ -223,28 +224,55 @@ public class HttpRedirectPolicyController extends BaseController{
,"control:httpMinit:confirm"
,"control:httpWhitelist:confirm"}
,logical=Logical.OR)
public String audit(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = httpRedirectCfgService.getHttpCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
httpRedirectCfgService.auditHttpCfg(entity,isAudit);
} catch ( Exception e) {
e.printStackTrace();
logger.info("http重定向配置下发失败"+e.getMessage());
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
public String audit(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = httpRedirectCfgService.getHttpCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
httpRedirectCfgService.auditHttpCfg(entity,isAudit);
} catch ( Exception e) {
e.printStackTrace();
logger.info("http重定向配置下发失败"+e.getMessage());
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error","request_service_failed");
}else {
addMessage(redirectAttributes,"error","audit_failed");
}
}
}
}else{//条件下所有配置审核
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"a");
BeanUtils.copyProperties(searchPage, auditPage);
try {
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return list(model, request, response, cfg);
}
}
return "redirect:" + adminPath +"/proxy/control/httpRedirect/httpRedirectList?functionId="+functionId;
}

View File

@@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
@@ -135,27 +136,54 @@ public class InterceptController extends CommonController{
}
@RequestMapping(value = {"auditInterceptIpCfg","auditInterceptDomainCfg","auditInterceptIpPayloadCfg"})
public String auditInterceptIpCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = interceptCfgService.getInterceptCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
public String auditInterceptIpCfg(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)) {
CfgIndexInfo entity = new CfgIndexInfo();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = interceptCfgService.getInterceptCfg(Long.parseLong(id),null);
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
interceptCfgService.auditInterceptIpCfg(entity,isAudit);
addMessage(redirectAttributes,"success","audit_success");
} catch ( Exception e) {
logger.error("intercept ip audit failed",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
}
}else{//条件下所有配置审核
Page<CfgIndexInfo> searchPage=new Page<CfgIndexInfo>(request,response,"a");
Page<CfgIndexInfo> auditPage=new Page<CfgIndexInfo>(request,response,"a");
BeanUtils.copyProperties(searchPage, auditPage);
try {
interceptCfgService.auditInterceptIpCfg(entity,isAudit);
addMessage(redirectAttributes,"success","audit_success");
} catch ( Exception e) {
logger.error("intercept ip audit failed",e);
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return ipList(model, cfg, request, response);
}
return "redirect:" + adminPath +"/proxy/intercept/ip/list?functionId="+functionId;
}

View File

@@ -25,6 +25,7 @@ import javax.net.ssl.TrustManagerFactory;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -340,8 +341,14 @@ public class PxyObjKeyringController extends BaseController {
@RequestMapping(value = {"/audit"})
@RequiresPermissions(value={"proxy:intercept:confirm"})
public String audit(Integer isAudit,Integer isValid,String ids,Integer functionId,
RedirectAttributes redirectAttributes) {
public String audit(Model model,@ModelAttribute("cfg")PxyObjKeyring cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
String[] idArray = ids.split(",");
Date auditTime=new Date();
@@ -357,6 +364,24 @@ public class PxyObjKeyringController extends BaseController {
}
}
}else {
Page<PxyObjKeyring> searchPage=new Page<PxyObjKeyring>(request,response,"r");
Page<PxyObjKeyring> auditPage=new Page<PxyObjKeyring>(request,response,"r");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return list(model, request, response, cfg,redirectAttributes);
}
return "redirect:" + adminPath +"/proxy/intercept/strateagy/list?functionId="+functionId;
}
@@ -814,8 +839,14 @@ public class PxyObjKeyringController extends BaseController {
@RequestMapping(value = {"/trustedCertAudit"})
@RequiresPermissions(value={"proxy:trustedCert:confirm"})
public String trustedCertAudit(Integer isAudit,Integer isValid,String ids,Integer functionId,
RedirectAttributes redirectAttributes) {
public String trustedCertAudit(Model model,@ModelAttribute("cfg")PxyObjTrustedCaCert cfg,
Integer isValid,
Integer isAudit,
String ids,
Integer functionId,
RedirectAttributes redirectAttributes,
HttpServletResponse response,
HttpServletRequest request) {
if(!StringUtil.isEmpty(ids)){
String[] idArray = ids.split(",");
Date auditTime=new Date();
@@ -833,6 +864,24 @@ public class PxyObjKeyringController extends BaseController {
}
}
}else {
Page<PxyObjTrustedCaCert> searchPage=new Page<PxyObjTrustedCaCert>(request,response,"r");
Page<PxyObjTrustedCaCert> auditPage=new Page<PxyObjTrustedCaCert>(request,response,"r");
try {
BeanUtils.copyProperties(searchPage, auditPage);
auditAll(auditPage,isValid , cfg);
} catch (Exception e) {
logger.error("配置下发失败:",e);
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error", "request_service_failed");
}else {
addMessage(redirectAttributes,"error", "audit_failed");
}
}
return trustedCertList(model, request, response, cfg, redirectAttributes);
}
return "redirect:" + adminPath +"/proxy/intercept/strateagy/trustedCertList?functionId="+functionId;
}

View File

@@ -111,7 +111,7 @@
<result column="spec_service_id" property="specServiceId" jdbcType="INTEGER" />
<result column="app_code" property="appCode" jdbcType="INTEGER" />
<result column="behav_code" property="behavCode" jdbcType="INTEGER" />
<result column="domain" property="domain" jdbcType="VARCHAR" />
<result column="domain" property="cfgKeywords" jdbcType="VARCHAR" />
<result column="cfg_desc" property="cfgDesc" jdbcType="VARCHAR" />
<result column="action" property="action" jdbcType="INTEGER" />
<result column="is_valid" property="isValid" jdbcType="INTEGER" />
@@ -142,7 +142,7 @@
<result column="spec_service_id" property="specServiceId" jdbcType="INTEGER" />
<result column="topic_id" property="topicId" jdbcType="BIGINT" />
<result column="website_service_id" property="websiteServiceId" jdbcType="BIGINT" />
<result column="domain" property="domain" jdbcType="VARCHAR" />
<result column="domain" property="cfgKeywords" jdbcType="VARCHAR" />
<result column="cfg_desc" property="cfgDesc" jdbcType="VARCHAR" />
<result column="action" property="action" jdbcType="INTEGER" />
<result column="is_valid" property="isValid" jdbcType="INTEGER" />
@@ -1091,8 +1091,8 @@
<if test="cfgType != null and cfgType != ''">
AND r.CFG_TYPE like concat(concat('%',#{cfgType,jdbcType=VARCHAR}),'%')
</if>
<if test="domain != null and domain != ''">
AND r.DOMAIN like concat(concat('%',#{domain,jdbcType=VARCHAR}),'%')
<if test="cfgKeywords != null and cfgKeywords != ''">
AND r.DOMAIN like concat(concat('%',#{cfgKeywords,jdbcType=VARCHAR}),'%')
</if>
<if test="action != null">
AND r.ACTION=#{action,jdbcType=INTEGER}
@@ -1192,8 +1192,8 @@
<if test="cfgType != null and cfgType != ''">
AND r.CFG_TYPE like concat(concat('%',#{cfgType,jdbcType=VARCHAR}),'%')
</if>
<if test="domain != null and domain != ''">
AND r.DOMAIN like concat(concat('%',#{domain,jdbcType=VARCHAR}),'%')
<if test="cfgKeywords != null and cfgKeywords != ''">
AND r.DOMAIN like concat(concat('%',#{cfgKeywords,jdbcType=VARCHAR}),'%')
</if>
<if test="action != null">
AND r.ACTION=#{action,jdbcType=INTEGER}
@@ -1815,7 +1815,7 @@
DOMAIN,EXPR_TYPE,MATCH_METHOD,IS_HEXBIN,DO_LOG
)values (
<include refid="AppCommonCfg_Value_List" />,
#{domain,jdbcType=VARCHAR},#{exprType,jdbcType=INTEGER},#{matchMethod,jdbcType=INTEGER},
#{cfgKeywords,jdbcType=VARCHAR},#{exprType,jdbcType=INTEGER},#{matchMethod,jdbcType=INTEGER},
#{isHexbin,jdbcType=INTEGER},#{doLog,jdbcType=INTEGER}
)
</insert>
@@ -1828,7 +1828,7 @@
DOMAIN,EXPR_TYPE,MATCH_METHOD,IS_HEXBIN,DO_LOG
)values (
<include refid="AppCommonCfg_Value_List" />,
#{domain,jdbcType=VARCHAR},#{exprType,jdbcType=INTEGER},#{matchMethod,jdbcType=INTEGER},
#{cfgKeywords,jdbcType=VARCHAR},#{exprType,jdbcType=INTEGER},#{matchMethod,jdbcType=INTEGER},
#{isHexbin,jdbcType=INTEGER},#{doLog,jdbcType=INTEGER}
)
</insert>
@@ -1845,7 +1845,7 @@
DOMAIN,EXPR_TYPE,MATCH_METHOD,IS_HEXBIN,DO_LOG
)values (
<include refid="AppTopicCommonCfg_Value_List" />,
#{domain,jdbcType=VARCHAR},#{exprType,jdbcType=INTEGER},#{matchMethod,jdbcType=INTEGER},
#{cfgKeywords,jdbcType=VARCHAR},#{exprType,jdbcType=INTEGER},#{matchMethod,jdbcType=INTEGER},
#{isHexbin,jdbcType=INTEGER},#{doLog,jdbcType=INTEGER}
)
</insert>
@@ -2389,8 +2389,8 @@
<if test="cfgType != null and cfgType != ''">
CFG_TYPE =#{cfgType,jdbcType=VARCHAR},
</if>
<if test="domain != null and domain != ''">
domain=#{domain,jdbcType=VARCHAR},
<if test="cfgKeywords != null and cfgKeywords != ''">
domain=#{cfgKeywords,jdbcType=VARCHAR},
</if>
<if test="exprType != null">
expr_type=#{exprType,jdbcType=INTEGER},
@@ -2488,8 +2488,8 @@
<if test="cfgType != null and cfgType != ''">
CFG_TYPE =#{cfgType,jdbcType=VARCHAR},
</if>
<if test="domain != null and domain != ''">
domain=#{domain,jdbcType=VARCHAR},
<if test="cfgKeywords != null and cfgKeywords != ''">
domain=#{cfgKeywords,jdbcType=VARCHAR},
</if>
<if test="exprType != null">
expr_type=#{exprType,jdbcType=INTEGER},

View File

@@ -1313,7 +1313,7 @@ public abstract class BaseService {
}
// 拦截策略
public ProxyObjKeyring convertCallBackProxyObjKeyring(PxyObjKeyring cfg) {
public static ProxyObjKeyring convertCallBackProxyObjKeyring(PxyObjKeyring cfg) {
ProxyObjKeyring proxyObjKeyring = new ProxyObjKeyring();
proxyObjKeyring.setId(Long.valueOf(cfg.getCompileId()));
proxyObjKeyring.setCfgId(cfg.getCompileId());
@@ -1332,7 +1332,7 @@ public abstract class BaseService {
}
// 可信证书
public List<ProxyObjTrustedCa> convertCallBackProxyObjTrustedCa(PxyObjTrustedCaCert cfgCert,
public static List<ProxyObjTrustedCa> convertCallBackProxyObjTrustedCa(PxyObjTrustedCaCert cfgCert,
PxyObjTrustedCaCrl cfgCrl) {
List<ProxyObjTrustedCa> proxyObjTrustedCas = new ArrayList<>();
if (cfgCert != null && !StringUtil.isEmpty(cfgCert.getCompileId())) {
@@ -1364,13 +1364,13 @@ public abstract class BaseService {
}
// ip转换为callback用ip
public NtcDnsResStrategy convertCallBackDnsResStrategy(DnsResStrategy cfg) {
public static NtcDnsResStrategy convertCallBackDnsResStrategy(DnsResStrategy cfg) {
NtcDnsResStrategy resStrategy = new NtcDnsResStrategy();
resStrategy.init();
resStrategy.setId(Long.valueOf(cfg.getCompileId()));
resStrategy.setCfgId(cfg.getCompileId());
resStrategy.setReqStrateId(cfg.getCfgId());
resStrategy.setStrateName(this.keywordsEscape(cfg.getCfgDesc()));
resStrategy.setStrateName(keywordsEscape(cfg.getCfgDesc()));
resStrategy.setAction(cfg.getAction());
resStrategy.setService(cfg.getServiceId());
resStrategy.setResGroup1Id(cfg.getResGroup1Id());

View File

@@ -1354,7 +1354,7 @@ public class AppCfgService extends BaseService {
entity.setTableName(AppDomainCfg.getTablename());
appCfgDao.auditCfg(entity);
if (isAudit == 1) {
entity.setCfgKeywords(entity.getDomain());
entity.setCfgKeywords(entity.getCfgKeywords());
List<AppDomainCfg> list = new ArrayList();
list.add(entity);
Map<String, List> map = cfgConvert(strRegionList, list, 2, entity, groupRelationList);
@@ -1391,7 +1391,7 @@ public class AppCfgService extends BaseService {
// 设置APP自定义域
String userRegion = "APP_ID=" + entity.getAppCode() + Constants.USER_REGION_SPLIT + "DOMAIN_ID="
+ entity.getCompileId() + Constants.USER_REGION_SPLIT + "DOMAIN_STR="
+ keywordsEscape(entity.getDomain());
+ keywordsEscape(entity.getCfgKeywords());
maatCfg.setUserRegion(userRegion);
configCompileList.add(maatCfg);
maatBean.setConfigCompileList(configCompileList);
@@ -1440,7 +1440,7 @@ public class AppCfgService extends BaseService {
appCfgDao.auditCfg(entity);
// 域名为关键字
if (isAudit == 1) {
entity.setCfgKeywords(entity.getDomain());
entity.setCfgKeywords(entity.getCfgKeywords());
List<AppTopicDomainCfg> list = new ArrayList();
list.add(entity);
Map<String, List> map = cfgConvert(strRegionList, list, 2, entity, groupRelationList);
@@ -1476,7 +1476,7 @@ public class AppCfgService extends BaseService {
maatCfg.setIsValid(entity.getIsValid());
// 设置APP自定义域
String domain = entity.getDomain();
String domain = entity.getCfgKeywords();
WebsiteDomainTopic websiteDomainTopic = new WebsiteDomainTopic();
websiteDomainTopic.setDomain(domain);
//查询domainId

View File

@@ -0,0 +1,179 @@
package com.nis.web.service.configuration;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.google.common.collect.Lists;
import com.nis.domain.Page;
import com.nis.domain.basics.AsnIpCfg;
import com.nis.domain.configuration.AppPolicyCfg;
import com.nis.domain.configuration.AreaIpCfg;
import com.nis.domain.configuration.AvFileSampleCfg;
import com.nis.domain.configuration.BaseCfg;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.CommonStringCfg;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.DnsIpCfg;
import com.nis.domain.configuration.DnsResStrategy;
import com.nis.domain.configuration.FileDigestCfg;
import com.nis.domain.configuration.HttpBodyCfg;
import com.nis.domain.configuration.HttpReqHeadCfg;
import com.nis.domain.configuration.HttpResHeadCfg;
import com.nis.domain.configuration.HttpUrlCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.configuration.PxyObjKeyring;
import com.nis.domain.configuration.PxyObjTrustedCaCert;
import com.nis.domain.configuration.PxyObjTrustedCaCrl;
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.DateUtils;
import com.nis.util.FileUtils;
import com.nis.util.StringUtil;
import com.nis.web.dao.configuration.AreaIpCfgDao;
import com.nis.web.dao.configuration.CommonPolicyDao;
import com.nis.web.dao.configuration.ConfigSynchronizationDao;
import com.nis.web.dao.configuration.StringCfgDao;
import com.nis.web.dao.configuration.WebsiteCfgDao;
import com.nis.web.security.UserUtils;
import com.nis.web.service.BaseService;
import com.nis.web.service.CrudService;
@Service
public class CommonPolicyService extends CrudService<WebsiteCfgDao, CfgIndexInfo> {
@Autowired
protected CommonPolicyDao commonPolicyDao;
@Autowired
protected ConfigSynchronizationDao synchronizationDao;
/**
* maat配置批量失效
* @param cfgList
* @param page
* @param entity
* @param list
* @param hasData
* @return
* @throws NoSuchFieldException
* @throws SecurityException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
public boolean auditNtcMaatData(List<Map<String,Object>> cfgList,
Page page,
BaseCfg entity,
List<BaseCfg> list,
boolean hasData)throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
ToMaatBean maatBean;
MaatCfg maatCfg;
List<MaatCfg> configCompileList;
maatBean = new ToMaatBean();
configCompileList = new ArrayList();
List<Integer> compileIds = new ArrayList();
for(BaseCfg cfg:list){
compileIds.add(cfg.getCompileId());
}
if(!StringUtil.isEmpty(compileIds) && !StringUtil.isEmpty(entity.getTableName())) {
commonPolicyDao.auditCfgBatch( entity.getTableName(), entity,compileIds,null);
}
if(cfgList!=null){
for(Map<String,Object> m:cfgList){
String tableName = m.get("tableName").toString();
commonPolicyDao.auditCfgBatch( tableName, entity,compileIds,null);
}
}
for(BaseCfg cfg:list){
maatCfg = new MaatCfg();
maatCfg.setCompileId(cfg.getCompileId());
maatCfg.setServiceId(cfg.getServiceId());
maatCfg.setIsValid(0);//无效
configCompileList.add(maatCfg);
}
page.setList(list);
if(page.isLastPage()){
hasData = false;
}
if(!StringUtil.isEmpty(configCompileList.size())){
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("配置下发配置参数:"+json);
//调用服务接口下发配置
ToMaatResult result = ConfigServiceUtil.put(json,1);
logger.info("配置取消配置响应信息:"+result.getMsg());
}
return hasData;
}
public List<IpPortCfg> getIpDropList(String tabName,List compileIds){
return synchronizationDao.getIpDropList(tabName, compileIds);
}
public List<IpPortCfg> getIpPortList(IpPortCfg entity){
return synchronizationDao.getIpPortListByService(entity);
}
/**
* 回调类配置下发
* @param className
* @param page
* @param entity
* @param hasData
* @param isUpdateCfg
* @throws ClassNotFoundException
*/
public void auditCallBackData(List auditList,List compileIds,List ids,BaseCfg entity){
if(!StringUtil.isEmpty(compileIds) && !StringUtil.isEmpty(entity.getTableName())) {
commonPolicyDao.auditCfgBatch( "cfg_index_info", entity,compileIds,null);
}
if(!StringUtil.isEmpty(ids) && !StringUtil.isEmpty(entity.getTableName())) {
commonPolicyDao.auditCfgBatch( entity.getTableName(), entity,ids,null);
}
if(entity.getIsAudit()==1){
//调用服务接口下发配置数据
String json=gsonToJson(auditList);
logger.info("批量下发配置参数:"+json);
//调用服务接口下发配置
ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json);
logger.info("批量下发响应信息:"+result.getMsg());
}else if(entity.getIsAudit()==3){
//调用服务接口取消配置
String json=gsonToJson(auditList);
logger.info("批量下发配置参数:"+json);
//调用服务接口下发配置
ToMaatResult result = ConfigServiceUtil.put(json,2);
logger.info("批量响应信息:"+result.getMsg());
}
}
}

View File

@@ -1303,18 +1303,24 @@ public class ConfigSynchronizationService extends BaseService{
ipCfg.setRegionId(regionIds.get(0));
regionIds.remove(0);
ipCfg.setGroupId(groupIds.get(0));
ipCfg.setIsValid(entity.getIsValid());
ipCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
groupIds.remove(0);
list1.add(ipCfg);
}else if(cfgType==2){
strCfg.setRegionId(regionIds.get(0));
regionIds.remove(0);
strCfg.setGroupId(groupIds.get(0));
strCfg.setIsValid(entity.getIsValid());
strCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
groupIds.remove(0);
list1.add(strCfg);
}else if(cfgType==3){
complexStrCfg.setRegionId(regionIds.get(0));
regionIds.remove(0);
complexStrCfg.setGroupId(groupIds.get(0));
complexStrCfg.setIsValid(entity.getIsValid());
complexStrCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
groupIds.remove(0);
list1.add(complexStrCfg);
}

View File

@@ -432,7 +432,11 @@ public class FileTransferCfgService extends CrudService<FileTransferCfgDao,CfgIn
entity.setRawLen(result.getData().getRawLen());
entity.setDigest(result.getData().getDigest());
entity.setFileUrl(result.getData().getAccessUrl());
if(!StringUtil.isEmpty(entity.getCfdsLevel()) && entity.getCfdsLevel() > 0) {
int cfdsLevel=entity.getCfdsLevel();
cfdsLevel= cfdsLevel > 10 ? (cfdsLevel/10):cfdsLevel;
entity.setCfdsLevel(cfdsLevel);
}
mailCfgDao.saveMailFileDigestCfg(entity);
// 保存SubscribeId域配置信息
@@ -454,7 +458,11 @@ public class FileTransferCfgService extends CrudService<FileTransferCfgDao,CfgIn
}else{
if(!StringUtil.isEmpty(entity.getCfdsLevel()) && entity.getCfdsLevel() > 0) {
int cfdsLevel=entity.getCfdsLevel();
cfdsLevel= cfdsLevel > 10 ? (cfdsLevel/10):cfdsLevel;
entity.setCfdsLevel(cfdsLevel);
}
entity.setEditorId(entity.getCurrentUser().getId());
entity.setEditTime(new Date());
if(result.getData() !=null ) {
@@ -584,13 +592,6 @@ public class FileTransferCfgService extends CrudService<FileTransferCfgDao,CfgIn
Map<String,List> map = cfgConvert(digestRegionList,list,5,entity,groupRelationList);
groupRelationList=map.get("groupList");
digestRegionList=map.get("dstList");
if(!StringUtil.isEmpty(digestRegionList)){
for (DigestCfg digest : digestRegionList) {
if(!StringUtil.isEmpty(digest.getCfdsLevel()) && (digest.getCfdsLevel() > 1)){
digest.setCfdsLevel((int)(digest.getCfdsLevel()/10));
}
}
}
if(map.get("numRegionList")!=null){
numRegionList.addAll(map.get("numRegionList"));
}
@@ -657,7 +658,7 @@ public class FileTransferCfgService extends CrudService<FileTransferCfgDao,CfgIn
public FileDigestCfg getFileDigestSubIdCfg(Long cfgId,Integer compileId) {
FileDigestCfg entity = fileTransferCfgDao.getFileDigest(cfgId,compileId);
if(entity.getCompileId()!=null){
if(entity != null && entity.getCompileId()!=null){
NtcSubscribeIdCfg ntcSubscribeIdCfg = new NtcSubscribeIdCfg();
ntcSubscribeIdCfg.setCompileId(entity.getCompileId());
List<NtcSubscribeIdCfg> ntcList = stringCfgDao.findSubscribeIdCfgList(ntcSubscribeIdCfg);

View File

@@ -203,7 +203,7 @@ operator=\u041E\u043F\u0435\u0440\u0430\u0442\u043E\u0440
content=\u0421\u043E\u0434\u0435\u0440\u0436\u0430\u043D\u0438\u0435
remarks=\u0417\u0430\u043C\u0435\u0447\u0430\u043D\u0438\u044F
operation=\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u044F
submit=\u041F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435
submit=\u041F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044C
cancel=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C
begin_date=\u0412\u0440\u0435\u043C\u044F \u043D\u0430\u0447\u0430\u043B\u0430
end_date=\u0412\u0440\u0435\u043C\u044F \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F
@@ -220,7 +220,7 @@ export_confirm_message=\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u0
fill_loginName=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043B\u043E\u0433\u0438\u043D
fill_loginPassWord=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043F\u0430\u0440\u043E\u043B\u044C
loginName_error=\u041B\u043E\u0433\u0438\u043D \u0438\u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u044C \u043D\u0435\u0432\u0435\u0440\u043D\u044B, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437.
system_error=\u0412 \u0441\u0438\u0441\u0442\u0435\u043C\u0435 \u0432\u043E\u0437\u043D\u0438\u043A\u043B\u0430 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043F\u043E\u0437\u0436\u0435\!
system_error=\u0412 \u0441\u0438\u0441\u0442\u0435\u043C\u0435 \u0432\u043E\u0437\u043D\u0438\u043A\u043B\u0430 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430, \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 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435
save_failed=\u041D\u0435\u0443\u0434\u0430\u0447\u043D\u043E\u0435 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435
update_success=\u041D\u0435\u0443\u0441\u043F\u0435\u0448\u043D\u043E\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435
@@ -231,7 +231,7 @@ delete_failed_admin=\u041D\u0435\u0443\u0434\u0430\u0447\u043D\u043E\u0435 \u044
audit_success=\u0423\u0441\u043F\u0435\u0448\u043D\u043E\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435
audit_failed=\u041D\u0435\u0443\u0434\u0430\u0447\u043D\u043E\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435
turning_page=\u041F\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044F URL
login_timeout=\u041D\u0435\u0442 \u043B\u043E\u0433\u0438\u043D\u0430 \u0438\u043B\u0438 \u0442\u0430\u0439\u043C\u0430\u0443\u0442 \u0432\u0445\u043E\u0434\u0430, \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 \u043B\u043E\u0433\u0438\u043D\u0430 \u0438\u043B\u0438 \u0442\u0430\u0439\u043C\u0430\u0443\u0442 \u0432\u0445\u043E\u0434\u0430, \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 \u043A\u043E\u0434 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F
enter_captcha=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043A\u043E\u0434 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F
input=\u0412\u0432\u0435\u0434\u0438\u0442\u0435
@@ -241,17 +241,17 @@ filter=\u0424\u0438\u043B\u044C\u0442\u0440
to=\u0414\u043E
reset=\u0421\u0431\u043E\u0440\u0441
info=\u0418\u043D\u0444\u043E.
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 \u0447\u0430\u0441\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0445\!
one_more=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0445 \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 \u0447\u0430\u0441\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0445!
one_more=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0445 \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 \u043F\u043E\u043B\u044F \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432
maxlength_64=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 64 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\!
maxlength_128=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 128 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\!
maxlength_256=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 256 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\!
maxlength_512=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 512 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\!
maxlength_4000=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 4000 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\!
maxlength_64=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 64 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432!
maxlength_128=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 128 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432!
maxlength_256=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 256 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432!
maxlength_512=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 512 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432!
maxlength_4000=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 4000 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432!
ok=OK
clear=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C
close=\u0417\u0430\u043A\u0440\u044B\u0442\u044C
@@ -266,7 +266,7 @@ sendind_org=\u041E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u044F \
no_node=\u041D\u0435\u043B\u044C\u0437\u044F \u0432\u044B\u0431\u0440\u0430\u0442\u044C \u0443\u0437\u0435\u043B
select_icon=\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A
nothing=\u041D\u0438\u0447\u0435\u0433\u043E
noneData=\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445\!
noneData=\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445!
all=\u0412\u0441\u0435
act=\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435
block=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435
@@ -333,8 +333,8 @@ block_url=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u04
configuration=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F
direction=\u041D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435
protocol=\u041F\u0440\u043E\u0442\u043E\u043A\u043E\u043B
oneway=\u041E\u0434\u043D\u043E\u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0439
twoway=\u0414\u0432\u0443\u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0439
oneway=\u041E\u0434\u043D\u043E\u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u043E\u0435
twoway=\u0414\u0432\u0443\u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u043E\u0435
arbitrary=\u041B\u044E\u0431\u043E\u0439
basic_config=\u041E\u0441\u043D\u043E\u0432\u043D\u0430\u044F \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F
block_config=\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438
@@ -391,12 +391,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\u0438\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 \u043F\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 \u043B\u0438\u0447\u043D\u043E\u0441\u0442\u044C \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 \u0430\u0443\u0434\u0438\u0442\u043E\u0440\u0430\!
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 \u043B\u0438\u0447\u043D\u043E\u0441\u0442\u044C \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 \u0430\u0443\u0434\u0438\u0442\u043E\u0440\u0430!
name_existed=\u041B\u043E\u0433\u0438\u043D \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442
parent_org=\u0420\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0430\u044F \u043E\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 \u0438\u0441\u0442\u043E\u0440\u0438\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\!
nochange=\u041D\u0435\u0442 \u0438\u0441\u0442\u043E\u0440\u0438\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F!
module_name=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043C\u043E\u0434\u0443\u043B\u044F
dict_mark=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0441\u043B\u043E\u0432\u0430\u0440\u044F
run_state=\u0421\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u0440\u0430\u0431\u043E\u0442\u044B
@@ -410,10 +410,10 @@ edit_record=\u0417\u0430\u043F\u0438\u0441\u044C \u0440\u0435\u0434\u0430\u043A\
edit_record_view=\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0437\u0430\u043F\u0438\u0441\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\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 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\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 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \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 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\!
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 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\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\u0448\u043D\u043E\!
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 \u044D\u043B\u0435\u043C\u0435\u043D\u0442!
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 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\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\u0448\u043D\u043E!
entry=\u0417\u0430\u043F\u0438\u0441\u044C
add_entry=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0437\u0430\u043F\u0438\u0441\u044C
click_add_entry=\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0437\u0430\u043F\u0438\u0441\u0438
@@ -434,13 +434,13 @@ menu=\u041C\u0435\u043D\u044E
parent_menu=\u0420\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0435 \u043C\u0435\u043D\u044E
aim=\u0426\u0435\u043B\u044C
click_menu_turn=\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u043C\u0435\u043D\u044E, \u0447\u0442\u043E\u0431\u044B \u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u043D\u0430 \u044D\u0442\u0443 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443
link_window_info=\u0426\u0435\u043B\u0435\u0432\u043E\u0435 \u043E\u043A\u043D\u043E, \u043E\u0442\u043A\u0440\u044B\u0442\u043E\u043A \u043F\u043E URL-\u0430\u0434\u0440\u0435\u0441\u0443, \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E\: mainframe
link_window_info=\u0426\u0435\u043B\u0435\u0432\u043E\u0435 \u043E\u043A\u043D\u043E, \u043E\u0442\u043A\u0440\u044B\u0442\u043E\u043A \u043F\u043E URL-\u0430\u0434\u0440\u0435\u0441\u0443, \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E: mainframe
is_top_menu=\u041C\u0435\u043D\u044E \u0432\u0435\u0440\u0445\u043D\u0435\u0433\u043E \u0443\u0440\u043E\u0432\u043D\u044F
icon=\u0418\u043A\u043E\u043D\u043A\u0430
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\u0446\u0438\u044F \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F, \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0435 \u0432 \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u043B\u0435\u0440\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440\: @requirespermissions ("\u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F")
control_permission_info=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F, \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0435 \u0432 \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u043B\u0435\u0440\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: @requirespermissions ("\u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F")
role_name=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0440\u043E\u043B\u044F
data_range=\u0414\u0438\u0430\u043F\u0430\u0437\u043E\u043D \u0434\u0430\u043D\u043D\u044B\u0445
allot=\u0420\u0430\u0441\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C
@@ -455,7 +455,7 @@ system_prompt=\u041F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0430 \u0441\u043
old_password=\u0421\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C
new_password=\u041D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C
sure_new_password=\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C
cancel_clear=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043E\u0447\u0438\u0441\u0442\u0438\u0442\u044C\!
cancel_clear=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u043E\u0447\u0438\u0441\u0442\u0438\u0442\u044C!
sure_clear=\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 \u043E\u0447\u0438\u0441\u0442\u043A\u0438
role_unique=\u0418\u043C\u044F \u0440\u043E\u043B\u0438 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442
role_error_info=\u0412\u0432\u043E\u0434 \u043D\u0435\u0432\u0435\u0440\u0435\u043D, \u0441\u043D\u0430\u0447\u0430\u043B\u0430 \u0438\u0441\u043F\u0440\u0430\u0432\u044C\u0442\u0435.
@@ -484,13 +484,13 @@ av_content_ip_control=\u0410\u0443\u0434\u0438\u043E/\u0432\u0438\u0434\u0435\u0
av_picture_ip_control=\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 IP
av_content_url_control=\u0410\u0443\u0434\u0438\u043E \u0438 \u0432\u0438\u0434\u0435\u043E URL
av_picture_url_control=\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 URL
av_voip_control=null
av_voip_ip_control=null
av_voip_account_control=null
av_voip_control=VoIP
av_voip_ip_control=VoIP IP
av_voip_account_control=VoIP \u0430\u043A\u043A\u0430\u0443\u043D\u0442
av_sample_audio_control=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 \u0430\u0443\u0434\u0438\u043E
av_sample_video_control=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 \u0432\u0438\u0434\u0435\u043E
av_sample_picture_control=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F
av_sample_voip_control=null
av_sample_voip_control=\u0413\u043E\u043B\u043E\u0441\u043E\u0432\u043E\u0439 \u043E\u0431\u0440\u0430\u0437\u0435\u0446 VoIP
av_sample_audio_porn_control=\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u0435 \u0430\u0443\u0434\u0438\u043E \u0441\u0446\u0435\u043D\u044B
av_sample_video_porn_control=\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u0435 \u044D\u0440\u043E\u0442\u0438\u043A\u0438
av_sample_control=\u041E\u0431\u0440\u0430\u0437\u0435\u0446
@@ -504,7 +504,7 @@ sample_file=\u041F\u0440\u0438\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430
sample_sign=\u041F\u0440\u0438\u043C\u0435\u0440 \u0437\u043D\u0430\u043A\u0430
off=\u0417\u0430\u043A\u0440\u044B\u0442\u044C
on=\u041E\u0442\u043A\u0440\u044B\u0442\u044C
click_detail=\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 "\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438", \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0441\u043B\u0430\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\u0430\u0445 \u0430\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 "\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438", \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0441\u043B\u0430\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\u0430\u0445 \u0430\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 \u043D\u0430 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0443\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443
show_detail=\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438
hidden_detail=\u0421\u043A\u0440\u044B\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438
@@ -513,8 +513,8 @@ no_permission=\u041E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043
param_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430, \u0441\u0435\u0440\u0432\u0435\u0440 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0430\u043D\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C.
request_service_failed=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u0430
request_error=\u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u0430
av_voip_ip_title=null
av_voip_account_title=null
av_voip_ip_title=VoIP IP
av_voip_account_title=VoIP \u0430\u043A\u043A\u0430\u0443\u043D\u0442
account=\u0410\u043A\u043A\u0430\u0443\u043D\u0442
ip_pattern=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 IP
port_pattern=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 \u043F\u043E\u0440\u0442\u0430
@@ -574,9 +574,9 @@ chooseFile=\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u0430\u0439\u043B
download=\u0428\u0430\u0431\u043B\u043E\u043D \u0441\u043A\u0430\u0447\u0430\u0442\u044C
import_success=\u0423\u0441\u043F\u0435\u0448\u043D\u043E \u0438\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u043B\u0438
import_error=\u0418\u043C\u043F\u043E\u0440\u0442 \u0441 \u043E\u0448\u0438\u0431\u043A\u043E\u0439
import_failed=\u041D\u0435\u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0438\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u043B\u0438\!
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
import_failed=\u041D\u0435\u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0438\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u043B\u0438!
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)
val_src_ip=\u0424\u043E\u0440\u043C\u0430\u0442 \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u0433\u043E IP-\u0430\u0434\u0440\u0435\u0441\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
@@ -743,7 +743,7 @@ not_number=%s \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u04
av_sample_audio=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 \u0430\u0443\u0434\u0438\u043E
av_sample_video=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 \u0432\u0438\u0434\u0435\u043E
av_sample_picture=\u041E\u0431\u0440\u0430\u0437\u0435\u0446 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F
av_sample_voip=null
av_sample_voip=\u0413\u043E\u043B\u043E\u0441\u043E\u0432\u043E\u0439 \u043E\u0431\u0440\u0430\u0437\u0435\u0446 VoIP
av_sample_audio_porn=\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u0435 \u0430\u0443\u0434\u0438\u043E \u0441\u0446\u0435\u043D\u044B
av_sample_video_porn=\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u0435 \u044D\u0440\u043E\u0442\u0438\u043A\u0438
WHITE_LIST_IP=IP
@@ -824,10 +824,10 @@ userregion2=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u
userregion3=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0440\u0435\u0433\u0438\u043E\u043D 3
userregion4=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0440\u0435\u0433\u0438\u043E\u043D 4
userregion5=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0440\u0435\u0433\u0438\u043E\u043D 5
single_file_upload_size_error=\u0420\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430 %s \u0440\u0430\u0432\u0435\u043D %s, \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 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C %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\u0430\u0435\u043C\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 - %s, \u043E\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 \u043A \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0435 - %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 %s \u0440\u0430\u0432\u0435\u043D %s, \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 \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C %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\u0430\u0435\u043C\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 - %s, \u043E\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 \u043A \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0435 - %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!
audio_sample_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043E\u0431\u0440\u0430\u0437\u0446\u043E\u0432 \u0430\u0443\u0434\u0438\u043E
audio_sample_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 \u043E\u0431\u0440\u0430\u0437\u0446\u043E\u0432 \u0430\u0443\u0434\u0438\u043E
video_sample_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043E\u0431\u0440\u0430\u0437\u0446\u043E\u0432 \u0432\u0438\u0434\u0435\u043E
@@ -843,8 +843,8 @@ video_pornography_sample_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\
ip_white_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 \u0431\u0435\u043B\u043E\u0433\u043E \u0441\u043F\u0438\u0441\u043A\u0430 IP-\u0430\u0434\u0440\u0435\u0441\u043E\u0432
ip_white_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0431\u0435\u043B\u043E\u0433\u043E \u0441\u043F\u0438\u0441\u043A\u0430 IP-\u0430\u0434\u0440\u0435\u0441\u043E\u0432
ip_white_whitelist=\u0411\u0435\u043B\u044B\u0439 \u0441\u043F\u0438\u0441\u043E\u043A IP-\u0430\u0434\u0440\u0435\u0441\u0430
av_voip_ip_reject=null
av_voip_ip_monit=null
av_voip_ip_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0438\u0430 VoIP
av_voip_ip_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 \u043C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0438\u0430 VoIP
website_http_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 URL
website_http_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 URL
website_http_whitelist=\u0412\u0435\u0431-\u0441\u0430\u0439\u0442 Http \u0431\u0435\u043B\u043E\u0433\u043E \u0441\u043F\u0438\u0441\u043A\u0430
@@ -937,16 +937,16 @@ dashboard=\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430 \u0442\u0
traffic_chart=\u041E\u0442\u0447\u0435\u0442 \u0442\u0440\u0430\u0444\u0438\u043A\u0430
os_type=\u0422\u0438\u043F \u041E\u0421
browser_type=\u0422\u0438\u043F \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430
traffic_protocol_chart=\u041F\u0440\u043E\u0442\u043E\u043A\u043E\u043B TOP10
traffic_ipactive_chart=\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 IP TOP10
traffic_protocol_chart=\u041F\u0440\u043E\u0442\u043E\u043A\u043E\u043B \u0422\u041E\u041F 10
traffic_ipactive_chart=\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 IP \u0422\u041E\u041F 10
traffic_app_chart=\u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0422\u041E\u041F 10
traffic_ua_list=UA TOP10
traffic_ua_list=UA \u0422\u041E\u041F 10
traffic_ua_chart=UA
ranking=\u0420\u0435\u0439\u0442\u0438\u043D\u0433
os=\u041E\u0421
browser=\u0411\u0440\u0430\u0443\u0437\u0435\u0440
trend=\u0422\u0435\u043D\u0434\u0435\u043D\u0446\u0438\u044F
traffic_website_list=\u0412\u0435\u0431-\u0441\u0430\u0439\u0442 TOP10
traffic_website_list=\u0412\u0435\u0431-\u0441\u0430\u0439\u0442 \u0422\u041E\u041F 10
traffic_website_type_chart=\u0422\u0438\u043F \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430
website=\u0412\u0435\u0431-\u0441\u0430\u0439\u0442
ratelimit_limit=\u041F\u0440\u0435\u0434\u0435\u043B\u044C\u043D\u0430\u044F \u0441\u043A\u043E\u0440\u043E\u0441\u0442\u044C \u0434\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u043E\u0442 0 \u0434\u043E 100
@@ -969,8 +969,8 @@ MM_PIC_IP=\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 IP
MM_PIC_URL=\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 URL
MM_AV_URL=AV URL
INLINE_IP_CB=IP \u0441\u0431\u0440\u043E\u0441
MM_VOIP_IP=null
MM_VOIP_ACCOUNT=null
MM_VOIP_IP=IP VoIP
MM_VOIP_ACCOUNT=\u0410\u043A\u043A\u0430\u0443\u043D\u0442 VoIP
drop_ip=IP \u0441\u0431\u0440\u043E\u0441
loop_ip=\u0426\u0438\u043A\u043B IP
drop_or_loop_ip=IP \u0441\u0431\u0440\u043E\u0441/\u043F\u0435\u0442\u043B\u044F
@@ -988,10 +988,10 @@ tunnel_desc=\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0438\u0434\u0435\
call_external_procedures_failed=\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0432\u044B\u0437\u043E\u0432\u0435 \u0432\u043D\u0435\u0448\u043D\u0438\u0445 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0430\u0445
is_hex=\u0428\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043D\u044B\u0439?
is_case_insenstive=\u0427\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u0435\u043D \u043B\u0438 \u043A \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443
case_senstive=\u0427\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u0435\u043D \u043A \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443
case_insenstive=\u041D\u0435\u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u0435\u043D \u043A \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443
hex=\u0428\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043D\u044B\u0439
not_hex=\u041D\u0435 \u0448\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043D\u044B\u0439
case_senstive=\u0414\u0430
case_insenstive=\u041D\u0435\u0442
hex=\u0414\u0430
not_hex=\u041D\u0435\u0442
p2p_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 P2P
NTC_P2P_IP=IP
NTC_P2P_HASH_BIN=\u041E\u0442\u043C\u0435\u0442\u043A\u0430 \u0444\u0430\u0439\u043B\u043E\u0432
@@ -1077,8 +1077,8 @@ MM_LOGO_DETECTION=\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u
MM_FACE_RECOGNIZATION=\u0420\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u043D\u0438\u0435 \u043B\u0438\u0446
preset=\u0417\u0430\u0434\u0430\u0442\u044C
ip_must_select=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F IP \u0434\u043E\u043B\u0436\u043D\u0430 \u0432\u044B\u0431\u0440\u0430\u0442\u044C
av_voip_account_reject=null
av_voip_account_monit=null
av_voip_account_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0430\u043A\u043A\u0430\u0443\u043D\u0442\u043E\u0432 VoIP
av_voip_account_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 \u0430\u043A\u043A\u0430\u0443\u043D\u0442\u043E\u0432 VoIP
p2p_proto=\u041F\u0440\u043E\u0442\u043E\u043A\u043E\u043B P2P
p2p_file_id=\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430 \u0444\u0430\u0439\u043B\u0430
p2p_keyword=\u041A\u043B\u044E\u0447\u0435\u0432\u043E\u0435 \u0441\u043B\u043E\u0432\u0430 \u043F\u043E\u0438\u0441\u043A\u0430 Emule
@@ -1104,9 +1104,9 @@ APP_SSL=\u041F\u0440\u0438\u0437\u043D\u0430\u043A\u0438 SSL \u043F\u0440\u0438\
APP_IP_RANGE=\u0414\u0438\u0430\u043F\u0430\u0437\u043E\u043D IP \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F
APP_DK=\u041F\u0440\u0438\u0437\u043D\u0430\u043A\u0438 DK \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F
MM_SUBSCRIBE_ID=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u043E\u0434\u043F\u0438\u0441\u0447\u0438\u043A\u0430
mail_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435\: \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 SMTP, POP3, IMAP.
av_content_url_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435\: \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 RTSP,RTMP,MMS.
protocol_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435\: \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 SIP, RTCP, RTP.
mail_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435: \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 SMTP, POP3, IMAP.
av_content_url_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435: \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 RTSP,RTMP,MMS.
protocol_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435: \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 SIP, RTCP, RTP.
snat_multiplex=\u041F\u0443\u043B \u0430\u0434\u0440\u0435\u0441\u043E\u0432 SNAT
dnat_multiplex=\u041F\u0443\u043B \u0430\u0434\u0440\u0435\u0441\u043E\u0432 NAT
asn_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 ASN
@@ -1133,8 +1133,8 @@ message_type=\u0422\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438
as=\u041A\u0410\u041A
route=\u041C\u0430\u0440\u0448\u0440\u0443\u0442
transport_layer_protocol=\u041F\u0440\u043E\u0442\u043E\u043A\u043E\u043B TLS
av_voip_monit=null
av_voip_reject=null
av_voip_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 VoIP
av_voip_reject=VoIP \u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435
label_proto_source=\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u0430
label_behav_source=\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u043F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u044F
label_app_source=\u0420\u0435\u0441\u0443\u0440\u0441 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0439
@@ -1146,7 +1146,7 @@ protocol_identify=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u
MM_FILE_DIGEST=\u0414\u0430\u0439\u0434\u0436\u0435\u0441\u0442 \u0444\u0430\u0439\u043B\u043E\u0432
NTC_ASN_IP=ASN
NTC_STREAMING_MEDIA_URL=URL
NTC_VOIP_ACCOUNT=null
NTC_VOIP_ACCOUNT=\u0410\u043A\u043A\u0430\u0443\u043D\u0442 VoIP
export_failed=\u041E\u0448\u0438\u0431\u043A\u0430 \u044D\u043A\u0441\u043F\u043E\u0440\u0442\u0430
user_manage=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0430\u043A\u043A\u0430\u0443\u043D\u0442\u043E\u043C \u043A\u043B\u0438\u0435\u043D\u0442\u0430
ip_reuse_policy_object=\u041E\u0431\u044A\u0435\u043A\u0442 \u043F\u043E\u043B\u0438\u0442\u0438\u043A\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E\u0433\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F IP
@@ -1154,7 +1154,7 @@ area_group_manage=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \
stream_media_protocol=\u041F\u0440\u043E\u0442\u043E\u043A\u043E\u043B \u043F\u043E\u0442\u043E\u043A\u043E\u0432\u043E\u0433\u043E \u043C\u0443\u043B\u044C\u0442\u0438\u043C\u0435\u0434\u0438\u0430
new_link=\u041D\u043E\u0432\u0430\u044F \u0441\u0441\u044B\u043B\u043A\u0430
active_link=\u0410\u043A\u0442\u0438\u0432\u043D\u0430\u044F \u0441\u0441\u044B\u043B\u043A\u0430
traffic_ipactive_hour_trend=\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 IP TOP10 \u0442\u0435\u043D\u0434\u0435\u043D\u0446\u0438\u044F \u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u043E\u0434\u043D\u043E\u0433\u043E \u0447\u0430\u0441\u0430
traffic_ipactive_hour_trend=\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 IP \u0422\u041E\u041F 10 \u0442\u0435\u043D\u0434\u0435\u043D\u0446\u0438\u044F \u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u043E\u0434\u043D\u043E\u0433\u043E \u0447\u0430\u0441\u0430
traffic_ipactive_hour_max=\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 IP TOP10 \u043C\u0430\u043A\u0441\u0438\u043C\u0443\u043C \u0437\u0430 \u043E\u0434\u0438\u043D \u0447\u0430\u0441
ip_addr=IP
area_id=\u0420\u0435\u0433\u0438\u043E\u043D
@@ -1226,7 +1226,7 @@ cfg_operation_log=\u0416\u0443\u0440\u043D\u0430\u043B \u043E\u043F\u0435\u0440\
function_name=\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043C\u043E\u0434\u0443\u043B\u044C
config_service_statistics=\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438
ruleLimitTip=\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u044D\u0444\u0444\u0435\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u043F\u0440\u0430\u0432\u0438\u043B \u0434\u043E\u0441\u0442\u0438\u0433\u043B\u043E \u043F\u0440\u0435\u0434\u0435\u043B\u0430 (% s).
av_protocol_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435\: \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 RTSP, RTMP.
av_protocol_note=\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435: \u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u0432\u0430\u0435\u043C\u044B\u0435 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u044B \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442 RTSP, RTMP.
ip_range_in_the_same=\u041D\u0430\u0447\u0430\u043B\u044C\u043D\u044B\u0439 IP-\u0430\u0434\u0440\u0435\u0441 \u0438 \u043A\u043E\u043D\u0435\u0447\u043D\u044B\u0439 IP-\u0430\u0434\u0440\u0435\u0441 \u0432 \u043E\u0434\u043D\u043E\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0435 IP-\u0430\u0434\u0440\u0435\u0441\u043E\u0432 \u0434\u043E\u043B\u0436\u043D\u044B \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u044C\u0441\u044F \u0432 \u043E\u0434\u043D\u043E\u0439 \u043F\u043E\u0434\u0441\u0435\u0442\u0438
log_to_url=\u0414\u043E HTTP URL
source_compile_id=\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438
@@ -1255,7 +1255,7 @@ ip_behavior_data=\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430 IP
p2p_eMule_keywords=\u041A\u043B\u044E\u0447\u0435\u0432\u044B\u0435 \u0441\u043B\u043E\u0432\u0430 \u043F\u043E\u0438\u0441\u043A\u0430 emule
p2p_hash_keywords=\u041A\u043B\u044E\u0447\u0435\u0432\u044B\u0435 \u0441\u043B\u043E\u0432\u0430 \u0434\u043B\u044F \u043C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0438 \u0444\u0430\u0439\u043B\u043E\u0432
not_valid_domain=% s \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u043C \u0434\u043E\u043C\u0435\u043D\u043E\u043C
cert_not_match_domain=\u0414\u0430\u043D\u043D\u044B\u0435 \u0434\u043E\u043C\u0435\u043D\u0430 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 \u043D\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u044E\u0442\!
cert_not_match_domain=\u0414\u0430\u043D\u043D\u044B\u0435 \u0434\u043E\u043C\u0435\u043D\u0430 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 \u043D\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u044E\u0442!
certificate_file_error=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430 \u0444\u0430\u0439\u043B\u0430
PXY_OBJ_TRUSTED_CA_CERT=\u0414\u043E\u0432\u0435\u0440\u0435\u043D\u043D\u044B\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442
crl_file_error=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u0444\u0430\u0439\u043B\u0430 CRL
@@ -1263,7 +1263,7 @@ crl_issuer_error=\u0418\u0437\u0434\u0430\u0442\u0435\u043B\u044C \u0444\u0430\u
cert_name=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430
add_crl_file=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0444\u0430\u0439\u043B CRL
import_crl=\u0418\u043C\u043F\u043E\u0440\u0442 \u0432\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 CRL
collect_voip=null
collect_voip=\u0421\u0431\u043E\u0440 VoIP
rtp_d_ip=RTP \u0441\u0435\u0440\u0432\u0435\u0440 IP-\u0430\u0434\u0440\u0435\u0441
rtp_s_ip=IP-\u0430\u0434\u0440\u0435\u0441 \u043A\u043B\u0438\u0435\u043D\u0442\u0430 RTP
rtp_d_port=\u041F\u043E\u0440\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 RTP
@@ -1312,27 +1312,35 @@ dns_sub=\u0411\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u044C
action_cache=\u041A\u044D\u0448
action_cache_whitelist=\u0411\u0430\u0439\u043F\u0430\u0441 \u043A\u044D\u0448\u0430
crl_issuer_null=\u042D\u043C\u0438\u0442\u0435\u043D\u0442 \u0432 CRL-\u0444\u0430\u0439\u043B\u0435 \u043F\u0443\u0441\u0442\u044B\u043C.
block_by_app_server_ip=Block by application server ip
certificate_file=Certificate File
crl_file=Crl File
vpn_ip=VPN Server IP
num_logins=Num Logins
last_login=Last Login
transfer_packets=Transfer Packets
transfer_bytes=Transfer Bytes
user_info=User Info
user_list=User List
equal_password=Password Inconsistent!
outgoing_unicast_packets=Upload Packets
outgoing_unicast_total_size=Upload Byte
incoming_unicast_packets=Download Packets
incoming_unicast_total_size=Download Byte
address_pool=Address Pool Name
ip_total=IP Total
available_ip_total=Available IP Total
address_pool_id=Address Pool ID
address_pool_ip_configuration=\u041F\u0443\u043B \u0430\u0434\u0440\u0435\u0441\u043E\u0432 IP \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438
config_sync=\u0421\u0438\u043D\u0445\u0440\u043E\u043D\u0438\u0437\u0430\u0446\u0438\u044F \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438
voip_protocol=VoIP
voip_sample_monit=\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 \u043E\u0431\u0440\u0430\u0437\u0446\u043E\u0432 VOIP \u0430\u0443\u0434\u0438\u043E
info_failed=\u041D\u0435\u0443\u0441\u043F\u0435\u0448\u043D\u043E\u0435 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435 \u0438\u043D\u043E\u0444\u0440\u043C\u0430\u0446\u0438\u0438
user_list=\u0421\u043F\u0438\u0441\u043E\u043A \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F
num_logins=\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0432\u0445\u043E\u0434\u043E\u0432 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443
address_pool_id=ID \u043F\u0443\u043B \u0430\u0434\u0440\u0435\u0441\u043E\u0432
outgoing_unicast_total_size=\u0417\u0430\u043A\u0430\u0447\u0430\u0442\u044C \u0431\u0430\u0439\u0442\u044B
voip_sample_reject=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043E\u0431\u0440\u0430\u0437\u0446\u043E\u0432 VOIP \u0430\u0443\u0434\u0438\u043E
available_ip=\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0439 IP
block_by_app_server_ip=\u0411\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043E\u0432 IP \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0439
certificate_file=\u0424\u0430\u0439\u043B \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u0430
address_pool=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043F\u0443\u043B\u0430 \u0430\u0434\u0440\u0435\u0441\u043E\u0432
transfer_bytes=\u041F\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0431\u0430\u0439\u0442\u043E\u0432
incoming_unicast_packets=\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u043F\u0430\u043A\u0435\u0442\u044B
outgoing_unicast_packets=\u0417\u0430\u043A\u0430\u0447\u0430\u0442\u044C \u043F\u0430\u043A\u0435\u0442\u044B
ip_total=\u0418\u0442\u043E\u0433\u043E IP
last_login=\u0412\u0440\u0435\u043C\u044F \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0432\u0445\u043E\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043C\u0443
vpn_ip=VPN \u0441\u0435\u0440\u0432\u0435\u0440 IP
log_to_cfg=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F
user_info=\u0418\u043D\u0444\u043E. \u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F
available_ip_total=\u0418\u0442\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E IP
address_pool_is_used=Address pool is used and cannot perform this operation!
available_ip=Available IP
config_sync=Configuration Synchronization
address_pool_ip_configuration=Address Pool IP Configuration
voip_recv_time=\u0412\u0440\u0435\u043C\u044F \u043F\u0440\u0438\u0435\u043C\u0430 VoIP
cgi_service_failed=\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0437\u0430\u043F\u0440\u043E\u0441 CGI-\u0441\u0435\u0440\u0432\u0435\u0440\u0430
transfer_packets=\u041F\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043F\u0430\u043A\u0435\u0442\u043E\u0432
incoming_unicast_total_size=\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0431\u0430\u0439\u0442
crl_file=\u0424\u0430\u0439\u043B Crl
equal_password=\u041D\u0435\u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043F\u0430\u0440\u043E\u043B\u0438!
cgi_failed=CGL \u0441\u0435\u0440\u0432\u0435\u0440
ip_check=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 IP-\u0430\u0434\u0440\u0435\u0441

View File

@@ -931,7 +931,7 @@ ip_multiplex_policy=IP\u590D\u7528\u7B56\u7565
ip_multiplex_pool_config=IP\u590D\u7528\u5730\u5740\u6C60
letter=\u6765\u51FD
show_more=\u5C55\u793A\u66F4\u591A
dashboard=\u7EDF\u8BA1\u56FE\u8868
dashboard=\u6D41\u91CF\u7EDF\u8BA1
traffic_chart=\u6D41\u91CF\u7EDF\u8BA1
os_type=\u64CD\u4F5C\u7CFB\u7EDF\u5206\u7C7B
browser_type=\u6D4F\u89C8\u5668\u5206\u7C7B

View File

@@ -120,13 +120,23 @@ var checkboxes=$("#${id} ${value} tbody tr td input.i-checks:checkbox");
if(validateAllNoAudit(checkboxes)){
top.$.jBox.tip("<spring:message code='has_prohibit_pass'/>", "<spring:message code='info'/>");
return;
}else{
}else{
doAll(checkboxes,url);
}
}else{
top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>");
return;
}
}else{
/* 批量下发待测试
if(url.indexOf("functionId") > -1){
top.$.jBox.confirm("<spring:message code='confirm_message'/>","<spring:message code='approved_all'/>",function(v,h,f){
if(v=="ok"){
$("#searchForm").attr("action",url);
page();
}
});
}else{ */
top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>");
return;
/* } */
}
}
//未通过
function noPassOpt(url){
@@ -184,8 +194,18 @@ function cancelPassOpt(url){
}
}else{
top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>");
return;
/* 批量下发待测试
if(url.indexOf("functionId") > -1){
top.$.jBox.confirm("<spring:message code='confirm_message'/>","<spring:message code='cancle_all'/>",function(v,h,f){
if(v=="ok"){
$("#searchForm").attr("action",url);
page();
}
});
}else{ */
top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>");
return;
/* } */
}
}
function doAll(checkboxes,url){

View File

@@ -133,10 +133,10 @@ $(function(){
<spring:message code="domain" /></label>
<div class="col-md-6">
<input class="form-control required domainCheck" type="text"
name="domain"
value="${_cfg.domain}">
name="cfgKeywords"
value="${_cfg.cfgKeywords}">
</div>
<div for="domain"></div>
<div for="cfgKeywords"></div>
</div>
</div>
<div class="col-md-6 hidden">

View File

@@ -10,8 +10,8 @@
//搜索框提示语初始化
if("${cfg.cfgDesc}"){
$("#intype").val("${cfg.cfgDesc}");
}else if("${cfg.domain}"){
$("#intype").val("${cfg.domain}");
}else if("${cfg.cfgKeywords}"){
$("#intype").val("${cfg.cfgKeywords}");
}else if("${cfg.compileId}"){
$("#intype").val("${cfg.compileId}");
}else{
@@ -124,7 +124,7 @@
<div class="input-group-btn">
<form:select path="seltype" class="selectpicker select2 input-small" >
<form:option value="domain"><spring:message code="domain"></spring:message></form:option>
<form:option value="cfgKeywords"><spring:message code="domain"></spring:message></form:option>
<form:option value="compileId"><spring:message code="cfg_id"></spring:message></form:option>
<form:option value="cfgDesc"><spring:message code="config_describe"></spring:message></form:option>
<form:option value="isValid"><spring:message code="valid_identifier"></spring:message></form:option>
@@ -338,7 +338,7 @@
<td>${cfg.compileId }</td>
<td>${cfg.cfgDesc }</td>
<td>${cfg.appName }</td>
<td title="${cfg.domain }">${fns:abbr(cfg.domain,20)}</td>
<td title="${cfg.cfgKeywords }">${fns:abbr(cfg.cfgKeywords,20)}</td>
<c:if test="${cfg.isHexbin==0 }">
<td><spring:message code="not_hex"/></td>
<td><spring:message code="case_insenstive"/></td>

View File

@@ -66,7 +66,7 @@ $(function(){
$("#domain").selectpicker("show");//显示选择框
}
}); */
if('${_cfg.domain}'){
if('${_cfg.cfgKeywords}'){
ajaxDomain($("#websiteServiceId").val(),$("#topicId").val());
}
//选择主题跟服务 查询域名
@@ -85,10 +85,10 @@ $(function(){
$("#selectDomain").on("change",function(){
var domain =$("#selectDomain").val();
if(domain!=null&&domain!=''){
$("input[name='domain']").val(domain);
$("input[name='cfgKeywords']").val(domain);
}
});
$("input[name='domain']").val('${_cfg.domain}');
$("input[name='cfgKeywords']").val('${_cfg.cfgKeywords}');
});
@@ -103,15 +103,15 @@ $(function(){
async:true,
success:function(data,textStatus){//处理返回结果
if(textStatus=="success"){
var html='<select name="domain" data-live-search="true" class="selectpicker form-control">'
var html='<select name="cfgKeywords" data-live-search="true" class="selectpicker form-control">'
+'<option value=""><spring:message code="select"/></option>';
if(data.length>0){
for(i=0;i<data.length;i++){
html+='<option value="'+data[i].domain+'"';
if('${_cfg.domain}'==data[i].domain){
html+='<option value="'+data[i].cfgKeywords+'"';
if('${_cfg.cfgKeywords}'==data[i].cfgKeywords){
html+=" selected";
}
html+='>'+data[i].domain+'</option>';
html+='>'+data[i].cfgKeywords+'</option>';
}
html+='</select>';
$("#selectDomain").html(html);
@@ -331,9 +331,9 @@ $(function(){
</select>
</div>
<div class="col-md-3">
<input id="domain" name="domain" class="form-control required domainCheck" type="text" value="">
<input id="domain" name="cfgKeywords" class="form-control required domainCheck" type="text" value="">
</div>
<div for="domain"></div>
<div for="cfgKeywords"></div>
</div>
<%-- <div class="col-md-5"><label class="col-md-4"></label><font style="papadding-left: 10px" color="red">*</font>
<select id="response" class="selectpicker select2 input-small pull-right">

View File

@@ -10,8 +10,8 @@
//搜索框提示语初始化
if("${cfg.cfgDesc}"){
$("#intype").val("${cfg.cfgDesc}");
}else if("${cfg.domain}"){
$("#intype").val("${cfg.domain}");
}else if("${cfg.cfgKeywords}"){
$("#intype").val("${cfg.cfgKeywords}");
}else if("${cfg.compileId}"){
$("#intype").val("${cfg.compileId}");
}else{
@@ -105,7 +105,7 @@
<div class="input-group-btn">
<form:select path="seltype" class="selectpicker select2 input-small" >
<form:option value="domain"><spring:message code="domain"></spring:message></form:option>
<form:option value="cfgKeywords"><spring:message code="domain"></spring:message></form:option>
<form:option value="compileId"><spring:message code="cfg_id"></spring:message></form:option>
<form:option value="cfgDesc"><spring:message code="config_describe"></spring:message></form:option>
<form:option value="isValid"><spring:message code="valid_identifier"></spring:message></form:option>
@@ -333,7 +333,7 @@
</c:if>
</c:forEach>
</td>
<td title="${cfg.domain }">${fns:abbr(cfg.domain,20)}</td>
<td title="${cfg.cfgKeywords }">${fns:abbr(cfg.cfgKeywords,20)}</td>
<c:if test="${cfg.isHexbin==0 }">
<td><spring:message code="not_hex"/></td>
<td><spring:message code="case_insenstive"/></td>

View File

@@ -417,7 +417,14 @@
</a>
</td>
<td>${indexCfg.rawLen }B</td>
<td>${indexCfg.cfdsLevel }</td>
<td>
<c:if test="${indexCfg.cfdsLevel > 1 && indexCfg.cfdsLevel <= 10}">
${(indexCfg.cfdsLevel*10)}
</c:if>
<c:if test="${indexCfg.cfdsLevel eq 1 || indexCfg.cfdsLevel > 10}">
${indexCfg.cfdsLevel }
</c:if>
</td>
<td>
<a href="${indexCfg.fileUrl }" target="_blank" data-original-title="${indexCfg.fileUrl }"
class="tooltips" data-flag="false" data-html="true" data-placement="top">