地址池IP校验修改.

This commit is contained in:
zhangwq
2018-12-11 16:43:31 +08:00
parent f7db709545
commit 56598e05f0
6 changed files with 40 additions and 22 deletions

View File

@@ -1,5 +1,7 @@
package com.nis.web.controller.configuration.maintenance; package com.nis.web.controller.configuration.maintenance;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@@ -25,6 +27,7 @@ import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil; import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants; import com.nis.util.Constants;
import com.nis.util.StringUtil; import com.nis.util.StringUtil;
import com.nis.util.StringUtils;
import com.nis.web.controller.BaseController; import com.nis.web.controller.BaseController;
import com.nis.web.service.configuration.IpAddrPoolCfgService; import com.nis.web.service.configuration.IpAddrPoolCfgService;
@@ -166,7 +169,7 @@ public class IpAddrPoolController extends BaseController{
} }
/** /**
* 校验所有地址池配置IP不可重复 * 校验所有地址池配置IP+MASK组合不可重复
* @param cfg * @param cfg
* @param request * @param request
* @param response * @param response
@@ -174,10 +177,28 @@ public class IpAddrPoolController extends BaseController{
*/ */
@ResponseBody @ResponseBody
@RequestMapping(value = {"/checkAddrPoolIp"}) @RequestMapping(value = {"/checkAddrPoolIp"})
public boolean checkAddrPoolIp(String ips, HttpServletRequest request, HttpServletResponse response){ public boolean checkAddrPoolIp(String ip, String oldIp, HttpServletRequest request, HttpServletResponse response){
for (String ip : ips.split(",")) { List<String> oldIplist = new ArrayList<>();
Long cfgId = ipAddrPoolCfgService.checkAddrPoolIp(ip); if(StringUtils.isNotBlank(oldIp)){
if(cfgId != null){ oldIplist.add(oldIp);
if(oldIp.contains("/32")){
oldIplist.add(oldIp.substring(0, oldIp.indexOf("/")));
}else if(!oldIp.contains("/")){
oldIplist.add(oldIp+"/32");
}
}
List<String> searchlist = new ArrayList<>();
searchlist.add(ip);
if(ip.contains("/32")){
searchlist.add(ip.substring(0, ip.indexOf("/")));
}else if(!ip.contains("/")){
searchlist.add(ip+"/32");
}
for (String searchIp : searchlist) {
IpReuseIpCfg cfg = ipAddrPoolCfgService.checkAddrPoolIp(searchIp);
if((cfg != null) && (!oldIplist.contains(cfg.getSrcIpAddress()))){
return false; return false;
} }
} }

View File

@@ -35,7 +35,7 @@ public interface IpAddrPoolCfgDao extends CrudDao<IpAddrPoolCfgDao>{
Long getAddrPoolIdByName(String addrPoolName); Long getAddrPoolIdByName(String addrPoolName);
Long checkAddrPoolIp(@Param("srcIpAddress")String ip); IpReuseIpCfg checkAddrPoolIp(@Param("srcIpAddress")String ip);

View File

@@ -478,12 +478,15 @@
r.addr_pool_name = #{addrPoolName} AND r.is_valid != -1 r.addr_pool_name = #{addrPoolName} AND r.is_valid != -1
</select> </select>
<select id="checkAddrPoolIp" resultType="java.lang.Long"> <select id="checkAddrPoolIp" resultType="com.nis.domain.basics.IpReuseIpCfg">
SELECT SELECT
r.cfg_id r.cfg_id,r.src_ip_address
FROM FROM
ip_reuse_ip_cfg r ip_reuse_ip_cfg r
WHERE WHERE
r.src_ip_address = #{srcIpAddress} AND r.is_valid != -1 AND r.is_audit != 3 r.src_ip_address = #{srcIpAddress} AND
r.is_valid != -1 AND
r.is_audit != 3 AND
r.user_region1 IS NOT NULL
</select> </select>
</mapper> </mapper>

View File

@@ -288,7 +288,7 @@ public class IpAddrPoolCfgService extends BaseService{
return ipAddrPoolCfgDao.findAddrPoolCfg(); return ipAddrPoolCfgDao.findAddrPoolCfg();
} }
public Long checkAddrPoolIp(String ip) { public IpReuseIpCfg checkAddrPoolIp(String ip) {
return ipAddrPoolCfgDao.checkAddrPoolIp(ip); return ipAddrPoolCfgDao.checkAddrPoolIp(ip);
} }

View File

@@ -246,7 +246,7 @@ var resetIndex = function(){
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="ip"/></label> <label class="control-label col-md-3"><font color="red">*</font><spring:message code="ip"/></label>
<div class="col-md-6"> <div class="col-md-6">
<input class="form-control required ipCheck ipMaskSole" type="text" name="ipCfgs[0].srcIpAddress" ctx="${ctx }" cfgId="${_cfg.cfgId}"> <input class="form-control required ipCheck ipMaskSole" type="text" name="ipCfgs[0].srcIpAddress" ctx="${ctx }">
</div> </div>
<div for="ipCfgs[0].srcIpAddress"></div> <div for="ipCfgs[0].srcIpAddress"></div>
</div> </div>
@@ -393,7 +393,7 @@ var resetIndex = function(){
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="ip"/></label> <label class="control-label col-md-3"><font color="red">*</font><spring:message code="ip"/></label>
<div class="col-md-6"> <div class="col-md-6">
<input class="form-control required ipCheck ipMaskSole" type="text" name="ipCfgs[0].srcIpAddress" value="${ipCfg.srcIpAddress }" ctx="${ctx }" cfgId="${_cfg.cfgId}"> <input class="form-control required ipCheck ipMaskSole" type="text" name="ipCfgs[0].srcIpAddress" value="${ipCfg.srcIpAddress }" ctx="${ctx }" oldIp="${ipCfg.srcIpAddress }">
</div> </div>
<div for="ipCfgs[0].srcIpAddress"></div> <div for="ipCfgs[0].srcIpAddress"></div>
</div> </div>

View File

@@ -976,7 +976,7 @@ jQuery.validator.addMethod("areaUnique",function(value,element) {
return flag; return flag;
}); });
// 地址池IP+MASK不可重复校验 // 地址池IP+MASK组合不可重复校验
jQuery.validator.addMethod("ipMaskSole",function(value,element) { jQuery.validator.addMethod("ipMaskSole",function(value,element) {
var flag = true; var flag = true;
var ipArray = []; var ipArray = [];
@@ -995,21 +995,15 @@ jQuery.validator.addMethod("ipMaskSole",function(value,element) {
flag = false; flag = false;
} }
var cfgId = $(element).attr("cfgId"); var oldIp = $(element).attr("oldIp");
if((flag == true) && (!cfgId)){ if(flag == true){
ipArray = [];
ipArray.push(value2);
$(".ipMaskSole").each(function(){
ipArray.push($(this).val());
});
var ctx = $(element).attr("ctx"); var ctx = $(element).attr("ctx");
var url = ctx+"/maintenance/ipMultiplexPoolCfg/checkAddrPoolIp"; var url = ctx+"/maintenance/ipMultiplexPoolCfg/checkAddrPoolIp";
$.ajax({ $.ajax({
type:'post', type:'post',
async:false, async:false,
url: url, url: url,
data:{"ips":ipArray.join(',')}, data:{"ip":value2,"oldIp":oldIp},
success:function(data){ success:function(data){
flag = data; flag = data;
} }