mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-09 08:40:26 +08:00
DNS访问日志可以使用关键词搜索
This commit is contained in:
@@ -23,6 +23,7 @@ func (this *IndexAction) Init() {
|
|||||||
|
|
||||||
func (this *IndexAction) RunGet(params struct {
|
func (this *IndexAction) RunGet(params struct {
|
||||||
RequestId string
|
RequestId string
|
||||||
|
Keyword string
|
||||||
Day string
|
Day string
|
||||||
}) {
|
}) {
|
||||||
day := strings.ReplaceAll(params.Day, "-", "")
|
day := strings.ReplaceAll(params.Day, "-", "")
|
||||||
@@ -30,6 +31,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
day = timeutil.Format("Ymd")
|
day = timeutil.Format("Ymd")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.Data["keyword"] = params.Keyword
|
||||||
this.Data["day"] = day[:4] + "-" + day[4:6] + "-" + day[6:]
|
this.Data["day"] = day[:4] + "-" + day[4:6] + "-" + day[6:]
|
||||||
this.Data["path"] = this.Request.URL.Path
|
this.Data["path"] = this.Request.URL.Path
|
||||||
|
|
||||||
@@ -42,6 +44,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
NsRecordId: 0,
|
NsRecordId: 0,
|
||||||
Size: size,
|
Size: size,
|
||||||
Day: day,
|
Day: day,
|
||||||
|
Keyword: params.Keyword,
|
||||||
Reverse: false,
|
Reverse: false,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -94,6 +97,7 @@ func (this *IndexAction) RunGet(params struct {
|
|||||||
NsDomainId: 0,
|
NsDomainId: 0,
|
||||||
NsRecordId: 0,
|
NsRecordId: 0,
|
||||||
Day: day,
|
Day: day,
|
||||||
|
Keyword: params.Keyword,
|
||||||
Size: size,
|
Size: size,
|
||||||
Reverse: true,
|
Reverse: true,
|
||||||
})
|
})
|
||||||
|
|||||||
21
web/public/js/components/common/keyword.js
Normal file
21
web/public/js/components/common/keyword.js
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
Vue.component("keyword", {
|
||||||
|
props: ["v-word"],
|
||||||
|
data: function () {
|
||||||
|
let word = this.vWord
|
||||||
|
if (word == null) {
|
||||||
|
word = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
let slot = this.$slots["default"][0]
|
||||||
|
let text = slot.text
|
||||||
|
if (word.length > 0) {
|
||||||
|
text = text.replace(new RegExp(word, "g"), "<span style=\"border: 1px #ccc dashed\">" + word + "</span>")
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
word: word,
|
||||||
|
text: text
|
||||||
|
}
|
||||||
|
},
|
||||||
|
template: `<span><span style="display: none"><slot></slot></span><span v-html="text"></span></span>`
|
||||||
|
})
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
Vue.component("ns-access-log-box", {
|
Vue.component("ns-access-log-box", {
|
||||||
props: ["v-access-log"],
|
props: ["v-access-log", "v-keyword"],
|
||||||
data: function () {
|
data: function () {
|
||||||
let accessLog = this.vAccessLog
|
let accessLog = this.vAccessLog
|
||||||
return {
|
return {
|
||||||
@@ -33,6 +33,6 @@ Vue.component("ns-access-log-box", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
template: `<div class="access-log-row" :style="{'color': (accessLog.nsRecordId == null || accessLog.nsRecordId == 0) ? '#dc143c' : ''}" ref="box">
|
template: `<div class="access-log-row" :style="{'color': (accessLog.nsRecordId == null || accessLog.nsRecordId == 0) ? '#dc143c' : ''}" ref="box">
|
||||||
<span v-if="accessLog.region != null && accessLog.region.length > 0" class="grey">[{{accessLog.region}}]</span> {{accessLog.remoteAddr}} [{{accessLog.timeLocal}}] [{{accessLog.networking}}] <em>{{accessLog.questionType}} {{accessLog.questionName}}</em> -> <em>{{accessLog.recordType}} {{accessLog.recordValue}}</em><!-- <a href="" @click.prevent="showLog" title="查看详情"><i class="icon expand"></i></a>-->
|
<span v-if="accessLog.region != null && accessLog.region.length > 0" class="grey">[{{accessLog.region}}]</span> <keyword :v-word="vKeyword">{{accessLog.remoteAddr}}</keyword> [{{accessLog.timeLocal}}] [{{accessLog.networking}}] <em>{{accessLog.questionType}} <keyword :v-word="vKeyword">{{accessLog.questionName}}</keyword></em> -> <em>{{accessLog.recordType}} <keyword :v-word="vKeyword">{{accessLog.recordValue}}</keyword></em><!-- <a href="" @click.prevent="showLog" title="查看详情"><i class="icon expand"></i></a>-->
|
||||||
</div>`
|
</div>`
|
||||||
})
|
})
|
||||||
@@ -13,6 +13,9 @@
|
|||||||
<div class="item right">
|
<div class="item right">
|
||||||
<form method="get" class="ui form small" :action="path" autocomplete="off">
|
<form method="get" class="ui form small" :action="path" autocomplete="off">
|
||||||
<div class="ui fields inline">
|
<div class="ui fields inline">
|
||||||
|
<div class="ui field">
|
||||||
|
<input type="text" name="keyword" v-model="keyword" placeholder="IP、域名、记录等..."/>
|
||||||
|
</div>
|
||||||
<div class="ui field">
|
<div class="ui field">
|
||||||
<input type="text" name="day" maxlength="10" placeholder="选择日期" style="width:7.8em" id="day-input" v-model="day"/>
|
<input type="text" name="day" maxlength="10" placeholder="选择日期" style="width:7.8em" id="day-input" v-model="day"/>
|
||||||
</div>
|
</div>
|
||||||
@@ -52,14 +55,14 @@
|
|||||||
<link-icon :href="'/ns/domains/domain?domainId=' + accessLog.domain.id">{{accessLog.domain.name}}</link-icon>
|
<link-icon :href="'/ns/domains/domain?domainId=' + accessLog.domain.id">{{accessLog.domain.name}}</link-icon>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td><ns-access-log-box :v-access-log="accessLog"></ns-access-log-box></td>
|
<td><ns-access-log-box :v-access-log="accessLog" :v-keyword="keyword"></ns-access-log-box></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<div v-if="accessLogs.length > 0">
|
<div v-if="accessLogs.length > 0">
|
||||||
<a :href="path + '?requestId=' + lastRequestId + '&day=' + day" v-if="hasPrev">上一页</a>
|
<a :href="path + '?requestId=' + lastRequestId + '&day=' + day + '&keyword=' + keyword" v-if="hasPrev">上一页</a>
|
||||||
<span v-else class="disabled">上一页</span>
|
<span v-else class="disabled">上一页</span>
|
||||||
<span class="disabled"> | </span>
|
<span class="disabled"> | </span>
|
||||||
<a :href="path + '?requestId=' + nextRequestId + '&day=' + day" v-if="hasMore">下一页</a>
|
<a :href="path + '?requestId=' + nextRequestId + '&day=' + day + '&keyword=' + keyword" v-if="hasMore">下一页</a>
|
||||||
<span v-else class="disabled">下一页</span>
|
<span v-else class="disabled">下一页</span>
|
||||||
</div>
|
</div>
|
||||||
Reference in New Issue
Block a user