diff --git a/src/main/java/com/nis/domain/configuration/IpReusePolicyCfg.java b/src/main/java/com/nis/domain/configuration/IpReusePolicyCfg.java index a43dae6f0..461b8feea 100644 --- a/src/main/java/com/nis/domain/configuration/IpReusePolicyCfg.java +++ b/src/main/java/com/nis/domain/configuration/IpReusePolicyCfg.java @@ -18,6 +18,11 @@ public class IpReusePolicyCfg extends BaseCfg{ private String userName; private String addrPoolName; // 仅用于列表条件检索 + private Integer ipType; + private Integer ipPattern; + private String srcIpAddress; + private String destIpAddress; + public Integer getUserId() { return userId; } @@ -60,5 +65,29 @@ public class IpReusePolicyCfg extends BaseCfg{ public void setAddrPoolName(String addrPoolName) { this.addrPoolName = addrPoolName; } + public Integer getIpType() { + return ipType; + } + public void setIpType(Integer ipType) { + this.ipType = ipType; + } + public String getSrcIpAddress() { + return srcIpAddress; + } + public void setSrcIpAddress(String srcIpAddress) { + this.srcIpAddress = srcIpAddress; + } + public Integer getIpPattern() { + return ipPattern; + } + public void setIpPattern(Integer ipPattern) { + this.ipPattern = ipPattern; + } + public String getDestIpAddress() { + return destIpAddress; + } + public void setDestIpAddress(String destIpAddress) { + this.destIpAddress = destIpAddress; + } } diff --git a/src/main/java/com/nis/domain/log/IrDnatLog.java b/src/main/java/com/nis/domain/log/IrDnatLog.java new file mode 100644 index 000000000..132c481e2 --- /dev/null +++ b/src/main/java/com/nis/domain/log/IrDnatLog.java @@ -0,0 +1,81 @@ +package com.nis.domain.log; + +public class IrDnatLog extends BaseLogEntity { + + private static final long serialVersionUID = 5860838446015457328L; + + protected String userId;// 用户名 + protected String natIp;// 复用的ip地址 + protected String creatTime;// 链接建立时间 + protected String closeTime;// 链接结束时间 + protected String c2sPktNum;// c2s包数 + protected String s2cPktNum;// s2c包数 + protected String c2sByteNum;// c2s字节数 + protected String s2cByteNum;// s2c字节数 + + + + public String getUserId() { + return userId; + } + public void setUserId(String userId) { + this.userId = userId; + } + public String getNatIp() { + return natIp; + } + public void setNatIp(String natIp) { + this.natIp = natIp; + } + public String getCreatTime() { + return creatTime; + } + public void setCreatTime(String creatTime) { + this.creatTime = creatTime; + } + public String getCloseTime() { + return closeTime; + } + public void setCloseTime(String closeTime) { + this.closeTime = closeTime; + } + public String getC2sPktNum() { + return c2sPktNum; + } + public void setC2sPktNum(String c2sPktNum) { + this.c2sPktNum = c2sPktNum; + } + public String getS2cPktNum() { + return s2cPktNum; + } + public void setS2cPktNum(String s2cPktNum) { + this.s2cPktNum = s2cPktNum; + } + public String getC2sByteNum() { + return c2sByteNum; + } + public void setC2sByteNum(String c2sByteNum) { + this.c2sByteNum = c2sByteNum; + } + public String getS2cByteNum() { + return s2cByteNum; + } + public void setS2cByteNum(String s2cByteNum) { + this.s2cByteNum = s2cByteNum; + } + + + + + + + + + + + + + + + +} diff --git a/src/main/java/com/nis/domain/log/IrSnatLog.java b/src/main/java/com/nis/domain/log/IrSnatLog.java new file mode 100644 index 000000000..5b1fe3e2a --- /dev/null +++ b/src/main/java/com/nis/domain/log/IrSnatLog.java @@ -0,0 +1,73 @@ +package com.nis.domain.log; + +public class IrSnatLog extends BaseLogEntity { + + private static final long serialVersionUID = 5860838446015457328L; + + protected String natIp;// 复用的ip地址 + protected String creatTime;// 链接建立时间 + protected String closeTime;// 链接结束时间 + protected String c2sPktNum;// c2s包数 + protected String s2cPktNum;// s2c包数 + protected String c2sByteNum;// c2s字节数 + protected String s2cByteNum;// s2c字节数 + + + public String getNatIp() { + return natIp; + } + public void setNatIp(String natIp) { + this.natIp = natIp; + } + public String getCreatTime() { + return creatTime; + } + public void setCreatTime(String creatTime) { + this.creatTime = creatTime; + } + public String getCloseTime() { + return closeTime; + } + public void setCloseTime(String closeTime) { + this.closeTime = closeTime; + } + public String getC2sPktNum() { + return c2sPktNum; + } + public void setC2sPktNum(String c2sPktNum) { + this.c2sPktNum = c2sPktNum; + } + public String getS2cPktNum() { + return s2cPktNum; + } + public void setS2cPktNum(String s2cPktNum) { + this.s2cPktNum = s2cPktNum; + } + public String getC2sByteNum() { + return c2sByteNum; + } + public void setC2sByteNum(String c2sByteNum) { + this.c2sByteNum = c2sByteNum; + } + public String getS2cByteNum() { + return s2cByteNum; + } + public void setS2cByteNum(String s2cByteNum) { + this.s2cByteNum = s2cByteNum; + } + + + + + + + + + + + + + + + +} diff --git a/src/main/java/com/nis/util/Constants.java b/src/main/java/com/nis/util/Constants.java index 7b1e95493..acf15c5f5 100644 --- a/src/main/java/com/nis/util/Constants.java +++ b/src/main/java/com/nis/util/Constants.java @@ -699,7 +699,8 @@ public final class Constants { public static final String NTC_RADIUS_REPORT=Configurations.getStringProperty("ntcRadiusReport","ntcRadiusReport"); public static final String TRAFFIC_BANDWIDTH_TRANS=Configurations.getStringProperty("trafficBandwidthTrans","trafficBandwidthTrans"); public static final String TRAFFIC_PROTOCOL_LIST=Configurations.getStringProperty("trafficProtocolList","trafficProtocolList"); - + public static final String TRAFFIC_APP_LIST=Configurations.getStringProperty("trafficAppList","trafficAppList"); + public static final String NTC_ACTION_ENTRANCE_REPORT=Configurations.getStringProperty("ntcActionEntranceReport","ntcActionEntranceReport"); /** * httpclient 工具超时时间设置 */ @@ -757,4 +758,7 @@ public final class Constants { public static final String IP_REUSE_CALL_CGI_URL = Configurations.getStringProperty("ip_reuse_call_cgi_url",""); public static final String ALL_IP_GET = Configurations.getStringProperty("allIpGet","AllIpGet"); public static final String IP_NUM_GET = Configurations.getStringProperty("ipNumGet","IpNumGet"); + //日志查询接口URL + public static final String IR_SNAT_LOG = Configurations.getStringProperty("irSnatLog",""); + public static final String IR_DNAT_LOG = Configurations.getStringProperty("irDnatLog",""); } diff --git a/src/main/java/com/nis/web/controller/configuration/maintenance/IpAddrPoolController.java b/src/main/java/com/nis/web/controller/configuration/maintenance/IpAddrPoolController.java index 8906b2b41..e1e8c47e1 100644 --- a/src/main/java/com/nis/web/controller/configuration/maintenance/IpAddrPoolController.java +++ b/src/main/java/com/nis/web/controller/configuration/maintenance/IpAddrPoolController.java @@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.nis.domain.Page; +import com.nis.domain.basics.IpReuseIpCfg; import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.IpAddrPoolCfg; import com.nis.exceptions.MaatConvertException; @@ -175,5 +176,12 @@ public class IpAddrPoolController extends BaseController{ resultMap=ConfigServiceUtil.getCGIInfo(url, cmd, params); return resultMap; } + + @ResponseBody + @RequestMapping(value = {"/getAllIpInfo"}) + public List getAllIpInfo(Integer addrPoolId,HttpServletRequest request,HttpServletResponse response){ + List ipList = ipReuseIpCfgService.getPolicyIpInfo(addrPoolId); + return ipList; + } } diff --git a/src/main/java/com/nis/web/controller/dashboard/TrafficStatisticsInfoController.java b/src/main/java/com/nis/web/controller/dashboard/TrafficStatisticsInfoController.java index 632279c36..b0f32f98f 100644 --- a/src/main/java/com/nis/web/controller/dashboard/TrafficStatisticsInfoController.java +++ b/src/main/java/com/nis/web/controller/dashboard/TrafficStatisticsInfoController.java @@ -106,6 +106,37 @@ public class TrafficStatisticsInfoController extends BaseController { public String bandwidthList( HttpServletRequest request, HttpServletResponse response, Model model){ return "/dashboard/trafficBandwidthList"; } + /** + * 流量统计滚动动作查看详情页面 + */ + @RequestMapping(value={"trafficBlockList","trafficMonitorList"}) + public String serviceBlockList(@RequestParam("searchAction")String searchAction,HttpServletRequest request, HttpServletResponse response, Model model){ + model.addAttribute("searchAction", searchAction); + return "/dashboard/trafficActionTransList"; + } + /** + * 根据动作查询entrance趋势 间隔5分钟数据 + */ + @RequestMapping(value="actionEntranceTrans") + @ResponseBody + public List actionTrans(@RequestParam("searchAction")String searchAction){ + Map fromJsonList = new HashMap(); + List resultList = new ArrayList(); + String url = Constants.DASHBOARD_URL+Constants.NTC_ACTION_ENTRANCE_REPORT; + url=url+"?searchAction="+searchAction; + try { + String string = HttpClientUtil.get(url); + Gson gson = new GsonBuilder().create(); + fromJsonList = gson.fromJson(string, new TypeToken(){}.getType()); + logger.info(searchAction+"动作间隔5分钟数据"+fromJsonList); + resultList = (ArrayList) fromJsonList.get("data"); + } catch (Exception e) { + e.printStackTrace(); + logger.error(searchAction+"动作详情数据获取错误"+e); + resultList.add(Maps.newHashMap("error","request_service_failed")); + } + return resultList; + } /** * 根据ip46,协议tcp,udp查询带宽 间隔5分钟数据 */ @@ -190,5 +221,57 @@ public class TrafficStatisticsInfoController extends BaseController { } return list; } - + /** + * App类型详细列表 + */ + @RequestMapping(value="appTypeList") + public String appTypeList(){ + return "/dashboard/trafficAppTypeList"; + } + /** + * 协议详情统计图跟表 + */ + @RequestMapping(value="appList") + @ResponseBody + public List appList(){ + Map fromJsonList = new HashMap(); + List list = new ArrayList(); + String url = Constants.DASHBOARD_URL+Constants.TRAFFIC_APP_LIST; + try { + String string = HttpClientUtil.get(url); + Gson gson = new GsonBuilder().create(); + fromJsonList = gson.fromJson(string, new TypeToken(){}.getType()); + logger.info("app详情5分钟数据"+fromJsonList); + list = (ArrayList) fromJsonList.get("data"); + Long totalLink=0l; + Long totalPackets=0l; + Double totalGByte=0d; + DecimalFormat lf = new DecimalFormat("0"); + DecimalFormat df = new DecimalFormat("0.00000000"); + if(!StringUtil.isEmpty(list)){ + for (Object object : list) { + Map m=(Map) object; + totalGByte+=Double.parseDouble(m.get("GByte").toString()); +// String linkNum = df.format(m.get("linkNum")); + m.put("GByte", df.format(m.get("GByte"))); + m.put("packets", lf.format(m.get("packets"))); + m.put("linkNum", lf.format(m.get("linkNum"))); + totalLink+=Long.parseLong( m.get("linkNum").toString()); + totalPackets+=Long.parseLong(m.get("packets").toString()); + } + for (Object object : list) { + Map m=(Map) object; + m.put("totalLink", totalLink); + m.put("totalPackets", totalPackets); + m.put("totalGByte", totalGByte); + } + } + + } catch (Exception e) { + e.printStackTrace(); + logger.error("app详情数据获取错误"+e); + list.add(Maps.newHashMap("error","request_service_failed")); + } + return list; + } } diff --git a/src/main/java/com/nis/web/controller/log/ntc/IrDnatLogController.java b/src/main/java/com/nis/web/controller/log/ntc/IrDnatLogController.java new file mode 100644 index 000000000..e8ab01909 --- /dev/null +++ b/src/main/java/com/nis/web/controller/log/ntc/IrDnatLogController.java @@ -0,0 +1,70 @@ +package com.nis.web.controller.log.ntc; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; +import com.nis.domain.FunctionServiceDict; +import com.nis.domain.PageLog; +import com.nis.domain.log.IrDnatLog; +import com.nis.domain.maat.LogRecvData; +import com.nis.util.Constants; +import com.nis.util.DictUtils; +import com.nis.util.httpclient.HttpClientUtil; +import com.nis.web.controller.BaseController; + +@Controller +@RequestMapping("${adminPath}/log/ntc/irDnatLogs") +public class IrDnatLogController extends BaseController { + + @RequestMapping(value = {"list", ""}) + public String list(@ModelAttribute("log") IrDnatLog log, Model model, HttpServletRequest request, HttpServletResponse response) { + try { + PageLog page = new PageLog(request, response); + Map params = new HashMap(); + params.put("pageSize", page.getPageSize()); + params.put("pageNo", page.getPageNo()); + initLogSearchValue(log, params); + + List serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId()); + model.addAttribute("serviceList", serviceList); + + String url = Constants.LOG_BASE_URL + Constants.IR_DNAT_LOG; + String recv = HttpClientUtil.getMsg(url, params, request); + + + logger.info("查询结果:" + recv); + if (StringUtils.isNotBlank(recv)) { + Gson gson = new GsonBuilder().create(); + LogRecvData fromJson = gson.fromJson(recv, new TypeToken>(){}.getType()); + if (fromJson.getStatus().intValue() == 200) { + page.setCount(fromJson.getData().getCount());page.setList(fromJson.getData().getList()); + List list = page.getList(); + for (IrDnatLog 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/irDnatLogList"; + } + +} diff --git a/src/main/java/com/nis/web/controller/log/ntc/IrSnatLogController.java b/src/main/java/com/nis/web/controller/log/ntc/IrSnatLogController.java new file mode 100644 index 000000000..967bc9e13 --- /dev/null +++ b/src/main/java/com/nis/web/controller/log/ntc/IrSnatLogController.java @@ -0,0 +1,70 @@ +package com.nis.web.controller.log.ntc; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; +import com.nis.domain.FunctionServiceDict; +import com.nis.domain.PageLog; +import com.nis.domain.log.IrSnatLog; +import com.nis.domain.maat.LogRecvData; +import com.nis.util.Constants; +import com.nis.util.DictUtils; +import com.nis.util.httpclient.HttpClientUtil; +import com.nis.web.controller.BaseController; + +@Controller +@RequestMapping("${adminPath}/log/ntc/irSnatLogs") +public class IrSnatLogController extends BaseController { + + @RequestMapping(value = {"list", ""}) + public String list(@ModelAttribute("log") IrSnatLog log, Model model, HttpServletRequest request, HttpServletResponse response) { + try { + PageLog page = new PageLog(request, response); + Map params = new HashMap(); + params.put("pageSize", page.getPageSize()); + params.put("pageNo", page.getPageNo()); + initLogSearchValue(log, params); + + List serviceList = DictUtils.getFunctionServiceDictList(log.getFunctionId()); + model.addAttribute("serviceList", serviceList); + + String url = Constants.LOG_BASE_URL + Constants.IR_SNAT_LOG; + String recv = HttpClientUtil.getMsg(url, params, request); + + + logger.info("查询结果:" + recv); + if (StringUtils.isNotBlank(recv)) { + Gson gson = new GsonBuilder().create(); + LogRecvData fromJson = gson.fromJson(recv, new TypeToken>(){}.getType()); + if (fromJson.getStatus().intValue() == 200) { + page.setCount(fromJson.getData().getCount());page.setList(fromJson.getData().getList()); + List list = page.getList(); + for (IrSnatLog 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/irSnatLogList"; + } + +} diff --git a/src/main/java/com/nis/web/dao/basics/IpReuseIpCfgDao.java b/src/main/java/com/nis/web/dao/basics/IpReuseIpCfgDao.java index 9923e0c0d..d21ece4bd 100644 --- a/src/main/java/com/nis/web/dao/basics/IpReuseIpCfgDao.java +++ b/src/main/java/com/nis/web/dao/basics/IpReuseIpCfgDao.java @@ -14,4 +14,5 @@ public interface IpReuseIpCfgDao extends CrudDao { List findPage(IpReuseIpCfg userIpCfg); IpReuseIpCfg getUserIpCfg(Long cfgId); IpReuseIpCfg getIpByIp(String destIpAddress); + List getPolicyIpInfo(@Param("addrPoolId")Integer addrPoolId); } diff --git a/src/main/java/com/nis/web/dao/basics/IpReuseIpCfgDao.xml b/src/main/java/com/nis/web/dao/basics/IpReuseIpCfgDao.xml index cecd2ccd8..d75bef443 100644 --- a/src/main/java/com/nis/web/dao/basics/IpReuseIpCfgDao.xml +++ b/src/main/java/com/nis/web/dao/basics/IpReuseIpCfgDao.xml @@ -182,6 +182,15 @@ where r.is_valid !=-1 and r.cfg_id=#{cfgId} + + insert into ip_reuse_ip_cfg ( CFG_DESC, diff --git a/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.java b/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.java index 21aeb7b6c..29d1f222f 100644 --- a/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.java +++ b/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.java @@ -25,4 +25,6 @@ public interface IpMultiplexDao extends CrudDao{ // 校验地址池是否被引用 List checkAddrPoolIsUsed(@Param("addrPoolId")String addrPoolId); + void updatePolicyAuditStatus(IpReusePolicyCfg cfg); + } diff --git a/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.xml b/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.xml index be141427b..6e39f9f08 100644 --- a/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.xml +++ b/src/main/java/com/nis/web/dao/configuration/IpMultiplexDao.xml @@ -8,7 +8,10 @@ - + + + + @@ -38,7 +41,7 @@ - r.CFG_ID,r.CFG_DESC,r.ADDR_POOL_ID,r.USER_NAME,r.USER_TYPE, + r.CFG_ID,r.CFG_DESC,r.ADDR_POOL_ID,r.USER_NAME,r.USER_TYPE,r.IP_TYPE,r.IP_PATTERN,r.SRC_IP_ADDRESS, r.ACTION,r.DO_LOG,r.IS_VALID,r.IS_AUDIT,r.CFG_REGION_CODE,r.CFG_TYPE,r.FUNCTION_ID, r.SERVICE_ID,r.COMPILE_ID,r.REQUEST_ID,r.CLASSIFY,r.ATTRIBUTE,r.LABLE, r.CREATOR_ID,r.CREATE_TIME,r.EDITOR_ID,r.EDIT_TIME,r.AUDITOR_ID,r.AUDIT_TIME, @@ -75,13 +78,15 @@ AND r.compile_id=#{compileId,jdbcType=BIGINT} - - AND r.user_id in (SELECT u.id FROM user_manage u - - u.user_name LIKE concat(concat('%',#{userName,jdbcType=VARCHAR}),'%') - - ) + + AND r.src_ip_address=#{srcIpAddress,jdbcType=VARCHAR} + + AND r.user_type=#{userType,jdbcType=VARCHAR} + + + AND r.user_name LIKE concat(concat('%',#{userName,jdbcType=VARCHAR}),'%') + AND r.addr_pool_id in (SELECT i.cfg_id FROM ip_reuse_addr_pool i @@ -173,6 +178,9 @@ addr_pool_id, user_name, user_type, + ip_type, + ip_pattern, + src_ip_address, action, do_log, is_valid, @@ -204,6 +212,9 @@ #{addrPoolId,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{userType,jdbcType=VARCHAR}, + #{ipType,jdbcType=INTEGER}, + #{ipPattern,jdbcType=INTEGER}, + #{srcIpAddress,jdbcType=VARCHAR}, #{action,jdbcType=INTEGER}, #{doLog,jdbcType=INTEGER}, 0, @@ -246,7 +257,7 @@ update ip_reuse_policy_cfg - + user_name = #{userName,jdbcType=VARCHAR}, @@ -258,6 +269,15 @@ addr_pool_id = #{addrPoolId,jdbcType=INTEGER}, + + ip_type = #{ipType,jdbcType=INTEGER}, + + ip_pattern=#{ipPattern,jdbcType=INTEGER}, + + + src_ip_address=#{srcIpAddress,jdbcType=VARCHAR}, + translate_param = #{translateParam,jdbcType=VARCHAR}, @@ -312,6 +332,28 @@ + + update ip_reuse_policy_cfg + + + + is_valid = #{isValid,jdbcType=INTEGER}, + + + is_audit = #{isAudit,jdbcType=INTEGER}, + + + auditor_id = #{auditorId,jdbcType=INTEGER}, + + + audit_time = #{auditTime,jdbcType=TIMESTAMP}, + + + + WHERE cfg_id = #{cfgId,jdbcType=BIGINT} + + + + + -
+
- +
@@ -174,18 +209,90 @@ $(function(){
+
-
- +
+
- +
-
+
-
+
+ + +
+ +
+ + +
+ +
+
+
+ +
+ +
+
+
+
@@ -204,6 +311,7 @@ $(function(){
+ <%--
<%@include file="/WEB-INF/include/form/areaInfo.jsp"%> --%>
<%@include file="/WEB-INF/include/form/basicInfo.jsp" %> diff --git a/src/main/webapp/WEB-INF/views/cfg/manipulation/ipmulitiplex/snatPolicyList2.jsp b/src/main/webapp/WEB-INF/views/cfg/manipulation/ipmulitiplex/snatPolicyList2.jsp index c391c8551..68f910199 100644 --- a/src/main/webapp/WEB-INF/views/cfg/manipulation/ipmulitiplex/snatPolicyList2.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/manipulation/ipmulitiplex/snatPolicyList2.jsp @@ -13,15 +13,40 @@ $("#intype").val("${cfg.addrPoolName}"); }else if("${cfg.userName}"){ $("#intype").val("${cfg.userName}"); + }else if("${cfg.srcIpAddress}"){ + $("#intype").val("${cfg.srcIpAddress}"); }else if("${cfg.compileId}"){ $("#intype").val("${cfg.compileId}"); }else{ $("#intype").attr("placeholder"," "+$("#seltype").find("option:selected").text()); } + + // 处理用户类型检索条件 + if($("#seltype").val() == "userType"){ + $("#intype").hide();// 隐藏输入框 + $("#isValid").selectpicker("hide"); + }else{ + $("#userType").selectpicker("hide"); + } $("#seltype").change(function(){ + if($(this).val() == "userType"){ + $("#intype").hide();// 隐藏输入框 + $("#intype").val("");// 清空input条件 + $("#userType").find("option").removeAttr("selected",false); + $("#userType").selectpicker("refresh"); + $("#userType").selectpicker("show"); + $("#isValid").selectpicker("hide"); + }else if($(this).val() == "isValid"){ + $("#userType").find("option:first").attr("selected",true); + $("#userType").selectpicker("hide"); + }else{ + $("#userType").find("option:first").attr("selected",true); + $("#userType").selectpicker("hide");// 隐藏下拉框 + } $("#intype").attr("placeholder"," "+$(this).find("option:selected").text()); }); - //筛选功能初始化 + + //筛选功能初始化 filterActionInit(); $("#isAudit").change(function(){ page(); @@ -97,8 +122,10 @@ - + + + @@ -112,6 +139,12 @@ + + + + + + @@ -281,7 +314,9 @@ + + <%-- --%> @@ -315,6 +350,17 @@ + + + + + + + + + + + @@ -322,6 +368,7 @@ + ${indexCfg.srcIpAddress } <%-- diff --git a/src/main/webapp/WEB-INF/views/dashboard/dashBoardIndex.jsp b/src/main/webapp/WEB-INF/views/dashboard/dashBoardIndex.jsp index 955af296f..97000d781 100644 --- a/src/main/webapp/WEB-INF/views/dashboard/dashBoardIndex.jsp +++ b/src/main/webapp/WEB-INF/views/dashboard/dashBoardIndex.jsp @@ -37,8 +37,8 @@

-

In 0 | Out 0

@@ -47,7 +47,7 @@

@@ -56,7 +56,7 @@

-

0

+

0

@@ -65,15 +65,13 @@
- +
-
-

" class="tooltips" data-flag="false" data-html="true" data-placement="top">

-

0

+

0

@@ -232,7 +230,7 @@
-    +   
diff --git a/src/main/webapp/WEB-INF/views/dashboard/trafficActionTransList.jsp b/src/main/webapp/WEB-INF/views/dashboard/trafficActionTransList.jsp new file mode 100644 index 000000000..6e39b688b --- /dev/null +++ b/src/main/webapp/WEB-INF/views/dashboard/trafficActionTransList.jsp @@ -0,0 +1,110 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + <spring:message code="traffic_ip_active"></spring:message> + + + + + +
+ +

+ +

+ +
+ + + +
+ + + + +<%-- --%> + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/dashboard/trafficAppTypeList.jsp b/src/main/webapp/WEB-INF/views/dashboard/trafficAppTypeList.jsp new file mode 100644 index 000000000..4d4a30d30 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/dashboard/trafficAppTypeList.jsp @@ -0,0 +1,297 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + +app类型 + + + + + + + + + +
+ +

+ +

+ +
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + +
() () ()
+
+
  
+
+
+ + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/dashboard/trafficBandwidthList.jsp b/src/main/webapp/WEB-INF/views/dashboard/trafficBandwidthList.jsp index 613efdaf7..cbd56d28d 100644 --- a/src/main/webapp/WEB-INF/views/dashboard/trafficBandwidthList.jsp +++ b/src/main/webapp/WEB-INF/views/dashboard/trafficBandwidthList.jsp @@ -17,7 +17,7 @@

- +

@@ -115,7 +115,6 @@ function rankItemChanged(addrType,transType){ }, error: function(data, textStatus, errorThrown){ closeTip(); -// warning_prompt("获取实时列表数据失败!",1500); }, complete:function(XMLHttpRequest,status){//超时设置 closeTip(); diff --git a/src/main/webapp/WEB-INF/views/log/ntc/irDnatLogList.jsp b/src/main/webapp/WEB-INF/views/log/ntc/irDnatLogList.jsp new file mode 100644 index 000000000..e67ca4fb0 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/log/ntc/irDnatLogList.jsp @@ -0,0 +1,355 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + IP<spring:message code="log"></spring:message> + + + + + +
+ +

+ +

+ +
+
+
+
+ + + + + + + + + +
+
+ + + + + + + + + + +
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + +
+
+ +
+
+ + + + + + + +
+
+ +
+
+ + + + + + + +
+
+ +
+
+ + +
+
+ +
+
+ + +
+
+ +
+
+ + +
+
+
+
+
+ + +
+
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ <%-- --%> + + ${log.cfgId } + + + + + + ${log.foundTime }${log.recvTime } + + + + + + ${log.natIp }${log.creatTime }${log.closeTime }${log.c2sPktNum }${log.s2cPktNum }${log.c2sByteNum }${log.s2cByteNum }${fns:abbr(log.capIp, 42)} + + + + + + + + + + ${fns:abbr(log.dIp, 42)}${fns:abbr(log.sIp, 42)}${log.dPort }${log.sPort } + + + + + + + + + + + + + + + + ${log.innerSmac }${log.innerDmac } + + ${streamType.itemValue} + + ${log.addrList }${log.serverLocate}${log.clientLocate}${log.sAsn}${log.dAsn}${log.sSubscribeId}${log.dSubscribeId}${log.userRegion}${log.sceneFile}
+
${page}
+
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/log/ntc/irSnatLogList.jsp b/src/main/webapp/WEB-INF/views/log/ntc/irSnatLogList.jsp new file mode 100644 index 000000000..9b7fbf723 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/log/ntc/irSnatLogList.jsp @@ -0,0 +1,354 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + IP<spring:message code="log"></spring:message> + + + + + +
+ +

+ +

+ +
+
+
+
+ + + + + + + + + +
+
+ + + + + + + + + + +
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+ + + +
+ +
+ + + +
+
+
+
+ + + + + + + +
+
+ +
+
+ + + + + + + +
+
+ +
+
+ + + + + + + +
+
+ +
+
+ + +
+
+ +
+
+ + +
+
+ +
+
+ + +
+
+
+
+
+ + +
+
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ <%-- --%> + + ${log.cfgId } + + + + + + ${log.foundTime }${log.recvTime } + + + + + + ${log.natIp }${log.creatTime }${log.closeTime }${log.c2sPktNum }${log.s2cPktNum }${log.c2sByteNum }${log.s2cByteNum }${fns:abbr(log.capIp, 42)} + + + + + + + + + + ${fns:abbr(log.dIp, 42)}${fns:abbr(log.sIp, 42)}${log.dPort }${log.sPort } + + + + + + + + + + + + + + + + ${log.innerSmac }${log.innerDmac } + + ${streamType.itemValue} + + ${log.addrList }${log.serverLocate}${log.clientLocate}${log.sAsn}${log.dAsn}${log.sSubscribeId}${log.dSubscribeId}${log.userRegion}${log.sceneFile}
+
${page}
+
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/report/list.jsp b/src/main/webapp/WEB-INF/views/report/list.jsp index 03280ed1b..73e590569 100644 --- a/src/main/webapp/WEB-INF/views/report/list.jsp +++ b/src/main/webapp/WEB-INF/views/report/list.jsp @@ -290,7 +290,7 @@ function customColumnClick(){ } */ for (var i = 1; i < rows.length; i++) { for (var j = s; j div.info_1 p:nth-child(2){ @@ -186,6 +186,14 @@ p{ margin-top: 1px; margin-left: 0px; } +.data_content .data_info>div.info_1 .fl_fc .numberRun1{ + width:100%; + font-weight: 600; + font-size: 16px; + color:#288dce; + margin-top: 33px; + margin-left: 0px; +} .data_content .data_info>div.info_1 .fl_fc .numberRun4-unit{ font-weight: 500; font-size: 16px; diff --git a/src/main/webapp/static/pages/scripts/echart.js b/src/main/webapp/static/pages/scripts/echart.js index 66934ede5..539190487 100644 --- a/src/main/webapp/static/pages/scripts/echart.js +++ b/src/main/webapp/static/pages/scripts/echart.js @@ -4,13 +4,17 @@ function echart_1(rs) { var data=new Array(); var drillData=new Array(); + var unit="bytes"; $(rs).each(function(i, d) { + var inoctetsNum=d.count; + unit=changeUnit(inoctetsNum); + inoctetsNum=changeNum(inoctetsNum); var pktNum=new Array(); var byteLen=new Array(); //协议图-操作系统 data.push({ name: d.protoType, - y: parseInt(d.count), + y: parseFloat(inoctetsNum), // drilldown: d.protoType, }); @@ -69,12 +73,14 @@ title: { text: null }, - tool: { + /*tool: { enabled: true, - headerFormat: '{point.key}: {point.percentage:.1f}%
', - pointFormat: '{series.name}: {point.y}', - shared: true, - useHTML: true +// headerFormat: '{point.key}- {point.percentage:.1f}%'+unit, + pointFormat: '{series.name} {point.y}'+unit, + },*/ + tooltip: { + headerFormat: '{series.name}
', + pointFormat: '{point.name}
{point.y}
'+unit }, credits:{//是否有highcharts水印 enabled:false @@ -152,7 +158,7 @@ series: [{ type: 'pie', innerSize: '70%',//圆环的大小 - name: 'bytes', + name: ' ', data: data }], // drilldown:{ @@ -188,21 +194,25 @@ var data=new Array(); var xData=new Array(); var drillData=new Array(); + var unit="bytes"; $(rs).each(function(i, d) { - var pktNum=new Array(); - var byteLen=new Array(); + var inoctetsNum=d.linkNum; + unit=changeUnit(inoctetsNum); + inoctetsNum=changeNum(inoctetsNum); + /*var pktNum=new Array(); + var byteLen=new Array();*/ xData.push(d.ipAddr); //活跃IP图 data.push({ name: d.ipAddr, - y: parseInt(d.linkNum), + y: parseFloat(inoctetsNum), // drilldown: d.ipAddr, }); - pktNum[0]="pktNum"; + /*pktNum[0]="pktNum"; pktNum[1]=parseInt(d.pktNum); byteLen[0]="byteLen"; - byteLen[1]=parseInt(d.byteLen); - drillData.push({ + byteLen[1]=parseInt(d.byteLen);*/ + /*drillData.push({ name: d.ipAddr, id: d.ipAddr, type:'pie', @@ -211,7 +221,7 @@ pointFormat: '{series.name}: {point.y} ({point.percentage:.1f}%)' }, data: [pktNum,byteLen], - }); + });*/ }); var chart = Highcharts.chart('chart_main', { chart: { @@ -285,7 +295,7 @@ yAxis: { min: 0, title: { - text: 'bytes', + text: unit, align:'high', style: {//设置字体颜色 color: '#fff', @@ -304,9 +314,9 @@ }, tooltip: { -// valueSuffix: ' 单位' - }, - + headerFormat: '{series.name}
', + pointFormat: '{point.name}
{point.y}
'+unit + }, plotOptions: { bar: { dataLabels: { @@ -327,7 +337,7 @@ enabled:false }, series: [{ - name: 'bytes', + name: ' ', colorByPoint: true, data: data }], @@ -350,23 +360,59 @@ // } }); } - + function changeNum(inoctetsNum){ + // 变化单位 + var inoctetsNumK=inoctetsNum/1024; + var inoctetsNumM=inoctetsNumK/1024; + var inoctetsNumG=inoctetsNumM/1024; + if(inoctetsNumK>1){ + inoctetsNum=inoctetsNumK; + }; + if(inoctetsNumM>1){ + inoctetsNum=inoctetsNumM; + }; + if(inoctetsNumG>1){ + inoctetsNum=inoctetsNumG; + }; + inoctetsNum=inoctetsNum.toFixed(1) + return inoctetsNum; + } + function changeUnit(inoctetsNum){ + // 变化单位 + var unit="bytes"; + var inoctetsNumK=inoctetsNum/1024; + var inoctetsNumM=inoctetsNumK/1024; + var inoctetsNumG=inoctetsNumM/1024; + if(inoctetsNumK>1){ + unit="KB"; + }; + if(inoctetsNumM>1){ + unit="MB"; + }; + if(inoctetsNumG>1){ + unit="GB"; + }; + return unit + } //app应用类型统计 echart_3 function echart_3(rs) { var data=new Array(); var xData=new Array(); var drillData=new Array(); + var unit="bytes"; $(rs).each(function(i, d) { + var inoctetsNum=d.count; + unit=changeUnit(inoctetsNum); + inoctetsNum=changeNum(inoctetsNum); var pktNum=new Array(); var byteLen=new Array(); xData.push(d.appType); - //活跃IP图 data.push({ name: d.appType, - y: parseInt(d.count), + y: parseFloat(inoctetsNum), // drilldown: d.appType, }); - pktNum[0]="pktNum"; +/* pktNum[0]="pktNum"; pktNum[1]=parseInt(d.pktNum); byteLen[0]="byteLen"; byteLen[1]=parseInt(d.byteLen); @@ -374,7 +420,7 @@ name: d.appType, id: d.appType, data: [pktNum,byteLen], - }); + });*/ }); var chart = Highcharts.chart('chart_3',{ chart: { @@ -437,7 +483,7 @@ yAxis: { min: 0, title: { - text: 'bytes', + text: unit, align:'high', style: {//设置字体颜色 color: '#fff', @@ -457,7 +503,7 @@ tooltip: { enabled: true, headerFormat: '{point.key}
', - pointFormat: '{series.name}: {point.y}', + pointFormat: '{point.y:.1f} '+unit, shared: true, useHTML: true }, @@ -479,7 +525,7 @@ }, series: [{ - name: 'bytes', + name: '', colorByPoint: true, data: data }], @@ -502,20 +548,24 @@ }*/ }); } - //终端用户 分操作系统与浏览器 + //终端用户 分操作系统 function echart_2(rs){ var data=new Array(); var drillData=new Array(); + var unit="bytes"; $(rs).each(function(i, d) { - var pktNum=new Array(); - var byteLen=new Array(); + var inoctetsNum=d.count; + unit=changeUnit(inoctetsNum); + inoctetsNum=changeNum(inoctetsNum); +// var pktNum=new Array(); +// var byteLen=new Array(); data.push({ name: d.osType, - y: parseInt(d.count), + y: parseFloat(inoctetsNum), // drilldown: d.osType, }); - pktNum[0]="pktNum"; +/* pktNum[0]="pktNum"; pktNum[1]=parseInt(d.pktNum); byteLen[0]="byteLen"; byteLen[1]=parseInt(d.byteLen); @@ -525,7 +575,7 @@ function echart_2(rs){ id: d.osType, type:'pie', data: [pktNum,byteLen], - }); + });*/ }); // 创建图例 @@ -616,12 +666,12 @@ function echart_2(rs){ tooltip: { enabled: true, headerFormat: '{point.key}: {point.percentage:.1f}%
', - pointFormat: '{series.name}: {point.y}', + pointFormat: '{point.y} '+unit, shared: true, useHTML: true }, series: [{ - name: 'bytes', + name: ' ', colorByPoint: true, data: data }], @@ -648,17 +698,21 @@ function echart_2(rs){ function echart_5(rs){ var data=new Array(); var drillData=new Array(); + var unit="bytes"; $(rs).each(function(i, d) { - var pktNum=new Array(); - var byteLen=new Array(); + var inoctetsNum=d.count; + unit=changeUnit(inoctetsNum); + inoctetsNum=changeNum(inoctetsNum); +// var pktNum=new Array(); +// var byteLen=new Array(); //协议图-操作系统 data.push({ name: d.bsType, - y: parseInt(d.count), + y: parseFloat(inoctetsNum), // drilldown: d.bsType, }); - pktNum[0]="pktNum"; +/* pktNum[0]="pktNum"; pktNum[1]=parseInt(d.pktNum); byteLen[0]="byteLen"; byteLen[1]=parseInt(d.byteLen); @@ -668,7 +722,7 @@ function echart_5(rs){ id: d.bsType, type:'pie', data: [pktNum,byteLen], - }); + });*/ }); // 创建图例 @@ -760,12 +814,12 @@ function echart_5(rs){ tooltip: { enabled: true, headerFormat: '{point.key}: {point.percentage:.1f}%
', - pointFormat: '{series.name}: {point.y}', + pointFormat: '{point.y} '+unit, shared: true, useHTML: true }, series: [{ - name: 'bytes', + name: ' ', colorByPoint: true, data: data }], @@ -792,17 +846,21 @@ function echart_5(rs){ //网站流量分析 function echart_4(rs){ var data=new Array(); - var drillData=new Array(); +// var drillData=new Array(); + var unit="bytes"; $(rs).each(function(i, d) { - var pktNum=new Array(); - var byteLen=new Array(); + var inoctetsNum=d.count; + unit=changeUnit(inoctetsNum); + inoctetsNum=changeNum(inoctetsNum); +// var pktNum=new Array(); +// var byteLen=new Array(); data.push({ name: d.websiteService, - y: parseInt(d.count), + y: parseFloat(inoctetsNum), // drilldown: d.websiteService, }); - pktNum[0]="pktNum"; +/* pktNum[0]="pktNum"; pktNum[1]=parseInt(d.pktNum); byteLen[0]="byteLen"; byteLen[1]=parseInt(d.byteLen); @@ -812,7 +870,7 @@ function echart_4(rs){ id: d.websiteService, type:'pie', data: [pktNum,byteLen], - }); + });*/ }); // 创建图例 @@ -895,15 +953,15 @@ function echart_4(rs){ fontFamily:'Microsoft YaHei', } }, - tooltip: { + tooltip: { enabled: true, headerFormat: '{point.key}: {point.percentage:.1f}%
', - pointFormat: '{series.name}: {point.y}', + pointFormat: '{point.y} '+unit, shared: true, useHTML: true }, series: [{ - name: 'bytes', + name: ' ', colorByPoint: true, data: data, }], @@ -929,18 +987,22 @@ function echart_4(rs){ //网站流量分析-点击列表显示网站分类 function echart_6(rs){ var data=new Array(); - var drillData=new Array(); +// var drillData=new Array(); + var unit="bytes"; $(rs).each(function(i, d) { - var pktNum=new Array(); - var byteLen=new Array(); + var inoctetsNum=d.count; + unit=changeUnit(inoctetsNum); + inoctetsNum=changeNum(inoctetsNum); +// var pktNum=new Array(); +// var byteLen=new Array(); //协议图-操作系统 data.push({ name: d.domain, - y: parseInt(d.count), + y: parseFloat(inoctetsNum), // drilldown: d.domain, }); - pktNum[0]="pktNum"; +/* pktNum[0]="pktNum"; pktNum[1]=parseInt(d.pktNum); byteLen[0]="byteLen"; byteLen[1]=parseInt(d.byteLen); @@ -950,7 +1012,7 @@ function echart_6(rs){ id: d.domain, type:'pie', data: [pktNum,byteLen], - }); + });*/ }); // 创建图例 @@ -1033,15 +1095,15 @@ function echart_6(rs){ fontFamily:'Microsoft YaHei', } }, - tooltip: { + tooltip: { enabled: true, headerFormat: '{point.key}: {point.percentage:.1f}%
', - pointFormat: '{series.name}: {point.y}', + pointFormat: '{point.y} '+unit, shared: true, useHTML: true }, series: [{ - name: 'bytes', + name: ' ', colorByPoint: true, data: data, }], @@ -1070,21 +1132,27 @@ function echart_topic_domain(rs){ 'parent': '', 'name': 'TOPIC' }]; - + var unit="bytes"; $(rs).each(function(i,d){ + var inoctetsNum=d.count; + unit=changeUnit(inoctetsNum); + inoctetsNum=changeNum(inoctetsNum); data.push({ 'id': '1.'+d.topicId, 'parent': '0.0', 'name': d.topic, - 'value':d.count + 'value':parseFloat(inoctetsNum) }); /****主题中的子域名*******/ $(d.domainData).each(function(j,t){ + var domainNum=d.count; + unit=changeUnit(domainNum); + domainNum=changeNum(domainNum); data.push({ 'id': '2.'+t.webId, 'parent': '1.'+d.topicId, 'name': t.domain, - 'value':t.count + 'value':parseFloat(domainNum) }); }) @@ -1186,7 +1254,7 @@ function echart_topic_domain(rs){ }], tooltip: { headerFormat: "", - pointFormat: '{point.name}: {point.value}' + pointFormat: '{point.name} : {point.value} ' +unit } }); }