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 {
Host []string `json:"host"`
Mode WafMode `json:"mode"`
ListenerName string `json:"listener_name"`
ServiceID uint32 `json:"service_id"`
}
type DeleteWafReq struct {
......
......@@ -217,7 +217,8 @@ func (s *wafService) CreateWaf(ctx context.Context, req *CreateWafReq) (*WafServ
Enable: 1,
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)
return nil
}
func (s *wafService) EnableListenerWaf(ctx context.Context, req *EnableListenerWafReq) error {
// listener := &model.GatewayListener{}
// err := s.db.Model(&model.GatewayListener{}).Where("gateway_name = ? AND namespace = ? AND region_code = ?", req.GatewayName, req.Namespace, req.RegionCode).First(listener).Error
// if err != nil {
// if err == gorm.ErrRecordNotFound {
// 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
// }
// }
func (s *wafService) getServiceID(ctx context.Context, gatewayName, namespace, regionCode string) (uint32, error) {
service := &model.WafService{}
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 {
return 0, err
}
// listener.Enable = req.Enable
// 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
// }
return uint32(service.ID), nil
}
func (s *wafService) EnableListenerWaf(ctx context.Context, req *EnableListenerWafReq) error {
if req.Enable {
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{
GatewayName: req.GatewayName,
Namespace: req.Namespace,
......@@ -442,6 +444,7 @@ func (s *wafService) EnableListenerWaf(ctx context.Context, req *EnableListenerW
Host: req.Hosts,
Mode: req.Mode,
ListenerName: req.ListenerName,
ServiceID: serviceID,
})
if err != nil {
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