mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-10 04:20:26 +08:00
103 lines
2.5 KiB
Go
103 lines
2.5 KiB
Go
package nameservers
|
|
|
|
import (
|
|
"context"
|
|
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
|
|
"github.com/TeaOSLab/EdgeAPI/internal/rpc/services"
|
|
rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
|
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
|
)
|
|
|
|
// NSAccessLogService 访问日志相关服务
|
|
type NSAccessLogService struct {
|
|
services.BaseService
|
|
}
|
|
|
|
// CreateNSAccessLogs 创建访问日志
|
|
func (this *NSAccessLogService) CreateNSAccessLogs(ctx context.Context, req *pb.CreateNSAccessLogsRequest) (*pb.CreateNSAccessLogsResponse, error) {
|
|
// 校验请求
|
|
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeDNS)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if len(req.NsAccessLogs) == 0 {
|
|
return &pb.CreateNSAccessLogsResponse{}, nil
|
|
}
|
|
|
|
tx := this.NullTx()
|
|
|
|
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) {
|
|
// 校验请求
|
|
_, userId, err := this.ValidateAdminAndUser(ctx, 0, 0)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
tx := this.NullTx()
|
|
|
|
// 检查服务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)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
result := []*pb.NSAccessLog{}
|
|
for _, accessLog := range accessLogs {
|
|
a, err := accessLog.ToPB()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
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) {
|
|
// 校验请求
|
|
_, userId, err := this.ValidateAdminAndUser(ctx, 0, 0)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
tx := this.NullTx()
|
|
|
|
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
|
|
}
|