1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package waf
- import (
- "context"
- "encoding/json"
- "fmt"
- adminApi "github.com/go-nunu/nunu-layout-advanced/api/v1/admin"
- "github.com/go-nunu/nunu-layout-advanced/internal/service"
- "github.com/go-nunu/nunu-layout-advanced/pkg/rabbitmq"
- amqp "github.com/rabbitmq/amqp091-go"
- "go.uber.org/zap"
- )
- type WaflogService interface {
- PublishIpWafLogTask(ctx context.Context, req adminApi.WafLog)
- }
- func NewWaflogService(
- service *service.Service,
- mq *rabbitmq.RabbitMQ,
- ) WaflogService {
- return &waflogService{
- Service: service,
- mq : mq,
- }
- }
- type waflogService struct {
- *service.Service
- mq *rabbitmq.RabbitMQ
- }
- func (s *waflogService) PublishIpWafLogTask(ctx context.Context, req adminApi.WafLog) {
- payload := &req
- msgBody, err := json.Marshal(payload)
- if err != nil {
- s.Logger.Error("序列化 WafLog 任务消息失败", zap.Error(err), zap.Int("hostId", payload.HostId), zap.Int("uid", payload.Uid), zap.Any("req", req))
- return
- }
- taskCfg, ok := s.mq.GetTaskConfig("waf_log")
- if !ok {
- s.Logger.Error("无法获取“waf_Log”任务配置")
- return
- }
- routingKey := fmt.Sprintf("wafLog.%s", "add")
- publishingMsg := amqp.Publishing{
- ContentType: "application/json",
- Body: msgBody,
- DeliveryMode: amqp.Persistent,
- }
- err = s.mq.PublishWithCh(taskCfg.Exchange, routingKey, publishingMsg)
- if err != nil {
- s.Logger.Error("发布 WafLog 任务消息失败", zap.Error(err), zap.Int("hostId", payload.HostId), zap.Int("uid", payload.Uid), zap.Any("req", req))
- } else {
- s.Logger.Info("已成功发布 WafLog 任务消息", zap.Int("hostId", payload.HostId), zap.Int("uid", payload.Uid), zap.Any("req", req))
- }
- }
|