在服务日志中增加WAF日志筛选

This commit is contained in:
GoEdgeLab
2021-08-22 16:49:15 +08:00
parent ecbaf2817d
commit 769223a100
5 changed files with 56 additions and 44 deletions

View File

@@ -24,6 +24,7 @@ func (this *HistoryAction) RunGet(params struct {
Keyword string Keyword string
Ip string Ip string
Domain string Domain string
HasWAF int
RequestId string RequestId string
HasError int HasError int
@@ -39,6 +40,7 @@ func (this *HistoryAction) RunGet(params struct {
this.Data["domain"] = params.Domain this.Data["domain"] = params.Domain
this.Data["accessLogs"] = []interface{}{} this.Data["accessLogs"] = []interface{}{}
this.Data["hasError"] = params.HasError this.Data["hasError"] = params.HasError
this.Data["hasWAF"] = params.HasWAF
day := params.Day day := params.Day
ipList := []string{} ipList := []string{}
@@ -50,14 +52,15 @@ func (this *HistoryAction) RunGet(params struct {
this.Data["hasError"] = params.HasError this.Data["hasError"] = params.HasError
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,
ServerId: params.ServerId, ServerId: params.ServerId,
HasError: params.HasError > 0, HasError: params.HasError > 0,
Day: day, HasFirewallPolicy: params.HasWAF > 0,
Keyword: params.Keyword, Day: day,
Ip: params.Ip, Keyword: params.Keyword,
Domain: params.Domain, Ip: params.Ip,
Size: size, Domain: params.Domain,
Size: size,
}) })
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -85,15 +88,16 @@ func (this *HistoryAction) RunGet(params struct {
if len(params.RequestId) > 0 { if len(params.RequestId) > 0 {
this.Data["hasPrev"] = true this.Data["hasPrev"] = true
prevResp, err := this.RPC().HTTPAccessLogRPC().ListHTTPAccessLogs(this.AdminContext(), &pb.ListHTTPAccessLogsRequest{ prevResp, err := this.RPC().HTTPAccessLogRPC().ListHTTPAccessLogs(this.AdminContext(), &pb.ListHTTPAccessLogsRequest{
RequestId: params.RequestId, RequestId: params.RequestId,
ServerId: params.ServerId, ServerId: params.ServerId,
HasError: params.HasError > 0, HasError: params.HasError > 0,
Day: day, HasFirewallPolicy: params.HasWAF > 0,
Keyword: params.Keyword, Day: day,
Ip: params.Ip, Keyword: params.Keyword,
Domain: params.Domain, Ip: params.Ip,
Size: size, Domain: params.Domain,
Reverse: true, Size: size,
Reverse: true,
}) })
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -20,6 +20,7 @@ func (this *TodayAction) RunGet(params struct {
RequestId string RequestId string
ServerId int64 ServerId int64
HasError int HasError int
HasWAF int
Keyword string Keyword string
Ip string Ip string
Domain string Domain string
@@ -31,16 +32,18 @@ func (this *TodayAction) RunGet(params struct {
this.Data["keyword"] = params.Keyword this.Data["keyword"] = params.Keyword
this.Data["ip"] = params.Ip this.Data["ip"] = params.Ip
this.Data["domain"] = params.Domain this.Data["domain"] = params.Domain
this.Data["hasWAF"] = params.HasWAF
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,
ServerId: params.ServerId, ServerId: params.ServerId,
HasError: params.HasError > 0, HasError: params.HasError > 0,
Day: timeutil.Format("Ymd"), HasFirewallPolicy: params.HasWAF > 0,
Keyword: params.Keyword, Day: timeutil.Format("Ymd"),
Ip: params.Ip, Keyword: params.Keyword,
Domain: params.Domain, Ip: params.Ip,
Size: size, Domain: params.Domain,
Size: size,
}) })
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)
@@ -69,15 +72,16 @@ func (this *TodayAction) RunGet(params struct {
if len(params.RequestId) > 0 { if len(params.RequestId) > 0 {
this.Data["hasPrev"] = true this.Data["hasPrev"] = true
prevResp, err := this.RPC().HTTPAccessLogRPC().ListHTTPAccessLogs(this.AdminContext(), &pb.ListHTTPAccessLogsRequest{ prevResp, err := this.RPC().HTTPAccessLogRPC().ListHTTPAccessLogs(this.AdminContext(), &pb.ListHTTPAccessLogsRequest{
RequestId: params.RequestId, RequestId: params.RequestId,
ServerId: params.ServerId, ServerId: params.ServerId,
HasError: params.HasError > 0, HasError: params.HasError > 0,
Day: timeutil.Format("Ymd"), HasFirewallPolicy: params.HasWAF > 0,
Keyword: params.Keyword, Day: timeutil.Format("Ymd"),
Ip: params.Ip, Keyword: params.Keyword,
Domain: params.Domain, Ip: params.Ip,
Size: size, Domain: params.Domain,
Reverse: true, Size: size,
Reverse: true,
}) })
if err != nil { if err != nil {
this.ErrorPage(err) this.ErrorPage(err)

View File

@@ -65,14 +65,14 @@ Vue.component("http-access-log-search-box", {
</div> </div>
</div> </div>
<div class="ui field"> <div class="ui field">
<div class="ui input left labeled small" :class="{'right labeled': domain.length > 0}"> <div class="ui input left right labeled small" >
<span class="ui label basic" style="font-weight: normal">域名</span> <span class="ui label basic" style="font-weight: normal">域名</span>
<input type="text" name="domain" placeholder="xxx.com" size="15" v-model="domain"/> <input type="text" name="domain" placeholder="xxx.com" size="15" v-model="domain"/>
<a class="ui label basic" :class="{disabled: domain.length == 0}" @click.prevent="cleanDomain"><i class="icon remove small"></i></a> <a class="ui label basic" :class="{disabled: domain.length == 0}" @click.prevent="cleanDomain"><i class="icon remove small"></i></a>
</div> </div>
</div> </div>
<div class="ui field"> <div class="ui field">
<div class="ui input left labeled small" :class="{'right labeled': keyword.length > 0}"> <div class="ui input left right labeled small">
<span class="ui label basic" style="font-weight: normal">关键词</span> <span class="ui label basic" style="font-weight: normal">关键词</span>
<input type="text" name="keyword" v-model="keyword" placeholder="路径、UserAgent等..." size="18"/> <input type="text" name="keyword" v-model="keyword" placeholder="路径、UserAgent等..." size="18"/>
<a class="ui label basic" :class="{disabled: keyword.length == 0}" @click.prevent="cleanKeyword"><i class="icon remove small"></i></a> <a class="ui label basic" :class="{disabled: keyword.length == 0}" @click.prevent="cleanKeyword"><i class="icon remove small"></i></a>

View File

@@ -5,13 +5,15 @@
<div class="right-box"> <div class="right-box">
<first-menu> <first-menu>
<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 + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" :active="hasError == 0 && hasWAF == 0">所有日志</menu-item>
<menu-item :href="path + '?serverId=' + serverId + '&day=' + day + '&hasError=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" :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>
<menu-item :href="path + '?serverId=' + serverId + '&day=' + day + '&hasWAF=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" :active="hasWAF > 0">WAF日志</menu-item>
</first-menu> </first-menu>
<form method="get" class="ui form small" :action="path" autocomplete="off"> <form method="get" class="ui form small" :action="path">
<input type="hidden" name="serverId" :value="serverId"/> <input type="hidden" name="serverId" :value="serverId"/>
<input type="hidden" name="hasError" :value="hasError"/> <input type="hidden" name="hasError" :value="hasError"/>
<input type="hidden" name="hasWAF" :value="hasWAF"/>
<http-access-log-search-box :v-ip="ip" :v-domain="domain" :v-keyword="keyword"> <http-access-log-search-box :v-ip="ip" :v-domain="domain" :v-keyword="keyword">
<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"/>
@@ -29,10 +31,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 + '&ip=' + ip + '&domain=' + domain" v-if="hasPrev">上一页</a> <a :href="path + '?serverId=' + serverId + '&requestId=' + lastRequestId + '&day=' + day + '&hasError=' + hasError + '&hasWAF=' + hasWAF + '&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 + '&ip=' + ip + '&domain=' + domain" v-if="hasMore">下一页</a> <a :href="path + '?serverId=' + serverId + '&requestId=' + nextRequestId + '&day=' + day + '&hasError=' + hasError + '&hasWAF=' + hasWAF + '&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

@@ -3,13 +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 + '&ip=' + ip + '&domain=' + domain" :active="hasError == 0">所有日志</menu-item> <menu-item :href="path + '?serverId=' + serverId + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" :active="hasError == 0 && hasWAF == 0">所有日志</menu-item>
<menu-item :href="path + '?serverId=' + serverId + '&hasError=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" :active="hasError > 0">错误日志</menu-item> <menu-item :href="path + '?serverId=' + serverId + '&hasError=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" :active="hasError > 0">错误日志</menu-item>
<menu-item :href="path + '?serverId=' + serverId + '&hasWAF=1' + '&keyword=' + keyword + '&ip=' + ip + '&domain=' + domain" :active="hasWAF > 0">WAF日志</menu-item>
</first-menu> </first-menu>
<form method="get" class="ui form small" :action="path" autocomplete="off"> <form method="get" class="ui form small" :action="path">
<input type="hidden" name="serverId" :value="serverId"/> <input type="hidden" name="serverId" :value="serverId"/>
<input type="hidden" name="hasError" :value="hasError"/> <input type="hidden" name="hasError" :value="hasError"/>
<input type="hidden" name="hasWAF" :value="hasWAF"/>
<http-access-log-search-box :v-ip="ip" :v-domain="domain" :v-keyword="keyword"></http-access-log-search-box> <http-access-log-search-box :v-ip="ip" :v-domain="domain" :v-keyword="keyword"></http-access-log-search-box>
</form> </form>
@@ -23,10 +25,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 + '&ip=' + ip + '&domain=' + domain" v-if="hasPrev">上一页</a> <a :href="path + '?serverId=' + serverId + '&requestId=' + lastRequestId + '&hasError=' + hasError + '&hasWAF=' + hasWAF + '&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 + '&ip=' + ip + '&domain=' + domain" v-if="hasMore">下一页</a> <a :href="path + '?serverId=' + serverId + '&requestId=' + nextRequestId + '&hasError=' + hasError + '&hasWAF=' + hasWAF + '&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>