1.新增 日志检索->流量日志->HTTP泛收界面

2.新增 日志检索->白名单->IP白名单界面
3.修改 日志检索->IP地址界面 动作默认为监测
4.移除 日志检索->流量日志->邮件泛收和SSL泛收的动作条件
This commit is contained in:
李皓宸
2019-01-17 10:57:43 +08:00
parent c410dd9c90
commit b2c38bad9a
11 changed files with 1450 additions and 105 deletions

View File

@@ -0,0 +1,48 @@
package com.nis.domain.log;
import com.nis.util.excel.ExcelField;
public class NtcHttpRecordLog extends BaseLogEntity<NtcHttpRecordLog> {
private static final long serialVersionUID = -7697668215327123848L;
@ExcelField(title = "URL", sort = 2)
private String url;
@ExcelField(title = "referer", sort = 3)
private String referer;// 入口页面
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getReferer() {
return referer;
}
public void setReferer(String referer) {
this.referer = referer;
}
@Override
public String toString() {
return "NtcHttpRecordLog [url=" + url + ", referer=" + referer + ", cfgId=" + cfgId + ", foundTime=" + foundTime
+ ", recvTime=" + recvTime + ", transProto=" + transProto + ", addrType=" + addrType + ", dIp=" + dIp
+ ", sIp=" + sIp + ", dPort=" + dPort + ", sPort=" + sPort + ", service=" + service + ", entranceId="
+ entranceId + ", deviceId=" + deviceId + ", direction=" + direction + ", streamDir=" + streamDir
+ ", capIp=" + capIp + ", addrList=" + addrList + ", serverLocate=" + serverLocate + ", clientLocate="
+ clientLocate + ", sAsn=" + sAsn + ", dAsn=" + dAsn + ", sSubscribeId=" + sSubscribeId
+ ", dSubscribeId=" + dSubscribeId + ", sceneFile=" + sceneFile + ", functionId=" + functionId
+ ", action=" + action + ", date=" + date + ", seltype=" + seltype + ", searchFoundStartTime="
+ searchFoundStartTime + ", searchFoundEndTime=" + searchFoundEndTime + ", isLogTotalSearch="
+ isLogTotalSearch + ", orderBy=" + orderBy + ", encapType=" + encapType + ", linkId=" + linkId
+ ", innerSmac=" + innerSmac + ", innerDmac=" + innerDmac + ", id=" + id + ", currentUser="
+ currentUser + ", page=" + page + ", pageLog=" + pageLog + ", sqlMap=" + sqlMap + ", isNewRecord="
+ isNewRecord + ", isFilterAction=" + isFilterAction + "]";
}
}

View File

@@ -814,4 +814,8 @@ public final class Constants {
* 流量日志的SSL泛收接口URL
*/
public static final String NTC_SSL_RECORD_LOG = Configurations.getStringProperty("ntcSslRecordLog","");
/**
* 流量日志的HTTP泛收接口URL
*/
public static final String NTC_HTTP_RECORD_LOG = Configurations.getStringProperty("ntcHttpRecordLog","");
}

View File

@@ -0,0 +1,183 @@
package com.nis.web.controller.log.ntc;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.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.SysUser;
import com.nis.domain.log.NtcHttpRecordLog;
import com.nis.domain.log.NtcHttpRecordLog;
import com.nis.domain.maat.LogRecvData;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.Encodes;
import com.nis.util.httpclient.HttpClientUtil;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
@Controller
@RequestMapping("${adminPath}/log/ntc/httpRecord")
public class HttpRecordLogController extends BaseController {
@RequestMapping(value = { "list", "" })
public String list(@ModelAttribute("log") NtcHttpRecordLog log, Model model, HttpServletRequest request,
HttpServletResponse response) {
try {
PageLog<NtcHttpRecordLog> page = new PageLog<NtcHttpRecordLog>(request, response);
Map<String, Object> params = new HashMap<String, Object>();
params.put("pageSize", page.getPageSize());
params.put("pageNo", page.getPageNo());
if (StringUtils.isNotBlank(log.getUrl())) {
String httpurl = StringEscapeUtils.unescapeHtml(log.getUrl());
params.put("searchUrl", httpurl);
}
initLogSearchValue(log, params);
if (StringUtils.isNotBlank(log.getdPort())) {
params.put("searchDPort", log.getdPort());
}
if (StringUtils.isNotBlank(log.getsPort())) {
params.put("searchSPort", log.getsPort());
}
if (StringUtils.isNotBlank(log.getReferer())) {
params.put("searchReferer", log.getReferer());
}
if (null != log.getDeviceId()) {
params.put("searchDeviceId", log.getDeviceId());
}
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId());
serviceList.addAll(DictUtils.getFunctionServiceDictList(635));
model.addAttribute("serviceList", serviceList);
String url = Constants.LOG_BASE_URL + Constants.NTC_HTTP_RECORD_LOG;
String recv = HttpClientUtil.getMsg(url, params, request);
Gson gson = new GsonBuilder().create();
LogRecvData<NtcHttpRecordLog> fromJson = gson.fromJson(recv,
new TypeToken<LogRecvData<NtcHttpRecordLog>>() {
}.getType());
if (fromJson.getStatus().intValue() == 200) {
Page<NtcHttpRecordLog> data = fromJson.getData();
page.setCount(data.getCount());
page.setLast(data.getLast());
page.setList(data.getList());
List<NtcHttpRecordLog> list = page.getList();
for (NtcHttpRecordLog l : list) {
l.setFunctionId(log.getFunctionId());
setLogAction(l, serviceList);
}
model.addAttribute("page", page);
}
} catch (Exception e) {
logger.error("查询失败", e);
addMessageLog(model, e.getMessage());
}
return "/log/ntc/httpRecordList";
}
// http泛收配置导出
@RequestMapping(value = "exportHttp")
public void exportHttp(@ModelAttribute("log") NtcHttpRecordLog log, Model model, String hColumns, String type,
HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
try {
// export data info
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<NtcHttpRecordLog> page = new PageLog<NtcHttpRecordLog>(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.getUrl())) {
String httpurl = StringEscapeUtils.unescapeHtml(log.getUrl());
params.put("searchUrl", httpurl);
}
initLogSearchValue(log, params);
if (StringUtils.isNotBlank(log.getdPort())) {
params.put("searchDport", log.getdPort());
}
if (StringUtils.isNotBlank(log.getsPort())) {
params.put("searchSport", log.getsPort());
}
if (StringUtils.isNotBlank(log.getReferer())) {
params.put("searchReferer", log.getReferer());
}
if (null != log.getDeviceId()) {
params.put("searchDeviceId", log.getDeviceId());
}
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId());
serviceList.addAll(DictUtils.getFunctionServiceDictList(635));
model.addAttribute("serviceList", serviceList);
String url = Constants.LOG_BASE_URL + Constants.NTC_HTTP_RECORD_LOG;
String recv = HttpClientUtil.getMsg(url, params, request);
List<NtcHttpRecordLog> list = new ArrayList<NtcHttpRecordLog>();
if (StringUtils.isNotBlank(recv)) {
Gson gson = new GsonBuilder().create();
LogRecvData<NtcHttpRecordLog> fromJson = gson.fromJson(recv,
new TypeToken<LogRecvData<NtcHttpRecordLog>>() {
}.getType());
if (fromJson.getStatus().intValue() == 200) {
Page<NtcHttpRecordLog> data = fromJson.getData();
list = data.getList();
}
}
for (NtcHttpRecordLog l : list) {
l.setFunctionId(log.getFunctionId());
setLogAction(l, serviceList);
}
titleList.add("http_record");
classMap.put("http_record", NtcHttpRecordLog.class);
SysUser user = UserUtils.getUser();
if (!user.isAdmin()) {
hColumns += "";
} else {
hColumns += ",";
}
String cfgIndexInfoNoExport = ",action,cfg_id,recv_time,clj_ip,transport_layer_protocol,addr_type,link_id,encap_type,direction,inner_smac,inner_dmac,stream_type,nest_addr_list,server_locate,client_locate,s_asn,d_asn,s_subscribe_id,d_subscribe_id,scene_file,"
+ hColumns;
noExportMap.put("http_record", cfgIndexInfoNoExport);
dataMap.put("http_record", list);
String timeRange = initLogMap(log, "http_record");
noExportMap.put("timeRange", timeRange);
/* } */
if ("csv".equals(type)) {
this._exportCsv(model, request, response, redirectAttributes, "http_record", titleList, classMap,
dataMap, noExportMap);
} else {
this._export(model, request, response, redirectAttributes, "http_record", titleList, classMap, dataMap,
noExportMap);
}
} catch (Exception e) {
logger.error("http_record export failed", e);
addMessage(redirectAttributes, "error", "export_failed");
}
}
}

View File

@@ -24,6 +24,7 @@ import com.nis.domain.log.NtcIpLog;
import com.nis.domain.maat.LogRecvData;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
import com.nis.util.httpclient.HttpClientUtil;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
@@ -31,25 +32,31 @@ import com.nis.web.security.UserUtils;
@Controller
@RequestMapping("${adminPath}/log/ntc/ip")
public class IpLogController extends BaseController {
@RequestMapping("list")
public String list(@ModelAttribute("log") NtcIpLog log, Model model, HttpServletRequest request, HttpServletResponse response) {
public String list(@ModelAttribute("log") NtcIpLog log, Model model, HttpServletRequest request,
HttpServletResponse response) {
try {
PageLog<NtcIpLog> page = new PageLog<NtcIpLog>(request, response);
Map<String, Object> params = new HashMap<String, Object>();
params.put("pageSize", page.getPageSize());
params.put("pageNo", page.getPageNo());
initLogSearchValue(log, params);
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId());
model.addAttribute("serviceList", serviceList);
if (StringUtil.isEmpty(log.getService())) {
log.setService(128);
}
initLogSearchValue(log, params);
String url = Constants.LOG_BASE_URL + Constants.NTC_IP_LOG;
String recv = HttpClientUtil.getMsg(url, params, request);
if (StringUtils.isNotBlank(recv)) {
Gson gson = new GsonBuilder().create();
LogRecvData<NtcIpLog> fromJson = gson.fromJson(recv, new TypeToken<LogRecvData<NtcIpLog>>(){}.getType());
LogRecvData<NtcIpLog> fromJson = gson.fromJson(recv, new TypeToken<LogRecvData<NtcIpLog>>() {
}.getType());
if (fromJson.getStatus().intValue() == 200) {
Page<NtcIpLog> data = fromJson.getData();
page.setCount(data.getCount());
@@ -58,7 +65,7 @@ public class IpLogController extends BaseController {
List<NtcIpLog> list = page.getList();
for (NtcIpLog l : list) {
l.setFunctionId(log.getFunctionId());
setLogAction(l,serviceList);
setLogAction(l, serviceList);
}
model.addAttribute("page", page);
}
@@ -67,34 +74,36 @@ public class IpLogController extends BaseController {
logger.error("查询失败", e);
addMessageLog(model, e.getMessage());
}
return "/log/ntc/ipList";
}
@RequestMapping("testlist")
public String testlist(@ModelAttribute("log") NtcIpLog log, Model model, HttpServletRequest request, HttpServletResponse response) {
public String testlist(@ModelAttribute("log") NtcIpLog log, Model model, HttpServletRequest request,
HttpServletResponse response) {
Page<NtcIpLog> page = new Page<NtcIpLog>(request, response);
Map<String, Object> params = new HashMap<String, Object>();
params.put("pageSize", page.getPageSize());
params.put("pageNo", page.getPageNo());
initLogSearchValue(log, params);
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId());
model.addAttribute("serviceList", serviceList);
initLogSearchValue(log, params);
String url = "http://10.0.6.121:8080/gwall/test/logTest";
try {
String recv = HttpClientUtil.getMsg(url, params, request);
Gson gson = new GsonBuilder().create();
LogRecvData<NtcIpLog> fromJson = gson.fromJson(recv, new TypeToken<LogRecvData<NtcIpLog>>(){}.getType());
LogRecvData<NtcIpLog> fromJson = gson.fromJson(recv, new TypeToken<LogRecvData<NtcIpLog>>() {
}.getType());
if (fromJson.getStatus().intValue() == 200) {
BeanUtils.copyProperties(fromJson.getData(), page);
List<NtcIpLog> list = page.getList();
for (NtcIpLog l : list) {
l.setFunctionId(log.getFunctionId());
setLogAction(l,serviceList);
setLogAction(l, serviceList);
}
model.addAttribute("page", page);
}
@@ -102,73 +111,77 @@ public class IpLogController extends BaseController {
logger.error("查询失败", e);
addMessageLog(model, e.getMessage());
}
return "/log/ntc/ipList";
}
// Ip配置导出
@RequestMapping(value = "exportIp")
public void exportIp(@ModelAttribute("log") NtcIpLog log, Model model, String hColumns, String type,
HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
try {
// export data info
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<NtcIpLog> page = new PageLog<NtcIpLog>(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());
initLogSearchValue(log, params);
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId());
model.addAttribute("serviceList", serviceList);
String url = Constants.LOG_BASE_URL + Constants.NTC_IP_LOG;
String recv = HttpClientUtil.getMsg(url, params, request);
List<NtcIpLog> list = new ArrayList<NtcIpLog>();
if (StringUtils.isNotBlank(recv)) {
Gson gson = new GsonBuilder().create();
LogRecvData<NtcIpLog> fromJson = gson.fromJson(recv, new TypeToken<LogRecvData<NtcIpLog>>() {
}.getType());
if (fromJson.getStatus().intValue() == 200) {
Page<NtcIpLog> data = fromJson.getData();
list = data.getList();
}
}
for (NtcIpLog l : list) {
l.setFunctionId(log.getFunctionId());
setLogAction(l, serviceList);
}
titleList.add("ip_control");
classMap.put("ip_control", NtcIpLog.class);
SysUser user = UserUtils.getUser();
if (!user.isAdmin()) {
hColumns += ",scene_file,";
} else {
hColumns += ",";
}
String cfgIndexInfoNoExport = "," + hColumns;
noExportMap.put("ip_control", cfgIndexInfoNoExport);
dataMap.put("ip_control", list);
String timeRange= initLogMap(log,"ip_control");
noExportMap.put("timeRange", timeRange);
if ("csv".equals(type)) {
this._exportCsv(model, request, response, redirectAttributes, "ip_control", titleList, classMap,
dataMap, noExportMap);
} else {
this._export(model, request, response, redirectAttributes, "ip_control", titleList, classMap, dataMap,
noExportMap);
}
} catch (Exception e) {
logger.error("Ip" +" export failed", e);
addMessage(redirectAttributes, "error", "export_failed");
// Ip配置导出
@RequestMapping(value = "exportIp")
public void exportIp(@ModelAttribute("log") NtcIpLog log, Model model, String hColumns, String type,
HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
try {
// export data info
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<NtcIpLog> page = new PageLog<NtcIpLog>(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());
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId());
model.addAttribute("serviceList", serviceList);
if (StringUtil.isEmpty(log.getService())) {
log.setService(128);
}
initLogSearchValue(log, params);
String url = Constants.LOG_BASE_URL + Constants.NTC_IP_LOG;
String recv = HttpClientUtil.getMsg(url, params, request);
List<NtcIpLog> list = new ArrayList<NtcIpLog>();
if (StringUtils.isNotBlank(recv)) {
Gson gson = new GsonBuilder().create();
LogRecvData<NtcIpLog> fromJson = gson.fromJson(recv, new TypeToken<LogRecvData<NtcIpLog>>() {
}.getType());
if (fromJson.getStatus().intValue() == 200) {
Page<NtcIpLog> data = fromJson.getData();
list = data.getList();
}
}
for (NtcIpLog l : list) {
l.setFunctionId(log.getFunctionId());
setLogAction(l, serviceList);
}
titleList.add("ip_control");
classMap.put("ip_control", NtcIpLog.class);
SysUser user = UserUtils.getUser();
if (!user.isAdmin()) {
hColumns += ",scene_file,";
} else {
hColumns += ",";
}
String cfgIndexInfoNoExport = "," + hColumns;
noExportMap.put("ip_control", cfgIndexInfoNoExport);
dataMap.put("ip_control", list);
String timeRange = initLogMap(log, "ip_control");
noExportMap.put("timeRange", timeRange);
if ("csv".equals(type)) {
this._exportCsv(model, request, response, redirectAttributes, "ip_control", titleList, classMap,
dataMap, noExportMap);
} else {
this._export(model, request, response, redirectAttributes, "ip_control", titleList, classMap, dataMap,
noExportMap);
}
} catch (Exception e) {
logger.error("Ip" + " export failed", e);
addMessage(redirectAttributes, "error", "export_failed");
}
}
}

View File

@@ -0,0 +1,158 @@
package com.nis.web.controller.log.ntc;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import 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.SysUser;
import com.nis.domain.log.NtcIpLog;
import com.nis.domain.maat.LogRecvData;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.StringUtil;
import com.nis.util.httpclient.HttpClientUtil;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
@Controller
@RequestMapping("${adminPath}/log/ntc/ipWhiteList")
public class IpWhiteLogController extends BaseController {
@RequestMapping(value={"list",""})
public String list(@ModelAttribute("log") NtcIpLog log, Model model, HttpServletRequest request,
HttpServletResponse response) {
try {
PageLog<NtcIpLog> page = new PageLog<NtcIpLog>(request, response);
Map<String, Object> params = new HashMap<String, Object>();
params.put("pageSize", page.getPageSize());
params.put("pageNo", page.getPageNo());
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId());
model.addAttribute("serviceList", serviceList);
if(StringUtil.isEmpty(log.getAction())){
for(int i=0;i<serviceList.size();i++){
log.setAction(serviceList.get(i).getAction());
break;
}
}
initLogSearchValue(log, params);
String url = Constants.LOG_BASE_URL + Constants.NTC_IP_LOG;
String recv = HttpClientUtil.getMsg(url, params, request);
if (StringUtils.isNotBlank(recv)) {
Gson gson = new GsonBuilder().create();
LogRecvData<NtcIpLog> fromJson = gson.fromJson(recv, new TypeToken<LogRecvData<NtcIpLog>>() {
}.getType());
if (fromJson.getStatus().intValue() == 200) {
Page<NtcIpLog> data = fromJson.getData();
page.setCount(data.getCount());
page.setLast(data.getLast());
page.setList(data.getList());
List<NtcIpLog> list = page.getList();
for (NtcIpLog l : list) {
l.setFunctionId(log.getFunctionId());
setLogAction(l, serviceList);
}
model.addAttribute("page", page);
}
}
} catch (Exception e) {
logger.error("查询失败", e);
addMessageLog(model, e.getMessage());
}
return "/log/ntc/ipWhiteList";
}
// Ip白名单导出
@RequestMapping(value = "exportIp")
public void exportIp(@ModelAttribute("log") NtcIpLog log, Model model, String hColumns, String type,
HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
try {
// export data info
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<NtcIpLog> page = new PageLog<NtcIpLog>(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());
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId());
model.addAttribute("serviceList", serviceList);
if(StringUtil.isEmpty(log.getAction())){
for(int i=0;i<serviceList.size();i++){
log.setAction(serviceList.get(i).getAction());
break;
}
}
initLogSearchValue(log, params);
String url = Constants.LOG_BASE_URL + Constants.NTC_IP_LOG;
String recv = HttpClientUtil.getMsg(url, params, request);
List<NtcIpLog> list = new ArrayList<NtcIpLog>();
if (StringUtils.isNotBlank(recv)) {
Gson gson = new GsonBuilder().create();
LogRecvData<NtcIpLog> fromJson = gson.fromJson(recv, new TypeToken<LogRecvData<NtcIpLog>>() {
}.getType());
if (fromJson.getStatus().intValue() == 200) {
Page<NtcIpLog> data = fromJson.getData();
list = data.getList();
}
}
for (NtcIpLog l : list) {
l.setFunctionId(log.getFunctionId());
setLogAction(l, serviceList);
}
titleList.add("ip_control");
classMap.put("ip_control", NtcIpLog.class);
SysUser user = UserUtils.getUser();
if (!user.isAdmin()) {
hColumns += ",scene_file,";
} else {
hColumns += ",";
}
String cfgIndexInfoNoExport = "," + hColumns;
noExportMap.put("ip_control", cfgIndexInfoNoExport);
dataMap.put("ip_control", list);
String timeRange = initLogMap(log, "ip_control");
noExportMap.put("timeRange", timeRange);
if ("csv".equals(type)) {
this._exportCsv(model, request, response, redirectAttributes, "ip_control", titleList, classMap,
dataMap, noExportMap);
} else {
this._export(model, request, response, redirectAttributes, "ip_control", titleList, classMap, dataMap,
noExportMap);
}
} catch (Exception e) {
logger.error("Ip" + " export failed", e);
addMessage(redirectAttributes, "error", "export_failed");
}
}
}

View File

@@ -621,3 +621,5 @@ addRegionToCommonGroup=v1/addRegionToCommonGroup
updateRegionToCommonGroup=v1/updateCommonGroupRegion
deleteRegionToCommonGroup=v1/delCommonGroupRegion
asn_key=AS
#Http\u6cdb\u6536
ntcHttpRecordLog=v1/ntcHttpRecordLogs

View File

@@ -0,0 +1,556 @@
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/WEB-INF/include/taglib.jsp"%>
<html>
<head>
<title>
HTTP RECORD<spring:message code="log"></spring:message>
</title>
<script>
$(document).ready(function() {
//reset
$("#resetBtn").on("click",function(){
$("select.selectpicker").each(function(){
$(this).selectpicker('val',$(this).find('option:first').val());
$(this).find("option").attr("selected",false);
$(this).find("option:first").attr("selected",true);
});
$(".Wdate").attr("value",'');
$(':input','#searchForm')
.not(':button,:submit,:reset,:hidden')
.attr("value",'');
$("#searchForm")[0].reset();
});
//筛选功能
filterActionInit();
//异步获取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}/ntc/website/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_record"/>
</h3>
<h5 class="page-header"></h5>
<div class="col-md-12">
<div class="portlet">
<div class="portlet-body">
<div class="row" >
<form:form id="searchForm" modelAttribute="log" action="${ctx}/log/ntc/httpRecord/list" method="post" class="form-search">
<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
<input id="functionId" name="functionId" type="hidden" value="${log.functionId}"/>
<input id="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">
<%-- <form:select path="service" class="selectpicker select2 input-small"> --%>
<%-- <form:option value=""><spring:message code="action"/></form:option> --%>
<%-- <c:forEach items="${serviceList}" var="service" varStatus="satus"> --%>
<%-- <c:forEach items="${fns:getDictList('SERVICE_ACTION') }" var="dict"> --%>
<%-- <c:if test="${(dict.itemCode eq service.action) && (service.action ne 128) && (service.action ne 32) && (service.action ne 96) }"> --%>
<%-- <c:choose> --%>
<%-- <c:when test="${service.serviceId eq 152}"> --%>
<%-- <form:option value="${service.serviceId}"><spring:message code="keywords"/> <spring:message code="${dict.itemValue}"/></form:option> --%>
<%-- </c:when> --%>
<%-- <c:when test="${service.serviceId eq 40}"> --%>
<%-- <form:option value="${service.serviceId}"><spring:message code="keywords"/> <spring:message code="${dict.itemValue}"/></form:option> --%>
<%-- </c:when> --%>
<%-- <c:otherwise> --%>
<%-- <form:option value="${service.serviceId}"><spring:message code="${dict.itemValue}"/></form:option> --%>
<%-- </c:otherwise> --%>
<%-- </c:choose> --%>
<%-- </c:if> --%>
<%-- </c:forEach> --%>
<%-- </c:forEach> --%>
<%-- </form:select> --%>
</div>
<div class="pull-left">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control" ><spring:message code="begin_date"/></span>
</div>
<%-- <input id="searchFoundStartTime" name="searchFoundStartTime" type="text" readonly="readonly" maxlength="20" class="form-control Wdate input-medium"
value="${log.searchFoundStartTime}" onclick="WdatePicker({onpicked:setTimee,dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true,maxDate:'#F{$dp.$D(\'searchFoundEndTime\')}'});"/> --%>
<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,'d','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 id="searchFoundEndTime" name="searchFoundEndTime" type="text" readonly="readonly" maxlength="20" class="form-control Wdate input-medium"
value="${log.searchFoundEndTime}" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true,minDate:'#F{$dp.$D(\'searchFoundStartTime\')}',maxDate:'#F{$dp.$D(\'searchFoundStartTime\',{d:1})}'});"/> --%>
<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,'d','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/ntc/httpRecord/exportHttp?type=excel" searchUrl="${ctx}/log/ntc/httpRecord/list" id="contentTable" maxRow="10000" label="excel"></sys:delRow></li>
<li><sys:delRow url="${ctx}/log/ntc/httpRecord/exportHttp?type=csv" searchUrl="${ctx}/log/ntc/httpRecord/list" 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.dIp }"/>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="clientip"></spring:message></label>
<input name="sIp" type="text" class="form-control" value="${log.sIp }"/>
</div>
</div>
<%-- <div class="col-md-2">
<div class="form-group">
<label 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 class="col-md-2">
<div class="form-group">
<label><spring:message code="server_port"></spring:message></label>
<input name="dPort" type="text" class="form-control logCfgId number" value="${log.dPort }"/>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="client_port"></spring:message></label>
<input name="sPort" type="text" class="form-control" value="${log.sPort }"/>
</div>
</div>
</div>
<div class="row">
<!-- <div class="col-md-2"> -->
<!-- <div class="form-group"> -->
<%-- <label><spring:message code="http_seq"></spring:message></label> --%>
<%-- <input name="httpSeq" type="text" class="form-control" value="${log.httpSeq }"/> --%>
<!-- </div> -->
<!-- </div> -->
<!-- <div class="col-md-2"> -->
<!-- <div class="form-group"> -->
<%-- <label><spring:message code="proxy_flag"></spring:message></label> --%>
<%-- <input name="proxyFlag" type="text" class="form-control" value="${log.proxyFlag }"/> --%>
<!-- </div> -->
<!-- </div> -->
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="deviceid"></spring:message></label>
<input name="deviceId" type="text" class="form-control" value="${log.deviceId }"/>
</div>
</div>
<!-- <div class="col-md-2"> -->
<!-- <div class="form-group"> -->
<%-- <label><spring:message code="isn"></spring:message></label> --%>
<%-- <input name="isn" type="text" class="form-control" value="${log.isn }"/> --%>
<!-- </div> -->
<!-- </div> -->
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="referer"></spring:message></label>
<input name="referer" type="text" class="form-control" value="${log.referer }"/>
</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>
<!-- <div class="row"> -->
<!-- </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 cfg_id " isVisible="false" column="cfg_id"><spring:message code="cfg_id"/></th> --%>
<%-- <th class="sort-column service" isVisible="false" column="action"><spring:message code="action"/></th> --%>
<th class="sort-column url" column="URL"> URL </th>
<th class="sort-column referer" column="referer"><spring:message code="referer"/></th>
<th class="sort-column found_time" column="found_time"><spring:message code="found_time"/></th>
<th class="sort-column entrance_id" isVisible="false" column="entrance_id"><spring:message code="entrance_id"/></th>
<%-- <th class="sort-column recv_time" isVisible="false" column="recv_time"><spring:message code="recv_time"/></th> --%>
<%-- <c:if test="${fns:getUser().isAdmin()}"> --%>
<%-- <th class="sort-column req_hdr_key" isVisible="false" column="req_hdr_key"><spring:message code="req_hdr_key"/></th> --%>
<%-- <th class="sort-column req_hdr_file" column="req_hdr_file"><spring:message code="req_hdr_file"/></th> --%>
<%-- <th class="sort-column req_body_key" isVisible="false" column="req_body_key"><spring:message code="req_body_key"/></th> --%>
<%-- </c:if> --%>
<%-- <th class="sort-column req_body_file" isVisible="false" column="req_body_file"><spring:message code="req_body_file"/></th> --%>
<%-- <c:if test="${fns:getUser().isAdmin()}"> --%>
<%-- <th class="sort-column res_hdr_key" isVisible="false" column="res_hdr_key"><spring:message code="res_hdr_key"/></th> --%>
<%-- <th class="sort-column res_hdr_file" column="res_hdr_file"><spring:message code="res_hdr_file"/></th> --%>
<%-- <th class="sort-column res_body_key" isVisible="false" column="res_body_key"><spring:message code="res_body_key"/></th> --%>
<%-- </c:if> --%>
<%-- <th class="sort-column res_body_file" isVisible="false" column="res_body_file"><spring:message code="res_body_file"/></th> --%>
<%-- <th class="sort-column website" column="website"><spring:message code="website"/></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 addr_type" column="addr_type"><spring:message code='addr_type'/></th> --%>
<th class="sort-column d_ip" column="server_ip"><spring:message code="server_ip"/></th>
<th class="sort-column s_ip" column="client_ip"><spring:message code="client_ip"/></th>
<th class="sort-column d_port" column="server_port"><spring:message code="server_port"/></th>
<th class="sort-column s_port" column="client_port"><spring:message code="client_port"/></th>
<%-- <th class="sort-column http_seq" column="http_seq"><spring:message code="http_seq"/></th> --%>
<%-- <th class="sort-column proxy_flag" column="proxy_flag"><spring:message code="proxy_flag"/></th> --%>
<%-- <th class="sort-column isn" column="isn"><spring:message code="isn"/></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_locate" column="server_locate"><spring:message code='server_locate'/></th> --%>
<%-- <th class="sort-column client_locate" column="client_locate"><spring:message code='client_locate'/></th> --%>
<%-- <th class="sort-column s_asn" isVisible="false" column="s_asn"><spring:message code='s_asn'/></th> --%>
<%-- <th class="sort-column d_asn" isVisible="false" column="d_asn"><spring:message code='d_asn'/></th> --%>
<%-- <th class="sort-column s_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> --%>
</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}/ntc/website/ajaxHttpSubList" compileId="${log.cfgId }" ><i class="icon-book-open"></i></a> --%>
<!-- </td> -->
<%-- <td>${log.cfgId }</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.referer}</td>
<td>${log.foundTime }</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.dIp}</td>
<td>${log.sIp}</td>
<td>${log.dPort}</td>
<td>${log.sPort}</td>
<%-- <td>${log.httpSeq}</td> --%>
<%-- <td>${log.proxyFlag}</td> --%>
<%-- <td>${log.isn}</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.recvTime }</td> --%>
<%-- <c:if test="${fns:getUser().isAdmin()}"> --%>
<%-- <td>${log.reqHdrKey }</td> --%>
<!-- <td> -->
<%-- <c:if test="${fn:startsWith(log.reqHdrFile, 'http')}"> --%>
<%-- <a href="${log.reqHdrFile}" data-original-title="${log.reqHdrFile}" target="_blank" --%>
<!-- class="tooltips" data-flag="false" data-html="true" data-placement="top"> -->
<%-- ${fn:substring(log.reqHdrFile,0,20) } --%>
<!-- </a> -->
<%-- </c:if> --%>
<%-- <c:if test="${!fn:startsWith(log.reqHdrFile, 'http') and !empty log.reqHdrFile}"> --%>
<%-- <a href="http://${log.reqHdrFile}" data-original-title="http://${log.reqHdrFile}" target="_blank" --%>
<!-- class="tooltips" data-flag="false" data-html="true" data-placement="top"> -->
<%-- http://${fn:substring(log.reqHdrFile,0,20) } --%>
<!-- </a> -->
<%-- </c:if> --%>
<!-- </td> -->
<%-- <td>${log.reqBodyKey }</td> --%>
<%-- </c:if> --%>
<!-- <td> -->
<%-- <c:if test="${fn:startsWith(log.reqBodyFile, 'http')}"> --%>
<%-- <a href="${log.reqBodyFile}" data-original-title="${log.reqBodyFile}" target="_blank" --%>
<!-- class="tooltips" data-flag="false" data-html="true" data-placement="top"> -->
<%-- ${fn:substring(log.reqBodyFile,0,20) } --%>
<!-- </a> -->
<%-- </c:if> --%>
<%-- <c:if test="${!fn:startsWith(log.reqBodyFile, 'http') and !empty log.reqBodyFile}"> --%>
<%-- <a href="http://${log.reqBodyFile}" data-original-title="http://${log.reqBodyFile}" target="_blank" --%>
<!-- class="tooltips" data-flag="false" data-html="true" data-placement="top"> -->
<%-- http://${fn:substring(log.reqBodyFile,0,20) } --%>
<!-- </a> -->
<%-- </c:if> --%>
<!-- </td> -->
<%-- <c:if test="${fns:getUser().isAdmin()}"> --%>
<%-- <td>${log.resHdrKey }</td> --%>
<!-- <td> -->
<%-- <c:if test="${fn:startsWith(log.resHdrFile, 'http')}"> --%>
<%-- <a href="${log.resHdrFile}" data-original-title="${log.resHdrFile}" target="_blank" --%>
<!-- class="tooltips" data-flag="false" data-html="true" data-placement="top"> -->
<%-- ${fn:substring(log.resHdrFile,0,20) } --%>
<!-- </a> -->
<%-- </c:if> --%>
<%-- <c:if test="${!fn:startsWith(log.resHdrFile, 'http') and !empty log.resHdrFile}"> --%>
<%-- <a href="http://${log.resHdrFile}" data-original-title="http://${log.resHdrFile}" target="_blank" --%>
<!-- class="tooltips" data-flag="false" data-html="true" data-placement="top"> -->
<%-- http://${fn:substring(log.resHdrFile,0,20) } --%>
<!-- </a> -->
<%-- </c:if> --%>
<!-- </td> -->
<%-- <td>${log.resBodyKey }</td> --%>
<%-- </c:if> --%>
<!-- <td> -->
<%-- <c:if test="${fn:startsWith(log.resBodyFile, 'http')}"> --%>
<%-- <a href="${log.resBodyFile}" data-original-title="${log.resBodyFile}" target="_blank" --%>
<!-- class="tooltips" data-flag="false" data-html="true" data-placement="top"> -->
<%-- ${fn:substring(log.resBodyFile,0,20) } --%>
<!-- </a> -->
<%-- </c:if> --%>
<%-- <c:if test="${!fn:startsWith(log.resBodyFile, 'http') and !empty log.resBodyFile}"> --%>
<%-- <a href="http://${log.resBodyFile}" data-original-title="http://${log.resBodyFile}" target="_blank" --%>
<!-- class="tooltips" data-flag="false" data-html="true" data-placement="top"> -->
<%-- http://${fn:substring(log.resBodyFile,0,20) } --%>
<!-- </a> -->
<%-- </c:if> --%>
<!-- </td> -->
<%-- <td>${log.website }</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> -->
<%-- <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>
<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.serverLocate}</td> --%>
<%-- <td>${log.clientLocate}</td> --%>
<%-- <td>${log.sAsn}</td> --%>
<%-- <td>${log.dAsn}</td> --%>
<%-- <td>${log.sSubscribeId}</td> --%>
<%-- <td>${log.dSubscribeId}</td> --%>
<%-- <td>${log.userRegion}</td> --%>
<%-- <c:if test="${fns:getUser().isAdmin()}"><td>${log.sceneFile}</td></c:if> --%>
</tr>
</c:forEach>
</tbody>
</table>
<div class="page">${page}</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@@ -95,7 +95,7 @@
<div class="col-md-12">
<div class="pull-left">
<form:select path="service" class="selectpicker select2 input-small">
<form:option value=""><spring:message code="action"/></form:option>
<%-- <form:option value=""><spring:message code="action"/></form:option> --%>
<c:forEach items="${serviceList}" var="service"
varStatus="satus">
<c:forEach items="${fns:getDictList('SERVICE_ACTION') }" var="dict">

View File

@@ -0,0 +1,381 @@
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/WEB-INF/include/taglib.jsp"%>
<html>
<head>
<title>
IP WHITE<spring:message code="log"></spring:message>
</title>
<script>
$(document).ready(function() {
//reset
$("#resetBtn").on("click",function(){
$("select.selectpicker").each(function(){
$(this).selectpicker('val',$(this).find('option:first').val());
$(this).find("option").attr("selected",false);
$(this).find("option:first").attr("selected",true);
});
$(".Wdate").attr("value",'');
$(':input','#searchForm')
.not(':button,:submit,:reset,:hidden')
.attr("value",'');
$("#searchForm")[0].reset();
});
//筛选功能
filterActionInit();
//异步获取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");
compileId="839066";
// 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}/ntc/iplist/ajaxSubList',
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="ip_whitelist"/>${logSearchUrl}
</h3>
<h5 class="page-header"></h5>
<div class="col-md-12">
<div class="portlet">
<div class="portlet-body">
<div class="row" >
<form:form id="searchForm" modelAttribute="log" action="${ctx}/log/ntc/ipWhiteList/list" method="post" class="form-search">
<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
<input id="functionId" name="functionId" type="hidden" value="${log.functionId}"/>
<input id="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">
<%-- <form:select path="service" class="selectpicker select2 input-small"> --%>
<%-- <%-- <form:option value=""><spring:message code="action"/></form:option> --%>
<%-- <c:forEach items="${serviceList}" var="service" --%>
<%-- varStatus="satus"> --%>
<%-- <c:forEach items="${fns:getDictList('SERVICE_ACTION') }" var="dict"> --%>
<%-- <c:if test="${(dict.itemCode eq service.action) && (service.action ne 128) && (service.action ne 32) && (service.action ne 96) && (service.serviceId ne 37)&& (service.serviceId ne 149) }"> --%>
<%-- <form:option value="${service.serviceId}"><spring:message code="${dict.itemValue}"/></form:option> --%>
<%-- </c:if> --%>
<%-- </c:forEach> --%>
<%-- </c:forEach> --%>
<%-- </form:select> --%>
</div>
<div class="pull-left">
<div class="input-group">
<div class="input-group-btn">
<span class="selectpicker form-control" ><spring:message code="begin_date"/></span>
</div>
<%-- <input name="searchFoundStartTime" id="searchFoundStartTime" type="text" readonly="readonly" maxlength="20" class="form-control Wdate input-medium"
value="${log.searchFoundStartTime}" onclick="WdatePicker({onpicked:setTimee,dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true,maxDate:'#F{$dp.$D(\'searchFoundEndTime\')}'});"/> --%>
<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,'d','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,'d','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/ntc/ipWhiteList/exportIp?type=excel" searchUrl="${ctx}/log/ntc/ipWhiteList/list" id="contentTable" maxRow="10000" label="excel"></sys:delRow></li>
<li><sys:delRow url="${ctx}/log/ntc/ipWhiteList/exportIp?type=csv" searchUrl="${ctx}/log/ntc/ipWhiteList/list" 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="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="row">
<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.dIp }"/>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label><spring:message code="clientip"></spring:message></label>
<input name="sIp" type="text" class="form-control" value="${log.sIp }"/>
</div>
</div>
<%-- <div class="col-md-2">
<div class="form-group">
<label 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="cfgId" type="text" class="form-control logCfgId number" value="${log.cfgId }"/>
</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 cfg_id " isVisible="false" column="cfg_id" ><spring:message code="cfg_id"/></th>
<th class="sort-column service" 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 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 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 addr_type" column="addr_type" ><spring:message code='addr_type'/></th>
<th class="sort-column d_ip" column="server_ip" ><spring:message code="server_ip"/></th>
<th class="sort-column s_ip" column="client_ip" ><spring:message code="client_ip"/></th>
<th class="sort-column d_port" column="server_port" ><spring:message code="server_port"/></th>
<th class="sort-column s_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_locate" column="server_locate" ><spring:message code='server_locate'/></th>
<th class="sort-column client_locate" column="client_locate" ><spring:message code='client_locate'/></th>
<th class="sort-column s_asn" isVisible="false" column="s_asn" ><spring:message code='s_asn'/></th>
<th class="sort-column d_asn" isVisible="false" column="d_asn" ><spring:message code='d_asn'/></th>
<th class="sort-column s_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"><spring:message code='scene_file'/></th></c:if>
</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}/ntc/iplist/ajaxSubList" compileId="${log.cfgId }" ><i class="icon-book-open"></i></a>
</td>
<td>${log.cfgId }</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.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.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>
<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.dIp}</td>
<td >${log.sIp}</td>
<td>${log.dPort }</td>
<td>${log.sPort }</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.serverLocate}</td>
<td>${log.clientLocate}</td>
<td>${log.sAsn}</td>
<td>${log.dAsn}</td>
<td>${log.sSubscribeId}</td>
<td>${log.dSubscribeId}</td>
<%-- <td>${log.userRegion}</td> --%>
<c:if test="${fns:getUser().isAdmin()}"><td>${log.sceneFile}</td></c:if>
</tr>
</c:forEach>
</tbody>
</table>
<div class="page">${page}</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@@ -91,17 +91,17 @@
<!-- 搜索内容与操作按钮栏 -->
<div class="col-md-12">
<div class="pull-left">
<form:select path="service" class="selectpicker select2 input-small">
<form:option value=""><spring:message code="action"/></form:option>
<c:forEach items="${serviceList}" var="service"
varStatus="satus">
<c:forEach items="${fns:getDictList('SERVICE_ACTION') }" var="dict">
<c:if test="${(dict.itemCode eq service.action) && (service.action ne 128) && (service.action ne 32) && (service.action ne 96) }">
<form:option value="${service.serviceId}"><spring:message code="${dict.itemValue}"/></form:option>
</c:if>
</c:forEach>
</c:forEach>
</form:select>
<%-- <form:select path="service" class="selectpicker select2 input-small"> --%>
<%-- <form:option value=""><spring:message code="action"/></form:option> --%>
<%-- <c:forEach items="${serviceList}" var="service" --%>
<%-- varStatus="satus"> --%>
<%-- <c:forEach items="${fns:getDictList('SERVICE_ACTION') }" var="dict"> --%>
<%-- <c:if test="${(dict.itemCode eq service.action) && (service.action ne 128) && (service.action ne 32) && (service.action ne 96) }"> --%>
<%-- <form:option value="${service.serviceId}"><spring:message code="${dict.itemValue}"/></form:option> --%>
<%-- </c:if> --%>
<%-- </c:forEach> --%>
<%-- </c:forEach> --%>
<%-- </form:select> --%>
</div>
<div class="pull-left">
<div class="input-group">

View File

@@ -99,17 +99,17 @@
<!-- 搜索内容与操作按钮栏 -->
<div class="col-md-12">
<div class="pull-left">
<form:select path="service" class="selectpicker select2 input-small">
<form:option value=""><spring:message code="action"/></form:option>
<c:forEach items="${serviceList}" var="service"
varStatus="satus">
<c:forEach items="${fns:getDictList('SERVICE_ACTION') }" var="dict">
<c:if test="${(dict.itemCode eq service.action) && (service.action ne 128) && (service.action ne 32) && (service.action ne 96) }">
<form:option value="${service.serviceId}"><spring:message code="${dict.itemValue}"/></form:option>
</c:if>
</c:forEach>
</c:forEach>
</form:select>
<%-- <form:select path="service" class="selectpicker select2 input-small"> --%>
<%-- <form:option value=""><spring:message code="action"/></form:option> --%>
<%-- <c:forEach items="${serviceList}" var="service" --%>
<%-- varStatus="satus"> --%>
<%-- <c:forEach items="${fns:getDictList('SERVICE_ACTION') }" var="dict"> --%>
<%-- <c:if test="${(dict.itemCode eq service.action) && (service.action ne 128) && (service.action ne 32) && (service.action ne 96) }"> --%>
<%-- <form:option value="${service.serviceId}"><spring:message code="${dict.itemValue}"/></form:option> --%>
<%-- </c:if> --%>
<%-- </c:forEach> --%>
<%-- </c:forEach> --%>
<%-- </form:select> --%>
</div>
<div class="pull-left">
<div class="input-group">