完善IP复用地址池、策略配置.

This commit is contained in:
zhangwq
2018-12-01 16:06:08 +08:00
parent 68e822bb26
commit 8cfb175fd2
18 changed files with 804 additions and 405 deletions

View File

@@ -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<IpReusePolicyCfg> page = ipMultiplexService.findPage(new Page<IpReusePolicyCfg>(request, response,"r"), cfg);
model.addAttribute("page", page);
initFormCondition(model,cfg);
// 获取地址池、用户信息
List<UserManage> 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<UserManage> users = userManageService.findUsers();
@@ -151,7 +171,7 @@ public class IpMultiplexController extends CommonController {
List<IpAddrPoolCfg> addrPoolsNew=new ArrayList<>();
for (IpAddrPoolCfg addrPool : addrPools) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("addr_pool_id", addrPool.getAddrPoolId());
params.put("addr_pool_id", addrPool.getCfgId());
String url =Constants.IP_REUSE_CALL_CGI_URL ;
Map<String, Object> 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"})