访问日志搜索增加域名和IP搜索

This commit is contained in:
GoEdgeLab
2021-08-07 22:04:30 +08:00
parent 93ae097af3
commit 5ec3c75e39
9 changed files with 111 additions and 55 deletions

View File

@@ -22,6 +22,8 @@ func (this *HistoryAction) RunGet(params struct {
ServerId int64 ServerId int64
Day string Day string
Keyword string Keyword string
Ip string
Domain string
RequestId string RequestId string
HasError int HasError int
@@ -33,6 +35,8 @@ func (this *HistoryAction) RunGet(params struct {
this.Data["path"] = this.Request.URL.Path this.Data["path"] = this.Request.URL.Path
this.Data["day"] = params.Day this.Data["day"] = params.Day
this.Data["keyword"] = params.Keyword this.Data["keyword"] = params.Keyword
this.Data["ip"] = params.Ip
this.Data["domain"] = params.Domain
this.Data["accessLogs"] = []interface{}{} this.Data["accessLogs"] = []interface{}{}
this.Data["hasError"] = params.HasError this.Data["hasError"] = params.HasError
@@ -51,6 +55,8 @@ func (this *HistoryAction) RunGet(params struct {
HasError: params.HasError > 0, HasError: params.HasError > 0,
Day: day, Day: day,
Keyword: params.Keyword, Keyword: params.Keyword,
Ip: params.Ip,
Domain: params.Domain,
Size: size, Size: size,
}) })
if err != nil { if err != nil {
@@ -84,6 +90,8 @@ func (this *HistoryAction) RunGet(params struct {
HasError: params.HasError > 0, HasError: params.HasError > 0,
Day: day, Day: day,
Keyword: params.Keyword, Keyword: params.Keyword,
Ip: params.Ip,
Domain: params.Domain,
Size: size, Size: size,
Reverse: true, Reverse: true,
}) })

View File

@@ -20,10 +20,14 @@ func (this *IndexAction) Init() {
func (this *IndexAction) RunGet(params struct { func (this *IndexAction) RunGet(params struct {
ServerId int64 ServerId int64
RequestId string RequestId string
Ip string
Domain string
Keyword string Keyword string
}) { }) {
this.Data["serverId"] = params.ServerId this.Data["serverId"] = params.ServerId
this.Data["requestId"] = params.RequestId this.Data["requestId"] = params.RequestId
this.Data["ip"] = params.Ip
this.Data["domain"] = params.Domain
this.Data["keyword"] = params.Keyword this.Data["keyword"] = params.Keyword
this.Data["path"] = this.Request.URL.Path this.Data["path"] = this.Request.URL.Path
@@ -44,6 +48,8 @@ func (this *IndexAction) RunPost(params struct {
ServerId int64 ServerId int64
RequestId string RequestId string
Keyword string Keyword string
Ip string
Domain string
Must *actions.Must Must *actions.Must
}) { }) {
@@ -54,6 +60,8 @@ func (this *IndexAction) RunPost(params struct {
Size: 20, Size: 20,
Day: timeutil.Format("Ymd"), Day: timeutil.Format("Ymd"),
Keyword: params.Keyword, Keyword: params.Keyword,
Ip: params.Ip,
Domain: params.Domain,
Reverse: isReverse, Reverse: isReverse,
}) })
if err != nil { if err != nil {

View File

@@ -21,12 +21,16 @@ func (this *TodayAction) RunGet(params struct {
ServerId int64 ServerId int64
HasError int HasError int
Keyword string Keyword string
Ip string
Domain string
}) { }) {
size := int64(10) size := int64(10)
this.Data["path"] = this.Request.URL.Path this.Data["path"] = this.Request.URL.Path
this.Data["hasError"] = params.HasError this.Data["hasError"] = params.HasError
this.Data["keyword"] = params.Keyword this.Data["keyword"] = params.Keyword
this.Data["ip"] = params.Ip
this.Data["domain"] = params.Domain
resp, err := this.RPC().HTTPAccessLogRPC().ListHTTPAccessLogs(this.AdminContext(), &pb.ListHTTPAccessLogsRequest{ resp, err := this.RPC().HTTPAccessLogRPC().ListHTTPAccessLogs(this.AdminContext(), &pb.ListHTTPAccessLogsRequest{
RequestId: params.RequestId, RequestId: params.RequestId,
@@ -34,6 +38,8 @@ func (this *TodayAction) RunGet(params struct {
HasError: params.HasError > 0, HasError: params.HasError > 0,
Day: timeutil.Format("Ymd"), Day: timeutil.Format("Ymd"),
Keyword: params.Keyword, Keyword: params.Keyword,
Ip: params.Ip,
Domain: params.Domain,
Size: size, Size: size,
}) })
if err != nil { if err != nil {
@@ -67,6 +73,9 @@ func (this *TodayAction) RunGet(params struct {
ServerId: params.ServerId, ServerId: params.ServerId,
HasError: params.HasError > 0, HasError: params.HasError > 0,
Day: timeutil.Format("Ymd"), Day: timeutil.Format("Ymd"),
Keyword: params.Keyword,
Ip: params.Ip,
Domain: params.Domain,
Size: size, Size: size,
Reverse: true, Reverse: true,
}) })

View File

@@ -0,0 +1,53 @@
// 访问日志搜索框
Vue.component("http-access-log-search-box", {
props: ["v-ip", "v-domain", "v-keyword"],
data: function () {
let ip = this.vIp
if (ip == null) {
ip = ""
}
let domain = this.vDomain
if (domain == null) {
domain = ""
}
let keyword = this.vKeyword
if (keyword == null) {
keyword = ""
}
return {
ip: ip,
domain: domain,
keyword: keyword
}
},
template: `<div>
<div class="margin"></div>
<div class="ui fields inline">
<div class="ui field">
<div class="ui input left labeled small">
<span class="ui label basic" style="font-weight: normal">IP</span>
<input type="text" name="ip" placeholder="x.x.x.x" size="15" v-model="ip"/>
</div>
</div>
<div class="ui field">
<div class="ui input left labeled small">
<span class="ui label basic" style="font-weight: normal">域名</span>
<input type="text" name="domain" placeholder="xxx.com" size="15" v-model="domain"/>
</div>
</div>
<div class="ui field">
<div class="ui input left labeled small">
<span class="ui label basic" style="font-weight: normal">关键词</span>
<input type="text" name="keyword" v-model="keyword" placeholder="路径、UserAgent等..." size="18"/>
</div>
</div>
<slot></slot>
<div class="ui field">
<button class="ui button small" type="submit">查找</button>
</div>
</div>
</div>`
})

View File

@@ -37,7 +37,10 @@ Tea.context(function () {
// 清理节点 // 清理节点
this.cleanNode = function (nodeId) { this.cleanNode = function (nodeId) {
teaweb.popup("/db/cleanPopup?nodeId=" + nodeId) teaweb.popup("/db/cleanPopup?nodeId=" + nodeId, {
width: "44em",
height: "26em"
})
} }
// 显示错误信息 // 显示错误信息

View File

@@ -5,26 +5,19 @@
<div class="right-box"> <div class="right-box">
<first-menu> <first-menu>
<menu-item :href="path + '?serverId=' + serverId + '&day=' + day + '&keyword=' + keyword" :active="hasError == 0">所有日志</menu-item> <menu-item :href="path + '?serverId=' + serverId + '&day=' + day + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" :active="hasError == 0">所有日志</menu-item>
<menu-item :href="path + '?serverId=' + serverId + '&day=' + day + '&hasError=1' + '&keyword=' + keyword" :active="hasError > 0">错误日志</menu-item> <menu-item :href="path + '?serverId=' + serverId + '&day=' + day + '&hasError=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" :active="hasError > 0">错误日志</menu-item>
<div class="item right">
<form method="get" class="ui form small" :action="path" autocomplete="off">
<input type="hidden" name="serverId" :value="serverId"/>
<div class="ui fields inline">
<div class="ui field">
<input type="text" name="keyword" v-model="keyword" placeholder="IP、域名、路径等..."/>
</div>
<div class="ui field">
<input type="text" name="day" maxlength="10" placeholder="选择日期" style="width:7.8em" id="day-input" v-model="day"/>
</div>
<div class="ui field">
<button class="ui button small" type="submit">查找</button>
</div>
</div>
</form>
</div>
</first-menu> </first-menu>
<form method="get" class="ui form small" :action="path" autocomplete="off">
<input type="hidden" name="serverId" :value="serverId"/>
<http-access-log-search-box :v-ip="ip" :v-domain="domain" :v-keyword="keyword">
<div class="ui field">
<input type="text" name="day" maxlength="10" placeholder="选择日期" style="width:7.8em" id="day-input" v-model="day"/>
</div>
</http-access-log-search-box>
</form>
<p class="comment" v-if="accessLogs.length == 0">暂时还没有访问日志。</p> <p class="comment" v-if="accessLogs.length == 0">暂时还没有访问日志。</p>
<table class="ui table selectable" v-if="accessLogs.length > 0"> <table class="ui table selectable" v-if="accessLogs.length > 0">
@@ -35,10 +28,10 @@
</table> </table>
<div v-if="accessLogs.length > 0"> <div v-if="accessLogs.length > 0">
<a :href="path + '?serverId=' + serverId + '&requestId=' + lastRequestId + '&day=' + day + '&hasError=' + hasError + '&keyword=' + keyword" v-if="hasPrev">上一页</a> <a :href="path + '?serverId=' + serverId + '&requestId=' + lastRequestId + '&day=' + day + '&hasError=' + hasError + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" v-if="hasPrev">上一页</a>
<span v-else class="disabled">上一页</span> <span v-else class="disabled">上一页</span>
<span class="disabled">&nbsp; | &nbsp;</span> <span class="disabled">&nbsp; | &nbsp;</span>
<a :href="path + '?serverId=' + serverId + '&requestId=' + nextRequestId + '&day=' + day + '&hasError=' + hasError + '&keyword=' + keyword" v-if="hasMore">下一页</a> <a :href="path + '?serverId=' + serverId + '&requestId=' + nextRequestId + '&day=' + day + '&hasError=' + hasError + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" v-if="hasMore">下一页</a>
<span v-else class="disabled">下一页</span> <span v-else class="disabled">下一页</span>
</div> </div>
</div> </div>

View File

@@ -2,21 +2,10 @@
{$template "/left_menu"} {$template "/left_menu"}
<div class="right-box"> <div class="right-box">
<first-menu> <form method="get" class="ui form small" :action="path" autocomplete="off">
<div class="item right"> <input type="hidden" name="serverId" :value="serverId"/>
<form method="get" class="ui form small" :action="path" autocomplete="off"> <http-access-log-search-box :v-ip="ip" :v-domain="domain" :v-keyword="keyword"></http-access-log-search-box>
<input type="hidden" name="serverId" :value="serverId"/> </form>
<div class="ui fields inline">
<div class="ui field">
<input type="text" name="keyword" v-model="keyword" placeholder="IP、域名、路径等..."/>
</div>
<div class="ui field">
<button class="ui button small" type="submit">查找</button>
</div>
</div>
</form>
</div>
</first-menu>
<p class="comment" v-if="isLoaded && accessLogs.length == 0">今天暂时还没有访问日志。</p> <p class="comment" v-if="isLoaded && accessLogs.length == 0">今天暂时还没有访问日志。</p>

View File

@@ -12,7 +12,9 @@ Tea.context(function () {
.params({ .params({
serverId: this.serverId, serverId: this.serverId,
requestId: this.requestId, requestId: this.requestId,
keyword: this.keyword keyword: this.keyword,
ip: this.ip,
domain: this.domain
}) })
.success(function (resp) { .success(function (resp) {
this.accessLogs = resp.data.accessLogs.concat(this.accessLogs) this.accessLogs = resp.data.accessLogs.concat(this.accessLogs)

View File

@@ -3,24 +3,15 @@
{$template "/left_menu"} {$template "/left_menu"}
<div class="right-box"> <div class="right-box">
<first-menu> <first-menu>
<menu-item :href="path + '?serverId=' + serverId + '&keyword=' + keyword" :active="hasError == 0">所有日志</menu-item> <menu-item :href="path + '?serverId=' + serverId + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" :active="hasError == 0">所有日志</menu-item>
<menu-item :href="path + '?serverId=' + serverId + '&hasError=1' + '&keyword=' + keyword" :active="hasError > 0">错误日志</menu-item> <menu-item :href="path + '?serverId=' + serverId + '&hasError=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" :active="hasError > 0">错误日志</menu-item>
<div class="item right">
<form method="get" class="ui form small" :action="path" autocomplete="off">
<input type="hidden" name="serverId" :value="serverId"/>
<div class="ui fields inline">
<div class="ui field">
<input type="text" name="keyword" v-model="keyword" placeholder="IP、域名、路径等..."/>
</div>
<div class="ui field">
<button class="ui button small" type="submit">查找</button>
</div>
</div>
</form>
</div>
</first-menu> </first-menu>
<form method="get" class="ui form small" :action="path" autocomplete="off">
<input type="hidden" name="serverId" :value="serverId"/>
<http-access-log-search-box :v-ip="ip" :v-domain="domain" :v-keyword="keyword"></http-access-log-search-box>
</form>
<p class="comment" v-if="accessLogs.length == 0">今天暂时还没有访问日志。</p> <p class="comment" v-if="accessLogs.length == 0">今天暂时还没有访问日志。</p>
<table class="ui table selectable" v-if="accessLogs.length > 0"> <table class="ui table selectable" v-if="accessLogs.length > 0">
@@ -31,10 +22,10 @@
</table> </table>
<div v-if="accessLogs.length > 0"> <div v-if="accessLogs.length > 0">
<a :href="path + '?serverId=' + serverId + '&requestId=' + lastRequestId + '&hasError=' + hasError + '&keyword=' + keyword" v-if="hasPrev">上一页</a> <a :href="path + '?serverId=' + serverId + '&requestId=' + lastRequestId + '&hasError=' + hasError + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" v-if="hasPrev">上一页</a>
<span v-else class="disabled">上一页</span> <span v-else class="disabled">上一页</span>
<span class="disabled">&nbsp; | &nbsp;</span> <span class="disabled">&nbsp; | &nbsp;</span>
<a :href="path + '?serverId=' + serverId + '&requestId=' + nextRequestId + '&hasError=' + hasError + '&keyword=' + keyword" v-if="hasMore">下一页</a> <a :href="path + '?serverId=' + serverId + '&requestId=' + nextRequestId + '&hasError=' + hasError + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" v-if="hasMore">下一页</a>
<span v-else class="disabled">下一页</span> <span v-else class="disabled">下一页</span>
</div> </div>
</div> </div>