Commit 59201340 authored by qiuqunfeng's avatar qiuqunfeng
Browse files

Refactor EnableListenerWafs to support new listener format

- Updated `EnableListenerWafsReq` struct to use string slice for listeners
- Modified WAF service method to parse listener string into hosts and port
- Simplified listener WAF configuration logic to work with new listener representation
- Added error handling for port parsing and listener format validation
parent 20c5b6e6
{
"region_configs": [
{
"region_code": "cn-east-1",
"api_server": "https://172.21.1.191:6443",
"ca_data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1USXlOekExTlRReE5sb1hEVE14TVRJeU5UQTFOVFF4Tmxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTC95Cmt1VDNEN3BtZ1h3VGlzcFFZMTFVZVZaanRSZEUzZTRDZWVST3FkUnJYakJvNEp4Z2dDRUVZamo5TWp3NUFMUlQKaDFpazJXWloxd3IzNFA0RzRQTVVWUk8xNVRTR3BsNzNNQi9LejBOK01GcG9rTG9kTkFDQ3djM2FRM3htUU5ZeApXdmlKK1h0clpkS3hYVVZvN0tTYmNKb2x3eWgyaGtBMkJtR0VRNWZoaCtwMWVYV0xDdWFxQUJUZU56VVlrLytiClNZTmpRMlhkUnpxMENDblgzNnpnNkFHbUJnQUJUK0wvMlI1VDJRZzF3VktDTDNqZ1JwQW9DSEt0bXRuejVUcVgKQmNpT2F6ZzJuM3h2amxwdHNTZjBqZDhRSHdXZWd0VnBBTmQ5UVpKc2djdFRNdVB6OENKZjB2d0taZHAzbzh5VApvRHNpR1JmUjhUeUExQXhWOWY4Q0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZPK2hFdEJYdDBLajlRdHhHR0dqYUhBS2NEUFhNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBRWhWcEV1ZW9tZjNTVEw3bDBkSQpLS1Y5VC9qd3NYbFNQZU5INnhNQnMrS3htRi9mS2dmM1dRbnhlVWpLaVJ4S1YwZzhYb0pqd2VvN2RKYzVXRFFrCjV1QzRvTHl2L3VydzRhZCsxdGovVFdXUDIvK0NlWVRIblZxbW5NVzY0azdTaSt3cDBIRDFEYjRXS3FHdEZWV0cKRDNkUXlhNDBoN1krMUcya1FPSklNYVlaNXpCc2FzSzJWSjN4eUFGYTFRM3lFQWpsY1l2SDh6ZWMwNVlNU0phZQppRlc0aTNPK2YveWJwT2VwT2RTSDdUL0tLdWd1b0pTNVFSSjFVT3lWVGg3bmp6NERVUlhxdzdDcWxXc2JONWpCCm1yOE96aXpndVI5WE43NjZYbkthcU9NWXlhcE02RzlWSmVSZHdjaE9aN3hKaHdhWVJncTRWSE4yazJDMyt6UGkKZ3dZPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==",
"token": "",
"client_cert_data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJRTg0c2l2UmRGaUF3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TVRFeU1qY3dOVFUwTVRaYUZ3MHlOVEV5TVRjd056TTFNakJhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXVKd0JOS0xVSEhaNFRUa2kKQlJFakVJdk40dndMMWlOWVMxQzdwVFBDUzdhbHp5TFpVZWVFOE9qV2I4OWtXVGpLeStyN2dGeTNucVZsMkdCTgpjU2dUVXA0QUNMeCs3ZVVtbU9UWUtoMG82WXd0MlJ6TmVySHlYSnB3aW0wb1drQnp6eno1YzZ6eW5WQ0Y0QWtICk1IaHBLdXU5RFQ4SkozYVhrdDVZR1NuR0FSS2dVNWEvU0pmelAwanRJV1hmdUtIdlFpdzdmMVNmM1VxSjllVkwKZUk5TjYzcnhHREk4VERaU01kR0hzZjBhVi9KUGRDdmQxUDkxei9ab2wwVU5qejBhNVd3b1g0dXVpelVGMXA1RApxbGtnbndweEU1M21VUzU2bTlIdEk1bStuUjJ4OHFZUGYyb2M5bWZndW1RZDY2eWdoNmV2di9LZzkxWUMxaEtSCnJlWnV1d0lEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JUdm9STFFWN2RDby9VTGNSaGhvMmh3Q25BegoxekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkpDWVQwMkNiMUV2MVVyVzNZcllqSjZ1S2J1L0RRalNxN2xxCktpS2RjajZ4Z1BGYVVRVVo1STlXRmtWNk84clhsK1RHeDZjZGVZd2lPaHhmblRxU1dlME9wSTA4SEk2dlJJUU0KcFFwWmVuUTU3ckNiNUVEc0ZoLzVNdVNvZHFHeHhaR3F5c1RSOU8xUTdyVmlVWmNlbUNITlNLMXQxYlNRa0pTRQpsckpFZlRJa3Z3cFRPSm5PM3lkT1hMbHAzYXpNTlNuVkVJNis5NkcrengxeEF2ZVhlL3pwS0NNUTRpN0RLeUp5ClNYOEgvRU1NZWZwRWRtY0RFUXk2Q1YxM1ZOWlpRVDJGTUVvQ0RFVEt2azlnOFNidVY0cytDRnF2bTZzMm84ZUsKV0lFYlZNUUlQaHVRVS9Sb3FzaUx6MUtJUGpiY3BrZGxFbitOQjZlN2pGM1RPMm92MkE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==",
"client_key_data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBdUp3Qk5LTFVISFo0VFRraUJSRWpFSXZONHZ3TDFpTllTMUM3cFRQQ1M3YWx6eUxaClVlZUU4T2pXYjg5a1dUakt5K3I3Z0Z5M25xVmwyR0JOY1NnVFVwNEFDTHgrN2VVbW1PVFlLaDBvNll3dDJSek4KZXJIeVhKcHdpbTBvV2tCenp6ejVjNnp5blZDRjRBa0hNSGhwS3V1OURUOEpKM2FYa3Q1WUdTbkdBUktnVTVhLwpTSmZ6UDBqdElXWGZ1S0h2UWl3N2YxU2YzVXFKOWVWTGVJOU42M3J4R0RJOFREWlNNZEdIc2YwYVYvSlBkQ3ZkCjFQOTF6L1pvbDBVTmp6MGE1V3dvWDR1dWl6VUYxcDVEcWxrZ253cHhFNTNtVVM1Nm05SHRJNW0rblIyeDhxWVAKZjJvYzltZmd1bVFkNjZ5Z2g2ZXZ2L0tnOTFZQzFoS1JyZVp1dXdJREFRQUJBb0lCQUd0L1hDeGNUSXN1YVNyKwpnOUxUZ2NtV3Z4TFhsY1RoMi80dlNyVU9DS3V4OWFkQ01hM0IxT1c3ajNLWUgyVGM3eW9DOE9SMEdQQW1lOEdkCmdqck1EVVJrZ0x5Vmxvdk1qY2NtS3NHTExWR2hzT2ptSHJpOWVkVjJrT1hxWGo3L25QQW1IMU8rZDZBblRXMkIKbEZBakxZb3lyMmxSTlhGbld5ZklsU0JCOU95V0FIRWExTlQ5OUV4ckU3TUpla3hXTkN5Y3pSTlhsZm1mTU9qMwpJaFhXcHFKWTVPZ3lEZkxnc291b1MybnpkeW9RT3lyUXplWjJib0p3a3dZRHUyR3lndTRNRXBRdmxKdEd3ZStCCm1TNEhSMlBYbzVNOERCSVV4NHJRNTlzb1cyK3NPZm1kcnV0YnF3RklTMHBoalBzU1pNR253KzZKUUpka1E0Q1gKVU5tOVVIRUNnWUVBelVKaTdmdWdNR1k0MVA2eWpSQTVZMFIwQWI2OXN2OWl1TjBZVGEzYTJENVZWenRUL0RUcgpvcVE1a0VkR1FFaXhjWHROWW52cHZaL3U0QVZ5UTlIQ01xWUMrdVJ5b1pWSEh1UkRaVDdCYWtsTHg1eXhYelYzCitTWVlGYTJuWUtiRGN6Qkl1RWhlL01UVFI3OS9mUmNuZXphQWl4NXJ4eXVDRUdrZFFhdEZLc1VDZ1lFQTVqN1AKVjRpbkNmUHAxOVJkL0MwcFFnSFJpMnJoYm4walZDbFh6Z0phQUthcmZUbUVGekQzY0xpbnFCVmhKemlSR2xOdQpPS1ZvdFJVaXNTbjVob2NDaDhDb2w5dkRPRlNXUG56TmhZTUFWb0hCNHNZZnZqL0l2Y0diU2F6RDNJdnkyTDNIClNYOFNtS2RvcEMya1dxaGlVVllQVVhRVHdhNjFXZlIxay9HOHkzOENnWUEyVEg2UlNFUjdLVCtWa1A4NDgvYksKZk54WGJkY1BHQ0pNbHlpTHZCY3RwMmU2R05iQjNGb05mM1krNWF2KzYzd05jam5wZUxBLzJxUTluUk02UDY0bwo2ZVBWN1VNcDNheWZ6bkRKd3MwMXljZ0RPVDl1MlYwd2l0UktQOU1NYlhFODhxUDZKQ01FcVNqZlRSaHp4Z0ZLCnhnTkJTajNteFdxMTNxaS9xNGd6cFFLQmdRRGRob3NaampvZzRsUVlPNVNkdjVuVmowaGNXbDVCWHhjeHI0RnkKaldLcEE3TTFqYlFnV0JXS2w2OS9rZXBpd1JNakFDaXBTY1JmamRGT0liT1prcWFGbElEaGN5ajJOclJEdFBKTQp4Y2o2Y21mb1YzVk5KN050bHl4Z2kxLzYvNCtNcDdOcGJHQ3BEVkVwdlZ4SGVZRDIvdFZJS21XajBRTmRaRTRJCkpPcmY0d0tCZ0dIRFE1aHF3ak9YNHBxZDZXSVY1M1RZZFZKZ3JodGk1WG1nOHZ0QzR0bDNFL0dNZU9tOG8xTmEKaFBQWDJqTm1mNFFzTUNHNWtteDNJWlFKVGJmU0FJUGNZdWxRZkpIWmZVbmx6ckhHRi9WTXdyejFaS0lpY1JQegpzVDZ2NUpOcDRUdlRGdnVFb2YwRmQ4SC81cW5XcERacFlQRGJ1VjRDRCtDNkZiT0xSUTZaCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg=="
}
],
"db_config": {
"user": "ivan",
"password": "Mysql-ha@123",
"host": "172.21.1.191",
"port": 30036,
"database": "ivan"
}
}
\ No newline at end of file
This diff is collapsed.
......@@ -235,8 +235,8 @@ type ListenerWaf struct {
type EnableListenerWafsReq struct {
GatewateInfo
Enable bool `json:"enable"`
ListenerWafs []ListenerWaf `json:"listener_wafs"`
Enable bool `json:"enable"`
Listeners []string `json:"listeners"`
}
type WafRule struct {
......
......@@ -702,10 +702,22 @@ func (s *wafService) EnableListenerWafs(ctx context.Context, req *EnableListener
currentPortSet := sets.NewInt(portList...)
desiredPortSet := sets.NewInt()
wafMap := map[int]ListenerWaf{}
for _, listener := range req.ListenerWafs {
desiredPortSet.Insert(listener.Port)
wafMap[listener.Port] = listener
wafMap := map[int][]string{}
for _, listener := range req.Listeners {
// get port from listener, like hosts1@127.0.0.1@abc.com-8080
index := strings.LastIndex(listener, "-")
if index == -1 {
return fmt.Errorf("failed to get listener port: %v", listener)
}
port := listener[index+1:]
portInt, err := strconv.Atoi(port)
if err != nil {
return fmt.Errorf("failed to parse listener port: %v", err)
}
desiredPortSet.Insert(portInt)
hosts := strings.Split(listener, "@")
wafMap[portInt] = hosts
}
// enable WAF for ports that are in the desired port set but not in the current port set
......@@ -718,7 +730,7 @@ func (s *wafService) EnableListenerWafs(ctx context.Context, req *EnableListener
RegionCode: req.RegionCode,
},
Port: port,
Hosts: wafMap[port].Hosts,
Hosts: wafMap[port],
})
if err != nil {
return fmt.Errorf("failed to enable listener WAF: %v", 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