mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-16 21:50:24 +08:00
在服务日志中增加WAF日志筛选
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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"> | </span>
|
<span class="disabled"> | </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>
|
||||||
@@ -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"> | </span>
|
<span class="disabled"> | </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>
|
||||||
Reference in New Issue
Block a user