From 6968e672329ea1df617879fe73bee1d7de2f93b7 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Wed, 23 Sep 2026 22:16:50 +0800 Subject: [PATCH] refactor: clean code --- pkg/core/deployer/providers/lecdn/lecdn.go | 12 +-- .../volcengine-waf/volcengine_waf.go | 100 ++++++------------ pkg/sdk3rd/lecdn/client/v3/client.go | 11 +- pkg/sdk3rd/lecdn/client/v4/client.go | 5 +- pkg/sdk3rd/lecdn/master/v3/client.go | 9 +- pkg/sdk3rd/lecdn/master/v4/client.go | 5 +- 6 files changed, 44 insertions(+), 98 deletions(-) diff --git a/pkg/core/deployer/providers/lecdn/lecdn.go b/pkg/core/deployer/providers/lecdn/lecdn.go index 98be24db0..cb6f497ad 100644 --- a/pkg/core/deployer/providers/lecdn/lecdn.go +++ b/pkg/core/deployer/providers/lecdn/lecdn.go @@ -117,8 +117,8 @@ func (d *Deployer) deployToCertificate(ctx context.Context, certPEM, privkeyPEM Name: certName, Description: certDesc, Type: "upload", - SSLPEM: certPEM, - SSLKey: privkeyPEM, + SSLPEM: base64.StdEncoding.EncodeToString([]byte(certPEM)), + SSLKey: base64.StdEncoding.EncodeToString([]byte(privkeyPEM)), AutoRenewal: false, } updateSSLCertResp, err := sdkClient.UpdateCertificateWithContext(ctx, d.config.CertificateId, updateSSLCertReq) @@ -135,8 +135,8 @@ func (d *Deployer) deployToCertificate(ctx context.Context, certPEM, privkeyPEM Name: certName, Description: certDesc, Type: "upload", - SSLPEM: certPEM, - SSLKey: privkeyPEM, + SSLPEM: base64.StdEncoding.EncodeToString([]byte(certPEM)), + SSLKey: base64.StdEncoding.EncodeToString([]byte(privkeyPEM)), AutoRenewal: false, } updateSSLCertResp, err := sdkClient.UpdateCertificateWithContext(ctx, d.config.CertificateId, updateSSLCertReq) @@ -208,7 +208,7 @@ func createSDKClient(serverUrl, apiVersion, apiRole, authMethod, username, passw case "", AUTH_METHOD_PASSWORD: client, err = lecdnclientsdkv3.NewClient(serverUrl, lecdnclientsdkv3.WithLogins(username, password)) case AUTH_METHOD_APIKEY: - client, err = lecdnclientsdkv3.NewClient(serverUrl, lecdnclientsdkv3.WithLogins(username, password)) + client, err = lecdnclientsdkv3.NewClient(serverUrl, lecdnclientsdkv3.WithApiKey(apiKey)) default: err = fmt.Errorf("unsupported auth method '%s'", authMethod) } @@ -234,7 +234,7 @@ func createSDKClient(serverUrl, apiVersion, apiRole, authMethod, username, passw case "", AUTH_METHOD_PASSWORD: client, err = lecdnmastersdkv3.NewClient(serverUrl, lecdnmastersdkv3.WithLogins(username, password)) case AUTH_METHOD_APIKEY: - client, err = lecdnmastersdkv3.NewClient(serverUrl, lecdnmastersdkv3.WithLogins(username, password)) + client, err = lecdnmastersdkv3.NewClient(serverUrl, lecdnmastersdkv3.WithApiKey(apiKey)) default: err = fmt.Errorf("unsupported auth method '%s'", authMethod) } diff --git a/pkg/core/deployer/providers/volcengine-waf/volcengine_waf.go b/pkg/core/deployer/providers/volcengine-waf/volcengine_waf.go index 25e432cdc..b89ad359b 100644 --- a/pkg/core/deployer/providers/volcengine-waf/volcengine_waf.go +++ b/pkg/core/deployer/providers/volcengine-waf/volcengine_waf.go @@ -133,16 +133,39 @@ func (d *Deployer) deployWithCNAME(ctx context.Context, cloudCertId string) erro // REF: https://www.volcengine.com/docs/6511/1214835 domainInfo := listDomainResp.Data[0] updateDomainReq := &vewaf.UpdateDomainInput{ - ProjectName: lo.EmptyableToPtr(d.config.ProjectName), - Region: ve.String(d.config.Region), - Domain: ve.String(d.config.Domain), - AccessMode: ve.Int32(10), - LBAlgorithm: domainInfo.LBAlgorithm, - PublicRealServer: ve.Int32(1), - VpcID: domainInfo.VpcID, - BackendGroups: toUpdateBackendGroups(domainInfo.BackendGroups), - CloudAccessConfig: toUpdateCloudAccessConfigs(domainInfo.CloudAccessConfig), - Protocols: ve.StringSlice([]string{"HTTP", "HTTPS"}), + ProjectName: lo.EmptyableToPtr(d.config.ProjectName), + Region: ve.String(d.config.Region), + Domain: ve.String(d.config.Domain), + AccessMode: ve.Int32(10), + LBAlgorithm: domainInfo.LBAlgorithm, + PublicRealServer: ve.Int32(1), + VpcID: domainInfo.VpcID, + BackendGroups: lo.Map(domainInfo.BackendGroups, func(g *vewaf.BackendGroupForListDomainOutput, _ int) *vewaf.BackendGroupForUpdateDomainInput { + return &vewaf.BackendGroupForUpdateDomainInput{ + Name: g.Name, + AccessPort: lo.Clone(g.AccessPort), + Backends: lo.Map(g.Backends, func(b *vewaf.BackendForListDomainOutput, _ int) *vewaf.BackendForUpdateDomainInput { + return &vewaf.BackendForUpdateDomainInput{ + IP: b.IP, + Port: b.Port, + Protocol: b.Protocol, + Weight: b.Weight, + } + }), + } + }), + CloudAccessConfig: lo.Map(domainInfo.CloudAccessConfig, func(c *vewaf.CloudAccessConfigForListDomainOutput, _ int) *vewaf.CloudAccessConfigForUpdateDomainInput { + return &vewaf.CloudAccessConfigForUpdateDomainInput{ + InstanceID: c.InstanceID, + InstanceName: c.InstanceName, + ListenerID: c.ListenerID, + AccessProtocol: c.AccessProtocol, + Protocol: c.Protocol, + Port: c.Port, + DefenceMode: c.DefenceMode, + } + }), + Protocols: ve.StringSlice([]string{"HTTP", "HTTPS"}), ProtocolPorts: &vewaf.ProtocolPortsForUpdateDomainInput{ HTTP: ve.Int32Slice([]int32{80}), HTTPS: ve.Int32Slice([]int32{443}), @@ -172,63 +195,6 @@ func (d *Deployer) deployWithCNAME(ctx context.Context, cloudCertId string) erro return nil } -// 将 ListDomain 返回的回源组转换为 UpdateDomain 所需的结构。 -func toUpdateBackendGroups(groups []*vewaf.BackendGroupForListDomainOutput) []*vewaf.BackendGroupForUpdateDomainInput { - if groups == nil { - return nil - } - - out := make([]*vewaf.BackendGroupForUpdateDomainInput, 0, len(groups)) - for _, g := range groups { - backend := lo.Map(g.Backends, func(b *vewaf.BackendForListDomainOutput, _ int) *vewaf.BackendForUpdateDomainInput { - if b == nil { - return nil - } - - return &vewaf.BackendForUpdateDomainInput{ - IP: b.IP, - Port: b.Port, - Protocol: b.Protocol, - Weight: b.Weight, - } - }) - - out = append(out, &vewaf.BackendGroupForUpdateDomainInput{ - Name: g.Name, - AccessPort: lo.Clone(g.AccessPort), - Backends: backend, - }) - } - - return out -} - -// 将 ListDomain 返回的云产品接入配置转换为 UpdateDomain 所需的结构。 -func toUpdateCloudAccessConfigs(configs []*vewaf.CloudAccessConfigForListDomainOutput) []*vewaf.CloudAccessConfigForUpdateDomainInput { - if configs == nil { - return nil - } - - out := make([]*vewaf.CloudAccessConfigForUpdateDomainInput, 0, len(configs)) - for _, c := range configs { - if c == nil { - continue - } - - out = append(out, &vewaf.CloudAccessConfigForUpdateDomainInput{ - InstanceID: c.InstanceID, - InstanceName: c.InstanceName, - ListenerID: c.ListenerID, - AccessProtocol: c.AccessProtocol, - Protocol: c.Protocol, - Port: c.Port, - DefenceMode: c.DefenceMode, - }) - } - - return out -} - func createSDKClient(accessKeyId, secretAccessKey, region string) (*vewaf.WAF, error) { config := ve.NewConfig(). WithAkSk(accessKeyId, secretAccessKey). diff --git a/pkg/sdk3rd/lecdn/client/v3/client.go b/pkg/sdk3rd/lecdn/client/v3/client.go index 9226c3f4f..4dc80642e 100644 --- a/pkg/sdk3rd/lecdn/client/v3/client.go +++ b/pkg/sdk3rd/lecdn/client/v3/client.go @@ -47,20 +47,13 @@ func NewClient(serverUrl string, optFns ...OptionsFunc) (*Client, error) { return nil, fmt.Errorf("sdkerr: cannot set both apiKey and username/password") } - baseUrl := strings.TrimSuffix(serverUrl, "/") - if opts.ApiKey != "" { - baseUrl += "/api/client" - } else { - baseUrl += "/prod-api" - } - client := &Client{ username: opts.Username, password: opts.Password, apiKey: opts.ApiKey, } client.rc = resty.New(). - SetBaseURL(baseUrl). + SetBaseURL(strings.TrimSuffix(serverUrl, "/")+"/prod-api"). SetHeader("User-Agent", app.AppUserAgent). SetPreRequestHook(func(_ *resty.Client, req *http.Request) error { if client.apiKey != "" { @@ -150,7 +143,7 @@ func (c *Client) ensureToken(ctx context.Context) error { return nil } - httpreq, err := c.newRequest(http.MethodPost, "/auth/login") + httpreq, err := c.newRequest(http.MethodPost, "/login") if err != nil { return err } else { diff --git a/pkg/sdk3rd/lecdn/client/v4/client.go b/pkg/sdk3rd/lecdn/client/v4/client.go index 834bfb420..5700d98b7 100644 --- a/pkg/sdk3rd/lecdn/client/v4/client.go +++ b/pkg/sdk3rd/lecdn/client/v4/client.go @@ -47,16 +47,13 @@ func NewClient(serverUrl string, optFns ...OptionsFunc) (*Client, error) { return nil, fmt.Errorf("sdkerr: cannot set both apiKey and username/password") } - baseUrl := strings.TrimSuffix(serverUrl, "/") - baseUrl += "/prod-api" - client := &Client{ username: opts.Username, password: opts.Password, apiKey: opts.ApiKey, } client.rc = resty.New(). - SetBaseURL(baseUrl). + SetBaseURL(strings.TrimSuffix(serverUrl, "/")+"/prod-api"). SetHeader("User-Agent", app.AppUserAgent). SetPreRequestHook(func(_ *resty.Client, req *http.Request) error { if client.apiKey != "" { diff --git a/pkg/sdk3rd/lecdn/master/v3/client.go b/pkg/sdk3rd/lecdn/master/v3/client.go index 93b3977f2..4fb95de6b 100644 --- a/pkg/sdk3rd/lecdn/master/v3/client.go +++ b/pkg/sdk3rd/lecdn/master/v3/client.go @@ -47,20 +47,13 @@ func NewClient(serverUrl string, optFns ...OptionsFunc) (*Client, error) { return nil, fmt.Errorf("sdkerr: cannot set both apiKey and username/password") } - baseUrl := strings.TrimSuffix(serverUrl, "/") - if opts.ApiKey != "" { - baseUrl += "/api/admin" - } else { - baseUrl += "/prod-api" - } - client := &Client{ username: opts.Username, password: opts.Password, apiKey: opts.ApiKey, } client.rc = resty.New(). - SetBaseURL(baseUrl). + SetBaseURL(strings.TrimSuffix(serverUrl, "/")+"/prod-api"). SetHeader("Accept", "application/json"). SetHeader("Content-Type", "application/json"). SetHeader("User-Agent", app.AppUserAgent). diff --git a/pkg/sdk3rd/lecdn/master/v4/client.go b/pkg/sdk3rd/lecdn/master/v4/client.go index 502b063c8..668ff0f41 100644 --- a/pkg/sdk3rd/lecdn/master/v4/client.go +++ b/pkg/sdk3rd/lecdn/master/v4/client.go @@ -47,16 +47,13 @@ func NewClient(serverUrl string, optFns ...OptionsFunc) (*Client, error) { return nil, fmt.Errorf("sdkerr: cannot set both apiKey and username/password") } - baseUrl := strings.TrimSuffix(serverUrl, "/") - baseUrl += "/prod-api" - client := &Client{ username: opts.Username, password: opts.Password, apiKey: opts.ApiKey, } client.rc = resty.New(). - SetBaseURL(baseUrl). + SetBaseURL(strings.TrimSuffix(serverUrl, "/")+"/prod-api"). SetHeader("Accept", "application/json"). SetHeader("Content-Type", "application/json"). SetHeader("User-Agent", app.AppUserAgent).