diff --git a/src/main/java/com/nis/domain/report/NtcAsnRecord.java b/src/main/java/com/nis/domain/report/NtcAsnRecord.java new file mode 100644 index 000000000..c7aab2dc0 --- /dev/null +++ b/src/main/java/com/nis/domain/report/NtcAsnRecord.java @@ -0,0 +1,31 @@ +package com.nis.domain.report; + +import com.nis.domain.log.BaseLogEntity; +import com.nis.util.excel.ExcelField; + +public class NtcAsnRecord extends BaseLogEntity{ + + private static final long serialVersionUID = -4947912502754359817L; + + + protected String bps; + + protected String pps; + + + + public String getBps() { + return bps; + } + public void setBps(String bps) { + this.bps = bps; + } + public String getPps() { + return pps; + } + public void setPps(String pps) { + this.pps = pps; + } + + +} diff --git a/src/main/java/com/nis/domain/report/NtcIpRangeReport.java b/src/main/java/com/nis/domain/report/NtcIpRangeReport.java new file mode 100644 index 000000000..6ebffd920 --- /dev/null +++ b/src/main/java/com/nis/domain/report/NtcIpRangeReport.java @@ -0,0 +1,72 @@ +package com.nis.domain.report; + +import java.math.BigInteger; + +import com.nis.domain.log.BaseLogEntity; + +public class NtcIpRangeReport extends BaseLogEntity{ + + private static final long serialVersionUID = -4947912502754359817L; + + protected String ipStart; + protected String ipEnd; + protected BigInteger ipStartNum; + protected BigInteger ipEndNum; + protected String ipSub; + + protected String searchCountry;//国家 + protected String searchStartIp;//开始IP + protected String searchEndIp;//结束IP + + + + public String getSearchCountry() { + return searchCountry; + } + public void setSearchCountry(String searchCountry) { + this.searchCountry = searchCountry; + } + public String getSearchStartIp() { + return searchStartIp; + } + public void setSearchStartIp(String searchStartIp) { + this.searchStartIp = searchStartIp; + } + public String getSearchEndIp() { + return searchEndIp; + } + public void setSearchEndIp(String searchEndIp) { + this.searchEndIp = searchEndIp; + } + public String getIpStart() { + return ipStart; + } + public void setIpStart(String ipStart) { + this.ipStart = ipStart; + } + public String getIpEnd() { + return ipEnd; + } + public void setIpEnd(String ipEnd) { + this.ipEnd = ipEnd; + } + public BigInteger getIpStartNum() { + return ipStartNum; + } + public void setIpStartNum(BigInteger ipStartNum) { + this.ipStartNum = ipStartNum; + } + public BigInteger getIpEndNum() { + return ipEndNum; + } + public void setIpEndNum(BigInteger ipEndNum) { + this.ipEndNum = ipEndNum; + } + public String getIpSub() { + return ipSub; + } + public void setIpSub(String ipSub) { + this.ipSub = ipSub; + } + +} diff --git a/src/main/java/com/nis/domain/report/NtcURLReport.java b/src/main/java/com/nis/domain/report/NtcURLReport.java new file mode 100644 index 000000000..46fb3d5fb --- /dev/null +++ b/src/main/java/com/nis/domain/report/NtcURLReport.java @@ -0,0 +1,59 @@ +package com.nis.domain.report; + +import java.util.List; + +import com.nis.domain.log.BaseLogEntity; + +public class NtcURLReport extends BaseLogEntity{ + + private static final long serialVersionUID = -4947912502754359817L; + + + protected String url; + protected Integer urlCount; + protected List dataList; + + protected String searchReportStartTime;//开始时间 + protected String searchReportEndTime;//结束时间 + protected String searchUrl;//查询条件 url + + + public String getUrl() { + return url; + } + public String getSearchReportStartTime() { + return searchReportStartTime; + } + public void setSearchReportStartTime(String searchReportStartTime) { + this.searchReportStartTime = searchReportStartTime; + } + public String getSearchReportEndTime() { + return searchReportEndTime; + } + public void setSearchReportEndTime(String searchReportEndTime) { + this.searchReportEndTime = searchReportEndTime; + } + public String getSearchUrl() { + return searchUrl; + } + public void setSearchUrl(String searchUrl) { + this.searchUrl = searchUrl; + } + public void setUrl(String url) { + this.url = url; + } + public Integer getUrlCount() { + return urlCount; + } + public void setUrlCount(Integer urlCount) { + this.urlCount = urlCount; + } + public List getDataList() { + return dataList; + } + public void setDataList(List dataList) { + this.dataList = dataList; + } + + +} diff --git a/src/main/java/com/nis/domain/report/NtcURLReportBase.java b/src/main/java/com/nis/domain/report/NtcURLReportBase.java new file mode 100644 index 000000000..152366173 --- /dev/null +++ b/src/main/java/com/nis/domain/report/NtcURLReportBase.java @@ -0,0 +1,26 @@ +package com.nis.domain.report; + +public class NtcURLReportBase { + + private static final long serialVersionUID = -4947912502754359817L; + + + protected String ipAddr; + protected Integer sum; + + + public String getIpAddr() { + return ipAddr; + } + public void setIpAddr(String ipAddr) { + this.ipAddr = ipAddr; + } + public Integer getSum() { + return sum; + } + public void setSum(Integer sum) { + this.sum = sum; + } + + +} diff --git a/src/main/java/com/nis/util/Constants.java b/src/main/java/com/nis/util/Constants.java index 849841d72..bc25c1907 100644 --- a/src/main/java/com/nis/util/Constants.java +++ b/src/main/java/com/nis/util/Constants.java @@ -769,6 +769,9 @@ public final class Constants { public static final String NTC_COLLECT_RADIUS_LOG =Configurations.getStringProperty("ntcCollectRadiusLog",""); public static final String NTC_CONN_RECORD_LOG =Configurations.getStringProperty("ntcConnRecordLog",""); public static final String NTC_CONN_RECORD_PERCENT =Configurations.getStringProperty("ntcConnRecordPercent",""); + public static final String NTC_ASN_RECORD =Configurations.getStringProperty("ntcAsnRecord",""); + public static final String NTC_URL_REPORT =Configurations.getStringProperty("ntcURLReport",""); + public static final String NTC_IP_RANGE_REPORT =Configurations.getStringProperty("ntcIpRangeReport",""); /** * 每次最大导出条数 diff --git a/src/main/java/com/nis/web/controller/report/ReportController.java b/src/main/java/com/nis/web/controller/report/ReportController.java index 53728d4ee..22dd8df2c 100644 --- a/src/main/java/com/nis/web/controller/report/ReportController.java +++ b/src/main/java/com/nis/web/controller/report/ReportController.java @@ -1,15 +1,39 @@ package com.nis.web.controller.report; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +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 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.Page; +import com.nis.domain.PageLog; +import com.nis.domain.SysUser; import com.nis.domain.log.SearchReport; +import com.nis.domain.maat.LogRecvData; +import com.nis.domain.report.NtcAsnRecord; +import com.nis.domain.report.NtcIpRangeReport; +import com.nis.domain.report.NtcURLReport; +import com.nis.util.Constants; +import com.nis.util.DateUtils; +import com.nis.util.DictUtils; +import com.nis.util.httpclient.HttpClientUtil; import com.nis.web.controller.BaseController; +import com.nis.web.security.UserUtils; @Controller @RequestMapping("${adminPath}/report") @@ -19,4 +43,170 @@ public class ReportController extends BaseController { initReportCondition(model, bean); return "/report/list"; } + //asn + @RequestMapping(value = {"/asnConnList", ""}) + public String asnConnLists(@ModelAttribute("log") NtcAsnRecord 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()); + //判断请求参数 + if (StringUtils.isNotBlank(log.getSearchFoundStartTime()) + && StringUtils.isNotBlank(log.getSearchFoundEndTime())) { + params.put("searchFoundStartTime", log.getSearchFoundStartTime()); + params.put("searchFoundEndTime", log.getSearchFoundEndTime()); + } else { + Calendar time = Calendar.getInstance(); + String searchEndTime = DateUtils.formatDateTime(time.getTime()); + time.add(Calendar.HOUR_OF_DAY, -1); + String searchStartTime = DateUtils.formatDateTime(time.getTime()); + + params.put("searchFoundStartTime", searchStartTime); + params.put("searchFoundEndTime", searchEndTime); + log.setSearchFoundStartTime(searchStartTime); + log.setSearchFoundEndTime(searchEndTime); + } + + String url =Constants.LOG_BASE_URL + Constants.NTC_ASN_RECORD; + String recv = HttpClientUtil.getMsg(url, params, request); +// String recv="{\"status\":200,\"businessCode\":2001000,\"reason\":\"数据获取操作成功\",\"msg\":\"ASN通联关系(源,目的)检索成功\",\"fromuri\":\"/galaxy-service/service/log/v1/ntcAsnRecord\",\"logSource\":0,\"traceCode\":\"2018121609404451375322\",\"data\":" +// +"{\"pageNo\":1,\"pageSize\":30,\"count\":66564,\"last\":2219,\"list\":[{\"bps\":\"8.56\",\"pps\":\"0.07\",\"sAsn\":\"9198\",\"dAsn\":\"40545_26836\"},"+ +// "{\"bps\":\"3.68\",\"pps\":\"0.12\",\"sAsn\":\"9198\",\"dAsn\":\"19506\"},{\"bps\":\"1.77\",\"pps\":\"0.08\",\"sAsn\":\"38266\",\"dAsn\":\"N/A\"},"+ +// "{\"bps\":\"493.55\",\"pps\":\"0.76\",\"sAsn\":\"30922\",\"dAsn\":\"29555\"},{\"bps\":\"26.63\",\"pps\":\"0.04\",\"sAsn\":\"44546\",\"dAsn\":\"197482\"},"+ +// "{\"bps\":\"25.43\",\"pps\":\"0.45\",\"sAsn\":\"44391\",\"dAsn\":\"9198\"},{\"bps\":\"52.96\",\"pps\":\"0.08\",\"sAsn\":\"29555\",\"dAsn\":\"14080\"}]}}"; + + if (StringUtils.isNotBlank(recv)) { + Gson gson = new GsonBuilder().create(); + LogRecvData fromJson = gson.fromJson(recv, new TypeToken>(){}.getType()); + if (fromJson.getStatus().intValue() == 200) { + Page data = fromJson.getData(); + page.setCount(data.getCount()); + page.setLast(data.getLast()); + page.setList(data.getList()); + /*List list = page.getList(); + for (NtcConnRecordLog l : list) { + l.setFunctionId(log.getFunctionId()); + setLogAction(l,serviceList); + }*/ + model.addAttribute("page", page); + } + } + } catch (Exception e) { + logger.error("查询失败", e); + addMessageLog(model, e.getMessage()); + } + + return "/report/asnRecordList"; + } + + + // + @RequestMapping(value = {"/httpsUrlList", ""}) + public String httpsUrlLists(@ModelAttribute("log") NtcURLReport 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()); + //判断请求参数 + if (StringUtils.isNotBlank(log.getSearchReportStartTime()) + && StringUtils.isNotBlank(log.getSearchReportEndTime())) { + params.put("searchReportStartTime", log.getSearchReportStartTime()); + params.put("searchReportEndTime", log.getSearchReportEndTime()); + } else { + Calendar time = Calendar.getInstance(); + String searchEndTime = DateUtils.formatDateTime(time.getTime()); + time.add(Calendar.HOUR_OF_DAY, -1); + String searchStartTime = DateUtils.formatDateTime(time.getTime()); + + params.put("searchReportStartTime", searchStartTime); + params.put("searchReportEndTime", searchEndTime); + log.setSearchReportStartTime(searchStartTime); + log.setSearchReportEndTime(searchEndTime); + } + //url参数 + if (StringUtils.isNotBlank(log.getSearchUrl())) { + params.put("searchUrl", log.getSearchUrl()); + } + + String url =Constants.LOG_BASE_URL + Constants.NTC_URL_REPORT; + String recv = HttpClientUtil.getMsg(url, params, request); +// String recv="{\"status\":200,\"businessCode\":2001000,\"reason\":\"数据获取操作成功\",\"msg\":\"URL统计查询成功\",\"fromuri\":\"/galaxy-service/service/log/v1/ntcURLReport\",\"logSource\":0,\"traceCode\":\"2018121610374649425419\",\"data\":{\"pageNo\":1,\"pageSize\":30,\"count\":174,\"last\":6,\"list\":[{\"url\":\"142.44.167.226/eventproxy/v1/bulk\",\"urlCount\":1686,\"dataList\":[{\"sum\":1686,\"ipAddr\":\"100.101.129.6\"}]},{\"url\":\"188.0.145.98/YZ/e1cib/dlist?cmd=query\",\"urlCount\":2652,\"dataList\":[{\"sum\":1248,\"ipAddr\":\"188.0.145.98\"},{\"sum\":1404,\"ipAddr\":\"89.218.9.2\"}]},{\"url\":\"cdn7.alpha-ag.ru/1c1233923d1a6/c51e872ab5861be256408f6cafa99ed8/luckypatcher_v7.5.9.apk\",\"urlCount\":882,\"dataList\":[{\"sum\":882,\"ipAddr\":\"100.81.118.193\"}]}]}}"; + + if (StringUtils.isNotBlank(recv)) { + Gson gson = new GsonBuilder().create(); + LogRecvData fromJson = gson.fromJson(recv, new TypeToken>(){}.getType()); + if (fromJson.getStatus().intValue() == 200) { + Page data = fromJson.getData(); + page.setCount(data.getCount()); + page.setLast(data.getLast()); + page.setList(data.getList()); + /*List list = page.getList(); + for (NtcConnRecordLog l : list) { + l.setFunctionId(log.getFunctionId()); + setLogAction(l,serviceList); + }*/ + model.addAttribute("page", page); + } + } + } catch (Exception e) { + logger.error("查询失败", e); + addMessageLog(model, e.getMessage()); + } + + return "/report/urlReportList"; + } + + + //IP范围统计 + @RequestMapping(value = {"/ipRangeList", ""}) + public String ipRangeLists(@ModelAttribute("log") NtcIpRangeReport 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()); + //判断请求参数 + //查询国家 + if (StringUtils.isNotBlank(log.getSearchCountry())) { + params.put("searchCountry", log.getSearchCountry()); + } + //查询开始IP + if (StringUtils.isNotBlank(log.getSearchStartIp())) { + params.put("searchStartIp", log.getSearchStartIp()); + } + //查询结束IP + if (StringUtils.isNotBlank(log.getSearchEndIp())) { + params.put("searchEndIp", log.getSearchEndIp()); + } + + String url =Constants.LOG_BASE_URL + Constants.NTC_IP_RANGE_REPORT; + String recv = HttpClientUtil.getMsg(url, params, request); +// String recv="{\"status\":200,\"businessCode\":2001000,\"reason\":\"数据获取操作成功\",\"msg\":\"URL统计查询成功\",\"fromuri\":\"/galaxy-service/service/log/v1/ntcIpRangeReport\",\"logSource\":0,\"traceCode\":\"2018121616062785920271\",\"data\":{\"pageNo\":1,\"pageSize\":30,\"count\":0,\"last\":1,\"list\":[{\"ipStart\":\"192.168.10.121\",\"ipEnd\":\"192.168.10.122\",\"ipStartNum\":3232238201,\"ipEndNum\":3232238202,\"ipSub\":\"255.255.255.252\"}]}}"; + + if (StringUtils.isNotBlank(recv)) { + Gson gson = new GsonBuilder().create(); + LogRecvData fromJson = gson.fromJson(recv, new TypeToken>(){}.getType()); + if (fromJson.getStatus().intValue() == 200) { + Page data = fromJson.getData(); + page.setCount(data.getCount()); + page.setLast(data.getLast()); + page.setList(data.getList()); + /*List list = page.getList(); + for (NtcConnRecordLog l : list) { + l.setFunctionId(log.getFunctionId()); + setLogAction(l,serviceList); + }*/ + model.addAttribute("page", page); + } + } + } catch (Exception e) { + logger.error("查询失败", e); + addMessageLog(model, e.getMessage()); + } + + return "/report/ipRangeReportList"; + } + } diff --git a/src/main/resources/messages/message_en.properties b/src/main/resources/messages/message_en.properties index 9c188c01b..a06cbaddf 100644 --- a/src/main/resources/messages/message_en.properties +++ b/src/main/resources/messages/message_en.properties @@ -1375,4 +1375,20 @@ pps_percent=pps Percent spoofing_ip_object=Spoofing Policy Object spoofing_ip_policy=Spoofing Policy action_spoofing=Spoofing -spoofing=spoofing \ No newline at end of file +spoofing=spoofing +service=Service +s_asn=SASN +d_asn=DASN +asn_conn_report=ANS Report +https_url_report=HTTP(s) URL Report +url=URL +sum=SUM +url_count=URL Count +ip_range_report=ip Range Report +ip_start=Start IP +ip_end=End IP +ip_start_num=IP Start Num +ip_end_num=IP End Num +ip_sub=IP Subnet +start_ip=Start IP +end_ip=End IP \ No newline at end of file diff --git a/src/main/resources/messages/message_ru.properties b/src/main/resources/messages/message_ru.properties index 76a98c4e3..fc79fb8cf 100644 --- a/src/main/resources/messages/message_ru.properties +++ b/src/main/resources/messages/message_ru.properties @@ -1379,4 +1379,20 @@ pps_percent=pps Percent spoofing_ip_object=Spoofing Policy Object spoofing_ip_policy=Spoofing Policy action_spoofing=Spoofing -spoofing=spoofing \ No newline at end of file +spoofing=spoofing +service=Service +s_asn=SASN +d_asn=DASN +asn_conn_report=ANS Report +https_url_report=HTTP(s) URL Report +url=URL +sum=SUM +url_count=URL Count +ip_range_report=ip Range Report +ip_start=Start IP +ip_end=End IP +ip_start_num=IP Start Num +ip_end_num=IP End Num +ip_sub=IP Subnet +start_ip=Start IP +end_ip=End IP \ No newline at end of file diff --git a/src/main/resources/messages/message_zh_CN.properties b/src/main/resources/messages/message_zh_CN.properties index 4393ce687..f60cca46b 100644 --- a/src/main/resources/messages/message_zh_CN.properties +++ b/src/main/resources/messages/message_zh_CN.properties @@ -1375,4 +1375,20 @@ pps_percent=pps Percent spoofing_ip_object=Spoofing Policy Object spoofing_ip_policy=Spoofing Policy action_spoofing=Spoofing -spoofing=spoofing \ No newline at end of file +spoofing=spoofing +service=Service +s_asn=SASN +d_asn=DASN +asn_conn_report=ANS Report +https_url_report=HTTP(s) URL Report +url=URL +sum=SUM +url_count=URL Count +ip_range_report=ip Range Report +ip_start=Start IP +ip_end=End IP +ip_start_num=IP Start Num +ip_end_num=IP End Num +ip_sub=IP Subnet +start_ip=Start IP +end_ip=End IP \ No newline at end of file diff --git a/src/main/resources/nis.properties b/src/main/resources/nis.properties index cca95a773..3264764e6 100644 --- a/src/main/resources/nis.properties +++ b/src/main/resources/nis.properties @@ -589,4 +589,7 @@ ntcConnRecordPercent=ntcConnRecordPercent #\u5BFC\u51FA\u6700\u5927\u6761\u6570 maxLogExportSize=2000 pxy_crtl_subscribe_id_region=PXY_CTRL_SUBSCRIBE_ID -ntc_subscribe_id_region=NTC_SUBSCRIBE_ID \ No newline at end of file +ntc_subscribe_id_region=NTC_SUBSCRIBE_ID +ntcAsnRecord=ntcAsnRecord +ntcURLReport=ntcURLReport +ntcIpRangeReport=ntcIpRangeReport \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/report/asnRecordList.jsp b/src/main/webapp/WEB-INF/views/report/asnRecordList.jsp new file mode 100644 index 000000000..5a6b915b8 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/report/asnRecordList.jsp @@ -0,0 +1,124 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + <spring:message code="asn_conn_report"/> + + + + + +
+ +

+ +

+ +
+
+
+
+ + + + +
+ +
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+ + +
+ +
+ + +
+
+ +
+ + + + + <%-- --%> + <%-- + --%> + + + + + + + + + + <%-- --%> + + + + + + + + +
+ + + ${log.bps }${log.pps }${log.sAsn}${log.dAsn}
+
${page}
+
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/report/ipRangeReportList.jsp b/src/main/webapp/WEB-INF/views/report/ipRangeReportList.jsp new file mode 100644 index 000000000..6d5328d6f --- /dev/null +++ b/src/main/webapp/WEB-INF/views/report/ipRangeReportList.jsp @@ -0,0 +1,154 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + <spring:message code="ip_range_report"/> + + + + + +
+ +

+ +

+ +
+
+
+
+ + + + +
+
+
+
+ +
+
+
+
+
+
+ + + + + + +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+ +
+ + +
+ +
+ + +
+
+ +
+ + + + + <%-- --%> + <%-- + --%> + + + + + + + + + + + <%-- --%> + + + + + + + + +
+ + + ${log.ipStart }${log.ipEnd }${log.ipStartNum}${log.ipEndNum}${log.ipSub}
+
${page}
+
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/report/urlReportList.jsp b/src/main/webapp/WEB-INF/views/report/urlReportList.jsp new file mode 100644 index 000000000..8391d8b91 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/report/urlReportList.jsp @@ -0,0 +1,165 @@ +<%@ page contentType="text/html;charset=UTF-8"%> +<%@ include file="/WEB-INF/include/taglib.jsp"%> + + + + <spring:message code="https_url_report"/> + + + + + +
+ +

+ +

+ +
+
+
+
+ + + + +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+ + +
+ +
+ + +
+
+ +
+ + + + + <%-- --%> + <%-- + --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
${log.url }${log.urlCount}
${log.url }${ips.ipAddr }${ips.sum}${log.urlCount}
+
${page}
+
+
+
+
+
+ + \ No newline at end of file