Merge branch 'develop' of https://git.mesalab.cn/K18_NTCS_WEB/NTC.git into develop

This commit is contained in:
duandongmei
2019-01-19 10:24:26 +06:00
22 changed files with 268 additions and 18 deletions

View File

@@ -18,6 +18,7 @@ public class SysIspInfo implements Serializable {
private Integer ispKeyCode;// 运营商唯一标识编码,
private Date createTime;
private String ispNum; // 出入口跟设备号拼接
public Long getId() {
return id;
@@ -67,6 +68,11 @@ public class SysIspInfo implements Serializable {
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getIspNum() {
return ispNum;
}
public void setIspNum(String ispNum) {
this.ispNum = ispNum;
}
}

View File

@@ -1,5 +1,6 @@
package com.nis.domain.log;
import com.google.gson.annotations.Expose;
import com.nis.util.excel.ExcelField;
public class NtcConnRecordLog extends BaseLogEntity<NtcConnRecordLog> {
@@ -29,8 +30,12 @@ public class NtcConnRecordLog extends BaseLogEntity<NtcConnRecordLog> {
protected String totalByte;
protected String ispCode;//运营商
protected String ispNum;//运营商 entrance_id+device_id
@Expose
@ExcelField(title="client_port",sort=43)
protected String ispName;//运营商
public String getIspCode() {
return ispCode;
@@ -120,4 +125,20 @@ public class NtcConnRecordLog extends BaseLogEntity<NtcConnRecordLog> {
this.s2cByteNum = s2cByteNum;
}
public String getIspName() {
return ispName;
}
public void setIspName(String ispName) {
this.ispName = ispName;
}
public String getIspNum() {
return ispNum;
}
public void setIspNum(String ispNum) {
this.ispNum = ispNum;
}
}

View File

@@ -194,6 +194,15 @@ public class CodeDicUtils {
}
return result;
}
/**
* 用于显示日志isp运营商的信息
* @param name
* @return
*/
public static List<SysIspInfo> getIspListByIspNum(){
List<SysIspInfo> result = codeSysIspInfoDicDao.getIspListByIspNum();;
return result;
}
public static void main(String[] args) {
getCodeList(APP_CODE);
}

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

@@ -41,6 +41,7 @@ import com.google.common.collect.Maps;
import com.nis.domain.Page;
import com.nis.domain.basics.PolicyGroupInfo;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.DnsIpCfg;
import com.nis.domain.configuration.DnsResStrategy;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.PxyObjKeyring;
@@ -911,4 +912,31 @@ public class PxyObjKeyringController extends BaseController {
}
return "redirect:" + adminPath + "/proxy/intercept/strateagy/trustedCertList?functionId=" + functionId;
}
/**
* 验证Keyring是否有被使用
*
* @param entity
* @param request
* @param response
* @return
*/
@ResponseBody
@RequestMapping(value = { "/ajaxKeyinfIsUsed" })
public boolean ajaxKeyinfIsUsed(String[] compileIds, HttpServletRequest request, HttpServletResponse response) {
for(String compileId:compileIds){
CfgIndexInfo cfg = new CfgIndexInfo();
cfg.setIsAudit(1);
cfg.setIsValid(1);
cfg.setFunctionId(200);//代理拦截策略
cfg.setServiceId(512);
cfg.setUserRegion1(compileId);
List<CfgIndexInfo> list = httpRedirectCfgService.getCfgIndexInfos(cfg);
if (list.size() > 0) {
return false;
}
}
return true;
}
}

View File

@@ -23,6 +23,7 @@ import com.nis.domain.Page;
import com.nis.domain.PageLog;
import com.nis.domain.SysUser;
import com.nis.domain.configuration.WebsiteDomainTopic;
import com.nis.domain.dashboard.SysIspInfo;
import com.nis.domain.log.NtcConnRecordLog;
import com.nis.domain.maat.LogRecvData;
import com.nis.exceptions.MaatConvertException;
@@ -119,6 +120,19 @@ public class NtcConnRecordLogController extends BaseController {
}.getType());
if (fromJson.getStatus().intValue() == 200) {
Page<NtcConnRecordLog> data = fromJson.getData();
List<SysIspInfo> ispList = CodeDicUtils.getIspListByIspNum();
if(data.getList()!=null&&data.getList().size()>0){
for (NtcConnRecordLog cnn : data.getList()) {
String isNum=cnn.getEntranceId()+""+cnn.getDeviceId();
for (SysIspInfo sysIspInfo : ispList) {
if(isNum.equals(sysIspInfo.getIspNum())){
cnn.setIspName(sysIspInfo.getIspKeyName());
break;
}
}
}
}
page.setCount(data.getCount());
page.setLast(data.getLast());
page.setList(data.getList());

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

@@ -371,6 +371,17 @@
<if test="sourceCompileId != null">
and source_compile_id=#{sourceCompileId}
</if>
<if test="isValid != null">
and is_valid=#{isValid}
</if>
<if test="isAudit != null">
and is_audit=#{isAudit}
</if>
<!-- 代理拦截策略 -->
<if test="functionId != null and functionId=200">
and a.user_region1=#{userRegion1}
</if>
</where>
</select>
<select id="getIpPortList" resultMap="ipPortMap" parameterType="com.nis.domain.configuration.CfgIndexInfo">

View File

@@ -8,4 +8,5 @@ import com.nis.web.dao.MyBatisDao;
@MyBatisDao
public interface CodeSysIspInfoDicDao {
List<SysIspInfo> getIspDicList();
List<SysIspInfo> getIspListByIspNum();
}

View File

@@ -19,4 +19,9 @@
<include refid="Base_Column_List" />
from sys_isp_info
</select>
<select id="getIspListByIspNum" resultType="com.nis.domain.dashboard.SysIspInfo">
select distinct s.isp_key_code ispKeyCode ,concat(d.entrance_id,d.device_id) ispNum,s.isp_key_name ispKeyName from sys_device_info d
left join sys_isp_info s on d.isp=s.isp_key_code
</select>
</mapper>

View File

@@ -54,6 +54,10 @@ public class HttpRedirectCfgService extends CrudService<WebsiteCfgDao,CfgIndexIn
@Autowired
protected StringCfgDao stringCfgDao;
public List<CfgIndexInfo> getCfgIndexInfos(CfgIndexInfo entity){
return websiteCfgDao.getCfgIndexInfos(entity);
}
public CfgIndexInfo getHttpCfg(Long cfgId,Integer compileId){
CfgIndexInfo entity = websiteCfgDao.getCfgIndexInfo(cfgId,compileId);
List<HttpUrlCfg> httpUrlList = websiteCfgDao.getHttpUrlList(entity);

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

@@ -1475,4 +1475,6 @@ block_drop=Block(Drop)
mail_record=Mail Records
ssl_record=SSL Records
http_record=HTTP Records
second_bps=bps
second_bps=bps
ip_existed=IP has existed!
user_check=In use, Can not be deleted!

View File

@@ -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
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!

View File

@@ -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
second_bps=bps
ip_existed=IP\u5DF2\u5B58\u5728\uFF01
user_check=\u6B63\u5728\u4F7F\u7528\uFF0C\u4E0D\u80FD\u5220\u9664\uFF01

View File

@@ -232,6 +232,23 @@ function cancelPassOpt(url){
});
}
}
if(canCancel){
//查询证书是否被拦截策略引用
if(compileIds.length > 0){
$.ajax({
type:'post',
url:'${ctx}/proxy/intercept/strateagy/ajaxKeyinfIsUsed',
data:{"compileIds":compileIds.join(',')},
async:false,
success:function(data){//处理返回结果
if(data == false){
top.$.jBox.tip('<spring:message code="keyring_is_used"/>');
canCancel=data;
}
}
});
}
}
if(canCancel){
doAll(checkboxes,url);

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 "/>

View File

@@ -321,7 +321,7 @@
<c:forEach items="${page.list }" var="cfg" varStatus="status" step="1">
<tr>
<td>
<input type="checkbox" class="i-checks" serviceId="${cfg.serviceId}" id="${cfg.cfgId}" value="${cfg.isAudit}">
<input type="checkbox" class="i-checks" serviceId="${cfg.serviceId }" compileId="${cfg.compileId }" id="${cfg.cfgId}" value="${cfg.isAudit}">
</td>
<td>${cfg.compileId }</td>
<td>${cfg.cfgDesc }</td>

View File

@@ -140,8 +140,7 @@
<input id="isps" type="hidden" value="${log.ispCode}"/>
<!-- 筛选按钮展开状态-->
<input id="isFilterAction" name="isFilterAction" type="hidden" value="${log.isFilterAction }"/>
<sys:tableSort id="orderBy" name="orderBy.
" value="${page.orderBy}" callback="page();" />
<sys:tableSort id="orderBy" name="orderBy" value="${page.orderBy}" callback="page();" />
<!-- 搜索内容与操作按钮栏 -->
<div class="col-md-12">
<%-- <div class="pull-left">
@@ -391,6 +390,7 @@
<th class="sort-column s_ip" column="client_ip"><spring:message code="client_ip"/></th>
<th class="sort-column d_port" column="server_port"><spring:message code="server_port"/></th>
<th class="sort-column s_port" column="client_port"><spring:message code="client_port"/></th>
<th class="sort-column device_id" column="isp"><spring:message code="isp"/></th>
<th class="sort-column s2c_pkt_num" column="s2c_pkt_num"><spring:message code='s2c_pkt_num'/></th>
<th class="sort-column c2s_pkt_num" column="c2s_pkt_num"><spring:message code="c2s_pkt_num"/></th>
@@ -505,6 +505,7 @@
<td >${log.sIp}</td>
<td>${log.dPort }</td>
<td>${log.sPort }</td>
<td>${log.ispName }</td>
<td>${log.s2cPktNum }</td>
<td>${log.c2sPktNum }</td>