VPN服务器
新增添加IP重复验证 删除验证是否被IP复用-用户管理使用 IP复用-用户管理 删除验证是否被snat策略和dnat策略使用
This commit is contained in:
@@ -24,6 +24,7 @@ import com.google.common.collect.Maps;
|
|||||||
import com.nis.domain.Page;
|
import com.nis.domain.Page;
|
||||||
import com.nis.domain.SysUser;
|
import com.nis.domain.SysUser;
|
||||||
import com.nis.domain.basics.ServiceDictInfo;
|
import com.nis.domain.basics.ServiceDictInfo;
|
||||||
|
import com.nis.domain.configuration.UserManage;
|
||||||
import com.nis.util.ConfigDictUtils;
|
import com.nis.util.ConfigDictUtils;
|
||||||
import com.nis.util.Configurations;
|
import com.nis.util.Configurations;
|
||||||
import com.nis.util.Constants;
|
import com.nis.util.Constants;
|
||||||
@@ -232,8 +233,36 @@ public class ServiceDictInfoController extends BaseController {
|
|||||||
@RequestMapping(value={"delete"})
|
@RequestMapping(value={"delete"})
|
||||||
public String delete(ServiceDictInfo serviceDictInfo, RedirectAttributes redirectAttributes, String itType, String mulitId) {
|
public String delete(ServiceDictInfo serviceDictInfo, RedirectAttributes redirectAttributes, String itType, String mulitId) {
|
||||||
try {
|
try {
|
||||||
serviceDictInfoService.deleteDict(mulitId);
|
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");
|
addMessage(redirectAttributes,"success", "delete_success");
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
addMessage(redirectAttributes,"error", "delete_failed");
|
addMessage(redirectAttributes,"error", "delete_failed");
|
||||||
@@ -593,4 +622,17 @@ public class ServiceDictInfoController extends BaseController {
|
|||||||
return dicName;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.eclipse.jetty.util.ajax.JSON;
|
import org.eclipse.jetty.util.ajax.JSON;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
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.Page;
|
||||||
import com.nis.domain.basics.IpReuseIpCfg;
|
import com.nis.domain.basics.IpReuseIpCfg;
|
||||||
import com.nis.domain.basics.ServiceDictInfo;
|
import com.nis.domain.basics.ServiceDictInfo;
|
||||||
import com.nis.domain.configuration.BaseCfg;
|
import com.nis.domain.configuration.IpReuseDnatPolicyCfg;
|
||||||
import com.nis.domain.configuration.BaseStringCfg;
|
import com.nis.domain.configuration.IpReusePolicyCfg;
|
||||||
import com.nis.domain.configuration.CfgIndexInfo;
|
|
||||||
import com.nis.domain.configuration.IpPortCfg;
|
|
||||||
import com.nis.domain.configuration.UserManage;
|
import com.nis.domain.configuration.UserManage;
|
||||||
import com.nis.exceptions.MaatConvertException;
|
import com.nis.exceptions.MaatConvertException;
|
||||||
import com.nis.util.Constants;
|
import com.nis.util.Constants;
|
||||||
@@ -34,11 +33,15 @@ import com.nis.util.DateUtils;
|
|||||||
import com.nis.util.StringUtil;
|
import com.nis.util.StringUtil;
|
||||||
import com.nis.util.StringUtils;
|
import com.nis.util.StringUtils;
|
||||||
import com.nis.web.controller.BaseController;
|
import com.nis.web.controller.BaseController;
|
||||||
|
import com.nis.web.service.configuration.IpMultiplexService;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("${adminPath}/maintenance/userManage")
|
@RequestMapping("${adminPath}/maintenance/userManage")
|
||||||
public class UserManageController extends BaseController{
|
public class UserManageController extends BaseController{
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IpMultiplexService ipMultiplexService;
|
||||||
|
|
||||||
@RequestMapping(value = {"/list"})
|
@RequestMapping(value = {"/list"})
|
||||||
@RequiresPermissions(value={"user:manage:view"})
|
@RequiresPermissions(value={"user:manage:view"})
|
||||||
public String list(Model model,HttpServletRequest request,HttpServletResponse response
|
public String list(Model model,HttpServletRequest request,HttpServletResponse response
|
||||||
@@ -69,13 +72,30 @@ public class UserManageController extends BaseController{
|
|||||||
public String delete(Integer isValid
|
public String delete(Integer isValid
|
||||||
,String ids
|
,String ids
|
||||||
,RedirectAttributes redirectAttributes,HttpServletRequest request){
|
,RedirectAttributes redirectAttributes,HttpServletRequest request){
|
||||||
String deleteSuccessIp="";
|
|
||||||
String message="";
|
String message="";
|
||||||
Properties msgProp = getMsgProp();
|
Properties msgProp = getMsgProp();
|
||||||
|
String exUser="";
|
||||||
try{
|
try{
|
||||||
for (String id : ids.split(",")) {
|
for (String id : ids.split(",")) {
|
||||||
UserManage user=userManageService.getUserById(id);
|
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;
|
boolean lastIp=false;
|
||||||
int deleteIpLenth=1;
|
int deleteIpLenth=1;
|
||||||
String serverIp=user.getServerIp().substring(0, user.getServerIp().length()-1);
|
String serverIp=user.getServerIp().substring(0, user.getServerIp().length()-1);
|
||||||
@@ -99,9 +119,19 @@ public class UserManageController extends BaseController{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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");
|
addMessage(redirectAttributes,"success","delete_success");
|
||||||
|
}
|
||||||
|
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
logger.error("Delete failed",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) {
|
if(e instanceof MaatConvertException) {
|
||||||
addMessage(redirectAttributes,"error",message);
|
addMessage(redirectAttributes,"error",message);
|
||||||
}else {
|
}else {
|
||||||
|
|||||||
@@ -48,4 +48,8 @@ public interface IpMultiplexDao extends CrudDao<IpMultiplexDao>{
|
|||||||
List<IpReusePolicyCfg> findByPage(@Param("ids")String ids);
|
List<IpReusePolicyCfg> findByPage(@Param("ids")String ids);
|
||||||
|
|
||||||
List<BaseIpCfg> findPageByDnat(@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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -801,4 +801,22 @@
|
|||||||
</select>
|
</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>
|
</mapper>
|
||||||
@@ -327,4 +327,14 @@ public class IpMultiplexService extends BaseService{
|
|||||||
public IpReuseDnatPolicyCfg getDnatCfg(Long cfgId,Integer compileId) {
|
public IpReuseDnatPolicyCfg getDnatCfg(Long cfgId,Integer compileId) {
|
||||||
return ipMultiplexDao.getDnatCfg(cfgId,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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,12 @@ public class UserManageService extends BaseService{
|
|||||||
return page;
|
return page;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<UserManage> findList(UserManage entity) {
|
||||||
|
List<UserManage> list=userManageDao.findList(entity);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public List<UserManage> findByPage(String ids ) {
|
public List<UserManage> findByPage(String ids ) {
|
||||||
List<UserManage> list=userManageDao.findByList(ids);
|
List<UserManage> list=userManageDao.findByList(ids);
|
||||||
return list;
|
return list;
|
||||||
|
|||||||
@@ -1476,3 +1476,5 @@ mail_record=Mail Records
|
|||||||
ssl_record=SSL Records
|
ssl_record=SSL Records
|
||||||
http_record=HTTP Records
|
http_record=HTTP Records
|
||||||
second_bps=bps
|
second_bps=bps
|
||||||
|
ip_existed=IP has existed!
|
||||||
|
user_check=In use, Can not be deleted!
|
||||||
@@ -1480,3 +1480,5 @@ block_drop=\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0
|
|||||||
mail_record=\u0417\u0430\u043f\u0438\u0441\u0438 \u041f\u043e\u0447\u0442\u044b
|
mail_record=\u0417\u0430\u043f\u0438\u0441\u0438 \u041f\u043e\u0447\u0442\u044b
|
||||||
ssl_record=SSL \u0417\u0430\u043f\u0438\u0441\u0438
|
ssl_record=SSL \u0417\u0430\u043f\u0438\u0441\u0438
|
||||||
http_record=HTTP \u0417\u0430\u043f\u0438\u0441\u0438
|
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!
|
||||||
@@ -1476,3 +1476,5 @@ mail_record=\u90ae\u4ef6\u6cdb\u6536
|
|||||||
ssl_record=SSL\u6cdb\u6536
|
ssl_record=SSL\u6cdb\u6536
|
||||||
http_record=HTTP\u6cdb\u6536
|
http_record=HTTP\u6cdb\u6536
|
||||||
second_bps=bps
|
second_bps=bps
|
||||||
|
ip_existed=IP\u5DF2\u5B58\u5728\uFF01
|
||||||
|
user_check=\u6B63\u5728\u4F7F\u7528\uFF0C\u4E0D\u80FD\u5220\u9664\uFF01
|
||||||
@@ -104,6 +104,23 @@ label.errorShow {
|
|||||||
return flagLeafChange;
|
return flagLeafChange;
|
||||||
},"<spring:message code='leafChange'/>");
|
},"<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){
|
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)$/;
|
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));
|
return this.optional(element) || (tel.test(value));
|
||||||
@@ -252,7 +269,7 @@ label.errorShow {
|
|||||||
</label>
|
</label>
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<c:if test="${itType==5 }">
|
<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>
|
||||||
<c:if test="${itType!=5 }">
|
<c:if test="${itType!=5 }">
|
||||||
<form:input path="itemValue" htmlEscape="false" maxlength="64" class="form-control required "/>
|
<form:input path="itemValue" htmlEscape="false" maxlength="64" class="form-control required "/>
|
||||||
|
|||||||
Reference in New Issue
Block a user