Files
EdgeAPI/internal/rpc/services/nameservers/service_ns_access_log.go

126 lines
3.1 KiB
Go
Raw Normal View History

2021-06-02 11:53:24 +08:00
package nameservers
import (
"context"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
2021-08-20 11:27:16 +08:00
"github.com/TeaOSLab/EdgeAPI/internal/db/models/nameservers"
2021-06-02 11:53:24 +08:00
"github.com/TeaOSLab/EdgeAPI/internal/rpc/services"
rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
2021-08-20 11:27:16 +08:00
"github.com/iwind/TeaGo/types"
2021-06-02 11:53:24 +08:00
)
// NSAccessLogService 访问日志相关服务
type NSAccessLogService struct {
services.BaseService
}
// CreateNSAccessLogs 创建访问日志
func (this *NSAccessLogService) CreateNSAccessLogs(ctx context.Context, req *pb.CreateNSAccessLogsRequest) (*pb.CreateNSAccessLogsResponse, error) {
// 校验请求
2021-07-11 18:05:57 +08:00
_, _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeDNS)
2021-06-02 11:53:24 +08:00
if err != nil {
return nil, err
}
if len(req.NsAccessLogs) == 0 {
return &pb.CreateNSAccessLogsResponse{}, nil
}
2022-07-22 15:05:30 +08:00
var tx = this.NullTx()
2021-06-02 11:53:24 +08:00
err = models.SharedNSAccessLogDAO.CreateNSAccessLogs(tx, req.NsAccessLogs)
if err != nil {
return nil, err
}
return &pb.CreateNSAccessLogsResponse{}, nil
}
// ListNSAccessLogs 列出单页访问日志
func (this *NSAccessLogService) ListNSAccessLogs(ctx context.Context, req *pb.ListNSAccessLogsRequest) (*pb.ListNSAccessLogsResponse, error) {
// 校验请求
2022-07-22 15:05:30 +08:00
_, userId, err := this.ValidateAdminAndUser(ctx)
2021-06-02 11:53:24 +08:00
if err != nil {
return nil, err
}
2022-07-22 15:05:30 +08:00
var tx = this.NullTx()
2021-06-02 11:53:24 +08:00
// 检查服务ID
if userId > 0 {
// TODO
}
accessLogs, requestId, hasMore, err := models.SharedNSAccessLogDAO.ListAccessLogs(tx, req.RequestId, req.Size, req.Day, req.NsNodeId, req.NsDomainId, req.NsRecordId, req.Keyword, req.Reverse)
2021-06-02 11:53:24 +08:00
if err != nil {
return nil, err
}
result := []*pb.NSAccessLog{}
for _, accessLog := range accessLogs {
a, err := accessLog.ToPB()
if err != nil {
return nil, err
}
2021-08-20 11:27:16 +08:00
// 线路
if len(a.NsRouteCodes) > 0 {
for _, routeCode := range a.NsRouteCodes {
route, err := nameservers.SharedNSRouteDAO.FindEnabledRouteWithCode(nil, routeCode)
if err != nil {
return nil, err
}
if route != nil {
a.NsRoutes = append(a.NsRoutes, &pb.NSRoute{
Id: types.Int64(route.Id),
2022-03-22 21:45:07 +08:00
IsOn: route.IsOn,
2021-08-20 11:27:16 +08:00
Name: route.Name,
Code: routeCode,
NsCluster: nil,
NsDomain: nil,
})
}
}
}
2021-06-02 11:53:24 +08:00
result = append(result, a)
}
return &pb.ListNSAccessLogsResponse{
NsAccessLogs: result,
HasMore: hasMore,
RequestId: requestId,
}, nil
}
// FindNSAccessLog 查找单个日志
func (this *NSAccessLogService) FindNSAccessLog(ctx context.Context, req *pb.FindNSAccessLogRequest) (*pb.FindNSAccessLogResponse, error) {
// 校验请求
2022-07-22 15:05:30 +08:00
_, userId, err := this.ValidateAdminAndUser(ctx)
2021-06-02 11:53:24 +08:00
if err != nil {
return nil, err
}
2022-07-22 15:05:30 +08:00
var tx = this.NullTx()
2021-06-02 11:53:24 +08:00
accessLog, err := models.SharedNSAccessLogDAO.FindAccessLogWithRequestId(tx, req.RequestId)
if err != nil {
return nil, err
}
if accessLog == nil {
return &pb.FindNSAccessLogResponse{NsAccessLog: nil}, nil
}
// 检查权限
if userId > 0 {
// TODO
}
a, err := accessLog.ToPB()
if err != nil {
return nil, err
}
return &pb.FindNSAccessLogResponse{NsAccessLog: a}, nil
}