VPN服务器

新增添加IP重复验证
删除验证是否被IP复用-用户管理使用
IP复用-用户管理 删除验证是否被snat策略和dnat策略使用

(cherry picked from commit 436190fe8c)

Conflicts:
	src/main/resources/messages/message_en.properties
	src/main/resources/messages/message_ru.properties
	src/main/resources/messages/message_zh_CN.properties
This commit is contained in:
leijun
2019-01-18 09:40:23 +00:00
committed by wangxin
parent 9ff1643e30
commit b41f0d8ad5
7 changed files with 137 additions and 10 deletions

View File

@@ -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<UserManage> 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;
}
}

View File

@@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.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<IpReusePolicyCfg> snatList=ipMultiplexService.findByUser(user.getUserName());
if(snatList!=null && snatList.size()>0){
exUser+=user.getUserName()+"";
flag=false;
}else{
//dnat
List<IpReuseDnatPolicyCfg> 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+="<br/> "+msgProp.getProperty("user")+" "+exUser+" "+msgProp.getProperty("user_check");
}
if(e instanceof MaatConvertException) {
addMessage(redirectAttributes,"error",message);
}else {

View File

@@ -48,4 +48,8 @@ public interface IpMultiplexDao extends CrudDao<IpMultiplexDao>{
List<IpReusePolicyCfg> findByPage(@Param("ids")String ids);
List<BaseIpCfg> findPageByDnat(@Param("ids")String ids);
List<IpReusePolicyCfg> findByUser(@Param("userName")String userName);
List<IpReuseDnatPolicyCfg> findDnatUser(@Param("userName")String userName);
}

View File

@@ -801,4 +801,22 @@
</select>
<select id="findByUser" resultMap="policyMap">
SELECT
<include refid="policyColumns"/>
FROM
ip_reuse_policy_cfg r
where r.IS_VALID != -1
and r.user_name =#{userName}
</select>
<select id="findDnatUser" resultMap="dnatPolicyMap">
SELECT
<include refid="dnatPolicyColumns"/>
FROM
ip_reuse_dnat_policy a
where a.IS_VALID != -1
and a.translated_user_id =#{userName}
</select>
</mapper>

View File

@@ -327,4 +327,14 @@ public class IpMultiplexService extends BaseService{
public IpReuseDnatPolicyCfg getDnatCfg(Long cfgId,Integer compileId) {
return ipMultiplexDao.getDnatCfg(cfgId,compileId);
}
public List<IpReusePolicyCfg> findByUser(String userName) {
List<IpReusePolicyCfg> list=ipMultiplexDao.findByUser(userName);
return list;
}
public List<IpReuseDnatPolicyCfg> findDnatUser(String userName) {
List<IpReuseDnatPolicyCfg> list=ipMultiplexDao.findDnatUser(userName);
return list;
}
}

View File

@@ -48,6 +48,12 @@ public class UserManageService extends BaseService{
return page;
}
public List<UserManage> findList(UserManage entity) {
List<UserManage> list=userManageDao.findList(entity);
return list;
}
public List<UserManage> findByPage(String ids ) {
List<UserManage> list=userManageDao.findByList(ids);
return list;

View File

@@ -104,6 +104,23 @@ label.errorShow {
return flagLeafChange;
},"<spring:message code='leafChange'/>");
//校验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;
},"<spring:message code='ip_existed'/>");
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 {
</label>
<div class="col-md-4">
<c:if test="${itType==5 }">
<input class="form-control required ipchecks " id="itemValue" type="text" name="itemValue" value="${serviceDictInfo.itemValue}">
<input class="form-control required ipchecks ipRepeat" id="itemValue" type="text" name="itemValue" value="${serviceDictInfo.itemValue}">
</c:if>
<c:if test="${itType!=5 }">
<form:input path="itemValue" htmlEscape="false" maxlength="64" class="form-control required "/>