diff --git a/src/assets/css/components/views/charts2/domainNameResolution.scss b/src/assets/css/components/views/charts2/domainNameResolution.scss index b89613f8..480071b5 100644 --- a/src/assets/css/components/views/charts2/domainNameResolution.scss +++ b/src/assets/css/components/views/charts2/domainNameResolution.scss @@ -28,6 +28,9 @@ background: #38ACD2; border-radius: 1px; } + .type-title-word { + margin-right: 6px; + } } .type-content { @@ -50,5 +53,18 @@ font-weight: 400; } } + + .type-error-content { + width:100%; + height: 40px; + margin-bottom: 12px; + position: relative; + + .type-error-content__block { + position: absolute; + left: -12px; + top: -12px; + } + } } -} \ No newline at end of file +} diff --git a/src/mock/entity.js b/src/mock/entity.js index 242ddc40..4a9ad027 100644 --- a/src/mock/entity.js +++ b/src/mock/entity.js @@ -352,6 +352,105 @@ if (openMock) { } } }) + Mock.mock(new RegExp(urlAndVersion + '/entity/detail/ip/relate/ports.*'), 'get', function (requestObj) { + const result = [ + { + port: 80, + l7Protocol: 'HTTP' + }, + { + port: 443, + l7Protocol: 'HTTPS' + }, + { + port: 53, + l7Protocol: 'DNS' + } + ] + + return { + msg: 'success', + code: 200, + data: { + result: result + } + } + }) + Mock.mock(new RegExp(urlAndVersion + '/entity/detail/ip/relate/apps.*'), 'get', function (requestObj) { + const result = ['Wechat', 'baidu', 'Wechat', 'baidu', 'Wechat', 'baidu', 'Wechat'] + + return { + msg: 'success', + code: 200, + data: { + result: result + } + } + }) + Mock.mock(new RegExp(urlAndVersion + '/entity/detail/ip/relate/domains.*'), 'get', function (requestObj) { + const result = ['-*.pangolin-sdk-toutiao.com', '-*.pangolin-sdk-toutiao.com', '-*.pangolin-sdk-toutiao.com', '-*.pangolin-sdk-toutiao.com'] + + return { + msg: 'success', + code: 200, + data: { + result: result + } + } + }) + Mock.mock(new RegExp(urlAndVersion + '/entity/detail/app/relate/ips.*'), 'get', function (requestObj) { + const result = ['116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242'] + return { + msg: 'success', + code: 200, + data: { + result: result + } + } + }) + Mock.mock(new RegExp(urlAndVersion + '/entity/detail/app/relate/domains.*'), 'get', function (requestObj) { + const result = ['-*.pangolin-sdk-toutiao.com', '-*.pangolin-sdk-toutiao.com', '-*.pangolin-sdk-toutiao.com', '-*.pangolin-sdk-toutiao.com'] + + return { + msg: 'success', + code: 200, + data: { + result: result + } + } + }) + Mock.mock(new RegExp(urlAndVersion + '/entity/detail/domain/relate/ips.*'), 'get', function (requestObj) { + const result = ['116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242', '116.178.70.242'] + return { + msg: 'success', + code: 200, + data: { + result: result + } + } + }) + Mock.mock(new RegExp(urlAndVersion + '/entity/detail/domain/relate/apps.*'), 'get', function (requestObj) { + const result = ['Wechat', 'baidu', 'Wechat', 'baidu', 'Wechat', 'baidu', 'Wechat'] + + return { + msg: 'success', + code: 200, + data: { + result: result + } + } + }) + Mock.mock(new RegExp(urlAndVersion + '/entity/detail/domain/relate/fqdns.*'), 'get', function (requestObj) { + const result = ['-*.pangolin-sdk-toutiao.com', '-*.pangolin-sdk-toutiao.com', '-*.pangolin-sdk-toutiao.com', '-*.pangolin-sdk-toutiao.com'] + + return { + msg: 'success', + code: 200, + data: { + result: result + } + } + }) } const getQuery = (url) => { diff --git a/src/utils/api.js b/src/utils/api.js index 53dea2f8..6458f7e2 100644 --- a/src/utils/api.js +++ b/src/utils/api.js @@ -7,6 +7,7 @@ import { get, post } from '@/utils/http' import axios from 'axios' import { sortByOrderNum } from '@/permission' import { storageKey } from '@/utils/constants' +const apiVersion = BASE_CONFIG.apiVersion export const api = { // 系统相关 @@ -232,16 +233,26 @@ export const api = { drilldownTrafficAnalysis: '/interface/dns/overview/drilldown/trafficAnalysis' }, entity: { - throughput: BASE_CONFIG.apiVersion + '/entity/detail/traffic/throughput', - security: BASE_CONFIG.apiVersion + '/entity/detail/event/security', - performance: BASE_CONFIG.apiVersion + '/entity/detail/event/performance', - domainNameResolutionRelatedApp: 'interface/entity/detail/overview/ip/relatedApp', - domainNameResolutionRelatedIP: 'interface/entity/detail/overview/ip/relatedIp', - domainNameResolutionRelatedDomain: 'interface/entity/detail/overview/ip/relatedDomain', - openPort: '', - basicInfo: BASE_CONFIG.apiVersion + '/entity/detail/basic', - tags: BASE_CONFIG.apiVersion + '/entity/detail/kb/intelligence/tag', - informationAggregation: BASE_CONFIG.apiVersion + '/entity/detail/kb/intelligence/list' + throughput: apiVersion + '/entity/detail/traffic/throughput', + security: apiVersion + '/entity/detail/event/security', + performance: apiVersion + '/entity/detail/event/performance', + // 域名解析:ip相关app、domain + domainNameResolutionAboutAppsOfIp: apiVersion + '/entity/detail/ip/relate/apps', + domainNameResolutionAboutDomainsOfIp: apiVersion + '/entity/detail/ip/relate/domains', + // 域名解析:app相关ip、domain + domainNameResolutionAboutIpsOfApp: apiVersion + '/entity/detail/app/relate/ips', + domainNameResolutionAboutDomainsOfApp: apiVersion + '/entity/detail/app/relate/domains', + // 域名解析:domain相关ip、app、fqdn + domainNameResolutionAboutAppsOfDomain: apiVersion + '/entity/detail/domain/relate/apps', + domainNameResolutionAboutIpsOfDomain: apiVersion + '/entity/detail/domain/relate/ips', + domainNameResolutionAboutFQDNsOfDomain: apiVersion + '/entity/detail/domain/relate/fqdns', + // 开放端口:ip、domain、app相关 + openPortOfIp: apiVersion + '/entity/detail/ip/relate/ports', + openPortOfDomain: apiVersion + '/entity/detail/domain/relate/ports', + openPortOfApp: apiVersion + '/entity/detail/app/relate/ports', + basicInfo: apiVersion + '/entity/detail/basic', + tags: apiVersion + '/entity/detail/kb/intelligence/tag', + informationAggregation: apiVersion + '/entity/detail/kb/intelligence/list' } } diff --git a/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue b/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue index be03aacf..42bcd5cc 100644 --- a/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue +++ b/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue @@ -13,11 +13,11 @@ - + - + @@ -80,8 +80,8 @@ export default { const entityType = props.entity.entityType const tabs = reactive([ - // { name: entityDetailTabsName.domainNameResolution, label: i18n.global.t('entities.domainNameResolution'), icon: 'cn-icon cn-icon-domain-name-resolution' }, - // { name: entityDetailTabsName.openPort, label: i18n.global.t('entities.openPort'), icon: 'cn-icon cn-icon-open-port' }, + { name: entityDetailTabsName.domainNameResolution, label: i18n.global.t('entities.domainNameResolution'), icon: 'cn-icon cn-icon-domain-name-resolution' }, + { name: entityDetailTabsName.openPort, label: i18n.global.t('entities.openPort'), icon: 'cn-icon cn-icon-open-port' }, // { name: entityDetailTabsName.digitalCertificate, label: i18n.global.t('entities.digitalCertificate'), icon: 'cn-icon cn-icon-digital-certificate' }, { name: entityDetailTabsName.securityEvent, label: i18n.global.t('overall.securityEvent'), icon: 'cn-icon cn-icon-security-event', warnIcon: 'cn-icon cn-icon-warn', warnFlag: false }, { name: entityDetailTabsName.performanceEvent, label: i18n.global.t('overall.performanceEvent'), icon: 'cn-icon cn-icon-a-PerformanceEvent', warnIcon: 'cn-icon cn-icon-warn', warnFlag: false } diff --git a/src/views/charts2/charts/entityDetail/tabs/DomainNameResolution.vue b/src/views/charts2/charts/entityDetail/tabs/DomainNameResolution.vue index b981f35b..ceb4e0a7 100644 --- a/src/views/charts2/charts/entityDetail/tabs/DomainNameResolution.vue +++ b/src/views/charts2/charts/entityDetail/tabs/DomainNameResolution.vue @@ -1,162 +1,200 @@ +