http block菜单修改 改为查询操控日志
This commit is contained in:
@@ -155,9 +155,9 @@ public class PxyHttpManipulationLog extends BaseEntity<PxyHttpManipulationLog>{
|
|||||||
protected Integer sslServerSideLatency;//服务器侧ssl建立延迟
|
protected Integer sslServerSideLatency;//服务器侧ssl建立延迟
|
||||||
@ExcelField(title="ssl_client_side_latency",sort=92)
|
@ExcelField(title="ssl_client_side_latency",sort=92)
|
||||||
protected Integer sslClientSideLatency;//客户端侧ssl建立延迟
|
protected Integer sslClientSideLatency;//客户端侧ssl建立延迟
|
||||||
@ExcelField(title="ssl_server_side_version",sort=93)
|
@ExcelField(title="ssl_server_side_version",dictType="SSL_VERSION",sort=93)
|
||||||
protected String sslServerSideVersion;//服务端侧ssl版本
|
protected String sslServerSideVersion;//服务端侧ssl版本
|
||||||
@ExcelField(title="ssl_client_side_version",sort=94)
|
@ExcelField(title="ssl_client_side_version",dictType="SSL_VERSION",sort=94)
|
||||||
protected String sslClientSideVersion;//客户端侧ssl版本
|
protected String sslClientSideVersion;//客户端侧ssl版本
|
||||||
@ExcelField(title="ssl_cert_verify",dictType="SSL_CERT_VERIFY",sort=95)
|
@ExcelField(title="ssl_cert_verify",dictType="SSL_CERT_VERIFY",sort=95)
|
||||||
protected Integer sslCertVerify;//证书校验结果
|
protected Integer sslCertVerify;//证书校验结果
|
||||||
|
|||||||
@@ -2708,6 +2708,11 @@ public class ExportExcel {
|
|||||||
dict="action_manipulate";
|
dict="action_manipulate";
|
||||||
val = msgProp.getProperty(dict,dict);
|
val = msgProp.getProperty(dict,dict);
|
||||||
}
|
}
|
||||||
|
if(ef.title().equals("action")
|
||||||
|
&& dict.equals("action_redirect")) {
|
||||||
|
dict="action_manipulate";
|
||||||
|
val = msgProp.getProperty(dict,dict);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,385 @@
|
|||||||
|
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 PxyHttpBlockLogController extends BaseController{
|
||||||
|
|
||||||
|
@RequestMapping(value = "/httpBlockList")
|
||||||
|
public String list(@ModelAttribute("log") PxyHttpManipulationLog log, Model model, HttpServletRequest request,
|
||||||
|
HttpServletResponse response,Integer searchAction) {
|
||||||
|
try {
|
||||||
|
List<CodeResult> protocolCodeList = CodeDicUtils.getCodeList("protocolCode");
|
||||||
|
List<CodeResult> appCodeList = CodeDicUtils.getCodeList("appCode");
|
||||||
|
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(searchAction !=null){
|
||||||
|
log.setAction(searchAction);
|
||||||
|
}
|
||||||
|
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());
|
||||||
|
}
|
||||||
|
if(log.getCfgId()!=null && log.getPolicyId() ==null){
|
||||||
|
log.setPolicyId(log.getCfgId());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(log.getAppId())) {
|
||||||
|
params.put("searchAppId", log.getAppId());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(log.getProtocolId())) {
|
||||||
|
params.put("searchProtocolId", log.getProtocolId());
|
||||||
|
}
|
||||||
|
initLogSearchValues(log, params);
|
||||||
|
|
||||||
|
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId());
|
||||||
|
model.addAttribute("serviceList", serviceList);
|
||||||
|
model.addAttribute("appList", appCodeList);
|
||||||
|
model.addAttribute("protocolList", protocolCodeList);
|
||||||
|
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();
|
||||||
|
|
||||||
|
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(StringUtils.isNotBlank(l.getAppId()) && l.getAppId().equals(code.getCode())){
|
||||||
|
l.setAppName(code.getItem());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (CodeResult code : protocolCodeList) {
|
||||||
|
Integer value3 = Integer.valueOf(code.getCode());
|
||||||
|
if(StringUtils.isNotBlank(l.getProtocolId()) && l.getProtocolId().equals(code.getCode())){
|
||||||
|
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/pxyHttpBlockList";
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出
|
||||||
|
@RequestMapping(value = "exportPxyHttpBlock")
|
||||||
|
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>();
|
||||||
|
// ---------------------------
|
||||||
|
List<CodeResult> protocolCodeList = CodeDicUtils.getCodeList("protocolCode");
|
||||||
|
List<CodeResult> appCodeList = CodeDicUtils.getCodeList("appCode");
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(log.getAppId())) {
|
||||||
|
params.put("searchAppId", log.getAppId());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(log.getProtocolId())) {
|
||||||
|
params.put("searchProtocolId", log.getProtocolId());
|
||||||
|
}
|
||||||
|
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);
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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(StringUtils.isNotBlank(l.getAppId()) && l.getAppId().equals(code.getCode())){
|
||||||
|
l.setAppName(code.getItem());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (CodeResult code : protocolCodeList) {
|
||||||
|
Integer value3 = Integer.valueOf(code.getCode());
|
||||||
|
if(StringUtils.isNotBlank(l.getProtocolId()) && l.getProtocolId().equals(code.getCode())){
|
||||||
|
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", date2TimeStamp(searchStartTime,"yyyy-MM-dd HH:mm:ss"));
|
||||||
|
params.put("searchEndRecvTime", date2TimeStamp(searchEndTime,"yyyy-MM-dd HH:mm:ss"));
|
||||||
|
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.getPolicyId() != null) {
|
||||||
|
params.put("searchPolicyId", entry.getPolicyId());
|
||||||
|
}
|
||||||
|
if (entry.getAction() != null) {
|
||||||
|
params.put("searchAction", entry.getAction());
|
||||||
|
}
|
||||||
|
if (entry.getAddrType() != null) {
|
||||||
|
params.put("searchAddrType", entry.getAddrType());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entry.getIsp())) {
|
||||||
|
params.put("searchIsp", entry.getIsp());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entry.getServerLocation())) {
|
||||||
|
params.put("searchServerLocation", entry.getServerLocation());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entry.getClientLocation())) {
|
||||||
|
params.put("searchClientLocation", entry.getClientLocation());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entry.getHost())) {
|
||||||
|
params.put("searchHost", entry.getHost());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entry.getSni())) {
|
||||||
|
params.put("searchSni", entry.getSni());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entry.getSan())) {
|
||||||
|
params.put("searchSan", entry.getSan());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entry.getCn())) {
|
||||||
|
params.put("searchCn", entry.getCn());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entry.getOrderBy())) {
|
||||||
|
params.put("orderBy", entry.getOrderBy());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(entry.getFields())) {
|
||||||
|
params.put("fields", entry.getFields());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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")));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -51,7 +51,7 @@ public class PxyHttpManipulLogController extends BaseController{
|
|||||||
|
|
||||||
@RequestMapping(value = "/httpManipulList")
|
@RequestMapping(value = "/httpManipulList")
|
||||||
public String list(@ModelAttribute("log") PxyHttpManipulationLog log, Model model, HttpServletRequest request,
|
public String list(@ModelAttribute("log") PxyHttpManipulationLog log, Model model, HttpServletRequest request,
|
||||||
HttpServletResponse response) {
|
HttpServletResponse response,Integer searchAction) {
|
||||||
try {
|
try {
|
||||||
List<CodeResult> protocolCodeList = CodeDicUtils.getCodeList("protocolCode");
|
List<CodeResult> protocolCodeList = CodeDicUtils.getCodeList("protocolCode");
|
||||||
List<CodeResult> appCodeList = CodeDicUtils.getCodeList("appCode");
|
List<CodeResult> appCodeList = CodeDicUtils.getCodeList("appCode");
|
||||||
@@ -59,6 +59,9 @@ public class PxyHttpManipulLogController extends BaseController{
|
|||||||
Map<String, Object> params = new HashMap<String, Object>();
|
Map<String, Object> params = new HashMap<String, Object>();
|
||||||
params.put("pageSize", page.getPageSize());
|
params.put("pageSize", page.getPageSize());
|
||||||
params.put("pageNo", page.getPageNo());
|
params.put("pageNo", page.getPageNo());
|
||||||
|
if(searchAction !=null){
|
||||||
|
log.setAction(searchAction);
|
||||||
|
}
|
||||||
if (StringUtils.isNotBlank(log.getDomain())) {
|
if (StringUtils.isNotBlank(log.getDomain())) {
|
||||||
String domain = StringEscapeUtils.unescapeHtml(log.getDomain());
|
String domain = StringEscapeUtils.unescapeHtml(log.getDomain());
|
||||||
params.put("searchDomain", domain);
|
params.put("searchDomain", domain);
|
||||||
@@ -304,9 +307,9 @@ public class PxyHttpManipulLogController extends BaseController{
|
|||||||
if (entry.getPolicyId() != null) {
|
if (entry.getPolicyId() != null) {
|
||||||
params.put("searchPolicyId", entry.getPolicyId());
|
params.put("searchPolicyId", entry.getPolicyId());
|
||||||
}
|
}
|
||||||
/*if (entry.getAction() != null) {
|
if (entry.getAction() != null) {
|
||||||
params.put("searchAction", entry.getAction());
|
params.put("searchAction", entry.getAction());
|
||||||
}*/
|
}
|
||||||
if (entry.getAddrType() != null) {
|
if (entry.getAddrType() != null) {
|
||||||
params.put("searchAddrType", entry.getAddrType());
|
params.put("searchAddrType", entry.getAddrType());
|
||||||
}
|
}
|
||||||
|
|||||||
4
src/main/resources/sql/20190605/update_sys_menu.sql
Normal file
4
src/main/resources/sql/20190605/update_sys_menu.sql
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
--修改日志检索->国家代理->HTTP(S)阻断 url
|
||||||
|
UPDATE `sys_menu` SET `href`='/log/pxy/httpBlockList?searchAction=16' WHERE code='http_block' and href='/log/pxy/httpBlocklogs' and permission= ''
|
||||||
|
--修改日志检索->国家代理->HTTP(S)操控 url
|
||||||
|
UPDATE `sys_menu` SET `href`='/log/pxy/httpManipulList?searchAction=48' WHERE code='http_manipulation' and href='/log/pxy/httpManipulList' and permission= ''
|
||||||
722
src/main/webapp/WEB-INF/views/log/pxy/pxyHttpBlockList.jsp
Normal file
722
src/main/webapp/WEB-INF/views/log/pxy/pxyHttpBlockList.jsp
Normal file
@@ -0,0 +1,722 @@
|
|||||||
|
<%@ 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();
|
||||||
|
});
|
||||||
|
returnBack();
|
||||||
|
//筛选功能
|
||||||
|
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();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.ipTypeDisplay').css('display','block');
|
||||||
|
});
|
||||||
|
|
||||||
|
function returnBack(){
|
||||||
|
$('#appSelect').selectpicker();
|
||||||
|
var app = $("#apps").val(); //回选的数据
|
||||||
|
if (app !=null && app !='') {
|
||||||
|
var seasonlist = app.split(",");
|
||||||
|
$('#appSelect').selectpicker('val',seasonlist);
|
||||||
|
$('#appSelect').selectpicker('render');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* $('#ispSelect').selectpicker();
|
||||||
|
var app = $("#isps").val(); //回选的数据
|
||||||
|
if (app !=null && app !='') {
|
||||||
|
var seasonlist = app.split(",");
|
||||||
|
$('#ispSelect').selectpicker('val',seasonlist);
|
||||||
|
$('#ispSelect').selectpicker('render');
|
||||||
|
} */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$('#protoSelect').selectpicker();
|
||||||
|
var proto = $("#protos").val(); //回选的数据
|
||||||
|
if (proto !=null && proto !='') {
|
||||||
|
var protolist = proto.split(",");
|
||||||
|
$('#protoSelect').selectpicker('val',protolist);
|
||||||
|
$('#protoSelect').selectpicker('render');
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="page-content">
|
||||||
|
<div class="theme-panel hidden-xs hidden-sm">
|
||||||
|
</div>
|
||||||
|
<h3 class="page-title">
|
||||||
|
<spring:message code="http_block"/>
|
||||||
|
</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/httpBlockList" 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="apps" type="hidden" value="${log.appId}"/>
|
||||||
|
<input id="protos" type="hidden" value="${log.protocolId}"/>
|
||||||
|
<input id="jboxtCustomValue" type="hidden" value="true"/>
|
||||||
|
<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/exportPxyHttpBlock?type=excel" searchUrl="${ctx}/log/pxy/httpBlockList" id="contentTable" maxRow="10000" label="excel"></sys:delRow></li>
|
||||||
|
<li><sys:delRow url="${ctx}/log/pxy/exportPxyHttpBlock?type=csv" searchUrl="${ctx}/log/pxy/httpBlockList" 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="policyId" type="text" class="form-control logCfgId number" value="${log.policyId }"/>
|
||||||
|
</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 class="col-md-2" style="display: none;">
|
||||||
|
<div class="form-group">
|
||||||
|
<label><spring:message code="action"></spring:message>:</label>
|
||||||
|
<input name="action" type="text" class="form-control" value="16"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label"><spring:message code='application_layer_protocol'/>:</label>
|
||||||
|
<select id="protoSelect" name="protocolId" title="<spring:message code="select"/>" class="selectpicker form-control " data-max-options="10" data-selected-text-format="count > 3" multiple data-live-search="true" data-live-search-placeholder="<spring:message code="search"/>">
|
||||||
|
<option value="" disabled="true"><spring:message code="select"/></option>
|
||||||
|
<c:forEach items="${protocolList}" var="proto" >
|
||||||
|
<option value="${proto.code}"><spring:message code="${proto.item}"></spring:message></option>
|
||||||
|
</c:forEach>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<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="directions" >
|
||||||
|
<form:option value="${directions.itemCode}"><spring:message code="${directions.itemValue}"></spring:message></form:option>
|
||||||
|
</c:forEach>
|
||||||
|
</form:select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label><spring:message code='addr_type'/>:</label>
|
||||||
|
<form:select path="addrType" class="selectpicker form-control ipTypeDisplay">
|
||||||
|
<form:option value=""><spring:message code="select"/></form:option>
|
||||||
|
<c:forEach items="${fns:getDictList('IP_TYPE')}" var="ipType" >
|
||||||
|
<form:option value="${ipType.itemCode}"><spring:message code="${ipType.itemValue}"></spring:message></form:option>
|
||||||
|
</c:forEach>
|
||||||
|
</form:select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label><spring:message code="isp"></spring:message>:</label>
|
||||||
|
<input name="isp" type="text" class="form-control" value="${log.isp }"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label><spring:message code="server_locate"></spring:message>:</label>
|
||||||
|
<input name="serverLocation" type="text" class="form-control" value="${log.serverLocation }"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label><spring:message code="client_locate"></spring:message>:</label>
|
||||||
|
<input name="clientLocation" type="text" class="form-control" value="${log.clientLocation }"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label><spring:message code="host"></spring:message>:</label>
|
||||||
|
<input name="host" type="text" class="form-control" value="${log.host }"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label><spring:message code="sni"></spring:message>:</label>
|
||||||
|
<input name="sni" type="text" class="form-control" value="${log.sni }"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label><spring:message code="san"></spring:message>:</label>
|
||||||
|
<input name="san" type="text" class="form-control" value="${log.san }"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label><spring:message code="cn"></spring:message>:</label>
|
||||||
|
<input name="cn" type="text" class="form-control" value="${log.cn }"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<%-- <div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label><spring:message code='social_app'/>:</label>
|
||||||
|
<form:select path="appId" class="selectpicker form-control " >
|
||||||
|
<form:option value=""><spring:message code="select"/></form:option>
|
||||||
|
<c:forEach items="${fns:getCodeList('appCode')}" var="appCodes" >
|
||||||
|
<form:option value="${appCodes.code}"><spring:message code="${appCodes.item}"></spring:message></form:option>
|
||||||
|
</c:forEach>
|
||||||
|
</form:select>
|
||||||
|
</div>
|
||||||
|
</div> --%>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label"><spring:message code='social_app'/>:</label>
|
||||||
|
<select id="appSelect" name="appId" title="<spring:message code="select"/>" class="selectpicker form-control " data-max-options="10" data-selected-text-format="count > 3" multiple data-live-search="true" data-live-search-placeholder="<spring:message code="search"/>">
|
||||||
|
<option value="" disabled="true"><spring:message code="select"/></option>
|
||||||
|
<c:forEach items="${appList}" var="app" >
|
||||||
|
<option value="${app.code}"><spring:message code="${app.item}"></spring:message></option>
|
||||||
|
</c:forEach>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<%-- <div class="row">
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label><spring:message code='protocol'/>:</label>
|
||||||
|
<form:select path="protocolId" class="selectpicker form-control " >
|
||||||
|
<form:option value=""><spring:message code="select"/></form:option>
|
||||||
|
<c:forEach items="${fns:getCodeList('protocolCode')}" var="protocolCodes" >
|
||||||
|
<form:option value="${protocolCodes.code}"><spring:message code="${protocolCodes.item}"></spring:message></form:option>
|
||||||
|
</c:forEach>
|
||||||
|
</form:select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label"><spring:message code='application_layer_protocol'/>:</label>
|
||||||
|
<select id="protoSelect" name="protocolId" title="<spring:message code="select"/>" class="selectpicker form-control " data-max-options="10" data-selected-text-format="count > 3" multiple data-live-search="true" data-live-search-placeholder="<spring:message code="search"/>">
|
||||||
|
<option value="" disabled="true"><spring:message code="select"/></option>
|
||||||
|
<c:forEach items="${protocolList}" var="proto" >
|
||||||
|
<option value="${proto.code}"><spring:message code="${proto.item}"></spring:message></option>
|
||||||
|
</c:forEach>
|
||||||
|
</select>
|
||||||
|
</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" column="cfg_id" ><spring:message code="cfg_id"/></th>
|
||||||
|
<th class="sort-column action" 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" isVisible="false" column="startTime" ><spring:message code="startTime"/></th>
|
||||||
|
<th class="sort-column end_time" isVisible="false" column="endTime" ><spring:message code="endTime"/></th>
|
||||||
|
<th class="sort-column recv_time" 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" 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 intercept_state" column="intercept_state" ><spring:message code='intercept_state'/></th>
|
||||||
|
<th class="sort-column ssl_server_side_latency" column="ssl_server_side_latency" ><spring:message code='ssl_server_side_latency'/></th>
|
||||||
|
<th class="sort-column ssl_client_side_latency" column="ssl_client_side_latency" ><spring:message code='ssl_client_side_latency'/></th>
|
||||||
|
<th class="sort-column ssl_server_side_version" column="ssl_server_side_version" ><spring:message code='ssl_server_side_version'/></th>
|
||||||
|
<th class="sort-column ssl_client_side_version" column="ssl_client_side_version" ><spring:message code='ssl_client_side_version'/></th>
|
||||||
|
<th class="sort-column ssl_cert_verify" column="ssl_cert_verify" ><spring:message code='ssl_cert_verify'/></th>
|
||||||
|
<th class="sort-column stream_trace_id" isVisible="false" column="stream_trace_id" ><spring:message code='stream_trace_id'/></th>
|
||||||
|
<th class="sort-column ssl_error" column="ssl_error" ><spring:message code='ssl_error'/></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.policyId }" ><i class="icon-book-open"></i></a>
|
||||||
|
</td>
|
||||||
|
<td>${log.policyId }</td>
|
||||||
|
<td>
|
||||||
|
<spring:message code="block"/>
|
||||||
|
</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>
|
||||||
|
<c:set var="interceptStates">${log.interceptState }</c:set>
|
||||||
|
<c:forEach items="${fns:getDictList('INTERCEPT_STATE')}" var="interceptType">
|
||||||
|
<c:if test="${interceptType.itemCode eq log.interceptState}">
|
||||||
|
<c:set var="interceptStates">${interceptType.itemValue}</c:set>
|
||||||
|
</c:if>
|
||||||
|
</c:forEach>
|
||||||
|
<spring:message code="${interceptStates}"/>
|
||||||
|
</td>
|
||||||
|
<td>${log.sslServerSideLatency }</td>
|
||||||
|
<td>${log.sslClientSideLatency }</td>
|
||||||
|
<td>
|
||||||
|
<c:set var="sslServerSideVersions">${log.sslServerSideVersion }</c:set>
|
||||||
|
<c:forEach items="${fns:getDictList('SSL_VERSION')}" var="sslServerSideVersionType">
|
||||||
|
<c:if test="${sslServerSideVersionType.itemCode eq log.sslServerSideVersion}">
|
||||||
|
<c:set var="sslServerSideVersions">${sslServerSideVersionType.itemValue}</c:set>
|
||||||
|
</c:if>
|
||||||
|
</c:forEach>
|
||||||
|
<spring:message code="${sslServerSideVersions}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:set var="sslClientSideVersions">${log.sslClientSideVersion }</c:set>
|
||||||
|
<c:forEach items="${fns:getDictList('SSL_VERSION')}" var="sslClientSideVersionType">
|
||||||
|
<c:if test="${sslClientSideVersionType.itemCode eq log.sslClientSideVersion}">
|
||||||
|
<c:set var="sslClientSideVersions">${sslClientSideVersionType.itemValue}</c:set>
|
||||||
|
</c:if>
|
||||||
|
</c:forEach>
|
||||||
|
<spring:message code="${sslClientSideVersions}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:set var="sslCertVerifys">${log.sslCertVerify }</c:set>
|
||||||
|
<c:forEach items="${fns:getDictList('SSL_CERT_VERIFY')}" var="sslCertVerifyType">
|
||||||
|
<c:if test="${sslCertVerifyType.itemCode eq log.sslCertVerify}">
|
||||||
|
<c:set var="sslCertVerifys">${sslCertVerifyType.itemValue}</c:set>
|
||||||
|
</c:if>
|
||||||
|
</c:forEach>
|
||||||
|
<spring:message code="${sslCertVerifys}"/>
|
||||||
|
</td>
|
||||||
|
<td>${log.streamTraceId }</td>
|
||||||
|
<td>${log.sslError }</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>
|
||||||
@@ -246,7 +246,7 @@
|
|||||||
<div class="col-md-2" style="display: none;">
|
<div class="col-md-2" style="display: none;">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label><spring:message code="action"></spring:message>:</label>
|
<label><spring:message code="action"></spring:message>:</label>
|
||||||
<input name="action" type="text" class="form-control" value="465"/>
|
<input name="action" type="text" class="form-control" value="48"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
@@ -479,13 +479,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>${log.policyId }</td>
|
<td>${log.policyId }</td>
|
||||||
<td>
|
<td>
|
||||||
<c:set var="actions">${log.action }</c:set>
|
<spring:message code="action_manipulate"/>
|
||||||
<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>
|
||||||
<%-- <td>${log.foundTime }</td> --%>
|
<%-- <td>${log.foundTime }</td> --%>
|
||||||
<td>${log.startTime }</td>
|
<td>${log.startTime }</td>
|
||||||
@@ -669,8 +663,24 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>${log.sslServerSideLatency }</td>
|
<td>${log.sslServerSideLatency }</td>
|
||||||
<td>${log.sslClientSideLatency }</td>
|
<td>${log.sslClientSideLatency }</td>
|
||||||
<td>${log.sslServerSideVersion }</td>
|
<td>
|
||||||
<td>${log.sslClientSideVersion }</td>
|
<c:set var="sslServerSideVersions">${log.sslServerSideVersion }</c:set>
|
||||||
|
<c:forEach items="${fns:getDictList('SSL_VERSION')}" var="sslServerSideVersionType">
|
||||||
|
<c:if test="${sslServerSideVersionType.itemCode eq log.sslServerSideVersion}">
|
||||||
|
<c:set var="sslServerSideVersions">${sslServerSideVersionType.itemValue}</c:set>
|
||||||
|
</c:if>
|
||||||
|
</c:forEach>
|
||||||
|
<spring:message code="${sslServerSideVersions}"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<c:set var="sslClientSideVersions">${log.sslClientSideVersion }</c:set>
|
||||||
|
<c:forEach items="${fns:getDictList('SSL_VERSION')}" var="sslClientSideVersionType">
|
||||||
|
<c:if test="${sslClientSideVersionType.itemCode eq log.sslClientSideVersion}">
|
||||||
|
<c:set var="sslClientSideVersions">${sslClientSideVersionType.itemValue}</c:set>
|
||||||
|
</c:if>
|
||||||
|
</c:forEach>
|
||||||
|
<spring:message code="${sslClientSideVersions}"/>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<c:set var="sslCertVerifys">${log.sslCertVerify }</c:set>
|
<c:set var="sslCertVerifys">${log.sslCertVerify }</c:set>
|
||||||
<c:forEach items="${fns:getDictList('SSL_CERT_VERIFY')}" var="sslCertVerifyType">
|
<c:forEach items="${fns:getDictList('SSL_CERT_VERIFY')}" var="sslCertVerifyType">
|
||||||
|
|||||||
Reference in New Issue
Block a user