Commit a4c820e1 authored by qiuqunfeng's avatar qiuqunfeng
Browse files

Add ServiceID to WAF creation and enable listener WAF flow

- Extend CreateWafReq struct with ServiceID field
- Update CreateWaf method to include ServiceID in WAF configuration
- Implement getServiceID method to retrieve or create WAF service
- Modify EnableListenerWaf to handle ServiceID retrieval and creation
- Ensure consistent WAF service tracking across different operations
parent 7b5fd587
...@@ -190,6 +190,7 @@ type CreateWafReq struct { ...@@ -190,6 +190,7 @@ type CreateWafReq struct {
Host []string `json:"host"` Host []string `json:"host"`
Mode WafMode `json:"mode"` Mode WafMode `json:"mode"`
ListenerName string `json:"listener_name"` ListenerName string `json:"listener_name"`
ServiceID uint32 `json:"service_id"`
} }
type DeleteWafReq struct { type DeleteWafReq struct {
......
...@@ -218,6 +218,7 @@ func (s *wafService) CreateWaf(ctx context.Context, req *CreateWafReq) (*WafServ ...@@ -218,6 +218,7 @@ func (s *wafService) CreateWaf(ctx context.Context, req *CreateWafReq) (*WafServ
Level: "info", Level: "info",
}, },
Mode: string(req.Mode), Mode: string(req.Mode),
ServiceID: req.ServiceID,
}, },
} }
...@@ -402,37 +403,38 @@ func (s *wafService) DeleteListener(ctx context.Context, req *DeleteListenerReq) ...@@ -402,37 +403,38 @@ func (s *wafService) DeleteListener(ctx context.Context, req *DeleteListenerReq)
return nil return nil
} }
func (s *wafService) EnableListenerWaf(ctx context.Context, req *EnableListenerWafReq) error { func (s *wafService) getServiceID(ctx context.Context, gatewayName, namespace, regionCode string) (uint32, error) {
// listener := &model.GatewayListener{} service := &model.WafService{}
// err := s.db.Model(&model.GatewayListener{}).Where("gateway_name = ? AND namespace = ? AND region_code = ?", req.GatewayName, req.Namespace, req.RegionCode).First(listener).Error err := s.db.WithContext(ctx).Model(&model.WafService{}).Where("gateway_name = ? AND namespace = ? AND region_code = ?", gatewayName, namespace, regionCode).First(service).Error
// if err != nil { if err != nil {
// if err == gorm.ErrRecordNotFound { return 0, err
// listener = &model.GatewayListener{ }
// GatewayName: req.GatewayName,
// Namespace: req.Namespace,
// RegionCode: req.RegionCode,
// Port: int(req.Port),
// Enable: req.Enable,
// Hosts: req.Hosts,
// }
// err = s.db.Model(&model.GatewayListener{}).Create(listener).Error
// if err != nil {
// return err
// }
// } else {
// return err
// }
// }
// listener.Enable = req.Enable return uint32(service.ID), nil
// err = s.db.Model(&model.GatewayListener{}).Where("gateway_name = ? AND namespace = ? AND region_code = ?", req.GatewayName, req.Namespace, req.RegionCode).Update("enable", req.Enable).Error }
// if err != nil {
// return err
// }
func (s *wafService) EnableListenerWaf(ctx context.Context, req *EnableListenerWafReq) error {
if req.Enable { if req.Enable {
log.Info().Msgf("Create WAF for listener %s", req.GatewayName) log.Info().Msgf("Create WAF for listener %s", req.GatewayName)
_, err := s.CreateWaf(ctx, &CreateWafReq{ serviceID, err := s.getServiceID(ctx, req.GatewayName, req.Namespace, req.RegionCode)
if err != nil {
if err == gorm.ErrRecordNotFound {
service := &model.WafService{
GatewayName: req.GatewayName,
Namespace: req.Namespace,
RegionCode: req.RegionCode,
Mode: string(req.Mode),
}
if err := s.db.Model(&model.WafService{}).Create(&service).Error; err != nil {
return err
}
serviceID = uint32(service.ID)
} else {
return err
}
}
_, err = s.CreateWaf(ctx, &CreateWafReq{
GatewateInfo: GatewateInfo{ GatewateInfo: GatewateInfo{
GatewayName: req.GatewayName, GatewayName: req.GatewayName,
Namespace: req.Namespace, Namespace: req.Namespace,
...@@ -442,6 +444,7 @@ func (s *wafService) EnableListenerWaf(ctx context.Context, req *EnableListenerW ...@@ -442,6 +444,7 @@ func (s *wafService) EnableListenerWaf(ctx context.Context, req *EnableListenerW
Host: req.Hosts, Host: req.Hosts,
Mode: req.Mode, Mode: req.Mode,
ListenerName: req.ListenerName, ListenerName: req.ListenerName,
ServiceID: serviceID,
}) })
if err != nil { if err != nil {
return err return err
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment