邮件日志

This commit is contained in:
chenjinsong
2018-06-20 17:48:01 +08:00
parent b513004ff6
commit 5f401d6f1f
9 changed files with 373 additions and 11 deletions

View File

@@ -1,11 +1,6 @@
package com.nis.domain.log;
import java.text.ParseException;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.nis.domain.BaseEntity;
import com.nis.util.DateUtils;
public class BaseLogEntity<T> extends BaseEntity<T> {

View File

@@ -0,0 +1,44 @@
package com.nis.domain.log;
public class NtcMailLog extends BaseLogEntity<NtcMailLog> {
private static final long serialVersionUID = -2848016592975339617L;
private String mailProto; //邮件协议类型,不可空 SMTP/POP3/IMAP4
private String mailFrom;
private String mailTo;
private String subject;
private String emlFile;
public String getMailProto() {
return mailProto;
}
public void setMailProto(String mailProto) {
this.mailProto = mailProto;
}
public String getMailFrom() {
return mailFrom;
}
public void setMailFrom(String mailFrom) {
this.mailFrom = mailFrom;
}
public String getMailTo() {
return mailTo;
}
public void setMailTo(String mailTo) {
this.mailTo = mailTo;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getEmlFile() {
return emlFile;
}
public void setEmlFile(String emlFile) {
this.emlFile = emlFile;
}
}

View File

@@ -299,6 +299,7 @@ public final class Constants {
public static final String NTC_OPENVPN_LOG = Configurations.getStringProperty("ntcOpenvpnLog","");
public static final String NTC_IPSEC_LOG = Configurations.getStringProperty("ntcIpsecLog","");
public static final String NTC_SSH_LOG = Configurations.getStringProperty("ntcSshLog","");
public static final String NTC_MAIL_LOG = Configurations.getStringProperty("ntcMailLog","");
//报表类型,1- 配置命中总量业务
public static final Integer BUSINESSTYPE_CONFIG=Configurations.getIntProperty("businesstype_config", 1);
//报表类型,2- 配置报表业务

View File

@@ -0,0 +1,64 @@
package com.nis.web.controller.log.ntc;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
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 com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.nis.domain.Page;
import com.nis.domain.log.NtcMailLog;
import com.nis.domain.maat.LogRecvData;
import com.nis.util.Constants;
import com.nis.util.httpclient.HttpClientUtil;
import com.nis.web.controller.BaseController;
@Controller
@RequestMapping("${adminPath}/log/ntc/mail")
public class MailLogController extends BaseController {
@RequestMapping("list")
public String list(@ModelAttribute("log") NtcMailLog log, Model model, HttpServletRequest request, HttpServletResponse response) {
try {
Page<NtcMailLog> page = new Page<NtcMailLog>(request, response);
Map<String, Object> params = new HashMap<String, Object>();
params.put("pageSize", page.getPageSize());
params.put("pageNo", page.getPageNo());
initLogSearchValue(log, params);
String url = Constants.LOG_BASE_URL + Constants.NTC_MAIL_LOG;
String recv = HttpClientUtil.getMsg(url, params, request);
logger.info("查询结果:" + recv);
if (StringUtils.isNotBlank(recv)) {
Gson gson = new GsonBuilder().create();
LogRecvData<NtcMailLog> fromJson = gson.fromJson(recv, new TypeToken<LogRecvData<NtcMailLog>>(){}.getType());
if (fromJson.getStatus().intValue() == 200) {
BeanUtils.copyProperties(fromJson.getData(), page);
List<NtcMailLog> list = page.getList();
for (NtcMailLog l : list) {
l.setFunctionId(log.getFunctionId());
setLogAction(l);
}
model.addAttribute("page", page);
}
}
} catch (Exception e) {
logger.error("查询失败", e);
addMessage(model, e.getMessage());
}
return "/log/ntc/mailList";
}
}

View File

@@ -653,6 +653,11 @@ dns_query=query
dns_response=response
entrance=entrance
#dns_sub=DNS_SUB
mail_proto=mail protocol
mail_from=sender
mail_to=receiver
subject=subject
eml_file=EML file
contrl_tunnel=contrl tunnel
data_tunnel=data tunnel
contrl_message=contrl message

View File

@@ -479,6 +479,11 @@ dns_query=query
dns_response=response
entrance=entrance
#dns_sub=DNS_SUB
mail_proto=mail protocol
mail_from=sender
mail_to=receiver
subject=subject
eml_file=EML file
contrl_tunnel=contrl tunnel
data_tunnel=data tunnel
contrl_message=contrl message

View File

@@ -609,18 +609,13 @@ action_replace=\u66FF\u6362
<<<<<<< HEAD
action_whitelist=\u767D\u540D\u5355
=======
action_whitelist=\u767D\u540D\u5355
>>>>>>> branch 'develop' of http://10.0.6.99/gwall/gwall.git
action_monit=\u76D1\u6D4B
file_digest_control=\u6587\u4EF6\u6458\u8981\u7BA1\u63A7
bgp_control=BGP\u7BA1\u63A7
bgp_ip=bgp Ip
xmpp_control=XMPP\u7BA1\u63A7
<<<<<<< HEAD
xmpp_ip=xmpp Ip
=======
xmpp_ip=xmpp Ip
>>>>>>> branch 'develop' of http://10.0.6.99/gwall/gwall.git
#===============protocol IP Import start=================
chooseFile=\u9009\u62E9\u6587\u4EF6
download=\u6A21\u677F\u4E0B\u8F7D
@@ -688,6 +683,11 @@ dns_query=\u8BF7\u6C42
dns_response=\u5E94\u7B54
entrance=\u51FA\u5165\u53E3
#dns_sub=DNS_SUB
mail_proto=\u90AE\u4EF6\u534F\u8BAE
mail_from=\u53D1\u4EF6\u4EBA
mail_to=\u6536\u4EF6\u4EBA
subject=\u4E3B\u9898
eml_file=EML\u6587\u4EF6
contrl_tunnel=\u63A7\u5236\u901A\u9053
data_tunnel=\u6570\u636E\u901A\u9053
contrl_message=\u63A7\u5236\u62A5\u6587

View File

@@ -225,7 +225,8 @@ fileUploadCfg=fileUploadSources
callbackCfg=commonSources
fileDigestCfg=fileDigestSources
configIdSources=configPzIdSources
logBaseUrl=http://10.0.6.201:8090/galaxy/service/log/v1/
#logBaseUrl=http://10.0.6.201:8090/galaxy/service/log/v1/
logBaseUrl=http://10.0.6.104:8081/galaxy/service/log/v1/
ntcPzReport=ntcPzReport
ntcIpLog=ntcIpLogs
ntcHttpLog=ntcHttpLogs
@@ -236,6 +237,7 @@ ntcL2tpLog=ntcL2tpLogs
ntcOpenvpnLog=ntcOpenvpnLogs
ntcIpsecLog=ntcIpsecLogs
ntcSshLog=ntcSshLogs
ntcMailLog=ntcMailLogs
client_connect_timeout=300000
client_read_timeout=300000

View File

@@ -0,0 +1,246 @@
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/WEB-INF/include/taglib.jsp"%>
<html>
<head>
<title>
MAIL<spring:message code="log"></spring:message>
</title>
<script>
$(document).ready(function() {
//reset
$("#resetBtn").on("click",function(){
$("select.selectpicker").each(function(){
$(this).selectpicker('val',$(this).find('option:first').val());
$(this).find("option").attr("selected",false);
$(this).find("option:first").attr("selected",true);
});
$(".Wdate").attr("value",'');
$(':input','#searchForm')
.not(':button,:submit,:reset,:hidden')
.attr("value",'');
$("#searchForm")[0].reset();
});
//筛选功能
filterActionInit();
});
</script>
</head>
<body>
<div class="page-content">
<div class="theme-panel hidden-xs hidden-sm">
</div>
<h3 class="page-title">
MAIL<spring:message code="log"></spring:message>
<small><spring:message code="date_list"/></small>
</h3>
<h5 class="page-header"></h5>
<div class="col-md-12">
<div class="portlet">
<div class="portlet-body">
<div class="row" >
<form:form id="searchForm" modelAttribute="log" action="${ctx}/log/ntc/mail/list" method="post" class="form-search">
<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
<input id="functionId" name="functionId" type="hidden" value="${log.functionId}"/>
<!-- 筛选按钮展开状态-->
<input id="isFilterAction" name="isFilterAction" type="hidden" value="${log.isFilterAction }"/>
<!-- 搜索内容与操作按钮栏 -->
<div class="col-md-12">
<div class="pull-left">
<form:select path="serviceType" class="selectpicker select2 input-small">
<form:option value=""><spring:message code="action"/></form:option>
<form:option value="16"><spring:message code="action_reject"/></form:option>
<form:option value="1"><spring:message code="action_monit"/></form:option>
</form:select>
</div>
<div class="pull-left">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control" ><spring:message code="begin_date"/></span>
</div>
<input name="searchFoundStartTime" type="text" readonly="readonly" maxlength="20" class="form-control Wdate input-medium"
value="${log.searchFoundStartTime}" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/>
</div>
</div>
<div class="pull-left">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control" ><spring:message code="end_date"/></span>
</div>
<input name="searchFoundEndTime" type="text" readonly="readonly" maxlength="20" class="form-control Wdate input-medium"
value="${log.searchFoundEndTime}" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/>
</div>
</div>
<div class="pull-left">
<button type="button" class="btn blue" onClick="return page()"> <i class="fa fa-search"></i> <spring:message code="search"/> </button>
<button type="button" class="btn btn-default" id="resetBtn"> <i class="fa fa-refresh"></i> <spring:message code="reset"/> </button>
<button type="button" class="btn btn-default" id="filter-btn"> <spring:message code="filter"/><i class="fa fa-angle-double-down"></i></button>
</div>
<div class="pull-right">
<a class="btn btn-icon-only btn-default setfields tooltips"
data-container="body" data-placement="top" data-original-title=<spring:message code="custom_columns"/> href="javascript:;">
<i class="icon-wrench"></i>
</a>
</div>
</div>
<!-- 搜索内容与操作按钮栏 -->
<!-- 筛选搜索内容栏默认隐藏-->
<div class="col-md-12 filter-action-select-panle hide" >
<div class="row">
<div class="col-md-2">
<div class="form-group">
<label class="control-label"><spring:message code='protocol_type'/></label>
<form:select path="protocol" class="selectpicker form-control">
<form:option value=""><spring:message code="select"/></form:option>
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="protocol" >
<form:option value="${protocol.itemCode}"><spring:message code="${protocol.itemValue}"></spring:message></form:option>
</c:forEach>
</form:select>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label class="control-label"><spring:message code='direct'/></label>
<form:select path="direction" class="selectpicker form-control">
<form:option value=""><spring:message code="select"/></form:option>
<c:forEach items="${fns:getDictList('DIRECTION')}" var="direction" >
<form:option value="${direction.itemCode}"><spring:message code="${direction.itemValue}"></spring:message></form:option>
</c:forEach>
</form:select>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="entrance"/></label>
<form:select path="entranceId" class="selectpicker form-control" data-live-search="true" data-live-search-placeholder="search">
<form:option value=""><spring:message code="select"/></form:option>
<c:forEach items="${fns:getDictList('ENTRANCE')}" var="entrance" >
<form:option value="${entrance.itemCode}"><spring:message code="${entrance.itemValue}"></spring:message></form:option>
</c:forEach>
</form:select>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="clj_ip"></spring:message></label>
<input name="cljIp" type="text" class="form-control" value="${log.cljIp }"/>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="clientip"></spring:message></label>
<input name="clientIp" type="text" class="form-control" value="${log.clientIp }"/>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="serverip"></spring:message></label>
<input name="serverIp" type="text" class="form-control" value="${log.serverIp }"/>
</div>
</div>
</div>
</div>
<!-- /筛选搜索内容栏 结束-->
</form:form>
</div>
<div class="table-responsive">
<sys:message content="${message}"/>
<table id="contentTable" class="table table-striped table-bordered table-condensed text-nowrap">
<thead>
<tr>
<th><spring:message code="cfg_id"/></th>
<!--<th><input type="checkbox" class="i-checks" id="checkAll"></th>-->
<%-- <th>ip<spring:message code="type"/></th> --%>
<th><spring:message code="action"/></th>
<th><spring:message code="mail_proto"/></th>
<th><spring:message code="mail_from"/></th>
<th><spring:message code="mail_to"/></th>
<th><spring:message code="subject"/></th>
<th><spring:message code="eml_file"/></th>
<th><spring:message code="client_ip"/></th>
<th><spring:message code="client_port"/></th>
<th><spring:message code="server_ip"/></th>
<th><spring:message code="server_port"/></th>
<th><spring:message code="protocol"/></th>
<th><spring:message code="entrance_id"/></th>
<th><spring:message code="direction"/></th>
<th><spring:message code="found_time"/></th>
<th><spring:message code="recv_time"/></th>
<th><spring:message code="deviceid"/></th>
<th><spring:message code="stream_type"/></th>
<th><spring:message code="clj_ip"/></th>
<th><spring:message code="nest_addr_list"/></th>
<th><spring:message code="user_region"/></th>
</tr>
</thead>
<tbody>
<c:forEach var="_log" items="${page.list }" varStatus="status">
<tr>
<td>${_log.cfgId }</td>
<%-- <td>
<c:forEach items="${fns:getDictList('IP_TYPE')}" var="ipType">
<c:if test="${ipType.itemCode eq _log.addrType}">${ipType.itemValue}</c:if>
</c:forEach>
</td> --%>
<td>
<c:if test="${_log.action eq 16 }"><spring:message code="action_reject"/></c:if>
<c:if test="${_log.action eq 1 }"><spring:message code="action_monit"/></c:if>
</td>
<td>${_log.mailProto }</td>
<td>${_log.mailFrom }</td>
<td>${_log.mailTo }</td>
<td>${_log.subject }</td>
<td>${_log.emlFile }</td>
<td>${_log.clientIp }</td>
<td>${_log.clientPort }</td>
<td>${_log.serverIp }</td>
<td>${_log.serverPort }</td>
<td>
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="logProtocol">
<c:if test="${logProtocol.itemCode eq _log.protocol}">${logProtocol.itemValue}</c:if>
</c:forEach>
</td>
<td>
<c:forEach items="${fns:getDictList('ENTRANCE')}" var="entrance">
<c:if test="${entrance.itemCode eq _log.entranceId}"><spring:message code="${entrance.itemValue}"/></c:if>
</c:forEach>
</td>
<td>
<c:forEach items="${fns:getDictList('DIRECTION')}" var="direction">
<c:if test="${direction.itemCode eq _log.direction}"><spring:message code="${direction.itemValue}"/></c:if>
</c:forEach>
</td>
<td>${_log.foundTime }</td>
<td>${_log.recvTime }</td>
<td>
<c:forEach items="${fns:getDictList('DEVICE')}" var="device">
<c:if test="${device.itemCode eq _log.deviceId}"><spring:message code="${device.itemValue}"/></c:if>
</c:forEach>
</td>
<td>
<c:forEach items="${fns:getDictList('LOG_STREAM_TYPE')}" var="streamType">
<c:if test="${streamType.itemCode eq _log.streamType}">${streamType.itemValue}</c:if>
</c:forEach>
</td>
<td>${_log.cljIp }</td>
<td>${_log.nestAddrList }</td>
<td>${_log.userRegion }</td>
</tr>
</c:forEach>
</tbody>
</table>
<div class="page">${page}</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>