diff --git a/src/main/java/com/nis/domain/callback/IpAddrPool.java b/src/main/java/com/nis/domain/callback/IpAddrPool.java index 5c3df3afd..567a09272 100644 --- a/src/main/java/com/nis/domain/callback/IpAddrPool.java +++ b/src/main/java/com/nis/domain/callback/IpAddrPool.java @@ -9,7 +9,7 @@ public class IpAddrPool extends InlineIp{ @Expose private Integer groupId; @Expose - private Integer addrPoolId; + private Long addrPoolId; public Integer getRegionId() { return regionId; @@ -27,11 +27,12 @@ public class IpAddrPool extends InlineIp{ this.groupId = groupId; } - public Integer getAddrPoolId() { + public Long getAddrPoolId() { return addrPoolId; } - public void setAddrPoolId(Integer addrPoolId) { + public void setAddrPoolId(Long addrPoolId) { this.addrPoolId = addrPoolId; } + } diff --git a/src/main/java/com/nis/domain/configuration/IpAddrPoolCfg.java b/src/main/java/com/nis/domain/configuration/IpAddrPoolCfg.java index cb144871e..f8cdda62c 100644 --- a/src/main/java/com/nis/domain/configuration/IpAddrPoolCfg.java +++ b/src/main/java/com/nis/domain/configuration/IpAddrPoolCfg.java @@ -14,7 +14,6 @@ public class IpAddrPoolCfg extends BaseCfg{ private static final long serialVersionUID = 1392197458744667669L; private String indexTable="ip_reuse_addr_pool"; - private Integer addrPoolId; // 地址池ID private String addrPoolName; // 地址池名称 private Integer ipTotal; // IP总数 private Integer availableIpTotal; // 可用IP总数 @@ -31,12 +30,6 @@ public class IpAddrPoolCfg extends BaseCfg{ public void setIndexTable(String indexTable) { this.indexTable = indexTable; } - public Integer getAddrPoolId() { - return addrPoolId; - } - public void setAddrPoolId(Integer addrPoolId) { - this.addrPoolId = addrPoolId; - } public String getAddrPoolName() { return addrPoolName; } diff --git a/src/main/java/com/nis/domain/configuration/IpReusePolicyCfg.java b/src/main/java/com/nis/domain/configuration/IpReusePolicyCfg.java new file mode 100644 index 000000000..21e8ac381 --- /dev/null +++ b/src/main/java/com/nis/domain/configuration/IpReusePolicyCfg.java @@ -0,0 +1,64 @@ +package com.nis.domain.configuration; + +/** + * IP复用策略 + * @author dell + * + */ +public class IpReusePolicyCfg extends BaseCfg{ + + private static final long serialVersionUID = 2904010760648378142L; + private String indexTable="ip_reuse_policy_cfg"; + + private Integer userId; // 用户标识 + private String userType; // 用户类型 + private Integer addrPoolId; // 地址池ID + private String translateParam; // 地址翻译参数 + + private String userName; // 仅用于列表条件检索 + private String addrPoolName; + + public Integer getUserId() { + return userId; + } + public void setUserId(Integer userId) { + this.userId = userId; + } + public String getUserType() { + return userType; + } + public void setUserType(String userType) { + this.userType = userType; + } + public Integer getAddrPoolId() { + return addrPoolId; + } + public void setAddrPoolId(Integer addrPoolId) { + this.addrPoolId = addrPoolId; + } + public String getTranslateParam() { + return translateParam; + } + public void setTranslateParam(String translateParam) { + this.translateParam = translateParam; + } + public String getIndexTable() { + return indexTable; + } + public void setIndexTable(String indexTable) { + this.indexTable = indexTable; + } + public String getUserName() { + return userName; + } + public void setUserName(String userName) { + this.userName = userName; + } + public String getAddrPoolName() { + return addrPoolName; + } + public void setAddrPoolName(String addrPoolName) { + this.addrPoolName = addrPoolName; + } + +} diff --git a/src/main/java/com/nis/web/controller/configuration/maintenance/IpAddrPoolController.java b/src/main/java/com/nis/web/controller/configuration/maintenance/IpAddrPoolController.java index fe8d6609f..d05d67ae2 100644 --- a/src/main/java/com/nis/web/controller/configuration/maintenance/IpAddrPoolController.java +++ b/src/main/java/com/nis/web/controller/configuration/maintenance/IpAddrPoolController.java @@ -65,8 +65,6 @@ public class IpAddrPoolController extends BaseController{ } if(!StringUtil.isEmpty(ids)){ cfg = ipAddrPoolCfgService.getIpAddrPoolCfg(Long.valueOf(ids),null); - PolicyGroupInfo groupInfo = policyGroupInfoService.getById(cfg.getAddrPoolId()); - cfg.setAddrPoolName(groupInfo.getGroupName()); initUpdateFormCondition(model, cfg); }else{ initFormCondition(model, cfg); @@ -81,17 +79,7 @@ public class IpAddrPoolController extends BaseController{ public String snatSaveOrUpdate(Model model,HttpServletRequest request,HttpServletResponse response,RedirectAttributes redirectAttributes, @ModelAttribute("cfg")IpAddrPoolCfg cfg){ try{ - // 保存地址池信息 -> policy_group_info - PolicyGroupInfo entity = new PolicyGroupInfo(); - if(cfg.getAddrPoolId() != null){ - entity.setGroupId(cfg.getAddrPoolId()); - } - entity.setGroupType(2); - entity.setGroupName(cfg.getAddrPoolName()); - entity.setDescription(cfg.getDescription()); - policyGroupInfoService.saveOrUpdate(entity); - cfg.setAddrPoolId(policyGroupInfoService.getGroupIdByGroupName(cfg.getAddrPoolName())); - + // 添加地址池配置信息 ipAddrPoolCfgService.saveOrUpdate(cfg, request, response); addMessage(redirectAttributes,"success","save_success"); }catch(Exception e) { @@ -130,13 +118,24 @@ public class IpAddrPoolController extends BaseController{ return "redirect:" + adminPath +"/maintenance/ipMultiplexPoolCfg/snatlist?functionId="+functionId; } + /** + * 配置删除 + * @param isAudit + * @param isValid + * @param ids + * @param functionId + * @param model + * @param redirectAttributes + * @param request + * @param response + * @return + */ @RequestMapping(value = {"/snatDelete"}) @RequiresPermissions(value={"ip:mulitiplex:pool:config"}) public String snatdelete(Integer isAudit,Integer isValid,String ids,Integer functionId,Model model,RedirectAttributes redirectAttributes ,HttpServletRequest request,HttpServletResponse response){ try{ if(!StringUtil.isEmpty(ids)){ - // ?未被任何策略引用的地址池可删除 ipAddrPoolCfgService.delete(isAudit,isValid,ids,functionId); } addMessage(redirectAttributes,"success","delete_success"); diff --git a/src/main/java/com/nis/web/controller/configuration/manipulation/IpMultiplexController.java b/src/main/java/com/nis/web/controller/configuration/manipulation/IpMultiplexController.java index b2f396aeb..ae8789d9b 100644 --- a/src/main/java/com/nis/web/controller/configuration/manipulation/IpMultiplexController.java +++ b/src/main/java/com/nis/web/controller/configuration/manipulation/IpMultiplexController.java @@ -19,6 +19,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; @@ -35,6 +36,7 @@ import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.IpAddrPoolCfg; import com.nis.domain.configuration.IpMultiplexPoolCfg; import com.nis.domain.configuration.IpPortCfg; +import com.nis.domain.configuration.IpReusePolicyCfg; import com.nis.domain.configuration.UserManage; import com.nis.domain.configuration.template.IpMultiplexPolicyTemplate; import com.nis.exceptions.MaatConvertException; @@ -43,6 +45,7 @@ import com.nis.util.Constants; import com.nis.util.DictUtils; import com.nis.util.StringUtil; import com.nis.web.controller.configuration.CommonController; +import com.nis.web.service.configuration.IpMultiplexService; /** * @ClassName: ControlController.java @@ -54,6 +57,10 @@ import com.nis.web.controller.configuration.CommonController; @Controller @RequestMapping("${adminPath}/manipulation/ipmulitiplex") public class IpMultiplexController extends CommonController { + + @Autowired + private IpMultiplexService ipMultiplexService; + @RequestMapping(value = {"/list"}) // @RequiresPermissions(value={"ip:mulitiplex:config","ip:mulitiplex:confirm"},logical=Logical.OR) public String ipList(String cfgName,Model model,@ModelAttribute("cfg")IpPortCfg cfg,HttpServletRequest request,HttpServletResponse response) { @@ -129,8 +136,12 @@ public class IpMultiplexController extends CommonController { * IP复用策略拆分为SNAT/DNAT复用策略 */ @RequestMapping(value = {"/snatPolicyList"}) - public String snatPolicyList(String cfgName,Model model,@ModelAttribute("cfg")IpPortCfg cfg,HttpServletRequest request,HttpServletResponse response) { - this._ipList(cfgName,model, cfg, request, response); + public String snatPolicyList(Model model,@ModelAttribute("cfg")IpReusePolicyCfg cfg, + HttpServletRequest request,HttpServletResponse response) { + + Page page = ipMultiplexService.findPage(new Page(request, response,"r"), cfg); + model.addAttribute("page", page); + initFormCondition(model,cfg); // 获取地址池、用户信息 List users = userManageService.findUsers(); @@ -142,8 +153,17 @@ public class IpMultiplexController extends CommonController { @RequestMapping(value = {"/snatPolicyForm"}) @RequiresPermissions(value={"snat_policy:config"}) - public String snatPolicyForm(String cfgName,Model model,String ids,Integer functionId,BaseIpCfg entity, HttpServletRequest request,HttpServletResponse response) { - this._ipForm(cfgName,model, ids, functionId, entity); + public String snatPolicyForm(Model model, String ids, IpReusePolicyCfg cfg, + HttpServletRequest request,HttpServletResponse response) { + if(cfg == null){ + cfg=new IpReusePolicyCfg(); + } + if(!StringUtil.isEmpty(ids)){ + cfg = ipMultiplexService.getPolicyCfg(Long.valueOf(ids),null); + initUpdateFormCondition(model, cfg); + }else{ + initFormCondition(model, cfg); + } // 获取用户信息 地址池信息 List users = userManageService.findUsers(); @@ -151,7 +171,7 @@ public class IpMultiplexController extends CommonController { List addrPoolsNew=new ArrayList<>(); for (IpAddrPoolCfg addrPool : addrPools) { Map params = new HashMap(); - params.put("addr_pool_id", addrPool.getAddrPoolId()); + params.put("addr_pool_id", addrPool.getCfgId()); String url =Constants.IP_REUSE_CALL_CGI_URL ; Map resultMap=ConfigServiceUtil.getCGIInfo(url, Constants.IP_NUM_GET, params); if(!StringUtil.isEmpty(resultMap) @@ -161,6 +181,7 @@ public class IpMultiplexController extends CommonController { } } + model.addAttribute("_cfg", cfg); model.addAttribute("users", users); model.addAttribute("addrPools", addrPoolsNew); model.addAttribute("urlPrefix","/manipulation/ipmulitiplex"); @@ -168,32 +189,52 @@ public class IpMultiplexController extends CommonController { } @RequestMapping(value = {"/saveOrUpdateSnat"}) - public String saveOrUpdateSnat(String cfgName,RedirectAttributes model, IpPortCfg cfg) { - // 设置生效区域信息 - //groupAreaService.setAreaEffective(cfg); + public String saveOrUpdateSnat(Model model, HttpServletRequest request,HttpServletResponse response, + RedirectAttributes redirectAttributes, IpReusePolicyCfg cfg) { + try{ + // 添加策略配置信息 + ipMultiplexService.saveOrUpdate(cfg, request, response); + addMessage(redirectAttributes,"success","save_success"); + }catch(Exception e) { + e.printStackTrace(); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "save_failed"); + } + } - this._saveOrUpdateIp(cfgName,model, cfg); return "redirect:" + adminPath +"/manipulation/ipmulitiplex/snatPolicyList?functionId="+cfg.getFunctionId(); } @RequestMapping(value = {"/snatDelete"}) @RequiresPermissions("snat_policy:config") - public String snatDelete(String cfgName,String ids,String compileIds,Integer functionId,RedirectAttributes model) { - this._deleteIp(cfgName,ids, compileIds, functionId, model); + public String snatDelete(String ids, Integer isValid, Integer functionId,RedirectAttributes redirectAttributes, + HttpServletRequest request,HttpServletResponse response) { + + try{ + if(!StringUtil.isEmpty(ids)){ + ipMultiplexService.delete(isValid,ids,functionId); + } + addMessage(redirectAttributes,"success","delete_success"); + }catch(Exception e){ + logger.error(e); + addMessage(redirectAttributes,"error","delete_failed"); + } + return "redirect:" + adminPath +"/manipulation/ipmulitiplex/snatPolicyList?functionId="+functionId; } @RequestMapping(value = {"/auditSnat"}) @RequiresPermissions("snat_policy:confirm") - public String auditSnat(String cfgName,String ids,IpPortCfg cfg,RedirectAttributes redirectAttributes) { - //this._auditIp(cfgName,ids, cfg, redirectAttributes); + public String auditSnat(String ids,Integer isAudit,Integer isValid,Integer functionId,RedirectAttributes redirectAttributes) { if(!StringUtil.isEmpty(ids)){ String[] idArray = ids.split(","); Date auditTime=new Date(); for(String id :idArray){ try { - ipAddrPoolCfgService.auditSnatStrategy(id, cfg, auditTime); + ipMultiplexService.auditSnatPolicy(isAudit,isValid,functionId,id,auditTime); } catch (Exception e) { e.printStackTrace(); logger.error("SNAT策略配置下发失败:"+e.getMessage()); @@ -206,7 +247,7 @@ public class IpMultiplexController extends CommonController { } } - return "redirect:" + adminPath +"/manipulation/ipmulitiplex/snatPolicyList?functionId="+cfg.getFunctionId(); + return "redirect:" + adminPath +"/manipulation/ipmulitiplex/snatPolicyList?functionId="+functionId; } @RequestMapping(value = {"/dnatPolicyList"}) diff --git a/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.java b/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.java index 241239888..68b46add8 100644 --- a/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.java +++ b/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.java @@ -18,21 +18,22 @@ public interface IpAddrPoolCfgDao extends CrudDao{ ,@Param("isAudit")Integer isAudit ,@Param("isValid")Integer isValid); - - void saveAddrPoolCfg(IpAddrPoolCfg cfg); - - void updateAddrPoolCfg(IpAddrPoolCfg entity); - - void saveReuseIpCfgs(BaseIpCfg ipCfg); - - List getReuseIpCfgs(@Param("addrPoolId")Integer addrPoolId); - - void deleteReuseIpCfgs(@Param("addrPoolId")Integer addrPoolId); - - Integer getAddrPoolId(@Param("cfgId")Long cfgId); + List getReuseIpCfgs(@Param("cfgId")Long cfgId); IpAddrPoolCfg getCfgInfo(IpAddrPoolCfg cfg); + + void saveAddrPoolCfg(IpAddrPoolCfg cfg); + void saveReuseIpCfgs(BaseIpCfg ipCfg); + + void updateAddrPoolCfg(IpAddrPoolCfg entity); + void updateReuseIpCfgs(IpAddrPoolCfg entity); + + void deleteReuseIpCfgs(@Param("addrPoolId")Long addrPoolId); List findAddrPoolCfg(); + Long getAddrPoolIdByName(String addrPoolName); + + + } diff --git a/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.xml b/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.xml index 47e4316fb..dd2a81609 100644 --- a/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.xml +++ b/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.xml @@ -3,11 +3,9 @@ - - + - @@ -38,7 +36,7 @@ - r.CFG_ID,r.ADDR_POOL_ID,r.IP_TOTAL,r.AVAILABLE_IP_TOTAL,r.ACTION,r.IS_VALID,r.IS_AUDIT, + r.CFG_ID,r.ADDR_POOL_NAME,r.IP_TOTAL,r.ACTION,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, @@ -62,13 +60,10 @@ ,s.name as creator_name, e.name as editor_name, u.name as auditor_name, - a.group_name as addr_pool_name, ri.request_title as requestName FROM ip_reuse_addr_pool r - left join - policy_group_info a on r.addr_pool_id = a.group_Id left join sys_user s on r.creator_id = s.id left join @@ -81,24 +76,18 @@ AND ${page.where} - - AND r.CFG_ID=#{cfgId,jdbcType=BIGINT} + + AND r.cfg_id=#{cfgId,jdbcType=BIGINT} AND r.compile_id=#{compileId,jdbcType=BIGINT} - - AND r.addr_pool_id = #{addrPoolId,jdbcType=INTEGER} - - AND r.addr_pool_name = #{addrPoolName,jdbcType=VARCHAR} + AND r.addr_pool_name LIKE concat(concat('%',#{addrPoolName,jdbcType=VARCHAR}),'%') AND r.ip_total = #{ipTotal,jdbcType=INTEGER} - - AND r.available_ip_total = #{availableIpTotal,jdbcType=INTEGER} - AND r.ACTION=#{action,jdbcType=INTEGER} @@ -149,7 +138,7 @@ ORDER BY ${page.orderBy} - ORDER BY r.CFG_ID DESC + ORDER BY r.cfg_id DESC @@ -161,6 +150,9 @@ FROM ip_reuse_addr_pool r + + AND r.cfg_id=#{cfgId,jdbcType=BIGINT} + AND r.is_valid = #{isValid,jdbcType=INTEGER} @@ -169,12 +161,9 @@ AND r.is_audit = #{isAudit,jdbcType=INTEGER} - - - AND r.cfg_id = #{cfgId,jdbcType=BIGINT} - - - ORDER BY cfg_Id + + + ORDER BY r.cfg_id @@ -258,10 +247,8 @@ INSERT INTO ip_reuse_addr_pool( - addr_pool_id, addr_pool_name, ip_total, - available_ip_total, action, is_valid, is_audit, @@ -289,10 +276,8 @@ user_region4, user_region5 )VALUES ( - #{addrPoolId,jdbcType=INTEGER}, #{addrPoolName,jdbcType=VARCHAR}, #{ipTotal,jdbcType=INTEGER}, - #{availableIpTotal,jdbcType=INTEGER}, #{action,jdbcType=INTEGER}, 0, 0, @@ -328,19 +313,62 @@ FROM ip_reuse_ip_cfg a WHERE - a.is_valid != -1 AND a.user_region1 = #{addrPoolId} + a.is_valid != -1 AND a.user_region1 = #{cfgId} - + + update ip_reuse_ip_cfg + + + + is_valid = #{isValid,jdbcType=INTEGER}, + + + is_audit = #{isAudit,jdbcType=INTEGER}, + + + creator_id = #{creatorId,jdbcType=INTEGER}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + editor_id = #{editorId,jdbcType=INTEGER}, + + + edit_time = #{editTime,jdbcType=TIMESTAMP}, + + + auditor_id = #{auditorId,jdbcType=INTEGER}, + + + audit_time = #{auditTime,jdbcType=TIMESTAMP}, + + + request_id = #{requestId,jdbcType=INTEGER}, + + + is_area_effective = #{isAreaEffective,jdbcType=INTEGER}, + + + classify = #{classify,jdbcType=VARCHAR}, + + + attribute = #{attribute,jdbcType=VARCHAR}, + + + lable = #{lable,jdbcType=VARCHAR}, + + + area_effective_ids = #{areaEffectiveIds,jdbcType=VARCHAR}, + + + + where user_region1 = #{cfgId,jdbcType=BIGINT} + + - + DELETE FROM ip_reuse_ip_cfg WHERE user_region1 = #{addrPoolId} @@ -348,18 +376,9 @@ update ip_reuse_addr_pool - - addr_pool_id = #{addrPoolId,jdbcType=INTEGER}, - ip_total = #{ipTotal,jdbcType=INTEGER}, - - available_ip_total = #{availableIpTotal,jdbcType=INTEGER}, - - - action = #{action,jdbcType=INTEGER}, - is_valid = #{isValid,jdbcType=INTEGER}, @@ -423,16 +442,16 @@ FROM ip_reuse_addr_pool r - AND r.cfg_id=#{cfgId,jdbcType=BIGINT} + AND r.cfg_id = #{cfgId,jdbcType=BIGINT} - AND r.is_valid =#{isValid,jdbcType=INTEGER} + AND r.is_valid = #{isValid,jdbcType=INTEGER} AND r.is_valid != -1 - AND r.function_id=#{functionId,jdbcType=INTEGER} + AND r.function_id = #{functionId,jdbcType=INTEGER} AND r.addr_pool_name = #{addrPoolName,jdbcType=VARCHAR} @@ -442,7 +461,16 @@ + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.java b/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.java new file mode 100644 index 000000000..63d8fe0e4 --- /dev/null +++ b/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.java @@ -0,0 +1,26 @@ +package com.nis.web.dao.configuration; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.configuration.IpReusePolicyCfg; +import com.nis.web.dao.CrudDao; +import com.nis.web.dao.MyBatisDao; + +@MyBatisDao +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); + + void updatePolicyCfg(IpReusePolicyCfg entity); + + String getUserType(@Param("userId")Integer userId); + +} diff --git a/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.xml b/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.xml new file mode 100644 index 000000000..381348658 --- /dev/null +++ b/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.xml @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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.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, + r.USER_REGION1,r.USER_REGION2,r.USER_REGION3,r.USER_REGION4,r.USER_REGION5 + + + + + + + + + INSERT INTO ip_reuse_policy_cfg ( + cfg_desc, + addr_pool_id, + user_id, + user_type, + action, + is_valid, + is_audit, + cfg_type, + cfg_region_code, + function_id, + service_id, + compile_id, + is_area_effective, + area_effective_ids, + request_id, + classify, + attribute, + lable, + creator_id, + create_time, + editor_id, + edit_time, + auditor_id, + audit_time, + user_region1, + user_region2, + user_region3, + user_region4, + user_region5 + )VALUES ( + #{cfgDesc,jdbcType=VARCHAR}, + #{addrPoolId,jdbcType=INTEGER}, + #{userId,jdbcType=INTEGER}, + #{userType,jdbcType=VARCHAR}, + #{action,jdbcType=INTEGER}, + 0, + 0, + #{cfgType,jdbcType=VARCHAR}, + #{cfgRegionCode,jdbcType=INTEGER}, + #{functionId,jdbcType=INTEGER}, + #{serviceId,jdbcType=INTEGER}, + #{compileId,jdbcType=INTEGER}, + #{isAreaEffective,jdbcType=INTEGER}, + #{areaEffectiveIds,jdbcType=VARCHAR}, + #{requestId,jdbcType=INTEGER}, + #{classify,jdbcType=VARCHAR}, + #{attribute,jdbcType=VARCHAR}, + #{lable,jdbcType=VARCHAR}, + #{creatorId,jdbcType=INTEGER}, + #{createTime,jdbcType=TIMESTAMP}, + #{editorId,jdbcType=INTEGER}, + #{editTime,jdbcType=TIMESTAMP}, + #{auditorId,jdbcType=INTEGER}, + #{auditTime,jdbcType=TIMESTAMP}, + #{userRegion1,jdbcType=VARCHAR}, + #{userRegion2,jdbcType=VARCHAR}, + #{userRegion3,jdbcType=VARCHAR}, + #{userRegion4,jdbcType=VARCHAR}, + #{userRegion5,jdbcType=VARCHAR} + ) + + + + + + update ip_reuse_policy_cfg + + + + user_id = #{userId,jdbcType=INTEGER}, + + + user_type = #{userType,jdbcType=VARCHAR}, + + + addr_pool_id = #{addrPoolId,jdbcType=INTEGER}, + + + translate_param = #{translateParam,jdbcType=VARCHAR}, + + + user_id = #{userId,jdbcType=INTEGER}, + + + is_valid = #{isValid,jdbcType=INTEGER}, + + + is_audit = #{isAudit,jdbcType=INTEGER}, + + + creator_id = #{creatorId,jdbcType=INTEGER}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + editor_id = #{editorId,jdbcType=INTEGER}, + + + edit_time = #{editTime,jdbcType=TIMESTAMP}, + + + auditor_id = #{auditorId,jdbcType=INTEGER}, + + + audit_time = #{auditTime,jdbcType=TIMESTAMP}, + + + request_id = #{requestId,jdbcType=INTEGER}, + + + is_area_effective = #{isAreaEffective,jdbcType=INTEGER}, + + + classify = #{classify,jdbcType=VARCHAR}, + + + attribute = #{attribute,jdbcType=VARCHAR}, + + + lable = #{lable,jdbcType=VARCHAR}, + + + area_effective_ids = #{areaEffectiveIds,jdbcType=VARCHAR}, + + + + WHERE cfg_id = #{cfgId,jdbcType=BIGINT} + + + \ No newline at end of file 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 f05e39e8d..b901a5f3a 100644 --- a/src/main/java/com/nis/web/service/configuration/IpAddrPoolCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/IpAddrPoolCfgService.java @@ -15,34 +15,24 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.beust.jcommander.internal.Lists; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import com.nis.domain.Page; -import com.nis.domain.callback.InlineIp; import com.nis.domain.callback.IpAddrPool; import com.nis.domain.configuration.BaseIpCfg; -import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.IpAddrPoolCfg; -import com.nis.domain.configuration.IpMultiplexPoolCfg; import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.UserManage; -import com.nis.domain.maat.ToMaatResult; import com.nis.domain.maat.MaatCfg.IpCfg; +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.StringUtils; -import com.nis.util.httpclient.HttpClientUtil; import com.nis.web.dao.configuration.IpAddrPoolCfgDao; import com.nis.web.dao.configuration.IpCfgDao; import com.nis.web.security.UserUtils; import com.nis.web.service.BaseService; import com.nis.web.service.SpringContextHolder; -import com.nis.web.service.basics.PolicyGroupInfoService; import com.nis.web.service.basics.SysDictInfoService; -import jersey.repackaged.com.google.common.collect.Maps; - @Service public class IpAddrPoolCfgService extends BaseService{ @@ -69,16 +59,16 @@ public class IpAddrPoolCfgService extends BaseService{ * @param isValid * @return */ - public IpAddrPoolCfg getIpAddrPoolCfg(Long id, Integer isValid) { + public IpAddrPoolCfg getIpAddrPoolCfg(Long cfgId, Integer isValid) { // 1.获取地址池配置信息 - List list=ipAddrPoolCfgDao.findList(id,isValid,null); + List list=ipAddrPoolCfgDao.findList(cfgId,isValid,null); IpAddrPoolCfg addrPoolCfg=null; if(list != null && list.size()>0){ addrPoolCfg=list.get(0); } // 2.获取地址池内IP信息 - List ipCfgs = ipAddrPoolCfgDao.getReuseIpCfgs(addrPoolCfg.getAddrPoolId()); + List ipCfgs = ipAddrPoolCfgDao.getReuseIpCfgs(addrPoolCfg.getCfgId()); if(ipCfgs != null && ipCfgs.size()>0){ addrPoolCfg.setIpCfgs(ipCfgs); } @@ -94,23 +84,13 @@ public class IpAddrPoolCfgService extends BaseService{ @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void saveOrUpdate(IpAddrPoolCfg entity, HttpServletRequest req, HttpServletResponse res) { - // 可用IP数(需调用CGI接口查询) - /*Map params = new HashMap(); - params.put("cmd", "IpNumGet"); - params.put("addr_pool_id", entity.getAddrPoolId()); - try { - String resJson = HttpClientUtil.getMsg("", params, req); - } catch (Exception e1) { - e1.printStackTrace(); - }*/ - - // 1.更新配置信息 + // 1.更新地址池信息 Date time = new Date(); entity.setIsValid(0); entity.setIsAudit(0); setAreaEffectiveIds(entity); entity.setIpTotal(entity.getIpCfgs().size()); - if(entity.getCfgId()==null){ + if(entity.getCfgId() == null){ entity.initDefaultValue(); entity.setCreateTime(time); entity.setCreatorId(UserUtils.getUser().getId()); @@ -134,12 +114,13 @@ public class IpAddrPoolCfgService extends BaseService{ entity.setCreateTime(new Date()); entity.setCreatorId(entity.getCurrentUser().getId()); } - ipAddrPoolCfgDao.deleteReuseIpCfgs(entity.getAddrPoolId()); + Long addrPoolId = ipAddrPoolCfgDao.getAddrPoolIdByName(entity.getAddrPoolName()); - // 2.保存IP信息 -> ip_reuse_ip_cfg(该表user_region1字段 存放 地址池ID) + // 2.更新地址池IP信息 + ipAddrPoolCfgDao.deleteReuseIpCfgs(addrPoolId); for (BaseIpCfg IpCfg : entity.getIpCfgs()) { - BeanUtils.copyProperties(entity, IpCfg); - IpCfg.setUserRegion1(entity.getAddrPoolId()+""); + BeanUtils.copyProperties(entity, IpCfg, new String[]{"cfgId"}); + IpCfg.setUserRegion1(addrPoolId+""); ipAddrPoolCfgDao.saveReuseIpCfgs(IpCfg); } @@ -148,7 +129,6 @@ public class IpAddrPoolCfgService extends BaseService{ @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void delete(Integer isAudit, Integer isValid, String ids, Integer functionId) { String[] idArray = ids.split(","); - String groupIds = ""; for(String id :idArray){ IpAddrPoolCfg entity = new IpAddrPoolCfg(); entity.setCfgId(Long.valueOf(id)); @@ -157,15 +137,11 @@ public class IpAddrPoolCfgService extends BaseService{ entity.setIsValid(isValid); entity.setEditorId(UserUtils.getUser().getId()); entity.setEditTime(new Date()); - Integer addrPoolId = ipAddrPoolCfgDao.getAddrPoolId(entity.getCfgId()); - groupIds += addrPoolId+","; - ipAddrPoolCfgDao.deleteReuseIpCfgs(addrPoolId); - ipAddrPoolCfgDao.updateAddrPoolCfg(entity); + ipAddrPoolCfgDao.updateReuseIpCfgs(entity); } - PolicyGroupInfoService groupInfoService = SpringContextHolder.getBean(PolicyGroupInfoService.class); - groupInfoService.deldete(groupIds, isValid); + } /** @@ -185,8 +161,9 @@ public class IpAddrPoolCfgService extends BaseService{ cfg.setAuditorId(UserUtils.getUser().getId()); cfg.setAuditTime(auditTime); ipAddrPoolCfgDao.updateAddrPoolCfg(cfg);// 更新配置审核状态 + ipAddrPoolCfgDao.updateReuseIpCfgs(cfg); - cfg=getIpAddrPoolCfg(cfg.getCfgId(), null); + cfg = this.getIpAddrPoolCfg(cfg.getCfgId(), null); String json=""; if(cfg.getIsAudit()==1){ List resStrategyList=new ArrayList(); @@ -216,9 +193,9 @@ public class IpAddrPoolCfgService extends BaseService{ ip.setIsValid(cfg.getIsValid()); ip.setAction(ipcfg.getAction()); ip.setService(ipcfg.getServiceId()); - ip.setAddrPoolId(cfg.getAddrPoolId()); + ip.setAddrPoolId(cfg.getCfgId()); ip.setOpTime(auditTime); - ip.setAreaEffectiveIds(cfg.getAreaEffectiveIds());//添加区域管控 + //ip.setAreaEffectiveIds(cfg.getAreaEffectiveIds());//添加区域管控 resStrategyList.add(ip); } @@ -261,9 +238,9 @@ public class IpAddrPoolCfgService extends BaseService{ ip.setIsValid(cfg.getIsValid()); ip.setAction(ipcfg.getAction()); ip.setService(ipcfg.getServiceId()); - ip.setAddrPoolId(cfg.getAddrPoolId()); + ip.setAddrPoolId(cfg.getCfgId()); ip.setOpTime(auditTime); - ip.setAreaEffectiveIds(cfg.getAreaEffectiveIds()); + //ip.setAreaEffectiveIds(cfg.getAreaEffectiveIds()); resStrategyList.add(ip); } //调用服务接口取消配置 @@ -295,107 +272,7 @@ public class IpAddrPoolCfgService extends BaseService{ * @return */ public List getEffectiveAddrPool() { - List addrPools = ipAddrPoolCfgDao.findAddrPoolCfg(); - - /*String cgiUrl = "http://localhost:8080/gwall/nis/maintenance/ipMultiplexPoolCfg/cgiCall"; - if(StringUtils.isNotBlank(Constants.IP_REUSE_CGI_URL)){ - cgiUrl = Constants.IP_REUSE_CGI_URL; - } - for (IpAddrPoolCfg cfg : addrPools) { - - Map params = new HashMap(); - params.put("cmd", "IpNumGet"); - params.put("addr_pool_id", cfg.getAddrPoolId()); - try { - String resJson = HttpClientUtil.getMsg(cgiUrl, params, req); - - } catch (Exception e) { - logger.error("获取地址池信息失败!", e); - e.printStackTrace(); - } - - }*/ - - return addrPools; - } - - /** - * 策略配置审核 - * @param ids - * @param cfg - * @param auditTime - */ - @Transactional(readOnly=false,rollbackFor=RuntimeException.class) - public void auditSnatStrategy(String id, IpPortCfg cfg, Date auditTime) { - cfg.setCfgId(Long.valueOf(id)); - cfg.setTableName(IpPortCfg.getTablename()); - cfg.setAuditorId(UserUtils.getUser().getId()); - cfg.setAuditTime(auditTime); - // 更新配置审核状态 - IpCfgDao ipCfgDao = SpringContextHolder.getBean(IpCfgDao.class); - IpCfgService IpCfgService = SpringContextHolder.getBean(IpCfgService.class); - ipCfgDao.auditCfg(cfg); - - // 获取配置信息 - BaseIpCfg ipCfg = IpCfgService.getIpCfgById(cfg); - SysDictInfoService sysDictInfoService = SpringContextHolder.getBean(SysDictInfoService.class); - UserManageService userManageService = SpringContextHolder.getBean(UserManageService.class); - UserManage user = userManageService.getUserById(ipCfg.getUserRegion1()); - String json=""; - if(cfg.getIsAudit() == Constants.AUDIT_YES){ - Map params = new HashMap(); - params.put("configId", ipCfg.getCompileId()); - params.put("addrPoolId", ipCfg.getUserRegion2()); - params.put("userType", user.getUserType()); - params.put("userId", user.getId()); - params.put("isValid", 1); - params.put("opTime", auditTime); - if(ipCfg.getIsAreaEffective() == 1){ - params.put("effectiveRange", sysDictInfoService.setEffectiveRange(ipCfg.getAreaEffectiveIds())); - } - List list = Lists.newArrayList(); - list.add(params); - //调用服务接口下发配置数据 - json=gsonToJson(list); - logger.info("SNAT策略配置下发参数:"+json); - //调用服务接口下发配置 - try { - ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json); - if(result!=null){ - logger.info("SNAT地址池配置下发响应信息:"+result.getMsg()); - } - } catch (Exception e) { - logger.error("SNAT策略配置下发失败",e); - throw e; - } - - }else if(cfg.getIsAudit() == Constants.AUDIT_NOT_YES){ - Map params = new HashMap(); - params.put("configId", ipCfg.getCompileId()); - params.put("addrPoolId", ipCfg.getUserRegion2()); - params.put("userType", user.getUserType()); - params.put("userId", user.getId()); - params.put("isValid", 0); - params.put("opTime", auditTime); - if(ipCfg.getIsAreaEffective() == 1){ - params.put("effectiveRange", sysDictInfoService.setEffectiveRange(ipCfg.getAreaEffectiveIds())); - } - List list = Lists.newArrayList(); - list.add(params); - //调用服务接口取消配置 - json=gsonToJson(list); - logger.info("SNAT策略配置下发参数:"+json); - //调用服务接口取消配置 - try { - ToMaatResult result = ConfigServiceUtil.put(json, 2); - logger.info("SNAT策略配置响应信息:"+result.getMsg()); - } catch (Exception e) { - e.printStackTrace(); - logger.info("SNAT策略配置配置失败"); - throw e; - } - - } + return ipAddrPoolCfgDao.findAddrPoolCfg(); } } diff --git a/src/main/java/com/nis/web/service/configuration/IpMultiplexService.java b/src/main/java/com/nis/web/service/configuration/IpMultiplexService.java new file mode 100644 index 000000000..a60e48b5b --- /dev/null +++ b/src/main/java/com/nis/web/service/configuration/IpMultiplexService.java @@ -0,0 +1,184 @@ +package com.nis.web.service.configuration; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.beust.jcommander.internal.Lists; +import com.nis.domain.Page; +import com.nis.domain.configuration.IpReusePolicyCfg; +import com.nis.domain.maat.ToMaatResult; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.ConfigServiceUtil; +import com.nis.util.Constants; +import com.nis.web.dao.configuration.IpMultiplexDao; +import com.nis.web.security.UserUtils; +import com.nis.web.service.BaseService; +import com.nis.web.service.SpringContextHolder; +import com.nis.web.service.basics.SysDictInfoService; + +@Service +public class IpMultiplexService extends BaseService{ + + @Autowired + private IpMultiplexDao ipMultiplexDao; + + public Page findPage(Page page, IpReusePolicyCfg entity) { + entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"r")); + entity.setPage(page); + List list=ipMultiplexDao.findPage(entity); + page.setList(list); + return page; + } + + public IpReusePolicyCfg getPolicyCfg(Long cfgId, Integer isValid) { + List list=ipMultiplexDao.findList(cfgId,isValid,null); + IpReusePolicyCfg policyCfg=null; + if(list != null && list.size()>0){ + policyCfg=list.get(0); + } + return policyCfg; + } + + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void saveOrUpdate(IpReusePolicyCfg entity, HttpServletRequest request, HttpServletResponse response) { + Date time = new Date(); + entity.setIsValid(0); + entity.setIsAudit(0); + setAreaEffectiveIds(entity); + + // 获取用户/账号类型 + if(entity.getUserId() != null){ + String userType = ipMultiplexDao.getUserType(entity.getUserId()); + entity.setUserType(userType); + } + + // 更新策略信息 + if(entity.getCfgId() == null){ + entity.initDefaultValue(); + entity.setCreateTime(time); + entity.setCreatorId(UserUtils.getUser().getId()); + //调用服务接口获取compileId + try { + List compileIds = ConfigServiceUtil.getId(1,1); + if(compileIds != null && compileIds.size() > 0 ){ + entity.setCompileId(compileIds.get(0)); + } + } catch (Exception e) { + e.printStackTrace(); + logger.info("获取编译ID出错"); + throw new MaatConvertException(":"+e.getMessage()); + } + ipMultiplexDao.savePolicyCfg(entity); + + }else{ + entity.setEditorId(UserUtils.getUser().getId()); + entity.setEditTime(time); + ipMultiplexDao.updatePolicyCfg(entity); + + } + + } + + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void delete(Integer isValid, String ids, Integer functionId) { + String[] idArray = ids.split(","); + for(String id :idArray){ + IpReusePolicyCfg entity = new IpReusePolicyCfg(); + entity.setCfgId(Long.valueOf(id)); + entity.setFunctionId(functionId); + entity.setIsValid(isValid); + entity.setEditorId(UserUtils.getUser().getId()); + entity.setEditTime(new Date()); + ipMultiplexDao.updatePolicyCfg(entity); + + } + + } + + /** + * 策略配置审核 + * @param ids + * @param cfg + * @param auditTime + */ + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void auditSnatPolicy(Integer isAudit, Integer isValid, Integer functionId, String id, Date auditTime) { + // 更新配置审核状态 + IpReusePolicyCfg cfg = new IpReusePolicyCfg(); + cfg.setCfgId(Long.valueOf(id)); + cfg.setIsValid(isValid); + cfg.setIsAudit(isAudit); + cfg.setAuditorId(UserUtils.getUser().getId()); + cfg.setAuditTime(auditTime); + ipMultiplexDao.updatePolicyCfg(cfg); + + SysDictInfoService sysDictInfoService = SpringContextHolder.getBean(SysDictInfoService.class); + // 获取配置信息 + cfg = this.getPolicyCfg(cfg.getCfgId(), null); + String json=""; + if(cfg.getIsAudit() == Constants.AUDIT_YES){ + 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("isValid", 1); + params.put("opTime", auditTime); + if(cfg.getIsAreaEffective() == 1){ + params.put("effectiveRange", sysDictInfoService.setEffectiveRange(cfg.getAreaEffectiveIds())); + } + List list = Lists.newArrayList(); + list.add(params); + //调用服务接口下发配置数据 + json=gsonToJson(list); + logger.info("SNAT策略配置下发参数:"+json); + //调用服务接口下发配置 + try { + ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json); + if(result!=null){ + logger.info("SNAT策略配置下发响应信息:"+result.getMsg()); + } + } catch (Exception e) { + logger.error("SNAT策略配置下发失败",e); + throw e; + } + + }else if(cfg.getIsAudit() == Constants.AUDIT_NOT_YES){ + 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("isValid", 0); + params.put("opTime", auditTime); + if(cfg.getIsAreaEffective() == 1){ + params.put("effectiveRange", sysDictInfoService.setEffectiveRange(cfg.getAreaEffectiveIds())); + } + List list = Lists.newArrayList(); + list.add(params); + //调用服务接口取消配置 + json=gsonToJson(list); + logger.info("SNAT策略配置下发参数:"+json); + //调用服务接口取消配置 + try { + ToMaatResult result = ConfigServiceUtil.put(json, 2); + logger.info("SNAT策略配置响应信息:"+result.getMsg()); + } catch (Exception e) { + e.printStackTrace(); + logger.info("SNAT策略配置配置失败"); + throw e; + } + + } + } + +} diff --git a/src/main/resources/messages/message_en.properties b/src/main/resources/messages/message_en.properties index e05f72464..a8563b02d 100644 --- a/src/main/resources/messages/message_en.properties +++ b/src/main/resources/messages/message_en.properties @@ -1327,7 +1327,7 @@ 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 +address_pool=Address Pool Name ip_total=IP Total available_ip_total=Available IP Total address_pool_id=Address Pool ID diff --git a/src/main/resources/messages/message_ru.properties b/src/main/resources/messages/message_ru.properties index e554de19b..911b300e2 100644 --- a/src/main/resources/messages/message_ru.properties +++ b/src/main/resources/messages/message_ru.properties @@ -1327,7 +1327,7 @@ 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 +address_pool=Address Pool Name ip_total=IP Total available_ip_total=Available IP Total address_pool_id=Address Pool ID diff --git a/src/main/resources/messages/message_zh_CN.properties b/src/main/resources/messages/message_zh_CN.properties index 32f4a78b0..499d06d40 100644 --- a/src/main/resources/messages/message_zh_CN.properties +++ b/src/main/resources/messages/message_zh_CN.properties @@ -1325,7 +1325,7 @@ outgoing_unicast_packets=Upload Packets outgoing_unicast_total_size=Upload Byte incoming_unicast_packets=Download Packets incoming_unicast_total_size=Download Byte -address_pool=\u5730\u5740\u6C60 +address_pool=\u5730\u5740\u6C60\u540D\u79F0 ip_total=IP\u603B\u6570 available_ip_total=\u53EF\u7528IP\u6570 address_pool_id=\u5730\u5740\u6C60ID diff --git a/src/main/webapp/WEB-INF/views/cfg/maintenance/ipMultiplexPool/snatform2.jsp b/src/main/webapp/WEB-INF/views/cfg/maintenance/ipMultiplexPool/snatform2.jsp index c672828ef..74667f4a9 100644 --- a/src/main/webapp/WEB-INF/views/cfg/maintenance/ipMultiplexPool/snatform2.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/maintenance/ipMultiplexPool/snatform2.jsp @@ -103,7 +103,6 @@ var resetIndex = function(){ - diff --git a/src/main/webapp/WEB-INF/views/cfg/maintenance/ipMultiplexPool/snatlist2.jsp b/src/main/webapp/WEB-INF/views/cfg/maintenance/ipMultiplexPool/snatlist2.jsp index d638cc9df..a5856584c 100644 --- a/src/main/webapp/WEB-INF/views/cfg/maintenance/ipMultiplexPool/snatlist2.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/maintenance/ipMultiplexPool/snatlist2.jsp @@ -6,8 +6,10 @@