mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-06 23:00:25 +08:00
IP名单中可以通过IP查找访问日志
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
||||
|
||||
package iplists
|
||||
|
||||
import (
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
timeutil "github.com/iwind/TeaGo/utils/time"
|
||||
)
|
||||
|
||||
type AccessLogsPopupAction struct {
|
||||
actionutils.ParentAction
|
||||
}
|
||||
|
||||
func (this *AccessLogsPopupAction) Init() {
|
||||
this.Nav("", "", "")
|
||||
}
|
||||
|
||||
func (this *AccessLogsPopupAction) RunGet(params struct {
|
||||
ItemId int64
|
||||
}) {
|
||||
itemResp, err := this.RPC().IPItemRPC().FindEnabledIPItem(this.AdminContext(), &pb.FindEnabledIPItemRequest{IpItemId: params.ItemId})
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
var item = itemResp.IpItem
|
||||
if item == nil {
|
||||
this.NotFound("ipItem", params.ItemId)
|
||||
return
|
||||
}
|
||||
this.Data["ipFrom"] = item.IpFrom
|
||||
this.Data["ipTo"] = item.IpTo
|
||||
|
||||
accessLogsResp, err := this.RPC().HTTPAccessLogRPC().ListHTTPAccessLogs(this.AdminContext(), &pb.ListHTTPAccessLogsRequest{
|
||||
Day: timeutil.Format("Ymd"),
|
||||
Keyword: "ip:" + item.IpFrom + "," + item.IpTo,
|
||||
Size: 10,
|
||||
})
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
var accessLogs = accessLogsResp.HttpAccessLogs
|
||||
if len(accessLogs) == 0 {
|
||||
accessLogs = []*pb.HTTPAccessLog{}
|
||||
}
|
||||
this.Data["accessLogs"] = accessLogs
|
||||
|
||||
this.Show()
|
||||
}
|
||||
@@ -29,6 +29,7 @@ func init() {
|
||||
GetPost("/createIPPopup", new(CreateIPPopupAction)).
|
||||
GetPost("/updateIPPopup", new(UpdateIPPopupAction)).
|
||||
Post("/deleteIP", new(DeleteIPAction)).
|
||||
Get("/accessLogsPopup", new(AccessLogsPopupAction)).
|
||||
|
||||
// 防火墙
|
||||
GetPost("/bindHTTPFirewallPopup", new(BindHTTPFirewallPopupAction)).
|
||||
|
||||
@@ -11,6 +11,12 @@ Vue.component("ip-list-table", {
|
||||
},
|
||||
deleteItem: function (itemId) {
|
||||
this.$emit("delete-item", itemId)
|
||||
},
|
||||
viewLogs: function (itemId) {
|
||||
teaweb.popup("/servers/iplists/accessLogsPopup?itemId=" + itemId, {
|
||||
width: "50em",
|
||||
height: "30em"
|
||||
})
|
||||
}
|
||||
},
|
||||
template: `<div>
|
||||
@@ -22,7 +28,7 @@ Vue.component("ip-list-table", {
|
||||
<th>级别</th>
|
||||
<th>过期时间</th>
|
||||
<th>备注</th>
|
||||
<th class="two op">操作</th>
|
||||
<th class="three op">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr v-for="item in items">
|
||||
@@ -54,6 +60,7 @@ Vue.component("ip-list-table", {
|
||||
<span v-else class="disabled">-</span>
|
||||
</td>
|
||||
<td>
|
||||
<a href="" @click.prevent="viewLogs(item.id)">日志</a>
|
||||
<a href="" @click.prevent="updateItem(item.id)">修改</a>
|
||||
<a href="" @click.prevent="deleteItem(item.id)">删除</a>
|
||||
</td>
|
||||
|
||||
10
web/views/@default/servers/iplists/accessLogsPopup.html
Normal file
10
web/views/@default/servers/iplists/accessLogsPopup.html
Normal file
@@ -0,0 +1,10 @@
|
||||
{$layout "layout_popup"}
|
||||
|
||||
<h3>访问日志<span v-if="ipTo.length > 0" class="grey">({{ipFrom}} - {{ipTo}})</span><span v-else class="grey">({{ipFrom}})</span></h3>
|
||||
|
||||
<p class="comment" v-if="accessLogs.length == 0">暂时还没有访问日志。</p>
|
||||
<table class="ui table selectable" v-if="accessLogs.length > 0">
|
||||
<tr v-for="accessLog in accessLogs" :key="accessLog.requestId">
|
||||
<td><http-access-log-box :v-access-log="accessLog"></http-access-log-box></td>
|
||||
</tr>
|
||||
</table>
|
||||
Reference in New Issue
Block a user