From 414321e3cf78dbbb46c25c52f55e6192e4dc0a5d Mon Sep 17 00:00:00 2001 From: wantoper <305986045@qq.com> Date: Fri, 30 May 2025 11:28:33 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91=E3=80=90?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E3=80=91=E6=96=B0=E5=A2=9E=E7=81=AB=E5=B1=B1?= =?UTF-8?q?=E5=BC=95=E6=93=8EDCDN?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deploy/client/volcengine/volcengineCdn.go | 11 ++- .../client/volcengine/volcengineDCdn.go | 35 ++++++++++ .../client/volcengine/volcengineDCdn_test.go | 19 ++++++ backend/internal/cert/deploy/deploy.go | 6 ++ backend/internal/cert/deploy/volcengine.go | 67 +++++++++++++++++++ .../internal/cert/deploy/volcengine_test.go | 19 ++++++ backend/migrations/init.go | 1 + 7 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 backend/internal/cert/deploy/client/volcengine/volcengineDCdn.go create mode 100644 backend/internal/cert/deploy/client/volcengine/volcengineDCdn_test.go diff --git a/backend/internal/cert/deploy/client/volcengine/volcengineCdn.go b/backend/internal/cert/deploy/client/volcengine/volcengineCdn.go index e0e4e0e..37159a7 100644 --- a/backend/internal/cert/deploy/client/volcengine/volcengineCdn.go +++ b/backend/internal/cert/deploy/client/volcengine/volcengineCdn.go @@ -13,11 +13,20 @@ type VolcEngineCdnClient struct { *cdn.CDN } -func ClientVolcEngineCdn(ak, sk, region string) (*VolcEngineCdnClient, error) { +func createSdkSession(ak, sk, region string) (*session.Session, error) { config := volcengine.NewConfig(). WithRegion(region). WithCredentials(credentials.NewStaticCredentials(ak, sk, "")) sess, err := session.NewSession(config) + if err != nil { + return nil, fmt.Errorf("创建火山引擎客户端失败: %w", err) + } + + return sess, err +} + +func ClientVolcEngineCdn(ak, sk, region string) (*VolcEngineCdnClient, error) { + sess, err := createSdkSession(ak, sk, region) if err != nil { return nil, fmt.Errorf("创建火山引擎CDN客户端失败: %w", err) } diff --git a/backend/internal/cert/deploy/client/volcengine/volcengineDCdn.go b/backend/internal/cert/deploy/client/volcengine/volcengineDCdn.go new file mode 100644 index 0000000..9e21e9b --- /dev/null +++ b/backend/internal/cert/deploy/client/volcengine/volcengineDCdn.go @@ -0,0 +1,35 @@ +package deploy + +import ( + "fmt" + "github.com/volcengine/volcengine-go-sdk/service/dcdn" + "github.com/volcengine/volcengine-go-sdk/volcengine" +) + +type VolcEngineDcdnClient struct { + *dcdn.DCDN +} + +func ClientVolcEngineDcdn(ak, sk, region string) (*VolcEngineDcdnClient, error) { + sess, err := createSdkSession(ak, sk, region) + if err != nil { + return nil, fmt.Errorf("创建火山引擎DCDN客户端失败: %w", err) + } + dcdnClient := &VolcEngineDcdnClient{ + DCDN: dcdn.New(sess), + } + return dcdnClient, nil +} + +func (v *VolcEngineDcdnClient) IDCDNCreateCertBindInput(certId, domain string) error { + createCertBindInput := &dcdn.CreateCertBindInput{ + CertId: volcengine.String(certId), + DomainNames: volcengine.StringSlice([]string{domain}), + } + + _, err := v.CreateCertBind(createCertBindInput) + if err != nil { + return fmt.Errorf("部署证书失败: %w", err) + } + return err +} diff --git a/backend/internal/cert/deploy/client/volcengine/volcengineDCdn_test.go b/backend/internal/cert/deploy/client/volcengine/volcengineDCdn_test.go new file mode 100644 index 0000000..6d1d369 --- /dev/null +++ b/backend/internal/cert/deploy/client/volcengine/volcengineDCdn_test.go @@ -0,0 +1,19 @@ +package deploy + +import ( + "fmt" + "testing" +) + +func TestVolcEngineDcdnClient_IDCDNCreateCertBindInput(t *testing.T) { + id := "cert-" + domain := "hsdcdn.xxxx.com" + + client, _ := ClientVolcEngineDcdn("", "==", "cn-north-1") + + err := client.IDCDNCreateCertBindInput(id, domain) + if err != nil { + fmt.Printf("err:%+v", err) + return + } +} diff --git a/backend/internal/cert/deploy/deploy.go b/backend/internal/cert/deploy/deploy.go index 7689e34..a6e6685 100644 --- a/backend/internal/cert/deploy/deploy.go +++ b/backend/internal/cert/deploy/deploy.go @@ -81,6 +81,12 @@ func Deploy(cfg map[string]any, logger *public.Logger) error { case "huaweicloud-cdn": logger.Debug("部署到华为云CDN...") return DeployHwCdn(cfg) + case "volcengine-cdn": + logger.Debug("部署到火山CDN...") + return DeployVolcEngineCdn(cfg) + case "volcengine-dcdn": + logger.Debug("部署到火山DCDN...") + return DeployVolcEngineDCdn(cfg) default: return fmt.Errorf("不支持的部署: %s", providerName) } diff --git a/backend/internal/cert/deploy/volcengine.go b/backend/internal/cert/deploy/volcengine.go index 3b4b706..4d51678 100644 --- a/backend/internal/cert/deploy/volcengine.go +++ b/backend/internal/cert/deploy/volcengine.go @@ -73,3 +73,70 @@ func DeployVolcEngineCdn(cfg map[string]any) error { } return nil } + +func DeployVolcEngineDCdn(cfg map[string]any) error { + cert, ok := cfg["certificate"].(map[string]any) + if !ok { + return fmt.Errorf("证书不存在") + } + var providerID string + switch v := cfg["provider_id"].(type) { + case float64: + providerID = strconv.Itoa(int(v)) + case string: + providerID = v + default: + return fmt.Errorf("参数错误:provider_id") + } + region, ok := cfg["region"].(string) + if !ok { + return fmt.Errorf("参数错误:region") + } + providerData, err := access.GetAccess(providerID) + if err != nil { + return err + } + providerConfigStr, ok := providerData["config"].(string) + if !ok { + return fmt.Errorf("api配置错误") + } + // 解析 JSON 配置 + var providerConfig map[string]string + err = json.Unmarshal([]byte(providerConfigStr), &providerConfig) + if err != nil { + return err + } + + cdnClient, err := volccdn.ClientVolcEngineCdn(providerConfig["access_key"], providerConfig["secret_key"], region) + dcdnDlient, err := volccdn.ClientVolcEngineDcdn(providerConfig["access_key"], providerConfig["secret_key"], region) + if err != nil { + return err + } + domain, ok := cfg["domain"].(string) + if !ok { + return fmt.Errorf("参数错误:domain") + } + // 设置证书 + keyPem, ok := cert["key"].(string) + if !ok { + return fmt.Errorf("证书错误:key") + } + certPem, ok := cert["cert"].(string) + if !ok { + return fmt.Errorf("证书错误:cert") + } + + certId, err := cdnClient.IUploadCert(certPem, keyPem) + if err != nil { + return fmt.Errorf("上传证书失败: %w", err) + } + err = dcdnDlient.IDCDNCreateCertBindInput(certId, domain) + if err != nil { + return fmt.Errorf("部署证书失败: %w", err) + } + + if err != nil { + return err + } + return nil +} \ No newline at end of file diff --git a/backend/internal/cert/deploy/volcengine_test.go b/backend/internal/cert/deploy/volcengine_test.go index 57d3d1e..35fadb1 100644 --- a/backend/internal/cert/deploy/volcengine_test.go +++ b/backend/internal/cert/deploy/volcengine_test.go @@ -20,3 +20,22 @@ func TestDeployVolcEngineCdn(t *testing.T) { t.Logf("TestDeployVolcEngineCdn succeeded") } } + +func TestDeployVolcEngineDCdn(t *testing.T) { + cfg := map[string]any{ + "domain": "hsdcdn.xxx.com", + "region": "cn-beijing", + "provider_id": "15", + "certificate": map[string]any{ + "cert": "-----BEGIN CERTIFICATE-----\nMIIGKzCCBROgAwIBAgIRAIETZ3JkZne+ONi4B2yUVz0wDQYJKoZIhvcNAQELBQAw\ngY8xCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO\nBgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE3MDUGA1UE\nAxMuU2VjdGlnbyBSU0EgRG9tYWluIFZhbGlkYXRpb24gU2VjdXJlIFNlcnZlciBD\nQTAeFw0yNDA5MTAwMDAwMDBaFw0yNTA5MTAyMzU5NTlaMBYxFDASBgNVBAMMCyou\nd3p6bmIuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwZqlfN0F\nPvDK22O9oe3QTVw73CV24KjpDOfcLYKzvrGCR09DdvDywNom0nbuxwIdsRlnrOdy\nZhAkxv+4OYXgy5LTFBJbk7L+T0BmwUqVAMIMzLEqoH1n4UqM2u96EnVlP/++RqXJ\n/PZU43ODXGjD7cBSx6tVcnkrJpoaqeNU4mab6JAZQbxWH3OVeb/vUHRmmqgVbbjZ\nNXqblmB+vgLzGCO1hMwSdZipdxQCCK27Cjc2DNR53HD3td9cfxLuASbfksKbFsUz\nj40nHGeV2w1oy9intlkFxZl5Fnb9oEa25BOVNXjCUqj7srroRs+Fi28N9pho/dLq\nwAg+0Ea2XHkk/wIDAQABo4IC+DCCAvQwHwYDVR0jBBgwFoAUjYxexFStiuF36Zv5\nmwXhuAGNYeEwHQYDVR0OBBYEFB37sG8JZWvkUYW87+GLN829oG/4MA4GA1UdDwEB\n/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF\nBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIHMCUwIwYIKwYBBQUHAgEWF2h0\ndHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCBhAYIKwYBBQUHAQEEeDB2\nME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29SU0FE\nb21haW5WYWxpZGF0aW9uU2VjdXJlU2VydmVyQ0EuY3J0MCMGCCsGAQUFBzABhhdo\ndHRwOi8vb2NzcC5zZWN0aWdvLmNvbTAhBgNVHREEGjAYggsqLnd6em5iLmNvbYIJ\nd3p6bmIuY29tMIIBfgYKKwYBBAHWeQIEAgSCAW4EggFqAWgAdgDd3Mo0ldfhFgXn\nlTL6x5/4PRxQ39sAOhQSdgosrLvIKgAAAZHZ1GLXAAAEAwBHMEUCIHa4sVaQ7MCK\ngzY8BQrPJ3jVqU/mYroW+Bvay2kfMr9aAiEA4GFWhMT3LjyjwXIZ6y0PX1foUh/z\nJ45Rcab7CVmWT6YAdgAN4fIwK9MNwUBiEgnqVS78R3R8sdfpMO8OQh60fk6qNAAA\nAZHZ1GJtAAAEAwBHMEUCIQD3nYJtq7M2xx3U3l1lZDiHsrTdPjpxpYTUbtRjuFGY\nnAIgbmCafFLwyV6ITODZ83HlRDXFQw+U6zbr3nFl+uLsU1QAdgAS8U40vVNyTIQG\nGcOPP3oT+Oe1YoeInG0wBYTr5YYmOgAAAZHZ1GJuAAAEAwBHMEUCIQCwbQdtnpGp\nMUcEmUc9r3885f4554ztmgodwwl6i30r4gIgaLbzyT6FeZ2CoFtqHQJz+ILmggz+\nzqjIao10Y5XnIJswDQYJKoZIhvcNAQELBQADggEBAJ/BCHrIW+N1upUD3Og1nic3\nGyZP30wqiWfFnsOGlwHybzchcmJ4/4I9YWJCisa8kmQlg1JQbCYAwLDpPwwilc8P\nkE3hiHaciBV9dQPs0qX8k7lGT8Qoj0guvt/tovdHI/IxyFDYUOO+NPRbHGE45Ltr\n83T77Vya7se624XywbGJg5j6LCLDx6gUkbiU3qUac0Z1Tv0/Ln4A+CX/QQbfINqi\nF+1t/TA15btj3m2ApKobwmHfZI2Oao8VDI2vZuls0Si/8m94a3Daf8Q1WYcCJW2U\nKVQ73GU0QXT9n0hgTD5KA2wY04+sybvoEyno+Zu1sSgdeIM7DwloFUmUxmy4uDs=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB\niDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl\ncnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV\nBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx\nMTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBjzELMAkGA1UEBhMCR0IxGzAZBgNV\nBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE\nChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFJTQSBEb21haW4g\nVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEA1nMz1tc8INAA0hdFuNY+B6I/x0HuMjDJsGz99J/LEpgPLT+N\nTQEMgg8Xf2Iu6bhIefsWg06t1zIlk7cHv7lQP6lMw0Aq6Tn/2YHKHxYyQdqAJrkj\neocgHuP/IJo8lURvh3UGkEC0MpMWCRAIIz7S3YcPb11RFGoKacVPAXJpz9OTTG0E\noKMbgn6xmrntxZ7FN3ifmgg0+1YuWMQJDgZkW7w33PGfKGioVrCSo1yfu4iYCBsk\nHaswha6vsC6eep3BwEIc4gLw6uBK0u+QDrTBQBbwb4VCSmT3pDCg/r8uoydajotY\nuK3DGReEY+1vVv2Dy2A0xHS+5p3b4eTlygxfFQIDAQABo4IBbjCCAWowHwYDVR0j\nBBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFI2MXsRUrYrhd+mb\n+ZsF4bgBjWHhMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0G\nA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAbBgNVHSAEFDASMAYGBFUdIAAw\nCAYGZ4EMAQIBMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0\nLmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr\nBgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNv\nbS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov\nL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAMr9hvQ5Iw0/H\nukdN+Jx4GQHcEx2Ab/zDcLRSmjEzmldS+zGea6TvVKqJjUAXaPgREHzSyrHxVYbH\n7rM2kYb2OVG/Rr8PoLq0935JxCo2F57kaDl6r5ROVm+yezu/Coa9zcV3HAO4OLGi\nH19+24rcRki2aArPsrW04jTkZ6k4Zgle0rj8nSg6F0AnwnJOKf0hPHzPE/uWLMUx\nRP0T7dWbqWlod3zu4f+k+TY4CFM5ooQ0nBnzvg6s1SQ36yOoeNDT5++SR2RiOSLv\nxvcRviKFxmZEJCaOEDKNyJOuB56DPi/Z+fVGjmO+wea03KbNIaiGCpXZLoUmGv38\nsbZXQm2V0TP2ORQGgkE49Y9Y3IBbpNV9lXj9p5v//cWoaasm56ekBYdbqbe4oyAL\nl6lFhd2zi+WJN44pDfwGF/Y4QA5C5BIG+3vzxhFoYt/jmPQT2BVPi7Fp2RBgvGQq\n6jG35LWjOhSbJuMLe/0CjraZwTiXWTb2qHSihrZe68Zk6s+go/lunrotEbaGmAhY\nLcmsJWTyXnW0OMGuf1pGg+pRyrbxmRE1a6Vqe8YAsOf4vmSyrcjC8azjUeqkk+B5\nyOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K\n00u/I5sUKUErmgQfky3xxzlIPK1aEn8=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0BAQwFADB7\nMQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD\nVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE\nAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4\nMTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5\nMRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO\nZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0\naG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sI\ns9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnG\nvDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQ\nIjy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfb\nIWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0\ntyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97E\nxwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNV\nicQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5\nD9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJ\nWBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ\n5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzG\nKAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSMEGDAWgBSg\nEQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rID\nZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAG\nBgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29t\nL0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr\nBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUA\nA4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+cli3vA0p+\nrvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCRlv79Q2R+\n/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA\nCiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F\nzZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA\nvGp4z7h/jnZymQyd/teRCBaho1+V\n-----END CERTIFICATE-----", + "key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBmqV83QU+8Mrb\nY72h7dBNXDvcJXbgqOkM59wtgrO+sYJHT0N28PLA2ibSdu7HAh2xGWes53JmECTG\n/7g5heDLktMUEluTsv5PQGbBSpUAwgzMsSqgfWfhSoza73oSdWU//75Gpcn89lTj\nc4NcaMPtwFLHq1VyeSsmmhqp41TiZpvokBlBvFYfc5V5v+9QdGaaqBVtuNk1epuW\nYH6+AvMYI7WEzBJ1mKl3FAIIrbsKNzYM1HnccPe131x/Eu4BJt+SwpsWxTOPjScc\nZ5XbDWjL2Ke2WQXFmXkWdv2gRrbkE5U1eMJSqPuyuuhGz4WLbw32mGj90urACD7Q\nRrZceST/AgMBAAECggEAXzPPuuXopXm9F0MlxhHug4wed3QI0BLffxQpBkwmXVhm\nqvBESaHUjZb4zjfj1QKqXSMUA0dQzvWTUDQBgG/gCdsqZs1cMPYs7gXKQbSOLvA9\nYQ6h2oewZG3HdAWc7qTB5EW7aHwwJm9vcOWlq/RsnGYdjsgm3YLOAE55XB9I54cY\nHrwsO7Dp+7LyBN3BWiL7zkyY0lwg6oHrkzRSWIs0SLbesCeL4+pRDfBMyduA+sFm\ntcji219vrQhF+QNZcZEZsXkLIWQoQROIRFINLJ2uledjo2WNKr9RbUD2FdmUmRjh\nEp6v1XBpGF4C3J+8qYKEKTBcQiUMeH8yFS4l3oUjkQKBgQDuaB20Gl8x13OmRtcq\nWHY1HBa21REo7MuXKWUfmb/jBFjuLLwk7rBT7iF4cCMiYLJiRVvN0axEB9TzusFZ\nihzoiHpsgd8HiE/WJWlnmvtv2RXeXSuovy+3RA7UQEfAzY4/Hq2/6qi4UrRXF01+\nlE3XEwzNk0HO280fI5D+MsKcRwKBgQDP5CMoUH6wumGEMwvMlmkVYzTrnMEdMbpS\nCL/w2mO8hMoPgQB+M3U3CYlRbNE1b51UaMMvsrPmkjLVnc4oFR8FhFKFEZKJPsJm\nxXQp7HLT6QvGwqrYQKTndlpQKlLHdA+8tYZhb2UGLdIpOtzSI1vLIrWHtkZ7PiXU\nhEx1KzjliQKBgQClL6zNGqy02yS9pD33kD2vRNwUKINwSMoz3bG8eIp1IJEBzis6\np8uzC79TNNeTPU68OnSGom3q4UZS7iaEBOdM0yuIPWAsVu2CYn+rEr5+2/qEDShw\nDrBgGh7wP+23kHWsFHStEkl/FYbxBStjthxNFlz7n7msO63fkoQnLUKchwKBgEa0\nD2T5o2zVpq7AcaXeDdUxTWFIicE1FWorAaSXkc4e113YgONq+tWCD8q6mJh04mw/\nyQpi255yYImYRvII5OkKbMpHBLBawOEVDIHpodACdXfe4x3zNmJmNScIjei5x1Rl\n5FMlAJXOZaiSFWH+loyKvHRwgJ4Pr+wMJri+v3YJAoGBAJsNKSngi4JTsgMMoU9V\nKrkkTEmhqb4V5NkQdhMiz95VJs02LLgaOoYiJA4zKoQxYrpgH1uFYEosF5Tk4Ckm\nCm4iz77ajObOgN5WOVBXLTAg3C8F48Buv7jRzDMT6qSDedGYzNqSta09gd26SnhH\n6e0SoPwXUpw6XrqfimZ3srow\n-----END PRIVATE KEY-----", + "issuer": "cert-issuer", + }, + } + err := DeployVolcEngineDCdn(cfg) + if err != nil { + t.Errorf("TestDeployVolcEngineDCdn failed: %v", err) + } else { + t.Logf("TestDeployVolcEngineDCdn succeeded") + } +} diff --git a/backend/migrations/init.go b/backend/migrations/init.go index d8d18a8..4f37f6a 100644 --- a/backend/migrations/init.go +++ b/backend/migrations/init.go @@ -185,6 +185,7 @@ INSERT INTO settings (key, value, create_time, update_time, active, type) VALUES InsertIfNotExists(db, "access_type", map[string]any{"name": "westcn", "type": "dns"}, []string{"name", "type"}, []any{"westcn", "dns"}) // 火山引擎 InsertIfNotExists(db, "access_type", map[string]any{"name": "volcengine", "type": "dns"}, []string{"name", "type"}, []any{"volcengine", "dns"}) + InsertIfNotExists(db, "access_type", map[string]any{"name": "volcengine", "type": "host"}, []string{"name", "type"}, []any{"volcengine", "host"}) // godaddy InsertIfNotExists(db, "access_type", map[string]any{"name": "godaddy", "type": "dns"}, []string{"name", "type"}, []any{"godaddy", "dns"})