HTPP(S)操控日志
This commit is contained in:
659
src/main/java/com/nis/domain/log/PxyHttpManipulationLog.java
Normal file
659
src/main/java/com/nis/domain/log/PxyHttpManipulationLog.java
Normal file
@@ -0,0 +1,659 @@
|
||||
package com.nis.domain.log;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.nis.domain.BaseEntity;
|
||||
import com.nis.util.excel.ExcelField;
|
||||
/**
|
||||
* (日志 代理)HTTP 操控 实体类
|
||||
*
|
||||
*/
|
||||
public class PxyHttpManipulationLog extends BaseEntity<PxyHttpManipulationLog>{
|
||||
private static final long serialVersionUID = -3046458130302949428L;
|
||||
|
||||
@ExcelField(title="found_time",sort=5)
|
||||
protected String foundTime; //发现时间,timestamp
|
||||
@ExcelField(title="recv_time",sort=6)
|
||||
protected String recvTime; //接收时间,timestamp
|
||||
@ExcelField(title="transport_layer_protocol",dictType="LOG_PROTOCOL",sort=30)
|
||||
protected String transProto; //协议类型,从字典LOG_PROTOCOL取值
|
||||
@ExcelField(title="addr_type",dictType="IP_TYPE",sort=35)
|
||||
protected Integer addrType; //ip地址类型,从字典IP_TYPE取值
|
||||
@ExcelField(title="URL",sort=8)
|
||||
private String url;
|
||||
@ExcelField(title="host",sort=8)
|
||||
private String host;//主机地址
|
||||
@ExcelField(title="domain_name",sort=8)
|
||||
private String domain;//域名
|
||||
@ExcelField(title="category",sort=8)
|
||||
private String category;//域名分类
|
||||
@ExcelField(title="req_line",sort=9)
|
||||
private String reqLine;
|
||||
@ExcelField(title="res_line",sort=10)
|
||||
private String resLine;
|
||||
@ExcelField(title="PXY_CACHE_HTTP_COOKIE",sort=11)
|
||||
private String cookie;
|
||||
@ExcelField(title="referer",sort=12)
|
||||
private String referer;
|
||||
@ExcelField(title="user_agent",sort=13)
|
||||
private String userAgent;
|
||||
@ExcelField(title="content_len",sort=14)
|
||||
private String contentLen;
|
||||
@ExcelField(title="content_type",sort=15)
|
||||
private String contentType;
|
||||
@ExcelField(title="set_cookie",sort=16)
|
||||
private String setCookie;
|
||||
@ExcelField(title="req_header",sort=17)
|
||||
private String reqHeader;
|
||||
@ExcelField(title="resp_header",sort=18)
|
||||
private String respHeader;
|
||||
@ExcelField(title="req_body",sort=78)
|
||||
private String reqBody;
|
||||
@ExcelField(title="resp_body",sort=79)
|
||||
private String respBody;
|
||||
// @ExcelField(title="website",sort=8)
|
||||
// private String website;
|
||||
|
||||
private String policyId;//
|
||||
@ExcelField(title="app_proto",sort=31)
|
||||
private String appProto;//应用协议类型
|
||||
@ExcelField(title="startTime",sort=5)
|
||||
private String startTime;//会话创建时间
|
||||
@ExcelField(title="endTime",sort=5)
|
||||
private String endTime;//会话结束时间
|
||||
@Expose
|
||||
@ExcelField(title="server_ip",sort=40)
|
||||
protected String serverIp; //服务端ip地址
|
||||
@Expose
|
||||
@ExcelField(title="client_ip",sort=41)
|
||||
protected String clientIp; //客户端ip地址
|
||||
@Expose
|
||||
@ExcelField(title="server_port",sort=42)
|
||||
protected String serverPort; //服务端ip端口
|
||||
@Expose
|
||||
@ExcelField(title="client_port",sort=43)
|
||||
protected String clientPort; //客户端ip端口
|
||||
@ExcelField(title="entrance_id",dictType="ENTRANCE",sort=7)
|
||||
protected Integer entranceId; //出入口编号
|
||||
@ExcelField(title="deviceid",dictType="DEVICE",sort=50)
|
||||
protected Integer deviceId; //串联设备编号
|
||||
@ExcelField(title="direction",dictType="LOG_DIRECTION",sort=55)
|
||||
protected Integer direction; //传输方向 0:域内->域外,1:域外->域内,从字典LOG_DIRECTION取值
|
||||
@ExcelField(title="stream_type",dictType="LOG_STREAM_TYPE",sort=65)
|
||||
protected Integer streamDir; //流类型 0:c2s;1:s2c;2:double,从字典LOG_STREAMTYPE取值
|
||||
@ExcelField(title="clj_ip",sort=27)
|
||||
protected String capIp; //处理机IP
|
||||
@ExcelField(title="nest_addr_list",sort=66)
|
||||
protected String addrList; //嵌套地址列表
|
||||
@ExcelField(title="server_locate",sort=67)
|
||||
protected String serverLocation;// 服务端地址定位信息
|
||||
@ExcelField(title="client_locate",sort=68)
|
||||
protected String clientLocation;// 客户端地址定位信息
|
||||
@ExcelField(title="s_asn",sort=70)
|
||||
protected String clientAsn;//客户端ASN
|
||||
@ExcelField(title="d_asn",sort=71)
|
||||
protected String serverAsn;//服务端ASN
|
||||
@ExcelField(title="s_subscribe_id",sort=73)
|
||||
protected String subscribeId;//客户端用户名
|
||||
@ExcelField(title="scene_file",sort=77)
|
||||
protected String sceneFile;//现场日志文件地址
|
||||
|
||||
@ExcelField(title="isp",sort=80)
|
||||
protected String isp;//运营商
|
||||
protected Integer service; //配置表的serviceId
|
||||
protected Integer functionId;
|
||||
@ExcelField(title="action",dictType="SERVICE_ACTION",sort=2)
|
||||
protected Integer action;
|
||||
//新增字段
|
||||
@ExcelField(title="encap_type",dictType="ENCAP_TYPE",sort=52)
|
||||
protected Integer encapType;//原始二层封装格式
|
||||
@ExcelField(title="link_id",dictType="LINK",sort=51)
|
||||
protected Integer linkId;//串联设备链路号
|
||||
@ExcelField(title="inner_smac",sort=58)
|
||||
protected String innerSmac;//MAC_IN_MAC的内层源MAC
|
||||
@ExcelField(title="inner_dmac",sort=59)
|
||||
protected String innerDmac;//MAC_IN_MAC的内层目标MAC
|
||||
//自定义字段
|
||||
protected String date;//配置界面日志总量查询时间
|
||||
protected String seltype;//选中类型,页面搜索用
|
||||
protected String searchFoundStartTime;//开始时间,格式为yyyy-mm-dd hh24:mi:ss
|
||||
protected String searchFoundEndTime;//结束时间,格式同上
|
||||
protected String isLogTotalSearch;//由配置界面跳转日志查询标识
|
||||
protected String orderBy;//排序参数
|
||||
|
||||
@ExcelField(title="cfg_id",sort=1)
|
||||
protected Integer compileId;//
|
||||
protected String startRecvTime;//开始时间
|
||||
protected String endRecvTime; //结束时间
|
||||
@ExcelField(title="con_duration_ms",sort=81)
|
||||
protected Integer conDurationMs;//通信时长
|
||||
protected String reqBodyKey;//请求体转储文件KEY
|
||||
protected String resBodyKey;//应答体转储文件KEY
|
||||
@ExcelField(title="version",sort=82)
|
||||
protected String version;//版本
|
||||
@ExcelField(title="sni",sort=83)
|
||||
protected String sni;//
|
||||
@ExcelField(title="san",sort=84)
|
||||
protected String san;
|
||||
@ExcelField(title="cn",sort=85)
|
||||
protected String cn;
|
||||
// @ExcelField(title="social_app",sort=86)
|
||||
protected Integer appId;//app
|
||||
@ExcelField(title="social_app",sort=86)
|
||||
protected String appName;//app
|
||||
// @ExcelField(title="protocol",sort=87)
|
||||
protected Integer protocolId;//协议
|
||||
@ExcelField(title="protocol",sort=87)
|
||||
protected String protocolName;//协议
|
||||
@ExcelField(title="con_latency_ms",sort=88)
|
||||
protected Integer conLatencyMs;//握手延迟
|
||||
@ExcelField(title="pinning",dictType="PINNING",sort=89)
|
||||
protected Integer pinningst;//pinning状态
|
||||
@ExcelField(title="c2s_pkt_num",sort=90)
|
||||
protected Integer c2sPktNum;//c2s包数
|
||||
@ExcelField(title="s2c_pkt_num",sort=91)
|
||||
protected Integer s2cPktNum;//s2c包数
|
||||
@ExcelField(title="c2s_byte_num",sort=92)
|
||||
protected Integer c2sByteNum;//c2s字节数
|
||||
@ExcelField(title="s2c_byte_num",sort=93)
|
||||
protected Integer s2cByteNum;//s2c字节数
|
||||
@ExcelField(title="nas_ip",sort=94)
|
||||
protected String nasIp;//ISN接入的IP
|
||||
@ExcelField(title="framed_ip",sort=95)
|
||||
protected String framedIp;//用户IP地址
|
||||
@ExcelField(title="account",sort=96)
|
||||
protected String account;//用户名
|
||||
@ExcelField(title="packet_type",dictType="MESSAGE_TYPE",sort=97)
|
||||
protected Integer packetType;//报文类型
|
||||
|
||||
protected String dIp;
|
||||
protected String sIp;
|
||||
public String getProtocolName() {
|
||||
return protocolName;
|
||||
}
|
||||
public void setProtocolName(String protocolName) {
|
||||
this.protocolName = protocolName;
|
||||
}
|
||||
public String getAppName() {
|
||||
return appName;
|
||||
}
|
||||
public void setAppName(String appName) {
|
||||
this.appName = appName;
|
||||
}
|
||||
public String getdIp() {
|
||||
return dIp;
|
||||
}
|
||||
public void setdIp(String dIp) {
|
||||
this.dIp = dIp;
|
||||
}
|
||||
public String getsIp() {
|
||||
return sIp;
|
||||
}
|
||||
public void setsIp(String sIp) {
|
||||
this.sIp = sIp;
|
||||
}
|
||||
public String getAppProto() {
|
||||
return appProto;
|
||||
}
|
||||
public void setAppProto(String appProto) {
|
||||
this.appProto = appProto;
|
||||
}
|
||||
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 getRespBody() {
|
||||
return respBody;
|
||||
}
|
||||
public void setRespBody(String respBody) {
|
||||
this.respBody = respBody;
|
||||
}
|
||||
// public String getWebsite() {
|
||||
// return website;
|
||||
// }
|
||||
// public void setWebsite(String website) {
|
||||
// this.website = website;
|
||||
// }
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
public String getDomain() {
|
||||
return domain;
|
||||
}
|
||||
public void setDomain(String domain) {
|
||||
this.domain = domain;
|
||||
}
|
||||
public String getCategory() {
|
||||
return category;
|
||||
}
|
||||
public void setCategory(String category) {
|
||||
this.category = category;
|
||||
}
|
||||
public String getIsp() {
|
||||
return isp;
|
||||
}
|
||||
public void setIsp(String isp) {
|
||||
this.isp = isp;
|
||||
}
|
||||
public String getPolicyId() {
|
||||
return policyId;
|
||||
}
|
||||
public void setPolicyId(String policyId) {
|
||||
this.policyId = policyId;
|
||||
}
|
||||
public String getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
public void setStartTime(String startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
public String getEndTime() {
|
||||
return endTime;
|
||||
}
|
||||
public void setEndTime(String endTime) {
|
||||
this.endTime = endTime;
|
||||
}
|
||||
public String getServerIp() {
|
||||
return serverIp;
|
||||
}
|
||||
public void setServerIp(String serverIp) {
|
||||
this.serverIp = serverIp;
|
||||
}
|
||||
public String getClientIp() {
|
||||
return clientIp;
|
||||
}
|
||||
public void setClientIp(String clientIp) {
|
||||
this.clientIp = clientIp;
|
||||
}
|
||||
public String getServerPort() {
|
||||
return serverPort;
|
||||
}
|
||||
public void setServerPort(String serverPort) {
|
||||
this.serverPort = serverPort;
|
||||
}
|
||||
public String getClientPort() {
|
||||
return clientPort;
|
||||
}
|
||||
public void setClientPort(String clientPort) {
|
||||
this.clientPort = clientPort;
|
||||
}
|
||||
public String getServerLocation() {
|
||||
return serverLocation;
|
||||
}
|
||||
public void setServerLocation(String serverLocation) {
|
||||
this.serverLocation = serverLocation;
|
||||
}
|
||||
public String getClientLocation() {
|
||||
return clientLocation;
|
||||
}
|
||||
public void setClientLocation(String clientLocation) {
|
||||
this.clientLocation = clientLocation;
|
||||
}
|
||||
public String getClientAsn() {
|
||||
return clientAsn;
|
||||
}
|
||||
public void setClientAsn(String clientAsn) {
|
||||
this.clientAsn = clientAsn;
|
||||
}
|
||||
public String getServerAsn() {
|
||||
return serverAsn;
|
||||
}
|
||||
public void setServerAsn(String serverAsn) {
|
||||
this.serverAsn = serverAsn;
|
||||
}
|
||||
public String getSubscribeId() {
|
||||
return subscribeId;
|
||||
}
|
||||
public void setSubscribeId(String subscribeId) {
|
||||
this.subscribeId = subscribeId;
|
||||
}
|
||||
public Integer getConDurationMs() {
|
||||
return conDurationMs;
|
||||
}
|
||||
public void setConDurationMs(Integer conDurationMs) {
|
||||
this.conDurationMs = conDurationMs;
|
||||
}
|
||||
public String getReqBodyKey() {
|
||||
return reqBodyKey;
|
||||
}
|
||||
public void setReqBodyKey(String reqBodyKey) {
|
||||
this.reqBodyKey = reqBodyKey;
|
||||
}
|
||||
public String getResBodyKey() {
|
||||
return resBodyKey;
|
||||
}
|
||||
public void setResBodyKey(String resBodyKey) {
|
||||
this.resBodyKey = resBodyKey;
|
||||
}
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
public void setVersion(String version) {
|
||||
this.version = version;
|
||||
}
|
||||
public String getSni() {
|
||||
return sni;
|
||||
}
|
||||
public void setSni(String sni) {
|
||||
this.sni = sni;
|
||||
}
|
||||
public String getSan() {
|
||||
return san;
|
||||
}
|
||||
public void setSan(String san) {
|
||||
this.san = san;
|
||||
}
|
||||
public String getCn() {
|
||||
return cn;
|
||||
}
|
||||
public void setCn(String cn) {
|
||||
this.cn = cn;
|
||||
}
|
||||
public Integer getAppId() {
|
||||
return appId;
|
||||
}
|
||||
public void setAppId(Integer appId) {
|
||||
this.appId = appId;
|
||||
}
|
||||
public Integer getProtocolId() {
|
||||
return protocolId;
|
||||
}
|
||||
public void setProtocolId(Integer protocolId) {
|
||||
this.protocolId = protocolId;
|
||||
}
|
||||
public Integer getConLatencyMs() {
|
||||
return conLatencyMs;
|
||||
}
|
||||
public void setConLatencyMs(Integer conLatencyMs) {
|
||||
this.conLatencyMs = conLatencyMs;
|
||||
}
|
||||
public Integer getPinningst() {
|
||||
return pinningst;
|
||||
}
|
||||
public void setPinningst(Integer pinningst) {
|
||||
this.pinningst = pinningst;
|
||||
}
|
||||
public Integer getC2sPktNum() {
|
||||
return c2sPktNum;
|
||||
}
|
||||
public void setC2sPktNum(Integer c2sPktNum) {
|
||||
this.c2sPktNum = c2sPktNum;
|
||||
}
|
||||
public Integer getS2cPktNum() {
|
||||
return s2cPktNum;
|
||||
}
|
||||
public void setS2cPktNum(Integer s2cPktNum) {
|
||||
this.s2cPktNum = s2cPktNum;
|
||||
}
|
||||
public Integer getC2sByteNum() {
|
||||
return c2sByteNum;
|
||||
}
|
||||
public void setC2sByteNum(Integer c2sByteNum) {
|
||||
this.c2sByteNum = c2sByteNum;
|
||||
}
|
||||
public Integer getS2cByteNum() {
|
||||
return s2cByteNum;
|
||||
}
|
||||
public void setS2cByteNum(Integer s2cByteNum) {
|
||||
this.s2cByteNum = s2cByteNum;
|
||||
}
|
||||
public String getNasIp() {
|
||||
return nasIp;
|
||||
}
|
||||
public void setNasIp(String nasIp) {
|
||||
this.nasIp = nasIp;
|
||||
}
|
||||
public String getFramedIp() {
|
||||
return framedIp;
|
||||
}
|
||||
public void setFramedIp(String framedIp) {
|
||||
this.framedIp = framedIp;
|
||||
}
|
||||
public String getAccount() {
|
||||
return account;
|
||||
}
|
||||
public void setAccount(String account) {
|
||||
this.account = account;
|
||||
}
|
||||
public Integer getPacketType() {
|
||||
return packetType;
|
||||
}
|
||||
public void setPacketType(Integer packetType) {
|
||||
this.packetType = packetType;
|
||||
}
|
||||
public Integer getCompileId() {
|
||||
return compileId;
|
||||
}
|
||||
public void setCompileId(Integer compileId) {
|
||||
this.compileId = compileId;
|
||||
}
|
||||
public String getStartRecvTime() {
|
||||
return startRecvTime;
|
||||
}
|
||||
public void setStartRecvTime(String startRecvTime) {
|
||||
this.startRecvTime = startRecvTime;
|
||||
}
|
||||
public String getEndRecvTime() {
|
||||
return endRecvTime;
|
||||
}
|
||||
public void setEndRecvTime(String endRecvTime) {
|
||||
this.endRecvTime = endRecvTime;
|
||||
}
|
||||
public String getFoundTime() {
|
||||
return foundTime;
|
||||
}
|
||||
public void setFoundTime(String foundTime) {
|
||||
this.foundTime = foundTime;
|
||||
}
|
||||
public String getRecvTime() {
|
||||
return recvTime;
|
||||
}
|
||||
public void setRecvTime(String recvTime) {
|
||||
this.recvTime = recvTime;
|
||||
}
|
||||
public String getTransProto() {
|
||||
return transProto;
|
||||
}
|
||||
public void setTransProto(String transProto) {
|
||||
this.transProto = transProto;
|
||||
}
|
||||
public Integer getAddrType() {
|
||||
return addrType;
|
||||
}
|
||||
public void setAddrType(Integer addrType) {
|
||||
this.addrType = addrType;
|
||||
}
|
||||
public Integer getEntranceId() {
|
||||
return entranceId;
|
||||
}
|
||||
public void setEntranceId(Integer entranceId) {
|
||||
this.entranceId = entranceId;
|
||||
}
|
||||
public Integer getDeviceId() {
|
||||
return deviceId;
|
||||
}
|
||||
public void setDeviceId(Integer deviceId) {
|
||||
this.deviceId = deviceId;
|
||||
}
|
||||
public Integer getDirection() {
|
||||
return direction;
|
||||
}
|
||||
public void setDirection(Integer direction) {
|
||||
this.direction = direction;
|
||||
}
|
||||
public Integer getStreamDir() {
|
||||
return streamDir;
|
||||
}
|
||||
public void setStreamDir(Integer streamDir) {
|
||||
this.streamDir = streamDir;
|
||||
}
|
||||
public String getCapIp() {
|
||||
return capIp;
|
||||
}
|
||||
public void setCapIp(String capIp) {
|
||||
this.capIp = capIp;
|
||||
}
|
||||
public String getAddrList() {
|
||||
return addrList;
|
||||
}
|
||||
public void setAddrList(String addrList) {
|
||||
this.addrList = addrList;
|
||||
}
|
||||
public String getSceneFile() {
|
||||
return sceneFile;
|
||||
}
|
||||
public void setSceneFile(String sceneFile) {
|
||||
this.sceneFile = sceneFile;
|
||||
}
|
||||
public Integer getService() {
|
||||
return service;
|
||||
}
|
||||
public void setService(Integer service) {
|
||||
this.service = service;
|
||||
}
|
||||
public Integer getFunctionId() {
|
||||
return functionId;
|
||||
}
|
||||
public void setFunctionId(Integer functionId) {
|
||||
this.functionId = functionId;
|
||||
}
|
||||
public Integer getAction() {
|
||||
return action;
|
||||
}
|
||||
public void setAction(Integer action) {
|
||||
this.action = action;
|
||||
}
|
||||
public Integer getEncapType() {
|
||||
return encapType;
|
||||
}
|
||||
public void setEncapType(Integer encapType) {
|
||||
this.encapType = encapType;
|
||||
}
|
||||
public Integer getLinkId() {
|
||||
return linkId;
|
||||
}
|
||||
public void setLinkId(Integer linkId) {
|
||||
this.linkId = linkId;
|
||||
}
|
||||
public String getInnerSmac() {
|
||||
return innerSmac;
|
||||
}
|
||||
public void setInnerSmac(String innerSmac) {
|
||||
this.innerSmac = innerSmac;
|
||||
}
|
||||
public String getInnerDmac() {
|
||||
return innerDmac;
|
||||
}
|
||||
public void setInnerDmac(String innerDmac) {
|
||||
this.innerDmac = innerDmac;
|
||||
}
|
||||
public String getDate() {
|
||||
return date;
|
||||
}
|
||||
public void setDate(String date) {
|
||||
this.date = date;
|
||||
}
|
||||
public String getSeltype() {
|
||||
return seltype;
|
||||
}
|
||||
public void setSeltype(String seltype) {
|
||||
this.seltype = seltype;
|
||||
}
|
||||
public String getSearchFoundStartTime() {
|
||||
return searchFoundStartTime;
|
||||
}
|
||||
public void setSearchFoundStartTime(String searchFoundStartTime) {
|
||||
this.searchFoundStartTime = searchFoundStartTime;
|
||||
}
|
||||
public String getSearchFoundEndTime() {
|
||||
return searchFoundEndTime;
|
||||
}
|
||||
public void setSearchFoundEndTime(String searchFoundEndTime) {
|
||||
this.searchFoundEndTime = searchFoundEndTime;
|
||||
}
|
||||
public String getIsLogTotalSearch() {
|
||||
return isLogTotalSearch;
|
||||
}
|
||||
public void setIsLogTotalSearch(String isLogTotalSearch) {
|
||||
this.isLogTotalSearch = isLogTotalSearch;
|
||||
}
|
||||
public String getOrderBy() {
|
||||
return orderBy;
|
||||
}
|
||||
public void setOrderBy(String orderBy) {
|
||||
this.orderBy = orderBy;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -831,6 +831,10 @@ public final class Constants {
|
||||
* 查询的是流量统计菜单-配置统计中SubscriberID统计的数据接口
|
||||
*/
|
||||
public static final String TRAFFIC_SUBSCRIBER_ID_STATISTIC_NEW=Configurations.getStringProperty("trafficSubscriberIDStatisticNew","trafficSubscriberIDStatisticNew");
|
||||
/**
|
||||
* HTTP(S)操控日志接口
|
||||
*/
|
||||
public static final String POLICY_EVENT=Configurations.getStringProperty("policyevent","policyevent");
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,335 @@
|
||||
package com.nis.web.controller.log.pxy;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.commons.lang.StringEscapeUtils;
|
||||
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.mvc.support.RedirectAttributes;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.nis.domain.FunctionServiceDict;
|
||||
import com.nis.domain.Page;
|
||||
import com.nis.domain.PageLog;
|
||||
import com.nis.domain.SysDataDictionaryItem;
|
||||
import com.nis.domain.SysUser;
|
||||
import com.nis.domain.configuration.AppIpCfg;
|
||||
import com.nis.domain.log.BaseLogEntity;
|
||||
import com.nis.domain.log.PxyHttpLog;
|
||||
import com.nis.domain.log.PxyHttpManipulationLog;
|
||||
import com.nis.domain.maat.LogRecvData;
|
||||
import com.nis.domain.specific.SpecificServiceCfg;
|
||||
import com.nis.util.CodeDicUtils;
|
||||
import com.nis.util.Constants;
|
||||
import com.nis.util.DateUtils;
|
||||
import com.nis.util.DictUtils;
|
||||
import com.nis.util.LogUtils;
|
||||
import com.nis.util.StringUtil;
|
||||
import com.nis.util.httpclient.HttpClientUtil;
|
||||
import com.nis.web.controller.BaseController;
|
||||
import com.nis.web.dao.dashboard.codedic.CodeResult;
|
||||
import com.nis.web.security.UserUtils;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("${adminPath}/log/pxy")
|
||||
public class PxyHttpManipulLogController extends BaseController{
|
||||
|
||||
@RequestMapping(value = "/httpManipulList")
|
||||
public String list(@ModelAttribute("log") PxyHttpManipulationLog log, Model model, HttpServletRequest request,
|
||||
HttpServletResponse response) {
|
||||
try {
|
||||
|
||||
PageLog<PxyHttpManipulationLog> page = new PageLog<PxyHttpManipulationLog>(request, response);
|
||||
Map<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("pageSize", page.getPageSize());
|
||||
params.put("pageNo", page.getPageNo());
|
||||
if (StringUtils.isNotBlank(log.getDomain())) {
|
||||
String domain = StringEscapeUtils.unescapeHtml(log.getDomain());
|
||||
params.put("searchDomain", domain);
|
||||
}
|
||||
if (StringUtils.isNotBlank(log.getUrl())) {
|
||||
String httpurl = StringEscapeUtils.unescapeHtml(log.getUrl());
|
||||
params.put("searchUrl", httpurl);
|
||||
}
|
||||
if (StringUtils.isNotBlank(log.getsIp())) {
|
||||
log.setClientIp(log.getsIp());
|
||||
}
|
||||
if (StringUtils.isNotBlank(log.getdIp())) {
|
||||
log.setServerIp(log.getdIp());
|
||||
}
|
||||
initLogSearchValues(log, params);
|
||||
|
||||
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId());
|
||||
model.addAttribute("serviceList", serviceList);
|
||||
String url = Constants.LOG_BASE_URL + Constants.POLICY_EVENT;
|
||||
String recv = HttpClientUtil.getMsg(url, params, request);
|
||||
|
||||
Gson gson = new GsonBuilder().create();
|
||||
|
||||
LogRecvData<PxyHttpManipulationLog> fromJson = gson.fromJson(recv, new TypeToken<LogRecvData<PxyHttpManipulationLog>>() {
|
||||
}.getType());
|
||||
if (fromJson.getStatus().intValue() == 200) {
|
||||
Page<PxyHttpManipulationLog> data = fromJson.getData();
|
||||
page.setCount(data.getCount());
|
||||
page.setLast(data.getLast());
|
||||
page.setList(data.getList());
|
||||
List<PxyHttpManipulationLog> list = page.getList();
|
||||
List<CodeResult> protocolCodeList = CodeDicUtils.getCodeList("protocolCode");
|
||||
List<CodeResult> appCodeList = CodeDicUtils.getCodeList("appCode");
|
||||
for (PxyHttpManipulationLog l : list) {
|
||||
l.setFunctionId(log.getFunctionId());
|
||||
// setLogAction(l, serviceList);
|
||||
l.setStartTime(timeStamp2Date(l.getStartTime(),null));
|
||||
l.setEndTime(timeStamp2Date(l.getEndTime(),null));
|
||||
l.setRecvTime(timeStamp2Date(l.getRecvTime(),null));
|
||||
for (CodeResult code : appCodeList) {
|
||||
Integer value3 = Integer.valueOf(code.getCode());
|
||||
if(l.getAppId().equals(value3)){
|
||||
l.setAppName(code.getItem());
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (CodeResult code : protocolCodeList) {
|
||||
Integer value3 = Integer.valueOf(code.getCode());
|
||||
if(l.getProtocolId().equals(value3)){
|
||||
l.setProtocolName(code.getItem());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
model.addAttribute("page", page);
|
||||
} catch (Exception e) {
|
||||
logger.error("查询失败", e);
|
||||
addMessageLog(model, e.getMessage());
|
||||
LogUtils.saveLog(request, null, e, null);
|
||||
}
|
||||
|
||||
return "/log/pxy/pxyHttpManipulationList";
|
||||
}
|
||||
|
||||
// 导出
|
||||
@RequestMapping(value = "exportPxyHttpManipul")
|
||||
public void exportPxy(@ModelAttribute("log") PxyHttpManipulationLog log, Model model, String hColumns, String type,
|
||||
HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
|
||||
try {
|
||||
List<String> titleList = new ArrayList<String>();
|
||||
Map<String, Class<?>> classMap = new HashMap<String, Class<?>>();
|
||||
Map<String, List> dataMap = new HashMap<String, List>();
|
||||
Map<String, String> noExportMap = new HashMap<String, String>();
|
||||
// ---------------------------
|
||||
PageLog<PxyHttpManipulationLog> page = new PageLog<PxyHttpManipulationLog>(request, response);
|
||||
page.setPageNo(1);
|
||||
page.setPageSize(Constants.MAX_LOG_EXPORT_SIZE);
|
||||
Map<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("pageSize", page.getPageSize());
|
||||
params.put("pageNo", page.getPageNo());
|
||||
if (StringUtils.isNotBlank(log.getsIp())) {
|
||||
log.setClientIp(log.getsIp());
|
||||
}
|
||||
if (StringUtils.isNotBlank(log.getdIp())) {
|
||||
log.setServerIp(log.getdIp());
|
||||
}
|
||||
initLogSearchValues(log, params);
|
||||
if (StringUtils.isNotBlank(log.getUrl())) {
|
||||
String httpurl = StringEscapeUtils.unescapeHtml(log.getUrl());
|
||||
params.put("searchUrl", httpurl);
|
||||
}
|
||||
if (StringUtils.isNotBlank(log.getDomain())) {
|
||||
String domain = StringEscapeUtils.unescapeHtml(log.getDomain());
|
||||
params.put("searchDomain", domain);
|
||||
}
|
||||
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId());
|
||||
System.out.print(log.getFunctionId());
|
||||
model.addAttribute("serviceList", serviceList);
|
||||
|
||||
|
||||
String url = Constants.LOG_BASE_URL + Constants.POLICY_EVENT;
|
||||
String recv = HttpClientUtil.getMsg(url, params, request);
|
||||
List<PxyHttpManipulationLog> list = new ArrayList<PxyHttpManipulationLog>();
|
||||
if (StringUtils.isNotBlank(recv)) {
|
||||
Gson gson = new GsonBuilder().create();
|
||||
LogRecvData<PxyHttpManipulationLog> fromJson = gson.fromJson(recv, new TypeToken<LogRecvData<PxyHttpManipulationLog>>() {
|
||||
}.getType());
|
||||
if (fromJson.getStatus().intValue() == 200) {
|
||||
Page<PxyHttpManipulationLog> data = fromJson.getData();
|
||||
list = data.getList();
|
||||
}
|
||||
}
|
||||
List<CodeResult> protocolCodeList = CodeDicUtils.getCodeList("protocolCode");
|
||||
List<CodeResult> appCodeList = CodeDicUtils.getCodeList("appCode");
|
||||
for (PxyHttpManipulationLog l : list) {
|
||||
l.setFunctionId(log.getFunctionId());
|
||||
l.setStartTime(timeStamp2Date(l.getStartTime(),null));
|
||||
l.setEndTime(timeStamp2Date(l.getEndTime(),null));
|
||||
l.setRecvTime(timeStamp2Date(l.getRecvTime(),null));
|
||||
for (CodeResult code : appCodeList) {
|
||||
Integer value3 = Integer.valueOf(code.getCode());
|
||||
if(l.getAppId().equals(value3)){
|
||||
l.setAppName(code.getItem());
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (CodeResult code : protocolCodeList) {
|
||||
Integer value3 = Integer.valueOf(code.getCode());
|
||||
if(l.getProtocolId().equals(value3)){
|
||||
l.setProtocolName(code.getItem());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
titleList.add("http_manipulation");
|
||||
classMap.put("http_manipulation", PxyHttpManipulationLog.class);
|
||||
SysUser user = UserUtils.getUser();
|
||||
if (!user.isAdmin()) {
|
||||
hColumns += ",scene_file,";
|
||||
} else {
|
||||
hColumns += ",";
|
||||
}
|
||||
String cfgIndexInfoNoExport = ",req_header,resp_header,inner_smac,inner_dmac,nest_addr_list,scene_file,"
|
||||
+ ",found_time,"
|
||||
+ hColumns;
|
||||
noExportMap.put("http_manipulation", cfgIndexInfoNoExport);
|
||||
dataMap.put("http_manipulation", list);
|
||||
String timeRange= initLogMaps(log,"http_manipulation");
|
||||
noExportMap.put("timeRange", timeRange);
|
||||
if ("csv".equals(type)) {
|
||||
this._exportCsv(model, request, response, redirectAttributes, "http_manipulation", titleList, classMap,
|
||||
dataMap, noExportMap);
|
||||
} else {
|
||||
this._export(model, request, response, redirectAttributes, "http_manipulation", titleList, classMap, dataMap,
|
||||
noExportMap);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("Http Manipulation export failed", e);
|
||||
addMessage(redirectAttributes, "error", "export_failed");
|
||||
LogUtils.saveLog(request, null, e, null);
|
||||
}
|
||||
}
|
||||
public void initLogSearchValues(PxyHttpManipulationLog entry, Map<String, Object> params) {
|
||||
|
||||
if (StringUtils.isNotBlank(entry.getSearchFoundStartTime())
|
||||
&& StringUtils.isNotBlank(entry.getSearchFoundEndTime())) {
|
||||
params.put("searchStartRecvTime", date2TimeStamp(entry.getSearchFoundStartTime(),"yyyy-MM-dd HH:mm:ss"));
|
||||
params.put("searchEndRecvTime", date2TimeStamp(entry.getSearchFoundEndTime(),"yyyy-MM-dd HH:mm:ss"));
|
||||
} else {
|
||||
// 判断是否是从配置界面过来的日志查询
|
||||
if (StringUtils.isNotBlank(entry.getIsLogTotalSearch())) {
|
||||
Calendar time = Calendar.getInstance();
|
||||
String searchEndTime = DateUtils.formatDateTime(time.getTime());
|
||||
time.add(Calendar.MINUTE, -(Constants.LOG_TIME_RANGE/1000/60));
|
||||
String searchStartTime = DateUtils.formatDateTime(time.getTime());
|
||||
|
||||
params.put("searchStartRecvTime", searchStartTime);
|
||||
params.put("searchEndRecvTime", searchEndTime);
|
||||
entry.setSearchFoundStartTime(searchStartTime);
|
||||
entry.setSearchFoundEndTime(searchEndTime);
|
||||
} else {
|
||||
// 设置默认查询当前时间及前五分钟
|
||||
String endTime = DateUtils.getDateTime();
|
||||
Date dateStart = new Date(new Date().getTime() - Constants.LOG_TIME_INTERVAL);
|
||||
String startTime = DateUtils.formatDateTime(dateStart);
|
||||
params.put("searchStartRecvTime", String.valueOf(dateStart.getTime()/1000));
|
||||
params.put("searchEndRecvTime", date2TimeStamp(endTime,"yyyy-MM-dd HH:mm:ss"));
|
||||
entry.setSearchFoundStartTime(startTime);
|
||||
entry.setSearchFoundEndTime(endTime);
|
||||
}
|
||||
logger.info("searchStartRecvTime:" + params.get("searchStartRecvTime"));
|
||||
logger.info("searchEndRecvTime:" + params.get("searchEndRecvTime"));
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(entry.getTransProto())) {
|
||||
params.put("searchTransProto", entry.getTransProto());
|
||||
}
|
||||
if (entry.getService() != null) {
|
||||
params.put("searchService", entry.getService());
|
||||
} else if (entry.getAction() != null) {
|
||||
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(entry.getFunctionId());
|
||||
for (FunctionServiceDict dict : serviceList) {
|
||||
if (dict.getAction().intValue() == entry.getAction().intValue()
|
||||
&& dict.getFunctionId().intValue() == entry.getFunctionId().intValue()) {
|
||||
entry.setService(dict.getServiceId());
|
||||
params.put("searchService", dict.getServiceId());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (StringUtils.isNotBlank(entry.getServerIp())) {
|
||||
params.put("searchServerIp", entry.getServerIp());
|
||||
}
|
||||
if (StringUtils.isNotBlank(entry.getClientIp())) {
|
||||
params.put("searchClientIp", entry.getClientIp());
|
||||
}
|
||||
if (StringUtils.isNotBlank(entry.getCapIp())) {
|
||||
params.put("searchCapIp", entry.getCapIp());
|
||||
}
|
||||
if (entry.getDirection() != null) {
|
||||
params.put("searchDirection", entry.getDirection());
|
||||
}
|
||||
if (entry.getEntranceId() != null) {
|
||||
params.put("searchEntranceId", entry.getEntranceId());
|
||||
}
|
||||
if (entry.getCompileId() != null) {
|
||||
params.put("searchCompileId", entry.getCompileId());
|
||||
}
|
||||
if (StringUtils.isNotBlank(entry.getOrderBy())) {
|
||||
params.put("orderBy", entry.getOrderBy());
|
||||
}
|
||||
}
|
||||
|
||||
public String initLogMaps(PxyHttpManipulationLog log,String title){
|
||||
Properties msgProp = getMsgProp();
|
||||
String logTime=msgProp.getProperty(title,title);;
|
||||
if(log.getSearchFoundStartTime()!=null){
|
||||
logTime+=" "+msgProp.getProperty("begin_date")+":"+log.getSearchFoundStartTime();
|
||||
}
|
||||
if(log.getSearchFoundEndTime()!=null){
|
||||
logTime+=" "+msgProp.getProperty("end_date")+":"+log.getSearchFoundEndTime();
|
||||
}
|
||||
return logTime;
|
||||
}
|
||||
/**
|
||||
* 日期格式字符串转换成时间戳
|
||||
* @param date 字符串日期
|
||||
* @param format 如:yyyy-MM-dd HH:mm:ss
|
||||
* @return
|
||||
*/
|
||||
public static String date2TimeStamp(String date_str,String format){
|
||||
try {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat(format);
|
||||
return String.valueOf(sdf.parse(date_str).getTime()/1000);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
/**
|
||||
* 时间戳转换成日期格式字符串
|
||||
* @param seconds 精确到秒的字符串
|
||||
* @param formatStr
|
||||
* @return
|
||||
*/
|
||||
public static String timeStamp2Date(String seconds,String format) {
|
||||
if(seconds == null || seconds.isEmpty() || seconds.equals("null")){
|
||||
return "";
|
||||
}
|
||||
if(format == null || format.isEmpty()) format = "yyyy-MM-dd HH:mm:ss";
|
||||
SimpleDateFormat sdf = new SimpleDateFormat(format);
|
||||
return sdf.format(new Date(Long.valueOf(seconds+"000")));
|
||||
}
|
||||
}
|
||||
@@ -538,4 +538,6 @@ trafficSourceIPStatisticNew=v2/trafficSourceIPStatistic
|
||||
#\u67e5\u8be2\u6d41\u91cf\u7edf\u8ba1\u83dc\u5355-\u7edf\u8ba1\u4e2dServerIP\u7edf\u8ba1\u7684\u6570\u636e\u63a5\u53e3
|
||||
trafficDestIPStatisticNew=v2/trafficDestIPStatistic
|
||||
#\u67e5\u8be2\u6d41\u91cf\u7edf\u8ba1\u83dc\u5355-\u7edf\u8ba1\u4e2dSubscriberID\u7edf\u8ba1\u7684\u6570\u636e\u63a5\u53e3
|
||||
trafficSubscriberIDStatisticNew=v2/trafficSubscriberIDStatistic
|
||||
trafficSubscriberIDStatisticNew=v2/trafficSubscriberIDStatistic
|
||||
#HTTP(S)\u64cd\u63a7\u65e5\u5fd7\u63a5\u53e3
|
||||
policyevent=v1/policyevent
|
||||
8
src/main/resources/sql/20190531/add_dict.sql
Normal file
8
src/main/resources/sql/20190531/add_dict.sql
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
#添加HTTP(s)操控日志 pinningst字段的字典内容
|
||||
INSERT INTO `sys_data_dictionary_name` ( `module_name`, `mark`, `remark`, `revision`, `create_time`, `modify_time`, `status`) VALUES ( 'HTTP(S)操控日志', 'PINNING', 'pinning状态', 'user:ceiec,2019-05-31 10:02:51edit', '2019-05-31 10:02:13', '2019-05-31 10:02:51', '1');
|
||||
#sys_data_dictionary_item 表中的dictionary_id 为 sys_data_dictionary_name 表生成的主键ID的值
|
||||
INSERT INTO `sys_data_dictionary_item` ( `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('4143', '0', 'not pinning', '', '1', '1', '1', '161');
|
||||
INSERT INTO `sys_data_dictionary_item` ( `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('4144', '1', 'pinning', '', '2', '1', '1', '161');
|
||||
INSERT INTO `sys_data_dictionary_item` ( `item_code`, `item_value`, `item_desc`, `item_sort`, `status`, `type`, `dictionary_id`) VALUES ('4145', '2', 'maybe pinning', '', '3', '1', '1', '161');
|
||||
|
||||
410
src/main/webapp/WEB-INF/views/dashboard/configStatisticList.jsp
Normal file
410
src/main/webapp/WEB-INF/views/dashboard/configStatisticList.jsp
Normal 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>
|
||||
@@ -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 </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>
|
||||
Reference in New Issue
Block a user