diff --git a/src/main/java/com/nis/domain/callback/IpAddrPool.java b/src/main/java/com/nis/domain/callback/IpAddrPool.java index 567a09272..27420e5fe 100644 --- a/src/main/java/com/nis/domain/callback/IpAddrPool.java +++ b/src/main/java/com/nis/domain/callback/IpAddrPool.java @@ -7,7 +7,7 @@ public class IpAddrPool extends InlineIp{ @Expose private Integer regionId; @Expose - private Integer groupId; + private Long groupId; @Expose private Long addrPoolId; @@ -19,11 +19,11 @@ public class IpAddrPool extends InlineIp{ this.regionId = regionId; } - public Integer getGroupId() { + public Long getGroupId() { return groupId; } - public void setGroupId(Integer groupId) { + public void setGroupId(Long groupId) { this.groupId = groupId; } diff --git a/src/main/java/com/nis/web/controller/configuration/ConfigSynchronizationController.java b/src/main/java/com/nis/web/controller/configuration/ConfigSynchronizationController.java index 9129432b2..fb5af666f 100644 --- a/src/main/java/com/nis/web/controller/configuration/ConfigSynchronizationController.java +++ b/src/main/java/com/nis/web/controller/configuration/ConfigSynchronizationController.java @@ -23,6 +23,7 @@ import com.nis.domain.SysDataDictionaryItem; import com.nis.domain.SysDataDictionaryName; import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.maat.ToMaatResult; +import com.nis.exceptions.MaatConvertException; import com.nis.util.CacheUtils; import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; @@ -85,7 +86,7 @@ public class ConfigSynchronizationController extends BaseController { */ @RequestMapping(value = {"send"}) public void send(Model model,HttpServletRequest request,HttpServletResponse response){ - int status = 0; + int status = -2; try { configSynchronizationService.send(request,response,null); status = 1; @@ -99,10 +100,13 @@ public class ConfigSynchronizationController extends BaseController { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); + }catch(MaatConvertException e){ + e.printStackTrace(); + status = -1; }catch (Exception e) { e.printStackTrace(); }finally{ - if(status==0){ + if(status!=1){ SysDataDictionaryName sysDictName = new SysDataDictionaryName(); sysDictName.setMark("currrent_sync_status"); List dictList = dictService.findDicByName(sysDictName); @@ -112,14 +116,14 @@ public class ConfigSynchronizationController extends BaseController { if(!StringUtil.isEmpty(itemList)){ SysDataDictionaryItem item = itemList.get(0); item.setDictionaryId(dict.getId().intValue()); - item.setItemValue("-2");//界面组织数据失败 + item.setItemValue(String.valueOf(status));//-2界面组织数据失败,-1服务端返回的失败 dictService.updateDictItem(item); //删除字典缓存 CacheUtils.remove(Constants.CACHE_DICT_MAP); } } Map map = new HashMap(); - map.put("syncStatus", 1); + map.put("syncStatus", 0); JSONObject result = ConfigServiceUtil.configSyncCmd(BaseService.gsonToJson(map));//取消同步 }else{ diff --git a/src/main/java/com/nis/web/controller/dashboard/TrafficStatisticsInfoController.java b/src/main/java/com/nis/web/controller/dashboard/TrafficStatisticsInfoController.java index d8608d950..c821303ef 100644 --- a/src/main/java/com/nis/web/controller/dashboard/TrafficStatisticsInfoController.java +++ b/src/main/java/com/nis/web/controller/dashboard/TrafficStatisticsInfoController.java @@ -73,8 +73,8 @@ public class TrafficStatisticsInfoController extends BaseController { inoctetsNum = (Double) map.get("inoctets"); outoctetsNum = (Double) map.get("outoctets"); //单位换算 byte->bit/s - inoctetsNum=(inoctetsNum*8)/(5*60*60); - outoctetsNum=(outoctetsNum*8)/(5*60*60); + inoctetsNum=(inoctetsNum*8)/(5*60); + outoctetsNum=(outoctetsNum*8)/(5*60); } bandwidth=inoctetsNum+outoctetsNum; diff --git a/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.java b/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.java index 63d8fe0e4..cece5005b 100644 --- a/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.java +++ b/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.java @@ -14,7 +14,6 @@ public interface IpMultiplexDao extends CrudDao{ List findPage(IpReusePolicyCfg entity); List findList(@Param("cfgId")Long cfgId - ,@Param("isAudit")Integer isAudit ,@Param("isValid")Integer isValid); void savePolicyCfg(IpReusePolicyCfg entity); diff --git a/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.xml b/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.xml index 381348658..2f4972b93 100644 --- a/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.xml +++ b/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.xml @@ -9,6 +9,7 @@ + @@ -38,7 +39,7 @@ r.CFG_ID,r.CFG_DESC,r.ADDR_POOL_ID,r.USER_ID,r.USER_TYPE, - r.ACTION,r.IS_VALID,r.IS_AUDIT,r.CFG_REGION_CODE,r.CFG_TYPE,r.FUNCTION_ID, + r.ACTION,r.DO_LOG,r.IS_VALID,r.IS_AUDIT,r.CFG_REGION_CODE,r.CFG_TYPE,r.FUNCTION_ID, r.SERVICE_ID,r.COMPILE_ID,r.REQUEST_ID,r.CLASSIFY,r.ATTRIBUTE,r.LABLE, r.CREATOR_ID,r.CREATE_TIME,r.EDITOR_ID,r.EDIT_TIME,r.AUDITOR_ID,r.AUDIT_TIME, r.CANCEL_REQUEST_ID,r.IS_AREA_EFFECTIVE,r.AREA_EFFECTIVE_IDS, @@ -162,9 +163,6 @@ AND r.is_valid != -1 - - AND r.is_audit = #{isAudit,jdbcType=INTEGER} - ORDER BY r.cfg_id @@ -176,6 +174,7 @@ user_id, user_type, action, + do_log, is_valid, is_audit, cfg_type, @@ -206,6 +205,7 @@ #{userId,jdbcType=INTEGER}, #{userType,jdbcType=VARCHAR}, #{action,jdbcType=INTEGER}, + #{doLog,jdbcType=INTEGER}, 0, 0, #{cfgType,jdbcType=VARCHAR}, @@ -261,6 +261,9 @@ user_id = #{userId,jdbcType=INTEGER}, + + do_log = #{doLog,jdbcType=INTEGER}, + is_valid = #{isValid,jdbcType=INTEGER}, diff --git a/src/main/java/com/nis/web/service/configuration/IpAddrPoolCfgService.java b/src/main/java/com/nis/web/service/configuration/IpAddrPoolCfgService.java index b901a5f3a..95a498067 100644 --- a/src/main/java/com/nis/web/service/configuration/IpAddrPoolCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/IpAddrPoolCfgService.java @@ -176,9 +176,9 @@ public class IpAddrPoolCfgService extends BaseService{ } IpCfg c = cfgs.get(0); ip.setRegionId(ipcfg.getCompileId()); - //ip.setGroupId(ipcfg.getCompileId()); - + ip.setGroupId(cfg.getCfgId()); ip.setAddrType(ipcfg.getIpType()); + ip.setSrcIp(c.getSrcIp()); ip.setMaskSrcIp(c.getSrcIpMask()); ip.setSrcPort(c.getSrcPort()); @@ -190,13 +190,12 @@ public class IpAddrPoolCfgService extends BaseService{ ip.setProtocol(ipcfg.getProtocol()); ip.setDirection(ipcfg.getDirection()); + ip.setAddrPoolId(cfg.getCfgId()); ip.setIsValid(cfg.getIsValid()); ip.setAction(ipcfg.getAction()); ip.setService(ipcfg.getServiceId()); - ip.setAddrPoolId(cfg.getCfgId()); + ip.setAreaEffectiveIds(cfg.getAreaEffectiveIds());//添加区域管控 ip.setOpTime(auditTime); - //ip.setAreaEffectiveIds(cfg.getAreaEffectiveIds());//添加区域管控 - resStrategyList.add(ip); } //调用服务接口下发配置数据 @@ -224,7 +223,9 @@ public class IpAddrPoolCfgService extends BaseService{ } IpCfg c = cfgs.get(0); ip.setRegionId(ipcfg.getCompileId()); + ip.setGroupId(cfg.getCfgId()); ip.setAddrType(ipcfg.getIpType()); + ip.setSrcIp(c.getSrcIp()); ip.setMaskSrcIp(c.getSrcIpMask()); ip.setSrcPort(c.getSrcPort()); @@ -235,12 +236,13 @@ public class IpAddrPoolCfgService extends BaseService{ ip.setMaskDstPort(c.getDstPortMask()); ip.setProtocol(ipcfg.getProtocol()); ip.setDirection(ipcfg.getDirection()); + + ip.setAddrPoolId(cfg.getCfgId()); ip.setIsValid(cfg.getIsValid()); ip.setAction(ipcfg.getAction()); ip.setService(ipcfg.getServiceId()); - ip.setAddrPoolId(cfg.getCfgId()); + ip.setAreaEffectiveIds(cfg.getAreaEffectiveIds()); ip.setOpTime(auditTime); - //ip.setAreaEffectiveIds(cfg.getAreaEffectiveIds()); resStrategyList.add(ip); } //调用服务接口取消配置 diff --git a/src/main/java/com/nis/web/service/configuration/IpMultiplexService.java b/src/main/java/com/nis/web/service/configuration/IpMultiplexService.java index a60e48b5b..b60bc159c 100644 --- a/src/main/java/com/nis/web/service/configuration/IpMultiplexService.java +++ b/src/main/java/com/nis/web/service/configuration/IpMultiplexService.java @@ -40,7 +40,7 @@ public class IpMultiplexService extends BaseService{ } public IpReusePolicyCfg getPolicyCfg(Long cfgId, Integer isValid) { - List list=ipMultiplexDao.findList(cfgId,isValid,null); + List list=ipMultiplexDao.findList(cfgId,isValid); IpReusePolicyCfg policyCfg=null; if(list != null && list.size()>0){ policyCfg=list.get(0); @@ -119,6 +119,7 @@ public class IpMultiplexService extends BaseService{ cfg.setIsAudit(isAudit); cfg.setAuditorId(UserUtils.getUser().getId()); cfg.setAuditTime(auditTime); + cfg.setDoLog(null);; ipMultiplexDao.updatePolicyCfg(cfg); SysDictInfoService sysDictInfoService = SpringContextHolder.getBean(SysDictInfoService.class); @@ -126,16 +127,20 @@ public class IpMultiplexService extends BaseService{ cfg = this.getPolicyCfg(cfg.getCfgId(), null); String json=""; if(cfg.getIsAudit() == Constants.AUDIT_YES){ + String areaEffectiveIds = cfg.getIsAreaEffective() == 1?sysDictInfoService.setEffectiveRange(cfg.getAreaEffectiveIds()):"0"; Map params = new HashMap(); params.put("configId", cfg.getCompileId()); params.put("addrPoolId", cfg.getAddrPoolId()); params.put("userType", cfg.getUserType()); params.put("userId", cfg.getUserId()); + params.put("doLog", cfg.getDoLog()); + params.put("action", cfg.getAction()); + params.put("service", cfg.getServiceId()); params.put("isValid", 1); params.put("opTime", auditTime); - if(cfg.getIsAreaEffective() == 1){ - params.put("effectiveRange", sysDictInfoService.setEffectiveRange(cfg.getAreaEffectiveIds())); - } + params.put("translateParam", "byconn=10"); + params.put("effectiveRange", areaEffectiveIds); + List list = Lists.newArrayList(); list.add(params); //调用服务接口下发配置数据 @@ -153,16 +158,20 @@ public class IpMultiplexService extends BaseService{ } }else if(cfg.getIsAudit() == Constants.AUDIT_NOT_YES){ + String areaEffectiveIds = cfg.getIsAreaEffective() == 1?sysDictInfoService.setEffectiveRange(cfg.getAreaEffectiveIds()):"0"; Map params = new HashMap(); params.put("configId", cfg.getCompileId()); params.put("addrPoolId", cfg.getAddrPoolId()); params.put("userType", cfg.getUserType()); params.put("userId", cfg.getUserId()); + params.put("doLog", cfg.getDoLog()); + params.put("action", cfg.getAction()); + params.put("service", cfg.getServiceId()); params.put("isValid", 0); params.put("opTime", auditTime); - if(cfg.getIsAreaEffective() == 1){ - params.put("effectiveRange", sysDictInfoService.setEffectiveRange(cfg.getAreaEffectiveIds())); - } + params.put("translateParam", "byconn=10"); + params.put("effectiveRange", areaEffectiveIds); + List list = Lists.newArrayList(); list.add(params); //调用服务接口取消配置 diff --git a/src/main/resources/messages/message_en.properties b/src/main/resources/messages/message_en.properties index a8563b02d..253507778 100644 --- a/src/main/resources/messages/message_en.properties +++ b/src/main/resources/messages/message_en.properties @@ -1334,4 +1334,5 @@ address_pool_id=Address Pool ID log_to_cfg=Config address_pool_is_used=Address pool is used and cannot perform this operation! cgi_service_failed=Request CGI server failed -available_ip=Available IP \ No newline at end of file +available_ip=Available IP +config_sync=Configuration Synchronization \ No newline at end of file diff --git a/src/main/resources/messages/message_ru.properties b/src/main/resources/messages/message_ru.properties index 911b300e2..262836982 100644 --- a/src/main/resources/messages/message_ru.properties +++ b/src/main/resources/messages/message_ru.properties @@ -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 @@ -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. @@ -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 @@ -574,8 +574,8 @@ 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: +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) @@ -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 @@ -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 @@ -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 @@ -1333,4 +1333,5 @@ available_ip_total=Available IP Total address_pool_id=Address Pool ID log_to_cfg=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F address_pool_is_used=Address pool is used and cannot perform this operation! -available_ip=Available IP \ No newline at end of file +available_ip=Available IP +config_sync=Configuration Synchronization \ No newline at end of file diff --git a/src/main/resources/messages/message_zh_CN.properties b/src/main/resources/messages/message_zh_CN.properties index 499d06d40..b3088d4bf 100644 --- a/src/main/resources/messages/message_zh_CN.properties +++ b/src/main/resources/messages/message_zh_CN.properties @@ -1332,4 +1332,5 @@ address_pool_id=\u5730\u5740\u6C60ID log_to_cfg=\u914D\u7F6E address_pool_is_used=\u5730\u5740\u6C60\u5DF2\u88AB\u4F7F\u7528\uFF0C\u65E0\u6CD5\u6267\u884C\u8BE5\u64CD\u4F5C\uFF01 cgi_service_failed=\u8BF7\u6C42CGI\u670D\u52A1\u63A5\u53E3\u5931\u8D25 -available_ip=\u53EF\u7528IP\u5730\u5740 \ No newline at end of file +available_ip=\u53EF\u7528IP\u5730\u5740 +config_sync=\u914D\u7F6E\u540C\u6B65 \ No newline at end of file diff --git a/src/main/resources/sql/20181130/update_code_app_dic.sql b/src/main/resources/sql/20181130/update_code_app_dic.sql index f6c4589c8..7ae13c98b 100644 --- a/src/main/resources/sql/20181130/update_code_app_dic.sql +++ b/src/main/resources/sql/20181130/update_code_app_dic.sql @@ -515,7 +515,7 @@ INSERT INTO `code_app_dic` VALUES ('476', 'orbit', 'orbit', '200440', '', '', '0 INSERT INTO `code_app_dic` VALUES ('477', 'ourworld', 'ourworld', '200441', '', '', '0', '0000000009', '', 'GAMING'); INSERT INTO `code_app_dic` VALUES ('478', 'overwatch', 'overwatch', '200442', '', '', '0', '0000000009', '', 'GAMING'); INSERT INTO `code_app_dic` VALUES ('479', 'diablo3', 'diablo3', '200443', '', '', '0', '0000000009', '', 'GAMING'); -INSERT INTO `code_app_dic` VALUES ('480', 'dianping', 'dianping', 'Dueling', '', '', '0', '0000000027', '', 'MOBILE_APP'); +INSERT INTO `code_app_dic` VALUES ('480', 'dianping', 'dianping', '200444', '', '', '0', '0000000027', '', 'MOBILE_APP'); INSERT INTO `code_app_dic` VALUES ('481', 'dianshijia', 'dianshijia', '200445', '', '', '0', '0000000010', '', 'P2PTV'); INSERT INTO `code_app_dic` VALUES ('482', 'discord', 'discord', '200446', '', '', '0', '0000000021', '', 'VOIP'); INSERT INTO `code_app_dic` VALUES ('483', 'dogecoin', 'dogecoin', '200447', '', '', '0', '0000000001', '', 'ECOMMERCE'); diff --git a/src/main/resources/sql/20181203/update_function_region_dict.sql b/src/main/resources/sql/20181203/update_function_region_dict.sql new file mode 100644 index 000000000..cd5209b94 --- /dev/null +++ b/src/main/resources/sql/20181203/update_function_region_dict.sql @@ -0,0 +1,10 @@ +-- 地址池 +UPDATE function_service_dict SET service_id = 834 WHERE dict_id = 142 AND function_id = 633; + +-- SNAT策略 +UPDATE function_service_dict SET service_id = 835,`action` = 80 WHERE dict_id = 80 AND function_id = 300; + +-- DNAT策略 +UPDATE function_service_dict SET service_id = 836,`action` = 80 WHERE dict_id = 143 AND function_id = 304; + +ALTER TABLE ip_reuse_policy_cfg ADD do_log INT(11) COMMENT '是否记录结构化日志:1是 2否'; \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/cfg/manipulation/ipmulitiplex/snatPolicyForm2.jsp b/src/main/webapp/WEB-INF/views/cfg/manipulation/ipmulitiplex/snatPolicyForm2.jsp index 72d588048..950d2617e 100644 --- a/src/main/webapp/WEB-INF/views/cfg/manipulation/ipmulitiplex/snatPolicyForm2.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/manipulation/ipmulitiplex/snatPolicyForm2.jsp @@ -45,6 +45,7 @@ $(function(){ + @@ -83,20 +84,30 @@ $(function(){ -
-
- -
- -
-
-
-
+ + +
+
+ + + + + + + + + + + +
+
+ + +
@@ -127,6 +138,20 @@ $(function(){
+
+
+ +
+ +
+
+
+
@@ -159,8 +184,7 @@ $(function(){
-
- <%@include file="/WEB-INF/include/form/areaInfo.jsp"%> + <%--
<%@include file="/WEB-INF/include/form/areaInfo.jsp"%> --%>
<%@include file="/WEB-INF/include/form/basicInfo.jsp" %>
diff --git a/src/main/webapp/WEB-INF/views/cfg/manipulation/ipmulitiplex/snatPolicyList2.jsp b/src/main/webapp/WEB-INF/views/cfg/manipulation/ipmulitiplex/snatPolicyList2.jsp index 4095a13ac..251751887 100644 --- a/src/main/webapp/WEB-INF/views/cfg/manipulation/ipmulitiplex/snatPolicyList2.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/manipulation/ipmulitiplex/snatPolicyList2.jsp @@ -293,7 +293,8 @@ - + + <%-- --%> @@ -350,13 +351,20 @@ + + + + + + + <%-- - + --%> ${indexCfg.requestName } diff --git a/src/main/webapp/WEB-INF/views/dashboard/trafficIpActiveList.jsp b/src/main/webapp/WEB-INF/views/dashboard/trafficIpActiveList.jsp index 74a0bb534..ab0a4715c 100644 --- a/src/main/webapp/WEB-INF/views/dashboard/trafficIpActiveList.jsp +++ b/src/main/webapp/WEB-INF/views/dashboard/trafficIpActiveList.jsp @@ -56,7 +56,15 @@ ${entry.ipAddr } - ${entry.areaId } + + + + + + + + + ${entry.linkNum } ${entry.c2sPktNum } ${entry.s2cPktNum } diff --git a/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_en.js b/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_en.js index c22344565..0dd053f91 100644 --- a/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_en.js +++ b/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_en.js @@ -78,6 +78,7 @@ netAddress:"The class C type of IP addresses must has the same network number bit field", addrPoolUnique:"Address Pool already exists.", asnNoUnique:"ASN already exists.", - areaUnique:"Area already exists." + areaUnique:"Area already exists.", + config_sync_tip:"The system is being maintained and temporarily inaccessible." }); }(jQuery)); diff --git a/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_ru.js b/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_ru.js index 5b562d3bd..02d38e47f 100644 --- a/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_ru.js +++ b/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_ru.js @@ -78,6 +78,7 @@ netAddress:"Тип IP-адресов класса C должен иметь один и тот же номер сети бит поля.", addrPoolUnique:"Address Pool уже существует.", asnNoUnique:"ASN уже существует.", - areaUnique:"Регион уже существует." + areaUnique:"Регион уже существует.", + config_sync_tip:"Система находится под техническим обслуживанием и временно недоступна." }); }(jQuery)); diff --git a/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_zh.js b/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_zh.js index 4285164e7..5eefd79b3 100644 --- a/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_zh.js +++ b/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/localization/messages_zh.js @@ -78,6 +78,7 @@ netAddress:"C类IP地址网络位必须相同", addrPoolUnique:"地址池已存在", asnNoUnique:"ASN号已存在", - areaUnique:"该区域已存在" + areaUnique:"该区域已存在", + config_sync_tip:"系统正在维护中,暂时不可访问!" }); }(jQuery)); diff --git a/src/main/webapp/static/global/plugins/tableExport-3.3.13/tableexport.js b/src/main/webapp/static/global/plugins/tableExport-3.3.13/tableexport.js index 7f3f65a82..50b3984eb 100644 --- a/src/main/webapp/static/global/plugins/tableExport-3.3.13/tableexport.js +++ b/src/main/webapp/static/global/plugins/tableExport-3.3.13/tableexport.js @@ -101,6 +101,11 @@ rcMap[ir + i][ic] = 1 } } + // 当文字过长有省略时取title导出 + var titleText=$(val).text(); + if($(val).attr("title")!=null&&$(val).attr("title")!=""){ + titleText=$(val).attr("title"); + } if (rcMap[ir]) { var threshold = ic + 1, total = 0, @@ -112,13 +117,14 @@ break; } } + return new Array(total).concat({ - v: TableExport.prototype.formatValue(isTrimWhitespace, $(val).text()), + v: TableExport.prototype.formatValue(isTrimWhitespace, titleText), t: TableExport.prototype.getType($(val).attr('class')) }); } return { - v: TableExport.prototype.formatValue(isTrimWhitespace, $(val).text()), + v: TableExport.prototype.formatValue(isTrimWhitespace, titleText), t: TableExport.prototype.getType($(val).attr('class')) }; }).get()]; diff --git a/src/main/webapp/static/global/scripts/common.js b/src/main/webapp/static/global/scripts/common.js index a8cc71ddf..3d0b28091 100644 --- a/src/main/webapp/static/global/scripts/common.js +++ b/src/main/webapp/static/global/scripts/common.js @@ -1560,7 +1560,7 @@ function getConfigSyncStatus(){ id:'syncStatusTip', zIndex: 9999 }; - var tipId = top.$.jBox.tip("The system is being maintained and temporarily inaccessible.",'loading',{opacity:0.5,persistent:true}); + var tipId = top.$.jBox.tip($.validator.messages.config_sync_tip,'loading',{opacity:0.5,persistent:true}); var t1 = setInterval(function() { currentStatus = getSyncStatus(); if(currentStatus==3 || currentStatus==-1 || currentStatus==-2){//3表示同步完成,-1表示服务端同步失败,-2表示界面端同步失败