mirror of
https://github.com/paralus/paralus.git
synced 2026-05-06 16:36:46 +00:00
98 lines
2.6 KiB
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
|
|
}
|