From 436190fe8c9a9cd9c681753bd0ead3627459dd08 Mon Sep 17 00:00:00 2001 From: leijun Date: Fri, 18 Jan 2019 17:40:23 +0800 Subject: [PATCH] =?UTF-8?q?VPN=E6=9C=8D=E5=8A=A1=E5=99=A8=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=B7=BB=E5=8A=A0IP=E9=87=8D=E5=A4=8D=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=20=E5=88=A0=E9=99=A4=E9=AA=8C=E8=AF=81=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E8=A2=ABIP=E5=A4=8D=E7=94=A8-=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E4=BD=BF=E7=94=A8=20IP=E5=A4=8D=E7=94=A8-?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E6=98=AF=E5=90=A6=E8=A2=ABsnat=E7=AD=96?= =?UTF-8?q?=E7=95=A5=E5=92=8Cdnat=E7=AD=96=E7=95=A5=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basics/ServiceDictInfoController.java | 46 ++++++++++++++++++- .../maintenance/UserManageController.java | 44 +++++++++++++++--- .../web/dao/configuration/IpMultiplexDao.java | 4 ++ .../web/dao/configuration/IpMultiplexDao.xml | 18 ++++++++ .../configuration/IpMultiplexService.java | 10 ++++ .../configuration/UserManageService.java | 6 +++ .../resources/messages/message_en.properties | 4 +- .../resources/messages/message_ru.properties | 4 +- .../messages/message_zh_CN.properties | 4 +- .../WEB-INF/views/basics/serviceDictForm.jsp | 19 +++++++- 10 files changed, 146 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/nis/web/controller/basics/ServiceDictInfoController.java b/src/main/java/com/nis/web/controller/basics/ServiceDictInfoController.java index 70118cee7..c52d956c6 100644 --- a/src/main/java/com/nis/web/controller/basics/ServiceDictInfoController.java +++ b/src/main/java/com/nis/web/controller/basics/ServiceDictInfoController.java @@ -24,6 +24,7 @@ import com.google.common.collect.Maps; import com.nis.domain.Page; import com.nis.domain.SysUser; import com.nis.domain.basics.ServiceDictInfo; +import com.nis.domain.configuration.UserManage; import com.nis.util.ConfigDictUtils; import com.nis.util.Configurations; import com.nis.util.Constants; @@ -232,8 +233,36 @@ public class ServiceDictInfoController extends BaseController { @RequestMapping(value={"delete"}) public String delete(ServiceDictInfo serviceDictInfo, RedirectAttributes redirectAttributes, String itType, String mulitId) { try { - serviceDictInfoService.deleteDict(mulitId); - addMessage(redirectAttributes,"success", "delete_success"); + String exIp=""; + String id=""; + Properties msgProp = getMsgProp(); + if(itType.equals("5")){ + String [] ids=mulitId.split(","); + for (int i = 0; i < ids.length; i++) { + ServiceDictInfo dict= serviceDictInfoService.getDictById(Integer.valueOf(ids[i])); + if(dict!=null){ + UserManage user =new UserManage(); + user.setServerIp(dict.getItemValue()+","); + List list=userManageService.findList(user); + if(list!=null && list.size()>0){ + exIp+=dict.getItemValue()+","; + }else{ + id+=ids[i]+","; + } + } + } + }else{ + id=mulitId; + } + if(!StringUtil.isEmpty(id)){ + serviceDictInfoService.deleteDict(id); + } + if(!StringUtil.isEmpty(exIp)){ + exIp=exIp.substring(0, exIp.length()-1); + addMessage(redirectAttributes,"error", "IP "+exIp+" "+msgProp.getProperty("user_check")); + }else{ + addMessage(redirectAttributes,"success", "delete_success"); + } } catch (Exception e) { e.printStackTrace(); addMessage(redirectAttributes,"error", "delete_failed"); @@ -593,4 +622,17 @@ public class ServiceDictInfoController extends BaseController { return dicName; } + + @ResponseBody + @RequestMapping(value = "ajaxIpRepeat") + public boolean ajaxIpRepeat(String oldIp, String ip,Integer type) { + if (ip !=null && ip.equals(oldIp)) { + return true; + } else if (ip !=null && serviceDictInfoService.getByItemValue(ip,type) == null) { + return true; + } + return false; + } + + } diff --git a/src/main/java/com/nis/web/controller/configuration/maintenance/UserManageController.java b/src/main/java/com/nis/web/controller/configuration/maintenance/UserManageController.java index fcefabe27..9de04c691 100644 --- a/src/main/java/com/nis/web/controller/configuration/maintenance/UserManageController.java +++ b/src/main/java/com/nis/web/controller/configuration/maintenance/UserManageController.java @@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.eclipse.jetty.util.ajax.JSON; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; @@ -23,10 +24,8 @@ import com.google.common.collect.Maps; import com.nis.domain.Page; import com.nis.domain.basics.IpReuseIpCfg; import com.nis.domain.basics.ServiceDictInfo; -import com.nis.domain.configuration.BaseCfg; -import com.nis.domain.configuration.BaseStringCfg; -import com.nis.domain.configuration.CfgIndexInfo; -import com.nis.domain.configuration.IpPortCfg; +import com.nis.domain.configuration.IpReuseDnatPolicyCfg; +import com.nis.domain.configuration.IpReusePolicyCfg; import com.nis.domain.configuration.UserManage; import com.nis.exceptions.MaatConvertException; import com.nis.util.Constants; @@ -34,10 +33,14 @@ import com.nis.util.DateUtils; import com.nis.util.StringUtil; import com.nis.util.StringUtils; import com.nis.web.controller.BaseController; +import com.nis.web.service.configuration.IpMultiplexService; @Controller @RequestMapping("${adminPath}/maintenance/userManage") public class UserManageController extends BaseController{ + + @Autowired + private IpMultiplexService ipMultiplexService; @RequestMapping(value = {"/list"}) @RequiresPermissions(value={"user:manage:view"}) @@ -69,13 +72,30 @@ public class UserManageController extends BaseController{ public String delete(Integer isValid ,String ids ,RedirectAttributes redirectAttributes,HttpServletRequest request){ - String deleteSuccessIp=""; String message=""; Properties msgProp = getMsgProp(); + String exUser=""; try{ for (String id : ids.split(",")) { UserManage user=userManageService.getUserById(id); - if(user != null && !StringUtil.isEmpty(user.getServerIp())) { + //判断用户是否存在snat、dnat复用策略中 + boolean flag=true; + if(user!=null && !StringUtil.isEmpty(user.getUserName())){ + //snat + List snatList=ipMultiplexService.findByUser(user.getUserName()); + if(snatList!=null && snatList.size()>0){ + exUser+=user.getUserName()+","; + flag=false; + }else{ + //dnat + List dnatList=ipMultiplexService.findDnatUser(user.getUserName()); + if(dnatList!=null && dnatList.size()>0){ + exUser+=user.getUserName()+","; + flag=false; + } + } + } + if(user != null && !StringUtil.isEmpty(user.getServerIp()) && flag) { boolean lastIp=false; int deleteIpLenth=1; String serverIp=user.getServerIp().substring(0, user.getServerIp().length()-1); @@ -99,9 +119,19 @@ public class UserManageController extends BaseController{ } } } - addMessage(redirectAttributes,"success","delete_success"); + if(!StringUtil.isEmpty(exUser)){ + exUser=exUser.substring(0, exUser.length()-1); + addMessage(redirectAttributes,"error", msgProp.getProperty("user")+" "+exUser+" "+msgProp.getProperty("user_check")); + }else{ + addMessage(redirectAttributes,"success","delete_success"); + } + }catch(Exception e){ logger.error("Delete failed",e); + if(!StringUtil.isEmpty(exUser)){ + exUser=exUser.substring(0, exUser.length()-1); + message+="
"+msgProp.getProperty("user")+" "+exUser+" "+msgProp.getProperty("user_check"); + } if(e instanceof MaatConvertException) { addMessage(redirectAttributes,"error",message); }else { 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 5bd15336f..98ae74723 100644 --- a/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.java +++ b/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.java @@ -48,4 +48,8 @@ public interface IpMultiplexDao extends CrudDao{ List findByPage(@Param("ids")String ids); List findPageByDnat(@Param("ids")String ids); + + + List findByUser(@Param("userName")String userName); + List findDnatUser(@Param("userName")String userName); } 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 527712ca7..21a63c543 100644 --- a/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.xml +++ b/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.xml @@ -801,4 +801,22 @@ + + + + \ No newline at end of file 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 4e7f2f8d3..548588aff 100644 --- a/src/main/java/com/nis/web/service/configuration/IpMultiplexService.java +++ b/src/main/java/com/nis/web/service/configuration/IpMultiplexService.java @@ -327,4 +327,14 @@ public class IpMultiplexService extends BaseService{ public IpReuseDnatPolicyCfg getDnatCfg(Long cfgId,Integer compileId) { return ipMultiplexDao.getDnatCfg(cfgId,compileId); } + + public List findByUser(String userName) { + List list=ipMultiplexDao.findByUser(userName); + return list; + } + + public List findDnatUser(String userName) { + List list=ipMultiplexDao.findDnatUser(userName); + return list; + } } diff --git a/src/main/java/com/nis/web/service/configuration/UserManageService.java b/src/main/java/com/nis/web/service/configuration/UserManageService.java index a2c3c96d0..8df13477a 100644 --- a/src/main/java/com/nis/web/service/configuration/UserManageService.java +++ b/src/main/java/com/nis/web/service/configuration/UserManageService.java @@ -48,6 +48,12 @@ public class UserManageService extends BaseService{ return page; } + public List findList(UserManage entity) { + List list=userManageDao.findList(entity); + return list; + } + + public List findByPage(String ids ) { List list=userManageDao.findByList(ids); return list; diff --git a/src/main/resources/messages/message_en.properties b/src/main/resources/messages/message_en.properties index f8d59f674..4a2bcd22f 100644 --- a/src/main/resources/messages/message_en.properties +++ b/src/main/resources/messages/message_en.properties @@ -1475,4 +1475,6 @@ block_drop=Block(Drop) mail_record=Mail Records ssl_record=SSL Records http_record=HTTP Records -second_bps=bps \ No newline at end of file +second_bps=bps +ip_existed=IP has existed! +user_check=In use, Can not be deleted! \ 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 0c0c00b84..71583cb17 100644 --- a/src/main/resources/messages/message_ru.properties +++ b/src/main/resources/messages/message_ru.properties @@ -1479,4 +1479,6 @@ framework_log=\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e block_drop=\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435(\u041f\u0430\u0434\u0435\u043d\u0438\u0435) mail_record=\u0417\u0430\u043f\u0438\u0441\u0438 \u041f\u043e\u0447\u0442\u044b ssl_record=SSL \u0417\u0430\u043f\u0438\u0441\u0438 -http_record=HTTP \u0417\u0430\u043f\u0438\u0441\u0438 \ No newline at end of file +http_record=HTTP \u0417\u0430\u043f\u0438\u0441\u0438 +ip_existed=IP \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442! +user_check=\u0414\u0430\u043D\u043D\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442 \u0437\u0430\u043D\u044F\u0442, \u043D\u0435\u043B\u044C\u0437\u044F \u0443\u0434\u0430\u043B\u0438\u0442\u044C! \ 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 188458816..6608edf83 100644 --- a/src/main/resources/messages/message_zh_CN.properties +++ b/src/main/resources/messages/message_zh_CN.properties @@ -1475,4 +1475,6 @@ block_drop=\u5c01\u5835(\u4e22\u5f03) mail_record=\u90ae\u4ef6\u6cdb\u6536 ssl_record=SSL\u6cdb\u6536 http_record=HTTP\u6cdb\u6536 -second_bps=bps \ No newline at end of file +second_bps=bps +ip_existed=IP\u5DF2\u5B58\u5728\uFF01 +user_check=\u6B63\u5728\u4F7F\u7528\uFF0C\u4E0D\u80FD\u5220\u9664\uFF01 \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/basics/serviceDictForm.jsp b/src/main/webapp/WEB-INF/views/basics/serviceDictForm.jsp index 88d39f6af..9b06a7342 100644 --- a/src/main/webapp/WEB-INF/views/basics/serviceDictForm.jsp +++ b/src/main/webapp/WEB-INF/views/basics/serviceDictForm.jsp @@ -104,6 +104,23 @@ label.errorShow { return flagLeafChange; },""); + + //校验ip是否重复 + jQuery.validator.addMethod("ipRepeat",function(value,element){ + var flagLeafChange=false; + $.ajax({ + type:'post', + async:false, + url:'${ctx}/basics/serviceDictInfo/ajaxIpRepeat', + data:{oldIp:"${serviceDictInfo.itemValue}",ip:$("#itemValue").val(),type:5}, + success:function(data){ + flagLeafChange=data; + } + }); + return flagLeafChange; + },""); + + jQuery.validator.addMethod("ipchecks",function(value,element){ var tel=/^(0|1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(0|1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(0|1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(0|1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$/; return this.optional(element) || (tel.test(value)); @@ -252,7 +269,7 @@ label.errorShow {
- +