1.proxy日志
2.处理长字符串、转义
This commit is contained in:
112
src/main/java/com/nis/domain/log/PxyHttpLog.java
Normal file
112
src/main/java/com/nis/domain/log/PxyHttpLog.java
Normal file
@@ -0,0 +1,112 @@
|
||||
package com.nis.domain.log;
|
||||
|
||||
public class PxyHttpLog extends BaseLogEntity<NtcIpLog> {
|
||||
|
||||
private static final long serialVersionUID = -3046458130302949428L;
|
||||
|
||||
private String url;
|
||||
private String reqLine;
|
||||
private String resLine;
|
||||
private String cookie;
|
||||
private String referer;
|
||||
private String userAgent;
|
||||
private String contentLen;
|
||||
private String contentType;
|
||||
private String setCookie;
|
||||
private String reqHeader;
|
||||
private String respHeader;
|
||||
private String reqBody;
|
||||
private String resBody;
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
public String getReqLine() {
|
||||
return reqLine;
|
||||
}
|
||||
public void setReqLine(String reqLine) {
|
||||
this.reqLine = reqLine;
|
||||
}
|
||||
public String getResLine() {
|
||||
return resLine;
|
||||
}
|
||||
public void setResLine(String resLine) {
|
||||
this.resLine = resLine;
|
||||
}
|
||||
public String getCookie() {
|
||||
return cookie;
|
||||
}
|
||||
public void setCookie(String cookie) {
|
||||
this.cookie = cookie;
|
||||
}
|
||||
public String getReferer() {
|
||||
return referer;
|
||||
}
|
||||
public void setReferer(String referer) {
|
||||
this.referer = referer;
|
||||
}
|
||||
public String getUserAgent() {
|
||||
return userAgent;
|
||||
}
|
||||
public void setUserAgent(String userAgent) {
|
||||
this.userAgent = userAgent;
|
||||
}
|
||||
public String getContentLen() {
|
||||
return contentLen;
|
||||
}
|
||||
public void setContentLen(String contentLen) {
|
||||
this.contentLen = contentLen;
|
||||
}
|
||||
public String getContentType() {
|
||||
return contentType;
|
||||
}
|
||||
public void setContentType(String contentType) {
|
||||
this.contentType = contentType;
|
||||
}
|
||||
public String getSetCookie() {
|
||||
return setCookie;
|
||||
}
|
||||
public void setSetCookie(String setCookie) {
|
||||
this.setCookie = setCookie;
|
||||
}
|
||||
public String getReqHeader() {
|
||||
return reqHeader;
|
||||
}
|
||||
public void setReqHeader(String reqHeader) {
|
||||
this.reqHeader = reqHeader;
|
||||
}
|
||||
public String getRespHeader() {
|
||||
return respHeader;
|
||||
}
|
||||
public void setRespHeader(String respHeader) {
|
||||
this.respHeader = respHeader;
|
||||
}
|
||||
public String getReqBody() {
|
||||
return reqBody;
|
||||
}
|
||||
public void setReqBody(String reqBody) {
|
||||
this.reqBody = reqBody;
|
||||
}
|
||||
public String getResBody() {
|
||||
return resBody;
|
||||
}
|
||||
public void setResBody(String resBody) {
|
||||
this.resBody = resBody;
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return "{\"url\"=\"" + url + "\", \"reqLine\"=\"" + reqLine
|
||||
+ "\", \"resLine\"=\"" + resLine + "\", \"cookie\"=\"" + cookie
|
||||
+ "\", \"referer\"=\"" + referer + "\", \"userAgent\"=\""
|
||||
+ userAgent + "\", \"contentLen\"=\"" + contentLen
|
||||
+ "\", \"contentType\"=\"" + contentType
|
||||
+ "\", \"setCookie\"=\"" + setCookie + "\", \"reqHeader\"=\""
|
||||
+ reqHeader + "\", \"respHeader\"=\"" + respHeader
|
||||
+ "\", \"reqBody\"=\"" + reqBody + "\", \"resBody\"=\""
|
||||
+ resBody + "\"}";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -417,6 +417,7 @@ public final class Constants {
|
||||
public static final String NTC_MMPORNVIDEOLEVEL_LOG = Configurations.getStringProperty("mmPornVideoLevelLog", "");
|
||||
public static final String NTC_MMSAMPLEPIC_LOG = Configurations.getStringProperty("mmSamplePicLog", "");
|
||||
public static final String NTC_MMSAMPLEVOIP_LOG = Configurations.getStringProperty("mmSampleVoipLog", "");
|
||||
public static final String PXY_HTTP_LOG = Configurations.getStringProperty("pxyHttpLog", "");
|
||||
|
||||
//报表类型,1- 配置命中总量业务
|
||||
public static final Integer BUSINESSTYPE_CONFIG=Configurations.getIntProperty("businesstype_config", 1);
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
package com.nis.web.controller.log.pxy;
|
||||
|
||||
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.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.servlet.support.RequestContext;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.nis.domain.PageLog;
|
||||
import com.nis.domain.log.PxyHttpLog;
|
||||
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/pxy")
|
||||
public class PxyHttpLogController extends BaseController {
|
||||
|
||||
@RequestMapping(value = {"list", "ipInterceptlogs", "domainInterceptlogs", "httpBlocklogs",
|
||||
"httpRedirectlogs", "httpReplacelogs", "httpMonitogs"})
|
||||
public String list(@ModelAttribute("log") PxyHttpLog log, Model model, HttpServletRequest request, HttpServletResponse response) {
|
||||
try {
|
||||
setLogInfo(request, model, log);
|
||||
|
||||
PageLog<PxyHttpLog> page = new PageLog<PxyHttpLog>(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.PXY_HTTP_LOG;
|
||||
String recv = HttpClientUtil.getMsg(url, params, request);
|
||||
logger.info("查询结果:" + recv);
|
||||
|
||||
Gson gson = new GsonBuilder().create();
|
||||
|
||||
LogRecvData<PxyHttpLog> fromJson = gson.fromJson(recv, new TypeToken<LogRecvData<PxyHttpLog>>(){}.getType());
|
||||
if (fromJson.getStatus().intValue() == 200) {
|
||||
page.setList(fromJson.getData().getList());
|
||||
List<PxyHttpLog> list = page.getList();
|
||||
for (PxyHttpLog l : list) {
|
||||
l.setFunctionId(log.getFunctionId());
|
||||
setLogAction(l);
|
||||
}
|
||||
model.addAttribute("page", page);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("查询失败", e);
|
||||
addMessage(model, e.getMessage());
|
||||
}
|
||||
|
||||
return "/log/pxy/pxyHttpList";
|
||||
}
|
||||
|
||||
private void setLogInfo(HttpServletRequest request, Model model, PxyHttpLog log) {
|
||||
int functionId = log.getFunctionId();
|
||||
|
||||
RequestContext requestContext = new RequestContext(request);
|
||||
|
||||
if (functionId == 200) {
|
||||
model.addAttribute("logTitle", requestContext.getMessage("ip_intercept"));
|
||||
log.setAction(1);
|
||||
} else if (functionId == 201) {
|
||||
model.addAttribute("logTitle", requestContext.getMessage("domain_intercept"));
|
||||
log.setAction(1);
|
||||
} else if (functionId == 207) {
|
||||
model.addAttribute("logTitle", requestContext.getMessage("http_block"));
|
||||
log.setAction(16);
|
||||
} else if (functionId == 208) {
|
||||
model.addAttribute("logTitle", requestContext.getMessage("http_redirect"));
|
||||
log.setAction(48);
|
||||
} else if (functionId == 209) {
|
||||
model.addAttribute("logTitle", requestContext.getMessage("http_replace"));
|
||||
log.setAction(80);
|
||||
} else if (functionId == 210) {
|
||||
model.addAttribute("logTitle", requestContext.getMessage("http_monit"));
|
||||
log.setAction(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -262,6 +262,7 @@ mmPornAudioLevelLog=mmPornAudioLevelLogs
|
||||
mmPornVideoLevelLog=mmPornVideoLevelLogs
|
||||
mmSamplePicLog=mmSamplePicLogs
|
||||
mmSampleVoipLog=mmSampleVoipLogs
|
||||
pxyHttpLog=pxyHttpLogs
|
||||
########################################
|
||||
#大屏图表展示服务接口
|
||||
dashboardUrl=http://10.0.6.101:8080/galaxy/service/log/v1/
|
||||
@@ -395,7 +396,7 @@ digest_single_file_max_size=10485760
|
||||
digest_total_file_max_size=12582912
|
||||
#YSP文件保存路径
|
||||
#av_file_path=/home/ysp/
|
||||
av_file_path=D:\\ysp\\
|
||||
av_file_path=D\:\\ysp\\
|
||||
#YSP文件特征类型
|
||||
av_sample_audio_region=av_sample_audio
|
||||
av_sample_video_region=av_sample_video
|
||||
@@ -411,9 +412,9 @@ av_sample_voip_region=av_sample_voip
|
||||
#audio_sample_proc_param_is_translation=false
|
||||
#video_sample_proc_param_is_translation=false
|
||||
#picture_sample_proc_param_is_translation=false
|
||||
audio_sample_create_proc=java -jar D:\\sampleTest.jar
|
||||
video_sample_create_proc=java -jar D:\\sampleTest.jar
|
||||
picture_sample_create_proc=java -jar D:\\sampleTest.jar
|
||||
audio_sample_create_proc=java -jar D\:\\sampleTest.jar
|
||||
video_sample_create_proc=java -jar D\:\\sampleTest.jar
|
||||
picture_sample_create_proc=java -jar D\:\\sampleTest.jar
|
||||
audio_sample_proc_param_is_quotation=false
|
||||
video_sample_proc_param_is_quotation=false
|
||||
picture_sample_proc_param_is_quotation=false
|
||||
|
||||
@@ -207,15 +207,32 @@ $(document).ready(function(){
|
||||
|
||||
<td>${log.pid}</td>
|
||||
<td>
|
||||
<c:if test="${fn:startsWith(log.url, 'http')}">${log.url }</c:if>
|
||||
<c:if test="${!fn:startsWith(log.url, 'http')}">http://${log.url }</c:if>
|
||||
<%-- <c:if test="${fn:startsWith(log.url, 'http')}">${log.url }</c:if>
|
||||
<c:if test="${!fn:startsWith(log.url, 'http')}">http://${log.url }</c:if> --%>
|
||||
<c:if test="${fn:startsWith(log.url, 'http')}">
|
||||
<c:set var="url" value="${log.url }"/>
|
||||
</c:if>
|
||||
<c:if test="${!fn:startsWith(log.url, 'http')}">
|
||||
<c:set var="url" value="http://${log.url }"/>
|
||||
</c:if>
|
||||
<span data-original-title="${fns:escapeHtml(url)}" class="tooltips" data-flag="false" data-html="true" data-placement="top">
|
||||
${fns:stringFormat(url,30)}
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<a target="_blank" href='
|
||||
<c:if test="${fn:startsWith(log.logUri, \"http\")}">${log.logUri }</c:if>
|
||||
<c:if test="${!fn:startsWith(log.logUri, \"http\")}">http://${log.logUri }</c:if>'>http://${log.logUri }</a>
|
||||
<c:if test="${fn:startsWith(log.logUri, 'http')}">
|
||||
<c:set var="logUri" value="${log.logUri }"/>
|
||||
</c:if>
|
||||
<c:if test="${!fn:startsWith(log.logUri, 'http')}">
|
||||
<c:set var="logUri" value="http://${log.logUri }"/>
|
||||
</c:if>
|
||||
<a target="_blank" href='${fns:escapeHtml(logUri)}' data-original-title="${fns:escapeHtml(logUri)}" class="tooltips" data-flag="false" data-html="true" data-placement="top">
|
||||
${fns:stringFormat(logUri,30)}
|
||||
</a>
|
||||
<%-- <c:if test="${fn:startsWith(log.logUri, \"http\")}">${log.logUri }</c:if>
|
||||
<c:if test="${!fn:startsWith(log.logUri, \"http\")}">http://${log.logUri }</c:if>'>http://${log.logUri }</a> --%>
|
||||
</td>
|
||||
<td>${log.refer}</td>
|
||||
<td><span data-original-title="${fns:escapeHtml(log.refer)}" class="tooltips" data-flag="false" data-html="true" data-placement="top">${fns:stringFormat(log.refer,30)}</span></td>
|
||||
<td>${log.level}</td>
|
||||
<!--0:动态黑名单FD;1:静态配置FD;2:首次分析命中 -->
|
||||
<td>
|
||||
@@ -247,7 +264,7 @@ $(document).ready(function(){
|
||||
<c:if test="${log.streamDir==dic.itemCode}"><spring:message code="${dic.itemValue }"/></c:if>
|
||||
</c:forEach>
|
||||
</td>
|
||||
<td>${log.addrList}</td>
|
||||
<td><span data-original-title="${fns:escapeHtml(log.addrList)}" class="tooltips" data-flag="false" data-html="true" data-placement="top">${fns:stringFormat(log.addrList,30)}</span></td>
|
||||
<td>${log.serverLocate}</td>
|
||||
<td>${log.clientLocate}</td>
|
||||
</tr>
|
||||
|
||||
@@ -207,13 +207,30 @@ $(document).ready(function(){
|
||||
|
||||
<td>${log.pid}</td>
|
||||
<td>
|
||||
<c:if test="${fn:startsWith(log.url, 'http')}">${log.url }</c:if>
|
||||
<c:if test="${!fn:startsWith(log.url, 'http')}">http://${log.url }</c:if>
|
||||
<%-- <c:if test="${fn:startsWith(log.url, 'http')}">${log.url }</c:if>
|
||||
<c:if test="${!fn:startsWith(log.url, 'http')}">http://${log.url }</c:if> --%>
|
||||
<c:if test="${fn:startsWith(log.url, 'http')}">
|
||||
<c:set var="url" value="${log.url }"/>
|
||||
</c:if>
|
||||
<c:if test="${!fn:startsWith(log.url, 'http')}">
|
||||
<c:set var="url" value="http://${log.url }"/>
|
||||
</c:if>
|
||||
<span data-original-title="${fns:escapeHtml(url)}" class="tooltips" data-flag="false" data-html="true" data-placement="top">
|
||||
${fns:stringFormat(url,30)}
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<a target="_blank" href='
|
||||
<c:if test="${fn:startsWith(log.logUri, \"http\")}">${log.logUri }</c:if>
|
||||
<c:if test="${!fn:startsWith(log.logUri, \"http\")}">http://${log.logUri }</c:if>'>http://${log.logUri }</a>
|
||||
<c:if test="${fn:startsWith(log.logUri, 'http')}">
|
||||
<c:set var="logUri" value="${log.logUri }"/>
|
||||
</c:if>
|
||||
<c:if test="${!fn:startsWith(log.logUri, 'http')}">
|
||||
<c:set var="logUri" value="http://${log.logUri }"/>
|
||||
</c:if>
|
||||
<a target="_blank" href='${fns:escapeHtml(logUri)}' data-original-title="${fns:escapeHtml(logUri)}" class="tooltips" data-flag="false" data-html="true" data-placement="top">
|
||||
${fns:stringFormat(logUri,30)}
|
||||
</a>
|
||||
<%-- <c:if test="${fn:startsWith(log.logUri, \"http\")}">${log.logUri }</c:if>
|
||||
<c:if test="${!fn:startsWith(log.logUri, \"http\")}">http://${log.logUri }</c:if>'>http://${log.logUri }</a> --%>
|
||||
</td>
|
||||
<td>${log.refer}</td>
|
||||
<td>${log.level}</td>
|
||||
@@ -247,7 +264,7 @@ $(document).ready(function(){
|
||||
<c:if test="${log.streamDir==dic.itemCode}"><spring:message code="${dic.itemValue }"/></c:if>
|
||||
</c:forEach>
|
||||
</td>
|
||||
<td>${log.addrList}</td>
|
||||
<td title="${fns:escapeHtml(log.addrList)}">${fns:stringFormat(log.addrList,30)}</td>
|
||||
<td>${log.serverLocate}</td>
|
||||
<td>${log.clientLocate}</td>
|
||||
</tr>
|
||||
|
||||
215
src/main/webapp/WEB-INF/views/log/pxy/pxyHttpList.jsp
Normal file
215
src/main/webapp/WEB-INF/views/log/pxy/pxyHttpList.jsp
Normal file
@@ -0,0 +1,215 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||
<%@ include file="/WEB-INF/include/taglib.jsp"%>
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
${logTitle }<spring:message code="log"/>
|
||||
</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">
|
||||
${logTitle }<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/pxy/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">
|
||||
<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="transProto" 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="capIp" type="text" class="form-control" value="${log.capIp }"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
<label><spring:message code="clientip"></spring:message>:</label>
|
||||
<input name="sIp" type="text" class="form-control" value="${log.sIp }"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<div class="form-group">
|
||||
<label><spring:message code="serverip"></spring:message>:</label>
|
||||
<input name="dIp" type="text" class="form-control" value="${log.dIp }"/>
|
||||
</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><spring:message code="found_time"/></th>
|
||||
<th><spring:message code="entrance_id"/></th>
|
||||
<th><spring:message code="clj_ip"/></th>
|
||||
<th><spring:message code="protocol"/></th>
|
||||
<th><spring:message code="server_ip"/></th>
|
||||
<th><spring:message code="client_ip"/></th>
|
||||
<th><spring:message code="server_port"/></th>
|
||||
<th><spring:message code="client_port"/></th>
|
||||
<th>url</th>
|
||||
<th><spring:message code="deviceid"/></th>
|
||||
<th><spring:message code="direction"/></th>
|
||||
<th><spring:message code="stream_type"/></th>
|
||||
<th><spring:message code="nest_addr_list"/></th>
|
||||
<th><spring:message code='server_locate'/></th>
|
||||
<th><spring:message code='client_locate'/></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach var="_log" items="${page.list }" varStatus="status">
|
||||
<tr>
|
||||
<td>${_log.cfgId }</td>
|
||||
<td>${_log.foundTime }</td>
|
||||
<td>${_log.entranceId }</td>
|
||||
<td>${_log.capIp }</td>
|
||||
<td>${_log.transProto }</td>
|
||||
<td>${_log.dIp }</td>
|
||||
<td>${_log.sIp }</td>
|
||||
<td>${_log.dPort }</td>
|
||||
<td>${_log.sPort }</td>
|
||||
<td>
|
||||
<span data-original-title="${fns:escapeHtml(_log.url)}" class="tooltips" data-flag="false" data-html="true" data-placement="top">${fns:stringFormat(_log.url,30)}</span>
|
||||
</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('DIRECTION')}" var="direction">
|
||||
<c:if test="${direction.itemCode eq _log.direction}"><spring:message code="${direction.itemValue}"/></c:if>
|
||||
</c:forEach>
|
||||
</td>
|
||||
<td>
|
||||
<c:forEach items="${fns:getDictList('LOG_STREAM_TYPE')}" var="streamType">
|
||||
<c:if test="${streamType.itemCode eq _log.streamDir}">${streamType.itemValue}</c:if>
|
||||
</c:forEach>
|
||||
</td>
|
||||
<td>
|
||||
<span data-original-title="${fns:escapeHtml(_log.addrList)}" class="tooltips" data-flag="false" data-html="true" data-placement="top">${fns:stringFormat(_log.addrList,30)}</span>
|
||||
</td>
|
||||
<td title="${_log.serverLocate}">${fns:abbr(_log.serverLocate,20)}</td>
|
||||
<td title="${_log.clientLocate}">${fns:abbr(_log.clientLocate,20)}</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="page">${page}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user