CN-1071: entity explorer在列表页点击后退时,没有返回首页
This commit is contained in:
@@ -115,11 +115,11 @@ export default {
|
|||||||
},
|
},
|
||||||
setup (props) {
|
setup (props) {
|
||||||
// 默认为文本模式
|
// 默认为文本模式
|
||||||
let searchMode = ref('text')
|
const searchMode = ref('text')
|
||||||
if (props.defaultMode) {
|
if (props.defaultMode) {
|
||||||
switch (props.defaultMode) {
|
switch (props.defaultMode) {
|
||||||
case 'tag': {
|
case 'tag': {
|
||||||
searchMode = 'tag'
|
searchMode.value = 'tag'
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ import Meta, { connection, condition, columnType } from './meta/meta'
|
|||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
import { handleErrorTip } from '@/components/advancedSearch/meta/error'
|
import { handleErrorTip } from '@/components/advancedSearch/meta/error'
|
||||||
import Parser, { stringInQuot } from '@/components/advancedSearch/meta/parser'
|
import Parser, { stringInQuot } from '@/components/advancedSearch/meta/parser'
|
||||||
|
import { overwriteUrl, urlParamsHandler } from '@/utils/tools'
|
||||||
export default {
|
export default {
|
||||||
name: 'TagMode',
|
name: 'TagMode',
|
||||||
props: {
|
props: {
|
||||||
@@ -320,8 +321,10 @@ export default {
|
|||||||
const parser = new Parser(this.columnList)
|
const parser = new Parser(this.columnList)
|
||||||
const errorList = parser.validateMeta(this.metaList)
|
const errorList = parser.validateMeta(this.metaList)
|
||||||
if (_.isEmpty(errorList)) {
|
if (_.isEmpty(errorList)) {
|
||||||
|
this.reloadUrl({ mode: 'text' })
|
||||||
this.$emit('changeMode', 'text', parser.parseMeta(this.metaList))
|
this.$emit('changeMode', 'text', parser.parseMeta(this.metaList))
|
||||||
} else {
|
} else {
|
||||||
|
this.reloadUrl({ mode: 'text' })
|
||||||
this.$emit('changeMode', 'text', { metaList: [], str: '' })
|
this.$emit('changeMode', 'text', { metaList: [], str: '' })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -397,10 +400,28 @@ export default {
|
|||||||
this.metaList.splice(metaIndex, 2)
|
this.metaList.splice(metaIndex, 2)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 向地址栏添加/删除参数
|
||||||
|
*/
|
||||||
|
reloadUrl (newParam, clean) {
|
||||||
|
const { query } = this.$route
|
||||||
|
let newUrl = urlParamsHandler(window.location.href, query, newParam)
|
||||||
|
if (clean) {
|
||||||
|
newUrl = urlParamsHandler(window.location.href, query, newParam, clean)
|
||||||
|
}
|
||||||
|
overwriteUrl(newUrl)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
const vm = this
|
const vm = this
|
||||||
|
// 如果地址栏包含参数q,则匹配出metaList到搜索栏回显使用
|
||||||
|
const { q } = this.$route.query
|
||||||
|
if (q) {
|
||||||
|
const parser = new Parser(this.columnList)
|
||||||
|
this.metaList = parser.parseStr(q).metaList
|
||||||
|
}
|
||||||
|
|
||||||
this.emitter.on('advanced-search', function () {
|
this.emitter.on('advanced-search', function () {
|
||||||
vm.search()
|
vm.search()
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import { toRaw } from 'vue'
|
|||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
import { columnType } from '@/components/advancedSearch/meta/meta'
|
import { columnType } from '@/components/advancedSearch/meta/meta'
|
||||||
import { handleErrorTip } from '@/components/advancedSearch/meta/error'
|
import { handleErrorTip } from '@/components/advancedSearch/meta/error'
|
||||||
|
import { overwriteUrl, urlParamsHandler } from '@/utils/tools'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'TextMode',
|
name: 'TextMode',
|
||||||
@@ -81,11 +82,14 @@ export default {
|
|||||||
const errorList = parser.validateStr(str)
|
const errorList = parser.validateStr(str)
|
||||||
if (_.isEmpty(errorList)) {
|
if (_.isEmpty(errorList)) {
|
||||||
const metaList = parser.parseStr(str)
|
const metaList = parser.parseStr(str)
|
||||||
|
this.reloadUrl({ mode: 'tag' })
|
||||||
this.$emit('changeMode', 'tag', metaList)
|
this.$emit('changeMode', 'tag', metaList)
|
||||||
} else {
|
} else {
|
||||||
|
this.reloadUrl({ mode: 'tag' })
|
||||||
this.$emit('changeMode', 'tag', { metaList: [], str: '' })
|
this.$emit('changeMode', 'tag', { metaList: [], str: '' })
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
this.reloadUrl({ mode: 'tag' })
|
||||||
this.$emit('changeMode', 'tag', { str: '', metaList: [] })
|
this.$emit('changeMode', 'tag', { str: '', metaList: [] })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -135,6 +139,17 @@ export default {
|
|||||||
current = current.replace(oldSqlPiece, newSqlPiece)
|
current = current.replace(oldSqlPiece, newSqlPiece)
|
||||||
})
|
})
|
||||||
toRaw(this.codeMirror).setValue(current.trim())
|
toRaw(this.codeMirror).setValue(current.trim())
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 向地址栏添加/删除参数
|
||||||
|
*/
|
||||||
|
reloadUrl (newParam, clean) {
|
||||||
|
const { query } = this.$route
|
||||||
|
let newUrl = urlParamsHandler(window.location.href, query, newParam)
|
||||||
|
if (clean) {
|
||||||
|
newUrl = urlParamsHandler(window.location.href, query, newParam, clean)
|
||||||
|
}
|
||||||
|
overwriteUrl(newUrl)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@@ -150,7 +165,13 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
|
// 如果地址栏包含参数q,则将参数q回显到搜索栏内
|
||||||
|
const { q } = this.$route.query
|
||||||
this.initCodeMirror()
|
this.initCodeMirror()
|
||||||
|
if (q) {
|
||||||
|
toRaw(this.codeMirror).setValue(q)
|
||||||
|
}
|
||||||
|
|
||||||
const vm = this
|
const vm = this
|
||||||
this.emitter.on('advanced-search', function () {
|
this.emitter.on('advanced-search', function () {
|
||||||
vm.search()
|
vm.search()
|
||||||
|
|||||||
@@ -270,3 +270,191 @@ export const dataForNpmNetworkQuantity = {
|
|||||||
{ name: 'overall.packetRetrans' }
|
{ name: 'overall.packetRetrans' }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
export const columnList = [
|
||||||
|
{
|
||||||
|
name: 'entity_type',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Entity type'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'ip_addr',
|
||||||
|
type: 'string',
|
||||||
|
label: 'IP.Address'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'ip_location_country',
|
||||||
|
type: 'string',
|
||||||
|
label: 'IP.Country'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'ip_location_province',
|
||||||
|
type: 'string',
|
||||||
|
label: 'IP.Province'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'ip_location_city',
|
||||||
|
type: 'string',
|
||||||
|
label: 'IP.City'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'ip_asn',
|
||||||
|
type: 'string',
|
||||||
|
label: 'IP.ASN'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'dns_server_role',
|
||||||
|
type: 'string',
|
||||||
|
label: 'IP.DNS server role'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'dns_server_org',
|
||||||
|
type: 'string',
|
||||||
|
label: 'IP.DNS server organization'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'dns_server_os',
|
||||||
|
type: 'string',
|
||||||
|
label: 'IP.Operating system'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'dns_server_software',
|
||||||
|
type: 'string',
|
||||||
|
label: 'IP.DNS server software'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_name',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.Name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_category',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.Category'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_category_group',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.Category group'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_reputation_level',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.Reputation'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_whois_email',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.Whois email'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_whois_name_servers',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.Whois nameserver'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_whois_registrar',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.Whois registrar'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_whois_org',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.Whois organization'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_whois_address',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.Whois address'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_whois_city',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.Whois city'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_whois_state',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.Whois state'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_whois_country',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.Whois country'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_icp_owner',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.ICP owner'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_icp_company_name',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.ICP company'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_icp_company_type',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.ICP company type'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_icp_site_license',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.ICP site license'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'domain_icp_site_name',
|
||||||
|
type: 'string',
|
||||||
|
label: 'Domain.ICP site'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'app_name',
|
||||||
|
type: 'string',
|
||||||
|
label: 'APP.Name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'app_id',
|
||||||
|
type: 'string',
|
||||||
|
label: 'APP.ID'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'app_category',
|
||||||
|
type: 'string',
|
||||||
|
label: 'APP.Category'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'app_subcategory',
|
||||||
|
type: 'string',
|
||||||
|
label: 'APP.Subcategory'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'app_risk',
|
||||||
|
type: 'string',
|
||||||
|
label: 'APP.Risk'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'app_description',
|
||||||
|
type: 'string',
|
||||||
|
label: 'APP.Description'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'app_longname',
|
||||||
|
type: 'string',
|
||||||
|
label: 'APP.Long name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'app_technology',
|
||||||
|
type: 'string',
|
||||||
|
label: 'APP.Technology'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
export const operatorList = ['=', '!=', /* '>', '<', '>=', '<=', */'IN', 'NOT IN', 'LIKE', 'NOT LIKE']
|
||||||
|
export const connectionList = [
|
||||||
|
{
|
||||||
|
value: 'AND',
|
||||||
|
label: 'AND'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'OR',
|
||||||
|
label: 'OR'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|||||||
@@ -18,8 +18,8 @@
|
|||||||
<DateTimeRange :start-time="timeFilter.startTime" :end-time="timeFilter.endTime" :date-range="timeFilter.dateRangeValue" ref="dateTimeRange" @change="reload"/>
|
<DateTimeRange :start-time="timeFilter.startTime" :end-time="timeFilter.endTime" :date-range="timeFilter.dateRangeValue" ref="dateTimeRange" @change="reload"/>
|
||||||
<TimeRefresh class="date-time-range" @change="timeRefreshChange" :end-time="timeFilter.endTime"/>
|
<TimeRefresh class="date-time-range" @change="timeRefreshChange" :end-time="timeFilter.endTime"/>
|
||||||
<el-button-group size="mini">
|
<el-button-group size="mini">
|
||||||
<el-button size="mini" @click="listMode = 'list'" :class="{'active': listMode === 'list'}"><i class="cn-icon cn-icon-list"></i></el-button>
|
<el-button size="mini" @click="setListMode('list')" :class="{'active': listMode === 'list'}"><i class="cn-icon cn-icon-list"></i></el-button>
|
||||||
<el-button size="mini" @click="listMode = 'block'" :class="{'active': listMode === 'block'}"><i class="cn-icon cn-icon-blocks"></i></el-button>
|
<el-button size="mini" @click="setListMode('block')" :class="{'active': listMode === 'block'}"><i class="cn-icon cn-icon-blocks"></i></el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
@@ -161,6 +161,11 @@ import { getNowTime, getSecond } from '@/utils/date-util'
|
|||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
import Loading from '@/components/common/Loading'
|
import Loading from '@/components/common/Loading'
|
||||||
|
import { overwriteUrl, urlParamsHandler } from '@/utils/tools'
|
||||||
|
import Parser from '@/components/advancedSearch/meta/parser'
|
||||||
|
import { handleErrorTip } from '@/components/advancedSearch/meta/error'
|
||||||
|
import { columnList } from '@/utils/static-data'
|
||||||
|
import { useRoute } from 'vue-router'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'entity-explorer',
|
name: 'entity-explorer',
|
||||||
@@ -428,8 +433,32 @@ export default {
|
|||||||
this.metaList = []
|
this.metaList = []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 在非列表模式下选择tag模式,在地址栏输入内容时将mode添加到地址栏
|
||||||
|
const mode = this.$route.query.mode || 'text'
|
||||||
|
|
||||||
|
this.reloadUrl({
|
||||||
|
listMode: this.listMode,
|
||||||
|
q: q,
|
||||||
|
mode: mode,
|
||||||
|
startTime: getSecond(this.timeFilter.startTime),
|
||||||
|
endTime: getSecond(this.timeFilter.endTime)
|
||||||
|
})
|
||||||
|
|
||||||
if (!this.showList) {
|
if (!this.showList) {
|
||||||
|
// 首页进入搜索时重载页面,视觉上进入列表页面
|
||||||
|
this.$router.push({
|
||||||
|
path: '/entityExplorer',
|
||||||
|
query: {
|
||||||
|
listMode: this.listMode,
|
||||||
|
q: q,
|
||||||
|
mode: mode,
|
||||||
|
startTime: getSecond(this.timeFilter.startTime),
|
||||||
|
endTime: getSecond(this.timeFilter.endTime)
|
||||||
|
}
|
||||||
|
})
|
||||||
this.showList = true
|
this.showList = true
|
||||||
|
// 跳转页面,则不执行搜索功能
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
if (this.pageObj.resetPageNo) {
|
if (this.pageObj.resetPageNo) {
|
||||||
this.pageObj.pageNo = 1
|
this.pageObj.pageNo = 1
|
||||||
@@ -725,20 +754,80 @@ export default {
|
|||||||
d.value = 0
|
d.value = 0
|
||||||
})
|
})
|
||||||
this.filterData[index].totalCount = 0
|
this.filterData[index].totalCount = 0
|
||||||
|
},
|
||||||
|
setListMode (mode) {
|
||||||
|
this.listMode = mode
|
||||||
|
const newParam = {
|
||||||
|
listMode: mode
|
||||||
|
}
|
||||||
|
this.reloadUrl(newParam)
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 向地址栏添加/删除参数
|
||||||
|
*/
|
||||||
|
reloadUrl (newParam, clean) {
|
||||||
|
const { query } = this.$route
|
||||||
|
let newUrl = urlParamsHandler(window.location.href, query, newParam)
|
||||||
|
if (clean) {
|
||||||
|
newUrl = urlParamsHandler(window.location.href, query, newParam, clean)
|
||||||
|
}
|
||||||
|
overwriteUrl(newUrl)
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 初始化搜索,分享url或者刷新界面,保留本次搜索结果
|
||||||
|
* @param q
|
||||||
|
*/
|
||||||
|
initSearch (q) {
|
||||||
|
const str = q
|
||||||
|
// 此处的mode不做text和tag区分,是因为text和tag构造搜索参数过程不一样,但结果的参数一致
|
||||||
|
// 故采用text的参数形式进行搜索,tag形式在tagMode.vue的mounted里根据地址栏的参数q构造metaList
|
||||||
|
if (str) {
|
||||||
|
const parser = new Parser(columnList)
|
||||||
|
const errorList = parser.validateStr(str)
|
||||||
|
if (_.isEmpty(errorList)) {
|
||||||
|
this.search(parser.parseStr(str))
|
||||||
|
} else {
|
||||||
|
this.$message.error(handleErrorTip(errorList[0]))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.search({ q: '', str: '', metaList: [] })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
this.getEntityIndexData()
|
this.getEntityIndexData()
|
||||||
|
const { q, listMode } = this.$route.query
|
||||||
|
|
||||||
|
// 如果地址栏有listMode,即列表页,并非首页,则开始搜索
|
||||||
|
if (listMode) {
|
||||||
|
this.showList = true
|
||||||
|
this.initSearch(q)
|
||||||
|
this.listMode = listMode
|
||||||
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
timeFilter (n) {
|
timeFilter () {
|
||||||
this.search({ metaList: this.metaList, q: this.q })
|
this.search({ metaList: this.metaList, q: this.q })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setup () {
|
setup () {
|
||||||
const dateRangeValue = 60
|
const { query } = useRoute()
|
||||||
const { startTime, endTime } = getNowTime(dateRangeValue)
|
// 获取url携带的range、startTime、endTime
|
||||||
const timeFilter = ref({ startTime, endTime, dateRangeValue })
|
const rangeParam = query.range
|
||||||
|
const startTimeParam = query.startTime
|
||||||
|
const endTimeParam = query.endTime
|
||||||
|
// 若url携带了,使用携带的值,否则使用默认值。
|
||||||
|
const dateRangeValue = rangeParam ? parseInt(query.range) : 60
|
||||||
|
const timeFilter = ref({ dateRangeValue })
|
||||||
|
if (!startTimeParam || !endTimeParam) {
|
||||||
|
const { startTime, endTime } = getNowTime(60)
|
||||||
|
timeFilter.value.startTime = startTime
|
||||||
|
timeFilter.value.endTime = endTime
|
||||||
|
} else {
|
||||||
|
timeFilter.value.startTime = parseInt(startTimeParam)
|
||||||
|
timeFilter.value.endTime = parseInt(endTimeParam)
|
||||||
|
}
|
||||||
|
timeFilter.value.dateRangeValue = 60
|
||||||
return {
|
return {
|
||||||
timeFilter
|
timeFilter
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
:column-list="columnList"
|
:column-list="columnList"
|
||||||
:operator-list="operatorList"
|
:operator-list="operatorList"
|
||||||
:connection-list="connectionList"
|
:connection-list="connectionList"
|
||||||
|
:default-mode="defaultMode"
|
||||||
:full-text="true"
|
:full-text="true"
|
||||||
:class="{'advanced-search--show-list': showList}"
|
:class="{'advanced-search--show-list': showList}"
|
||||||
@search="search"
|
@search="search"
|
||||||
@@ -51,6 +52,9 @@
|
|||||||
import AdvancedSearch from '@/components/advancedSearch/Index'
|
import AdvancedSearch from '@/components/advancedSearch/Index'
|
||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
import { storageKey } from '@/utils/constants'
|
import { storageKey } from '@/utils/constants'
|
||||||
|
import { useRoute } from 'vue-router'
|
||||||
|
import { ref } from 'vue'
|
||||||
|
import { columnList } from '@/utils/static-data'
|
||||||
export default {
|
export default {
|
||||||
name: 'CnSearch',
|
name: 'CnSearch',
|
||||||
components: {
|
components: {
|
||||||
@@ -64,183 +68,7 @@ export default {
|
|||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
columnList: [
|
columnList: columnList,
|
||||||
{
|
|
||||||
name: 'entity_type',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Entity type'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'ip_addr',
|
|
||||||
type: 'string',
|
|
||||||
label: 'IP.Address'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'ip_location_country',
|
|
||||||
type: 'string',
|
|
||||||
label: 'IP.Country'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'ip_location_province',
|
|
||||||
type: 'string',
|
|
||||||
label: 'IP.Province'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'ip_location_city',
|
|
||||||
type: 'string',
|
|
||||||
label: 'IP.City'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'ip_asn',
|
|
||||||
type: 'string',
|
|
||||||
label: 'IP.ASN'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'dns_server_role',
|
|
||||||
type: 'string',
|
|
||||||
label: 'IP.DNS server role'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'dns_server_org',
|
|
||||||
type: 'string',
|
|
||||||
label: 'IP.DNS server organization'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'dns_server_os',
|
|
||||||
type: 'string',
|
|
||||||
label: 'IP.Operating system'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'dns_server_software',
|
|
||||||
type: 'string',
|
|
||||||
label: 'IP.DNS server software'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_name',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.Name'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_category',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.Category'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_category_group',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.Category group'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_reputation_level',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.Reputation'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_whois_email',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.Whois email'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_whois_name_servers',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.Whois nameserver'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_whois_registrar',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.Whois registrar'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_whois_org',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.Whois organization'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_whois_address',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.Whois address'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_whois_city',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.Whois city'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_whois_state',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.Whois state'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_whois_country',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.Whois country'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_icp_owner',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.ICP owner'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_icp_company_name',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.ICP company'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_icp_company_type',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.ICP company type'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_icp_site_license',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.ICP site license'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'domain_icp_site_name',
|
|
||||||
type: 'string',
|
|
||||||
label: 'Domain.ICP site'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'app_name',
|
|
||||||
type: 'string',
|
|
||||||
label: 'APP.Name'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'app_id',
|
|
||||||
type: 'string',
|
|
||||||
label: 'APP.ID'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'app_category',
|
|
||||||
type: 'string',
|
|
||||||
label: 'APP.Category'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'app_subcategory',
|
|
||||||
type: 'string',
|
|
||||||
label: 'APP.Subcategory'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'app_risk',
|
|
||||||
type: 'string',
|
|
||||||
label: 'APP.Risk'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'app_description',
|
|
||||||
type: 'string',
|
|
||||||
label: 'APP.Description'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'app_longname',
|
|
||||||
type: 'string',
|
|
||||||
label: 'APP.Long name'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'app_technology',
|
|
||||||
type: 'string',
|
|
||||||
label: 'APP.Technology'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
operatorList: ['=', '!=', /* '>', '<', '>=', '<=', */'IN', 'NOT IN', 'LIKE', 'NOT LIKE'],
|
operatorList: ['=', '!=', /* '>', '<', '>=', '<=', */'IN', 'NOT IN', 'LIKE', 'NOT LIKE'],
|
||||||
connectionList: [
|
connectionList: [
|
||||||
{
|
{
|
||||||
@@ -256,6 +84,14 @@ export default {
|
|||||||
history: []
|
history: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
setup () {
|
||||||
|
// 根据地址栏添加mode,即text和tag模式,默认text
|
||||||
|
const { query } = useRoute()
|
||||||
|
const defaultMode = ref(query.mode || 'text')
|
||||||
|
return {
|
||||||
|
defaultMode
|
||||||
|
}
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
search ({ str, q, metaList }) {
|
search ({ str, q, metaList }) {
|
||||||
if (str) {
|
if (str) {
|
||||||
|
|||||||
Reference in New Issue
Block a user