Files
paralus/server/relayaudit.go

98 lines
2.6 KiB
Go

package server
import (
"context"
"encoding/json"
ec "github.com/RafayLabs/rcloud-base/pkg/common"
q "github.com/RafayLabs/rcloud-base/pkg/service"
v1 "github.com/RafayLabs/rcloud-base/proto/rpc/audit"
)
type relayAuditServer struct {
rs *q.RelayAuditService
al *q.AuditLogService
}
var _ v1.RelayAuditServer = (*relayAuditServer)(nil)
// NewAuditServer returns new placement server implementation
func NewRelayAuditServer(relayAuditService *q.RelayAuditService, relayCommandAuditService *q.AuditLogService) (v1.RelayAuditServer, error) {
return &relayAuditServer{
rs: relayAuditService,
al: relayCommandAuditService,
}, nil
}
func (r *relayAuditServer) GetRelayAPIAudit(ctx context.Context, req *v1.RelayAuditSearchRequest) (res *v1.RelayAuditSearchResponse, err error) {
return r.rs.GetRelayAudit(req)
}
func (r *relayAuditServer) GetRelayAPIAuditByProjects(ctx context.Context, req *v1.RelayAuditSearchRequest) (res *v1.RelayAuditSearchResponse, err error) {
return r.rs.GetRelayAuditByProjects(req)
}
func (r *relayAuditServer) GetRelayAudit(ctx context.Context, req *v1.RelayAuditSearchRequest) (res *v1.RelayAuditSearchResponse, err error) {
if req.AuditType == ec.RelayAPIAuditType {
res, err = r.rs.GetRelayAudit(req)
if err != nil {
return nil, err
}
res.AuditType = ec.RelayAPIAuditType
} else {
auditReq, err := convertRelayToAuditSearchRequest(req)
if err != nil {
return nil, err
}
auditRes, err := r.al.GetAuditLog(auditReq)
if err != nil {
return nil, err
}
res = &v1.RelayAuditSearchResponse{
AuditType: ec.RelayCommandsAuditType,
Result: auditRes.Result,
}
}
return
}
func (r *relayAuditServer) GetRelayAuditByProjects(ctx context.Context, req *v1.RelayAuditSearchRequest) (res *v1.RelayAuditSearchResponse, err error) {
if req.AuditType == ec.RelayAPIAuditType {
res, err = r.rs.GetRelayAuditByProjects(req)
if err != nil {
return nil, err
}
res.AuditType = ec.RelayAPIAuditType
} else {
auditReq, err := convertRelayToAuditSearchRequest(req)
if err != nil {
return nil, err
}
auditRes, err := r.al.GetAuditLogByProjects(auditReq)
if err != nil {
return nil, err
}
res = &v1.RelayAuditSearchResponse{
AuditType: ec.RelayCommandsAuditType,
Result: auditRes.Result,
}
}
return
}
func convertRelayToAuditSearchRequest(req *v1.RelayAuditSearchRequest) (*v1.AuditLogSearchRequest, error) {
reqByte, err := json.Marshal(req)
if err != nil {
return nil, err
}
var res v1.AuditLogSearchRequest
err = json.Unmarshal(reqByte, &res)
if err != nil {
return nil, err
}
return &res, nil
}