1.地址池配置表单格式修改;2.boxSolidCSS选择器修改;3.snat策略配置异步获取有效地址池信息;4.ftp、mail配置禁用reject动作;

This commit is contained in:
zhangwq
2018-12-04 16:42:37 +08:00
parent 32120c83dc
commit f3336efea1
9 changed files with 207 additions and 174 deletions

View File

@@ -1,6 +1,5 @@
package com.nis.web.controller.configuration.maintenance;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -9,9 +8,7 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
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;
@@ -21,12 +18,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.nis.domain.Page;
import com.nis.domain.basics.IpReuseIpCfg;
import com.nis.domain.basics.PolicyGroupInfo;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.IpAddrPoolCfg;
import com.nis.domain.configuration.IpMultiplexPoolCfg;
import com.nis.domain.configuration.UserManage;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;

View File

@@ -24,9 +24,7 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.nis.domain.Page;
@@ -34,7 +32,6 @@ import com.nis.domain.SysDataDictionaryItem;
import com.nis.domain.basics.PolicyGroupInfo;
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;
@@ -167,23 +164,9 @@ public class IpMultiplexController extends CommonController {
// 获取用户信息 地址池信息
List<UserManage> users = userManageService.findUsers();
List<IpAddrPoolCfg> addrPools = ipAddrPoolCfgService.getEffectiveAddrPool();
List<IpAddrPoolCfg> addrPoolsNew=new ArrayList<>();
for (IpAddrPoolCfg addrPool : addrPools) {
Map<String, Object> params = new HashMap<String, Object>();
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)
&& !StringUtil.isEmpty(resultMap.get("num"))
&& Integer.parseInt(resultMap.get("num").toString()) > 0) {
addrPoolsNew.add(addrPool);
}
}
model.addAttribute("_cfg", cfg);
model.addAttribute("users", users);
model.addAttribute("addrPools", addrPoolsNew);
model.addAttribute("urlPrefix","/manipulation/ipmulitiplex");
return "/cfg/manipulation/ipmulitiplex/snatPolicyForm2";
}
@@ -250,6 +233,31 @@ public class IpMultiplexController extends CommonController {
return "redirect:" + adminPath +"/manipulation/ipmulitiplex/snatPolicyList?functionId="+functionId;
}
/**
* 异步获取地址池信息
* @param request
* @param response
* @return
*/
@ResponseBody
@RequestMapping(value = {"/ajaxGetAddrPools"})
public List<IpAddrPoolCfg> ajaxGetAddrPools(HttpServletRequest request, HttpServletResponse response){
List<IpAddrPoolCfg> addrPools = ipAddrPoolCfgService.getEffectiveAddrPool();
List<IpAddrPoolCfg> addrPoolsNew=new ArrayList<>();
for (IpAddrPoolCfg addrPool : addrPools) {
Map<String, Object> params = new HashMap<String, Object>();
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)
&& !StringUtil.isEmpty(resultMap.get("num"))
&& Integer.parseInt(resultMap.get("num").toString()) > 0) {
addrPoolsNew.add(addrPool);
}
}
return addrPoolsNew;
}
@RequestMapping(value = {"/dnatPolicyList"})
public String dnatPolicyList(String cfgName,Model model,@ModelAttribute("cfg")IpPortCfg cfg,HttpServletRequest request,HttpServletResponse response) {
this._ipList(cfgName,model, cfg, request, response);

View File

@@ -1336,4 +1336,5 @@ address_pool_is_used=Address pool is used and cannot perform this operation!
cgi_service_failed=Request CGI server failed
available_ip=Available IP
config_sync=Configuration Synchronization
info_failed=Information Acquisition Failure
info_failed=Information Acquisition Failure
address_pool_ip_configuration=Address Pool IP Configuration

View File

@@ -1334,4 +1334,5 @@ address_pool_id=Address Pool ID
log_to_cfg=\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F
address_pool_is_used=Address pool is used and cannot perform this operation!
available_ip=Available IP
config_sync=Configuration Synchronization
config_sync=Configuration Synchronization
address_pool_ip_configuration=Address Pool IP Configuration

View File

@@ -1334,4 +1334,5 @@ address_pool_is_used=\u5730\u5740\u6C60\u5DF2\u88AB\u4F7F\u7528\uFF0C\u65E0\u6CD
cgi_service_failed=\u8BF7\u6C42CGI\u670D\u52A1\u63A5\u53E3\u5931\u8D25
available_ip=\u53EF\u7528IP\u5730\u5740
config_sync=\u914D\u7F6E\u540C\u6B65
info_failed=\u4FE1\u606F\u83B7\u53D6\u5931\u8D25
info_failed=\u4FE1\u606F\u83B7\u53D6\u5931\u8D25
address_pool_ip_configuration=\u5730\u5740\u6C60 IP\u914D\u7F6E

View File

@@ -0,0 +1,6 @@
-- ftp
UPDATE function_service_dict SET is_valid = 0 WHERE dict_id = 42 AND function_id = 51;
-- mail地址
UPDATE function_service_dict SET is_valid = 0 WHERE dict_id = 149 AND function_id = 37;
-- mail高级
UPDATE function_service_dict SET is_valid = 0 WHERE dict_id = 37 AND function_id = 35;

View File

@@ -11,6 +11,7 @@ $(function(){
if($(".ipDiv").hasClass("hidden")){
$(".ipDiv").remove();
}
$(".addDiv").removeClass("hidden");
if('${fn:length(serviceList)}'>1){
$("#serviceId").val($(".action:checked").attr("serviceId"));
$("#protocolId").val($(".action:checked").attr("protocolId"));
@@ -39,23 +40,23 @@ $(function(){
ipInfoDiv.removeClass("ipDiv");
ipInfoDiv.removeClass("hidden");
ipInfoDiv.find("button").each(function(){
$(this).removeClass("addDivBut");
$(this).children("font").attr("color","#ed6b75").attr("class","fa fa-times");
});
setFirstIpDiv();
resetIndex();
});
var resetDiv = function(obj){
// 添加 or 删除
if($(obj).hasClass("addDivBut")){
if($(obj).hasClass("addDiv")){
$(".ipInfo").last().after(ipInfoDiv.clone());
}else{
$(obj).parents(".ipInfo:first").remove();
if($(".ipInfo").length == 1){
top.$.jBox.tip("<spring:message code='one_more'/>");
return;
}else{
$(obj).parents(".ipInfo:first").remove();
}
}
$(".selectpicker").selectpicker("render");// 重新渲染页面
$(".selectpicker").selectpicker("render");// 重新渲染
$("select[name$='ipType']").on("change",function(){
switchIpInfo(this);
});
@@ -65,15 +66,6 @@ var resetDiv = function(obj){
resetIndex();
}
// 设置第一个div +
var setFirstIpDiv = function(){
$(".ipInfo").not(".ipDiv").first().find("button").each(function(){
$(this).addClass("addDivBut");
$(this).children("font").attr("color","#27a4b0").attr("class","fa fa-plus");
});
}
var resetIndex = function(){
// 设置索引
$(".ipInfo").not(".hidden").each(function(index,element){
@@ -178,15 +170,27 @@ var resetIndex = function(){
<div class="form-group">
<label class="col-md-3 control-label"><spring:message code="desc"/>:</label>
<div class="col-md-6">
<form:textarea path="description" htmlEscape="false" rows="1" maxlength="128" class="form-control" />
<form:textarea path="description" htmlEscape="false" maxlength="128" class="form-control" />
</div>
</div>
</div>
</div>
<div class="row ipInfo ipDiv <c:if test="${!empty _cfg.ipCfgs}">hidden</c:if>">
<h5 class="page-header"></h5>
<h4 class="form-section">
<spring:message code="address_pool_ip_configuration" />
<small>
<span class="glyphicon glyphicon-plus addDiv"
onClick="resetDiv(this)" title="add"></span>
</small>
</h4>
<div class="row ipInfo boxSolid ipDiv <c:if test="${!empty _cfg.ipCfgs}">hidden</c:if>">
<input type="hidden" name="ipCfgs[0].protocolId" value="0">
<div class="row">
<div class="pull-right">
<span class="glyphicon glyphicon-remove pull-right" title="remove"
onClick="resetDiv(this);" />
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
@@ -203,86 +207,7 @@ var resetIndex = function(){
<div for="ipCfgs[0].ipType"></div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="ip"/></label>
<div class="col-md-6">
<div class="input-group">
<input class="form-control required ipCheck" type="text" name="ipCfgs[0].srcIpAddress">
<span class="input-group-btn">
<button class="btn btn-default addDivBut" onclick="resetDiv(this)" type="button"><font color="#27a4b0" class="fa fa-plus"></font></button>
</span>
</div>
</div>
<div for="ipCfgs[0].srcIpAddress"></div>
</div>
</div>
</div>
<div class="row port">
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="ip_pattern"/></label>
<div class="col-md-6">
<select name="ipCfgs[0].ipPattern" class="selectpicker show-tick form-control required">
<c:forEach items="${fns:getDictList('IP_PATTERN')}" var="ipPatternC">
<option value="${ipPatternC.itemCode}">
<spring:message code="${ipPatternC.itemValue}"/>
</option>
</c:forEach>
</select>
</div>
<div for="ipCfgs[0].ipPattern"></div>
</div>
</div>
<div class="col-md-6 hidden">
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="port_pattern"/></label>
<div class="col-md-6">
<select name="ipCfgs[0].portPattern" class="selectpicker show-tick form-control required">
<c:forEach items="${fns:getDictList('PORT_PATTERN')}" var="portPatternC">
<option value="${portPatternC.itemCode}">
<spring:message code="${portPatternC.itemValue}"/>
</option>
</c:forEach>
</select>
</div>
<div for="ipCfgs[0].portPattern"></div>
</div>
</div>
<div class="col-md-6">
<div class="form-group ">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="client_port"/></label>
<div class="col-md-6">
<input class="form-control required portCheck" type="text" name="ipCfgs[0].srcPort">
</div>
<div for="ipCfgs[0].srcPort"></div>
</div>
</div>
</div>
<div class="row destPort">
<div class="col-md-6">
<div class="form-group ">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="server_ip"/></label>
<div class="col-md-6">
<input class="form-control required ipCheck" type="text" name="ipCfgs[0].destIpAddress">
</div>
<div for="ipCfgs[0].destIpAddress"></div>
</div>
</div>
<div class="col-md-6">
<div class="form-group ">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="server_port"/></label>
<div class="col-md-6">
<input class="form-control required portCheck" type="text" name="ipCfgs[0].destPort">
</div>
<div for="ipCfgs[0].destPort"></div>
</div>
</div>
</div>
<div class="row hidden protocol">
<div class="col-md-6">
<div class="form-group hidden">
<label class="control-label col-md-3"><font color="red">*</font>
<spring:message code="protocol" /></label>
@@ -298,7 +223,83 @@ var resetIndex = function(){
</div>
<div for="ipCfgs[0].protocol"></div>
</div>
</div>
</div>
</div>
<div class="row ip">
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="ip_pattern"/></label>
<div class="col-md-6">
<select name="ipCfgs[0].ipPattern" class="selectpicker show-tick form-control required">
<c:forEach items="${fns:getDictList('IP_PATTERN')}" var="ipPatternC">
<option value="${ipPatternC.itemCode}">
<spring:message code="${ipPatternC.itemValue}"/>
</option>
</c:forEach>
</select>
</div>
<div for="ipCfgs[0].ipPattern"></div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="ip"/></label>
<div class="col-md-6">
<input class="form-control required ipCheck" type="text" name="ipCfgs[0].srcIpAddress">
</div>
<div for="ipCfgs[0].srcIpAddress"></div>
</div>
</div>
</div>
<div class="row port">
<div class="col-md-6">
<div class="form-group hidden">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="port_pattern"/></label>
<div class="col-md-6">
<select name="ipCfgs[0].portPattern" class="selectpicker show-tick form-control required">
<c:forEach items="${fns:getDictList('PORT_PATTERN')}" var="portPatternC">
<option value="${portPatternC.itemCode}">
<spring:message code="${portPatternC.itemValue}"/>
</option>
</c:forEach>
</select>
</div>
<div for="ipCfgs[0].portPattern"></div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="client_port"/></label>
<div class="col-md-6">
<input class="form-control required portCheck" type="text" name="ipCfgs[0].srcPort">
</div>
<div for="ipCfgs[0].srcPort"></div>
</div>
</div>
</div>
<div class="row destPort">
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="server_ip"/></label>
<div class="col-md-6">
<input class="form-control required ipCheck" type="text" name="ipCfgs[0].destIpAddress">
</div>
<div for="ipCfgs[0].destIpAddress"></div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="server_port"/></label>
<div class="col-md-6">
<input class="form-control required portCheck" type="text" name="ipCfgs[0].destPort">
</div>
<div for="ipCfgs[0].destPort"></div>
</div>
</div>
</div>
<div class="row protocol">
<div class="col-md-6">
<div class="form-group hidden">
<label class="control-label col-md-3"><font color="red">*</font>
@@ -320,9 +321,14 @@ var resetIndex = function(){
</div>
<c:forEach items="${_cfg.ipCfgs }" var="ipCfg" varStatus="index">
<div class="row ipInfo">
<h5 class="page-header"></h5>
<div class="row ipInfo boxSolid">
<input type="hidden" name="ipCfgs[0].protocolId" value="0">
<div class="row">
<div class="pull-right">
<span class="glyphicon glyphicon-remove pull-right" title="remove"
onClick="resetDiv(this);" />
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
@@ -343,22 +349,28 @@ var resetIndex = function(){
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="ip"/></label>
<div class="col-md-6">
<div class="input-group">
<input class="form-control required ipCheck" type="text" name="ipCfgs[0].srcIpAddress" value="${ipCfg.srcIpAddress }">
<span class="input-group-btn">
<button class="btn btn-default" onclick="resetDiv(this)" type="button"><font color="#ed6b75" class="fa fa-times"></font></button>
</span>
</div>
</div>
<div for="ipCfgs[0].srcIpAddress"></div>
<div class="form-group hidden">
<label class="control-label col-md-3"><font color="red">*</font>
<spring:message code="protocol" /></label>
<div class="col-md-6">
<select name="ipCfgs[0].protocol"
class="selectpicker show-tick form-control required">
<c:forEach items="${fns:getDictList('PROTOCOL')}" var="protocolC">
<option value="${protocolC.itemCode}"
<c:if test="${ipCfg.protocol == protocolC.itemCode}">
selected
</c:if>>
<spring:message code="${protocolC.itemValue}"/>
</option>
</c:forEach>
</select>
</div>
<div for="ipCfgs[0].protocol"></div>
</div>
</div>
</div>
</div>
<div class="row port">
<div class="row ip">
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="ip_pattern"/></label>
@@ -377,7 +389,19 @@ var resetIndex = function(){
<div for="ipCfgs[0].ipPattern"></div>
</div>
</div>
<div class="col-md-6 hidden">
<div class="col-md-6">
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="ip"/></label>
<div class="col-md-6">
<input class="form-control required ipCheck" type="text" name="ipCfgs[0].srcIpAddress" value="${ipCfg.srcIpAddress }">
</div>
<div for="ipCfgs[0].srcIpAddress"></div>
</div>
</div>
</div>
<div class="row port">
<div class="col-md-6 hidden">
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="port_pattern"/></label>
<div class="col-md-6">
@@ -407,7 +431,7 @@ var resetIndex = function(){
</div>
<div class="row destPort">
<div class="col-md-6">
<div class="form-group ">
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="server_ip"/></label>
<div class="col-md-6">
<input class="form-control required ipCheck" type="text" name="ipCfgs[0].destIpAddress" value="${ipCfg.destIpAddress }">
@@ -416,7 +440,7 @@ var resetIndex = function(){
</div>
</div>
<div class="col-md-6">
<div class="form-group ">
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="server_port"/></label>
<div class="col-md-6">
<input class="form-control required portCheck" type="text" name="ipCfgs[0].destPort" value="${ipCfg.destPort }">
@@ -425,27 +449,7 @@ var resetIndex = function(){
</div>
</div>
</div>
<div class="row hidden protocol">
<div class="col-md-6">
<div class="form-group hidden">
<label class="control-label col-md-3"><font color="red">*</font>
<spring:message code="protocol" /></label>
<div class="col-md-6">
<select name="ipCfgs[0].protocol"
class="selectpicker show-tick form-control required">
<c:forEach items="${fns:getDictList('PROTOCOL')}" var="protocolC">
<option value="${protocolC.itemCode}"
<c:if test="${ipCfg.protocol == protocolC.itemCode}">
selected
</c:if>>
<spring:message code="${protocolC.itemValue}"/>
</option>
</c:forEach>
</select>
</div>
<div for="ipCfgs[0].protocol"></div>
</div>
</div>
<div class="row protocol">
<div class="col-md-6">
<div class="form-group hidden">
<label class="control-label col-md-3"><font color="red">*</font>

View File

@@ -18,7 +18,29 @@ $(function(){
form.submit();
},
errorContainer: "#messageBox"
});
});
// 获取地址池信息
var pathName=window.document.location.pathname.substring(0,window.document.location.pathname.lastIndexOf("/nis")+4);
$.ajax({
type:'get',
url:pathName+'/manipulation/ipmulitiplex/ajaxGetAddrPools',
dataType:'json',
success:function(data){
if(data != null){
//$("#addrPoolSel").empty();
$.each(data, function(i, n){
if("${_cfg.addrPoolId}" == data[i].cfgId){
var option = new Option(data[i].addrPoolName, data[i].cfgId, null, true);
}else{
var option = new Option(data[i].addrPoolName, data[i].cfgId);
}
$("#addrPoolSel")[0].options.add(option);
});
$("#addrPoolSel").selectpicker("refresh");
}
}
});
});
</script>
</head>
@@ -157,12 +179,9 @@ $(function(){
<div class="form-group">
<label class="control-label col-md-3"><font color="red">*</font><spring:message code="address_pool"/></label>
<div class="col-md-6">
<select name="addrPoolId" class="selectpicker show-tick form-control required" data-live-search="true" data-live-search-placeholder="search">
<select id="addrPoolSel" name="addrPoolId" class="selectpicker show-tick form-control required" data-live-search="true" data-live-search-placeholder="search">
<option value="" ><spring:message code="select"/></option>
<c:forEach items="${addrPools }" var="addrPool">
<option value="${addrPool.cfgId}" <c:if test="${_cfg.addrPoolId eq addrPool.cfgId }">selected</c:if>><spring:message code="${addrPool.addrPoolName}"/></option>
</c:forEach>
</select>
</select>
</div>
<div for="addrPoolId"></div>
</div>

View File

@@ -22614,7 +22614,7 @@ span[id^='close']{
background: #e7ecf1;
border:none
}
.form-section + .boxSolid {
.form-section ~ .boxSolid {
border: 1px solid #eeeeee;
margin-top:-14px;
margin-bottom:10px