HTPP(S)操控日志

This commit is contained in:
shangguanyanfei
2019-05-31 14:40:26 +08:00
parent eb9ad8941e
commit 468054b5a4
7 changed files with 1930 additions and 1 deletions

View File

@@ -0,0 +1,410 @@
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/WEB-INF/include/taglib.jsp"%>
<html>
<head>
<title><spring:message code="config_statistics"></spring:message></title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/static/pages/css/dashboard.css">
<link rel="stylesheet" href="${pageContext.request.contextPath}/static/pages/css/pagination.css">
<script src="${pageContext.request.contextPath}/static/pages/scripts/jquery.pagination.js"></script>
<script src="${ctxStatic }/global/plugins/tableExport-3.3.13/xlsx.core.js"></script>
<script src="${ctxStatic }/global/plugins/tableExport-3.3.13/FileSaver.js"></script>
<script src="${ctxStatic }/global/plugins/tableExport-3.3.13/tableexport.js"></script>
</head>
<style type="text/css">
@page { size: landscape; }
.input-medium {
width: 170px !important;
}
</style>
<body>
<div class="page-content">
<%-- <h3 class="page-title">
<spring:message code="config_statistics"></spring:message>
</h3> --%>
<h5 class="page-header"></h5>
<div class="portlet">
<div class="portlet-body">
<div class="row">
<form:form id="searchForm" modelAttribute="log" action="${ctx}/dashboard/traffic/configStatisticList" method="get" class="form-search">
<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
<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="统计内容"/></span>
</div>
<select id="concent" class="selectpicker select2 input-small" >
<option value="1" selected="selected">Rules</option>
<option value="2">Rule Type</option>
<option value="3">Bandwidth</option>
<option value="4">Protocols</option>
<option value="5">Application </option>
<option value="6">domains</option>
<option value="7">IP address</option>
<option value="8">SubscriberID</option>
</select>
</div>
</div>
<div id="statis_detail" class="pull-left">
<div id="detail" class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control" ><spring:message code="统计明细"/></span>
</div>
<select id="detail_select" class="selectpicker select2 input-small">
</select>
</div>
</div>
</div>
<div class="col-md-12" style="padding-top: 6px;">
<div class="pull-left">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control" ><spring:message code="统计维度"/></span>
</div>
<select id="dimension_select" class="selectpicker select2 input-small">
</select>
</div>
</div>
</div>
<div class="col-md-12" style="padding-top: 6px;">
<div class="form-group">
<div class="control-label col-md-3 form-control" style="width: max-content;">
<spring:message code="time_granularity" />
</div>
<div class="col-md-6" style="padding-left: 10px;">
<div class="mt-radio-inline" style="height: 34px">
<label class="mt-radio">
<input type="radio" class="timeSize" name="time" value="2" checked/>
5<spring:message code="minute" />
<span></span>
</label>
<label class="mt-radio">
<input type="radio" class="timeSize" name="time" value="3"/>
<spring:message code="hour" />
<span></span>
</label>
<label class="mt-radio">
<input type="radio" class="timeSize" name="time" value="4"/>
<spring:message code="day" />
<span></span>
</label>
<label class="mt-radio">
<input type="radio" class="timeSize" name="time" value="5"/>
<spring:message code="month" />
<span></span>
</label>
<label class="mt-radio">
<input type="radio" class="timeSize" name="time" value="6"/>
<spring:message code="year" />
<span></span>
</label>
</div>
</div>
</div>
</div>
<br>
<!-- 搜索内容与操作按钮栏 -->
<div class="col-md-12" style="padding-top: 6px;">
<div class="pull-left">
<div class="input-group beginDate">
<div class="input-group-btn">
<span class="selectpicker form-control"><spring:message code="begin_date" /></span>
</div>
<input name="beginDate" id="beginDate" type="text" readonly="readonly" maxlength="20" class="form-control Wdate input-medium"
value="${log.beginDate}" onclick="WdatePicker({onpicked:function(){this.onchange()},dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true,maxDate:'#F{\'new Date()\'}'});" onchange="setStartTime('#beginDate','#endDate',1,'h','yyyy-MM-dd hh:mm:ss',false)"/>
</div>
</div>
<div class="pull-left">
<div class="input-group endDate">
<div class="input-group-btn">
<span class="selectpicker form-control"><spring:message code="end_date" /></span>
</div>
<input name="endDate" id="endDate" type="text" readonly="readonly" maxlength="20" class="form-control Wdate input-medium"
value="${log.endDate}" onclick="WdatePicker({onpicked:function(){this.onchange()},dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true,maxDate:'#F{\'new Date()\'}'});" onchange="setEndTime('#beginDate','#endDate',1,'h','yyyy-MM-dd hh:mm:ss',false)"/>
</div>
</div>
</div>
<div class="col-md-12" style="padding-top: 6px;">
<div class="pull-left">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control" ><spring:message code="地域 "/></span>
</div>
<select id="area_select" class="selectpicker select2 input-small">
<option value="" selected="selected"><spring:message code="select"/></option>
<option value="astana">Astana</option>
<option value="almaty">Almaty</option>
</select>
</div>
</div>
</div>
<div class="col-md-12" style="padding-top: 6px;">
<div class="pull-left">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control" ><spring:message code="运营商 "/></span>
</div>
<select id="operator_select" class="selectpicker select2 input-small">
<option value="" selected="selected"><spring:message code="select"/></option>
<option value="astana">astana</option>
<option value="almaty">almaty</option>
</select>
</div>
</div>
</div>
<div class="col-md-12" style="padding-top: 6px;">
<div class="pull-left" >
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control" ><spring:message code="chart_type"/></span>
</div>
<select id="chartType" class="selectpicker select2 input-small">
<option value ="line" selected><spring:message code="line_chart"/></option>
<option value ="bar"><spring:message code="bar_chart"/></option>
<option value ="pie"><spring:message code="pie_chart"/></option>
</select>
</div>
</div>
</div>
<div class="col-md-12" style="padding-top: 6px;">
<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>
</div>
<div class="pull-right">
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-wrench"></i> <spring:message code="export"></spring:message>
<i class="fa fa-angle-down"></i>
</button>
<ul class="dropdown-menu pull-right" style="min-width: 110px;" >
<li><sys:delRow url="${ctx}/dashboard/traffic/configStatisticListExport?type=excel" searchUrl="${ctx}/dashboard/traffic/configStatistic" id="contentTable" maxRow="10000" label="excel"></sys:delRow></li>
<li><sys:delRow url="${ctx}/dashboard/traffic/configStatisticListExport?type=csv" searchUrl="${ctx}/dashboard/traffic/configStatistic" id="contentTable" maxRow="10000" label="csv"></sys:delRow></li>
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn btn-default css-print" onClick="doPrint()"><i class="fa glyphicon glyphicon-print" style="top:3px;margin-right: 3px;"></i><spring:message code="print"/></button>
</div>
<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>
<!-- 搜索内容与操作按钮栏 -->
</form:form>
</div>
<div class="col-md-12">
<sys:message content="${message}"/>
<div class="table-responsive">
<table id="contentTable" class="table table-striped table-bordered table-condensed text-nowrap logTb">
<thead>
<tr>
<th class="sort-column cfg_id" column="cfg_id"><spring:message code="cfg_id"/></th>
<th class="sort-column config_describe" column="config_describe"><spring:message code="config_describe"/></th>
<th class="sort-column a.config_log_total" column="config_log_total"><spring:message code="config_log_total"/></th>
</tr>
</thead>
<tbody>
<c:forEach var="log" items="${page.list }" varStatus="status">
<tr>
<td><a onclick="searchByConfig(${log.cfgId})" title="${log.cfgId}">${log.cfgId}</a></td>
<td>${log.cfgDesc }</td>
<td>${log.sum }</td>
</tr>
</c:forEach>
</tbody>
</table>
<div class="page">${page}</div>
</div>
</div>
</div>
</div>
</div>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/highcharts.js"></script>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/exporting.js"></script>
<%-- <script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/series-label.js"></script>--%>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/offline-exporting.js"></script>
<script src="${pageContext.request.contextPath}/static/global/plugins/highcharts/js/no-data-to-display.js"></script>
<script src="${ctxStatic }/pages/scripts/jQuery.print.js"></script>
<script type="text/javascript">
//统计明细下拉框内容数组
var detailNation1 = new Array('Total','Outbound','Inbound');
var detailNation2 = new Array('protocols');
var detailNation3 = new Array('33 APP');
var detailNation4 = new Array('domainList');
var detailNation5 = new Array('TOP100');
//统计维度下拉框内容数组
var dimensionNation1 = new Array('Rule');
var dimensionNation2 = new Array('block','monitor');
var dimensionNation3 = new Array('bps','pps');
var dimensionNation4 = new Array('bps','pps','link count','uniq ip count');
var dimensionNation5 = new Array('link count','uniq ip count');
var dimensionNation6 = new Array('bps','pps','link count');
$(document).ready(function(){
//筛选功能初始化
$("#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",'');
$("#searchForm")[0].reset();
});
//初始化统计明细下拉框
$("#statis_detail").hide();
//初始化统计维度下拉框
createSelect('dimension_select','Rule', dimensionNation1);
//统计内容下拉框改变事件
concentOnChange();
$(".timeSize").on("change",function(){
var size = $(this).val();
var beginTimeObj = $("#beginDate").clone();
var endTimeObj = $("#endDate").clone();
$("#beginDate").remove();
$("#endDate").remove();
if(size == 2){ // 5分钟
beginTimeObj.attr("onchange","setStartTime('#beginDate','#endDate',1,'h','yyyy-MM-dd hh:mm:ss',false,true)");
endTimeObj.attr("onchange","setEndTime('#beginDate','#endDate',1,'h','yyyy-MM-dd hh:mm:ss',false,true)");
}else if(size == 3){ // 小时
beginTimeObj.attr("onchange","setStartTime('#beginDate1','#endDate1',1,'d','yyyy-MM-dd hh:mm:ss',false,true)");
endTimeObj.attr("onchange","setEndTime('#beginDate','#endDate',1,'d','yyyy-MM-dd hh:mm:ss',false,true)");
}else if(size == 4){ // 天
beginTimeObj.attr("onchange","setStartTime('#beginDate','#endDate',1,'m','yyyy-MM-dd hh:mm:ss',false,true)");
endTimeObj.attr("onchange","setEndTime('#beginDate','#endDate',1,'m','yyyy-MM-dd hh:mm:ss',false,true)");
}else if(size == 5){ // 月
beginTimeObj.attr("onchange","setStartTime('#beginDate','#endDate',12,'m','yyyy-MM-dd hh:mm:ss',false,true)");
endTimeObj.attr("onchange","setEndTime('#beginDate','#endDate',12,'m','yyyy-MM-dd hh:mm:ss',false,true)");
}else if(size == 6){ // 年
beginTimeObj.attr("onchange","setStartTime('#beginDate','#endDate',12,'m','yyyy-MM-dd hh:mm:ss',false,'year')");
endTimeObj.attr("onchange","setEndTime('#beginDate','#endDate',12,'m','yyyy-MM-dd hh:mm:ss',false,'year')");
}
$(".beginDate").children("div").after(beginTimeObj);
$(".endDate").children("div").after(endTimeObj);
//$("#beginDate").change();
$("#endDate").change();
if(size == 2){ // 5分钟
$("#beginDate").attr("onchange","setStartTime('#beginDate','#endDate',1,'h','yyyy-MM-dd hh:mm:ss',false)");
$("#endDate").attr("onchange","setEndTime('#beginDate','#endDate',1,'h','yyyy-MM-dd hh:mm:ss',false)");
}else if(size == 3){ // 小时
$("#beginDate").attr("onchange","setStartTime('#beginDate','#endDate',1,'d','yyyy-MM-dd hh:mm:ss',false)");
$("#endDate").attr("onchange","setEndTime('#beginDate','#endDate',1,'d','yyyy-MM-dd hh:mm:ss',false)");
}else if(size == 4){ // 天
$("#beginDate").attr("onchange","setStartTime('#beginDate','#endDate',1,'m','yyyy-MM-dd hh:mm:ss',false)");
$("#endDate").attr("onchange","setEndTime('#beginDate','#endDate',1,'m','yyyy-MM-dd hh:mm:ss',false)");
}else if(size == 5){ // 月
$("#beginDate").attr("onchange","setStartTime('#beginDate','#endDate',12,'m','yyyy-MM-dd hh:mm:ss',false)");
$("#endDate").attr("onchange","setEndTime('#beginDate','#endDate',12,'m','yyyy-MM-dd hh:mm:ss',false)");
}else if(size == 6){ // 年
$("#beginDate").attr("onchange","setStartTime('#beginDate','#endDate',12,'m','yyyy-MM-dd hh:mm:ss',false)");
$("#endDate").attr("onchange","setEndTime('#beginDate','#endDate',12,'m','yyyy-MM-dd hh:mm:ss',false)");
}
});
});
//动态生成下拉框的内容
/*
id:select的id name:默认选中的下拉框 str:下拉框展示内容的数组
*/
function createSelect(id,name, str){
var _select = $("#"+id);
var html='<select class="selectpicker form-control input-small">';
for( i = 0; i < str.length; i++){
html+='<option value="'+str[i]+'"';
if(name == str[i]){
html+=" selected";
}
html+='>'+str[i]+'</option>';
}
html+='</select>';
_select.html(html);
_select.selectpicker("refresh");
_select.selectpicker("render");
}
//统计内容下拉框改变事件
function concentOnChange(){
$("#concent").on("change",function(){
var concent = $("#concent").val();
if(concent == 1){ //
$("#statis_detail").hide();
createSelect('dimension_select','Rule', dimensionNation1);
}else if(concent == 2){ //
$("#statis_detail").hide();
createSelect('dimension_select','block', dimensionNation2);
}else if(concent == 3){ //
$("#statis_detail").show();
createSelect('detail_select','Total', detailNation1);
createSelect('dimension_select','bps', dimensionNation3);
}else if(concent == 4){ //
$("#statis_detail").show();
createSelect('detail_select','protocols', detailNation2);
createSelect('dimension_select','bps', dimensionNation4);
}else if(concent == 5){ //
$("#statis_detail").show();
createSelect('detail_select','33 APP', detailNation3);
createSelect('dimension_select','bps', dimensionNation4);
}else if(concent == 6){ //
$("#statis_detail").show();
createSelect('detail_select','domainList', detailNation4);
createSelect('dimension_select','link count', dimensionNation5);
}else if(concent == 7){ //
$("#statis_detail").show();
createSelect('detail_select','TOP100', detailNation5);
createSelect('dimension_select','bps', dimensionNation6);
}else if(concent == 8){ //
$("#statis_detail").show();
createSelect('detail_select','TOP100', detailNation5);
createSelect('dimension_select','bps', dimensionNation6);
}
});
}
//配置统计页面 配置ID点击事件
function searchByConfig(cfgId){
var beginDate = $("#beginDate").val();
var endDate = $("#endDate").val();
var timeSize = $(".timeSize:checked").val();
var chartType = $("#chartType").val();
var url= "${ctx}/dashboard/traffic/configTrans?beginDate="+beginDate+"&endDate="+endDate+"&timeSize="+timeSize+"&cfgId="+cfgId+"&chartType="+chartType;
openPicWindow(url);
}
//点击 配置Id的弹窗方法
function openPicWindow(url){
$.jBox("iframe:"+url, {
title: "Config",
top: '1%',
draggable:false,
width: $(document).width()*0.9,
height:$(document).height()*0.8,
showScrolling: false, /* 是否显示浏览的滚动条 */
iframeScrolling: 'no',
buttons: { 'close': true },
loaded:function(h){
$(".jbox-content,top.document").css("overflow-y","hidden")
}
});
}
</script>
</body>
</html>

View File

@@ -0,0 +1,511 @@
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/WEB-INF/include/taglib.jsp"%>
<html>
<head>
<title>
<spring:message code="http_manipulation"/><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();
//异步获取voip相关信息
$("span[id^=open]").click(function(){
var openId=$(this).attr("id");
var closeId=$(this).attr("id").replace("open","close");
var index=$(this).attr("id").replace("open","");
$("#"+openId).hide();
$("#"+closeId).show();
var compileId=$(this).attr("compileId");
// var cfgId=$(this).attr("cfgId");
if($("#"+openId).parent().parent().next("tr").hasClass("child")){
$("#"+openId).parent().parent().next("tr").show();
}else{
$.ajax({
type:'post',
async:false,
url:'${ctx}/proxy/control/httpRedirect/ajaxHttpSubList',
data:{"compileId":compileId,"index":index},
dataType:"html",
success:function(data){
var subTab="<tr class='child'>"+
"<td colspan='"+($(".table tr").eq(0).children("th").length-1)+"'>";
var html="";
html+="<div class='row'>";
html = html+data;
subTab=subTab+html;
subTab+="</td>";
subTab+="</tr>";
$("#"+openId).parent().parent().after(subTab);
$("div[name='tabTitle"+index+"']").get(0).click();
}
});
}
});
$("span[id^=close]").on("click",function(){
var closeId=$(this).attr("id");
var openId=$(this).attr("id").replace("close","open");
$("#"+closeId).hide();
$("#"+openId).show();
$("#"+closeId).parent().parent().next("tr").hide();
});
});
</script>
</head>
<body>
<div class="page-content">
<div class="theme-panel hidden-xs hidden-sm">
</div>
<h3 class="page-title">
<spring:message code="http_manipulation"/>
</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/httpManipulList" 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="isLogTotalSearch" name="isLogTotalSearch" type="hidden" value="${log.isLogTotalSearch}"/>
<!-- 筛选按钮展开状态-->
<input id="isFilterAction" name="isFilterAction" type="hidden" value="${log.isFilterAction }"/><sys:tableSort id="orderBy" name="orderBy" value="${page.orderBy}" callback="page();"/>
<!-- 搜索内容与操作按钮栏 -->
<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" id="searchFoundStartTime" type="text" readonly="readonly" maxlength="20" class="form-control Wdate input-medium"
value="${log.searchFoundStartTime}" onclick="WdatePicker({onpicked:function(){this.onchange()},dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true,maxDate:'#F{\'new Date()\'}'});" onchange="setStartTime('#searchFoundStartTime','#searchFoundEndTime',1,'m','yyyy-MM-dd hh:mm:ss',false)"/>
</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" id="searchFoundEndTime" type="text" readonly="readonly" maxlength="20" class="form-control Wdate input-medium"
value="${log.searchFoundEndTime}" onclick="WdatePicker({onpicked:function(){this.onchange()},dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true,maxDate:'#F{\'new Date()\'}'});" onchange="setEndTime('#searchFoundStartTime','#searchFoundEndTime',1,'m','yyyy-MM-dd hh:mm:ss',false)"/>
</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">
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-wrench"></i> <spring:message code="export"></spring:message>
<i class="fa fa-angle-down"></i>
</button>
<ul class="dropdown-menu pull-right" style="min-width: 110px;" >
<li><sys:delRow url="${ctx}/log/pxy/exportPxyHttpManipul?type=excel" searchUrl="${ctx}/log/pxy/httpManipulList" id="contentTable" maxRow="10000" label="excel"></sys:delRow></li>
<li><sys:delRow url="${ctx}/log/pxy/exportPxyHttpManipul?type=csv" searchUrl="${ctx}/log/pxy/httpManipulList" id="contentTable" maxRow="10000" label="csv"></sys:delRow></li>
</ul>
</div>
<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><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 class="control-label"><spring:message code='transport_layer_protocol'/></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><spring:message code="serverip"></spring:message></label>
<input name="dIp" type="text" class="form-control" value="${log.serverIp }"/>
</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.clientIp }"/>
</div>
</div>
<%-- <div class="col-md-2">
<div class="form-group">
<label class="control-label"><spring:message code="direction"/></label>
<form:select path="direction" class="selectpicker form-control">
<form:option value=""><spring:message code="select"/></form:option>
<c:forEach items="${fns:getDictList('LOG_DIRECTION')}" var="direction" >
<form:option value="${direction.itemCode}"><spring:message code="${direction.itemValue}"></spring:message></form:option>
</c:forEach>
</form:select>
</div>
</div> --%>
</div>
<div class="row">
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="cfg_id"></spring:message></label>
<input name="compileId" type="text" class="form-control logCfgId number" value="${log.compileId }"/>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label>URL</label>
<input name="url" type="text" class="form-control" value="${log.url }"/>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="domain_name"></spring:message></label>
<input name="domain" type="text" class="form-control" value="${log.domain }"/>
</div>
</div>
</div>
</div>
<!-- /筛选搜索内容栏 结束-->
</form:form>
</div>
<sys:message content="${message}"/>
<div class="table-responsive">
<table id="contentTable" class="table table-striped table-bordered table-condensed text-nowrap logTb">
<thead>
<tr>
<th><spring:message code="log"/></th>
<th class="sort-column policy_id" isVisible="false" column="cfg_id" ><spring:message code="cfg_id"/></th>
<th class="sort-column action" isVisible="false" column="action" ><spring:message code="action"/></th>
<%-- <th class="sort-column found_time" column="found_time" ><spring:message code="found_time"/></th> --%>
<th class="sort-column start_time" column="startTime" ><spring:message code="startTime"/></th>
<th class="sort-column end_time" column="endTime" ><spring:message code="endTime"/></th>
<th class="sort-column recv_time" isVisible="false" column="recv_time" ><spring:message code="recv_time"/></th>
<th class="sort-column entrance_id" isVisible="false" column="entrance_id" ><spring:message code="entrance_id"/></th>
<th class="sort-column url" column="URL"> URL &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th>
<th class="sort-column host" isVisible="false" column="host" ><spring:message code="host"/></th>
<th class="sort-column domain" column="domain_name" ><spring:message code="domain_name"/></th>
<th class="sort-column category" isVisible="false" column="category" ><spring:message code="category"/></th>
<c:if test="${fns:getUser().isAdmin()}">
<th class="sort-column req_line" column="req_line" ><spring:message code="req_line"/></th>
<th class="sort-column res_line" column="res_line" ><spring:message code="res_line"/></th>
</c:if>
<th class="sort-column cookie" column="PXY_CACHE_HTTP_COOKIE" ><spring:message code="PXY_CACHE_HTTP_COOKIE"/></th>
<th class="sort-column referer" column="referer" ><spring:message code="referer"/></th>
<th class="sort-column user_agent" column="user_agent" ><spring:message code="user_agent"/></th>
<th class="sort-column content_len" column="content_len" ><spring:message code="content_len"/></th>
<th class="sort-column content_type" column="content_type" ><spring:message code="content_type"/></th>
<th class="sort-column set_cookie" column="set_cookie" ><spring:message code="set_cookie"/></th>
<%-- <th class="sort-column req_header" column="req_header" ><spring:message code="req_header"/></th>
<th class="sort-column resp_header" column="resp_header" ><spring:message code="resp_header"/></th> --%>
<%-- <th class="sort-column req_body"><spring:message code="req_body"/></th>
<th class="sort-column res_body"><spring:message code="res_body"/></th> --%>
<th class="sort-column cap_ip" isVisible="false" column="clj_ip" ><spring:message code="clj_ip"/></th>
<th class="sort-column trans_proto" column="transport_layer_protocol" ><spring:message code="transport_layer_protocol"/></th>
<th class="sort-column app_proto" column="app_proto" ><spring:message code="app_proto"/></th>
<th class="sort-column addr_type" column="addr_type" ><spring:message code='addr_type'/></th>
<th class="sort-column server_ip" column="server_ip" ><spring:message code="server_ip"/></th>
<th class="sort-column client_ip" column="client_ip" ><spring:message code="client_ip"/></th>
<th class="sort-column server_port" column="server_port" ><spring:message code="server_port"/></th>
<th class="sort-column client_port" column="client_port" ><spring:message code="client_port"/></th>
<th class="sort-column device_id" isVisible="false" column="deviceid" ><spring:message code="deviceid"/></th>
<th class="sort-column link_id" isVisible="false" column="link_id" ><spring:message code="link_id"/></th>
<th class="sort-column encap_type" column="encap_type" ><spring:message code="encap_type"/></th>
<th class="sort-column direction" column="direction" ><spring:message code="direction"/></th>
<%-- <th class="sort-column inner_smac" column="inner_smac" ><spring:message code="inner_smac"/></th>
<th class="sort-column inner_dmac" column="inner_dmac" ><spring:message code="inner_dmac"/></th> --%>
<th class="sort-column stream_dir" column="stream_type" ><spring:message code="stream_type"/></th>
<%-- <th class="sort-column addr_list" column="nest_addr_list" ><spring:message code="nest_addr_list"/></th> --%>
<th class="sort-column server_location" column="server_locate" ><spring:message code='server_locate'/></th>
<th class="sort-column client_location" column="client_locate" ><spring:message code='client_locate'/></th>
<th class="sort-column server_asn" isVisible="false" column="s_asn" ><spring:message code='s_asn'/></th>
<th class="sort-column server_asn" isVisible="false" column="d_asn" ><spring:message code='d_asn'/></th>
<th class="sort-column subscribe_id" isVisible="false" column="s_subscribe_id" ><spring:message code='s_subscribe_id'/></th>
<%-- <th class="sort-column d_subscribe_id" isVisible="false" column="d_subscribe_id" ><spring:message code='d_subscribe_id'/></th> --%>
<%-- <th class="sort-column user_region" isVisible="false" column="user_region" ><spring:message code='user_region'/></th> --%>
<%-- <c:if test="${fns:getUser().isAdmin()}"><th class="sort-column scene_file" column="scene_file" ><spring:message code='scene_file'/></th></c:if> --%>
<c:if test="${fns:getUser().isAdmin()}"></c:if><th class="sort-column req_body" isVisible="false" column="req_body" ><spring:message code='req_body'/></th>
<c:if test="${fns:getUser().isAdmin()}"></c:if><th class="sort-column resp_body" isVisible="false" column="resp_body" ><spring:message code='resp_body'/></th>
<th class="sort-column isp" isVisible="false" column="isp" ><spring:message code='isp'/></th>
<th class="sort-column con_duration_ms" isVisible="false" column="con_duration_ms" ><spring:message code='con_duration_ms'/></th>
<th class="sort-column version" isVisible="false" column="version" ><spring:message code='version'/></th>
<th class="sort-column sni" isVisible="false" column="sni" ><spring:message code='sni'/></th>
<th class="sort-column san" isVisible="false" column="san" ><spring:message code='san'/></th>
<th class="sort-column cn" isVisible="false" column="cn" ><spring:message code='cn'/></th>
<th class="sort-column app_id" isVisible="false" column="social_app" ><spring:message code='social_app'/></th>
<th class="sort-column protocol_id" isVisible="false" column="protocol" ><spring:message code='protocol'/></th>
<th class="sort-column con_latency_ms" isVisible="false" column="con_latency_ms" ><spring:message code='con_latency_ms'/></th>
<th class="sort-column pinningst" isVisible="false" column="pinning" ><spring:message code='pinning'/></th>
<th class="sort-column c2s_pkt_num" isVisible="false" column="c2s_pkt_num" ><spring:message code='c2s_pkt_num'/></th>
<th class="sort-column s2c_pkt_num" isVisible="false" column="s2c_pkt_num" ><spring:message code='s2c_pkt_num'/></th>
<th class="sort-column c2s_byte_num" isVisible="false" column="c2s_byte_num" ><spring:message code='c2s_byte_num'/></th>
<th class="sort-column s2c_byte_num" isVisible="false" column="s2c_byte_num" ><spring:message code='s2c_byte_num'/></th>
<th class="sort-column nas_ip" isVisible="false" column="nas_ip" ><spring:message code='nas_ip'/></th>
<th class="sort-column framed_ip" isVisible="false" column="framed_ip" ><spring:message code='framed_ip'/></th>
<th class="sort-column account" isVisible="false" column="account" ><spring:message code='account'/></th>
<th class="sort-column packet_type" isVisible="false" column="packet_type" ><spring:message code='packet_type'/></th>
</tr>
</thead>
<tbody>
<c:forEach var="log" items="${page.list }" varStatus="status">
<tr>
<td>
<%-- <span id="open${status.index}" class="log-open-cfg" compileId="${log.cfgId }"> ▷ </span><span style="display: none" id="close${status.index}" > ▼ </span>
--%> <a href="javascript:void(0)" name="viewLogInfo" url="${ctx}/proxy/control/httpRedirect/ajaxHttpSubList" compileId="${log.compileId }" ><i class="icon-book-open"></i></a>
</td>
<td>${log.compileId }</td>
<td>
<c:set var="actions">${log.action }</c:set>
<c:forEach items="${fns:getDictList('SERVICE_ACTION')}" var="dict">
<c:if test="${dict.itemCode eq log.action}">
<c:set var="actions">${dict.itemValue}</c:set>
</c:if>
</c:forEach>
<spring:message code="${actions}"/>
</td>
<%-- <td>${log.foundTime }</td> --%>
<td>${log.startTime }</td>
<td>${log.endTime }</td>
<td>${log.recvTime }</td>
<td>
<c:set var="entrances">${log.entranceId }</c:set>
<c:forEach items="${fns:getDictList('ENTRANCE')}" var="dic">
<c:if test="${dic.itemCode eq log.entranceId}">
<c:set var="entrances">${dic.itemValue}</c:set>
</c:if>
</c:forEach>
<spring:message code="${entrances}"/>
</td>
<td>
${log.url}
<%-- <c:if test="${fn:startsWith(log.url, 'http')}">
${log.url}
</c:if>
<c:if test="${!fn:startsWith(log.url, 'http') and !empty log.url}">
http://${log.url}
</c:if> --%>
</td>
<td>${log.host }</td>
<td>${log.domain }</td>
<td>${log.category }</td>
<c:if test="${fns:getUser().isAdmin()}">
<td>${log.reqLine }</td>
<td>${log.resLine }</td>
</c:if>
<td>${log.cookie }</td>
<td>${log.referer }</td>
<td>${log.userAgent }</td>
<td>${log.contentLen }</td>
<td>${log.contentType }</td>
<td>${log.setCookie }</td>
<%-- <td>${log.reqHeader }</td>
<td>${log.respHeader }</td> --%>
<td >${log.capIp}</td>
<td>
<c:set var="transProtos">${log.transProto }</c:set>
<c:forEach items="${fns:getDictList('LOG_PROTOCOL')}" var="dic">
<c:if test="${dic.itemCode eq log.transProto}">
<c:set var="transProtos">${dic.itemValue}</c:set>
</c:if>
</c:forEach>
<spring:message code="${transProtos}"/>
</td>
<td >${log.appProto}</td>
<td>
<c:set var="addrTypes">${log.addrType }</c:set>
<c:forEach items="${fns:getDictList('IP_TYPE')}" var="dic">
<c:if test="${log.addrType==dic.itemCode}">
<c:set var="addrTypes">${dic.itemValue}</c:set>
</c:if>
</c:forEach>
<spring:message code="${addrTypes}"/>
</td>
<td >${log.serverIp}</td>
<td >${log.clientIp}</td>
<td>${log.serverPort }</td>
<td>${log.clientPort }</td>
<td>
<c:set var="deviceIds">${log.deviceId }</c:set>
<c:forEach items="${fns:getDictList('DEVICE')}" var="device">
<c:if test="${device.itemCode eq log.deviceId}">
<c:set var="deviceIds">${device.itemValue}</c:set>
</c:if>
</c:forEach>
<spring:message code="${deviceIds}"/>
</td>
<td>
<c:set var="linkIds">${log.linkId }</c:set>
<c:forEach items="${fns:getDictList('LINK')}" var="link">
<c:if test="${link.itemCode eq log.linkId}">
<c:set var="linkIds">${link.itemValue}</c:set>
</c:if>
</c:forEach>
<spring:message code="${linkIds}"/>
</td>
<td>
<c:set var="encapTypes">${log.encapType }</c:set>
<c:forEach items="${fns:getDictList('ENCAP_TYPE')}" var="encapType">
<c:if test="${encapType.itemCode eq log.encapType}">
<c:set var="encapTypes">${encapType.itemValue}</c:set>
</c:if>
</c:forEach>
<spring:message code="${encapTypes}"/>
</td>
<td>
<c:set var="directions">${log.direction }</c:set>
<c:forEach items="${fns:getDictList('LOG_DIRECTION')}" var="direction">
<c:if test="${direction.itemCode eq log.direction}">
<c:set var="directions">${direction.itemValue}</c:set>
</c:if>
</c:forEach>
<spring:message code="${directions}"/>
</td>
<%-- <td>${log.innerSmac }</td>
<td>${log.innerDmac }</td> --%>
<td>
<c:set var="streamDirs">${log.streamDir }</c:set>
<c:forEach items="${fns:getDictList('LOG_STREAM_TYPE')}" var="streamType">
<c:if test="${streamType.itemCode eq log.streamDir}">
<c:set var="streamDirs">${streamType.itemValue}</c:set>
</c:if>
</c:forEach>
<spring:message code="${streamDirs}"/>
</td>
<%-- <td>${log.addrList }</td> --%>
<td>${log.serverLocation}</td>
<td>${log.clientLocation}</td>
<td>${log.clientAsn}</td>
<td>${log.serverAsn}</td>
<td>${log.subscribeId}</td>
<%-- <td>${log.dSubscribeId}</td> --%>
<%-- <td>${log.userRegion}</td> --%>
<%-- <c:if test="${fns:getUser().isAdmin()}"><td>${log.sceneFile}</td></c:if> --%>
<%-- <td><a href="C:/Users/A.Chen/Pictures/Saved Pictures/F3DEAE35-290A-4C7B-B306-2C7E495AE614.PNG" download="w3logo.jpg">${log.reqBody}</a></td> --%>
<%-- <td><a href="C:/Users/A.Chen/Pictures/Saved Pictures/F3DEAE35-290A-4C7B-B306-2C7E495AE614.PNG" download="w3logo.jpg">${log.respBody}</a></td> --%>
<td>
<c:if test="${fn:startsWith(log.reqBody, 'http')}">
<a href="${log.reqBody}" data-original-title="${log.reqBody}" target="_blank"
class="tooltips" data-flag="false" data-html="true" data-placement="top">
${fn:substring(log.reqBody,0,20) }
</a>
</c:if>
<c:if test="${!fn:startsWith(log.reqBody, 'http') and !empty log.reqBody}">
<a href="http://${log.reqBody}" data-original-title="http://${log.reqBody}" target="_blank"
class="tooltips" data-flag="false" data-html="true" data-placement="top">
http://${fn:substring(log.reqBody,0,20) }
</a>
</c:if>
</td>
<td>
<c:if test="${fn:startsWith(log.respBody, 'http')}">
<a href="${log.respBody}" data-original-title="${log.respBody}" target="_blank"
class="tooltips" data-flag="false" data-html="true" data-placement="top">
${fn:substring(log.respBody,0,20) }
</a>
</c:if>
<c:if test="${!fn:startsWith(log.respBody, 'http') and !empty log.respBody}">
<a href="http://${log.respBody}" data-original-title="http://${log.respBody}" target="_blank"
class="tooltips" data-flag="false" data-html="true" data-placement="top">
http://${fn:substring(log.respBody,0,20) }
</a>
</c:if>
</td>
<td>${log.isp }</td>
<td>${log.conDurationMs }</td>
<td>${log.version }</td>
<td>${log.sni }</td>
<td>${log.san }</td>
<td>${log.cn }</td>
<td>${log.appName }</td>
<td>${log.protocolName }</td>
<td>${log.conLatencyMs }</td>
<td>
<c:set var="pinningsts">${log.pinningst }</c:set>
<c:forEach items="${fns:getDictList('PINNING')}" var="pinningstType">
<c:if test="${pinningstType.itemCode eq log.pinningst}">
<c:set var="pinningsts">${pinningstType.itemValue}</c:set>
</c:if>
</c:forEach>
<spring:message code="${pinningsts}"/>
</td>
<td>${log.c2sPktNum }</td>
<td>${log.s2cPktNum }</td>
<td>${log.c2sByteNum }</td>
<td>${log.s2cByteNum }</td>
<td>${log.nasIp }</td>
<td>${log.framedIp }</td>
<td>${log.account }</td>
<td>
<c:set var="packetTypes">${log.packetType }</c:set>
<c:forEach items="${fns:getDictList('MESSAGE_TYPE')}" var="packetsType">
<c:if test="${packetsType.itemCode eq log.packetType}">
<c:set var="packetTypes">${packetsType.itemValue}</c:set>
</c:if>
</c:forEach>
<spring:message code="${packetTypes}"/>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<div class="page">${page}</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>