From eb302776a87114ce088abf56e6bc6b8e49c117bc Mon Sep 17 00:00:00 2001 From: wantoper <305986045@qq.com> Date: Wed, 21 May 2025 10:37:46 +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=E4=B8=83=E7=89=9B=E4=BA=91CND/?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/api/access.go | 2 + backend/internal/cert/deploy/deploy.go | 6 + backend/internal/cert/deploy/qiniu.go | 135 ++++++++++++--------- backend/internal/cert/deploy/qiniu_test.go | 48 +++++++- 4 files changed, 132 insertions(+), 59 deletions(-) diff --git a/backend/app/api/access.go b/backend/app/api/access.go index c90eafc..dba2bed 100644 --- a/backend/app/api/access.go +++ b/backend/app/api/access.go @@ -166,6 +166,8 @@ func TestAccess(c *gin.Context) { result = deploy.TencentCloudAPITest(form.ID) case "aliyun": result = deploy.AliyunCdnAPITest(form.ID) + case "qiniu": + result = deploy.QiniuAPITest(form.ID) default: public.FailMsg(c, "不支持测试的提供商") } diff --git a/backend/internal/cert/deploy/deploy.go b/backend/internal/cert/deploy/deploy.go index c20f347..bf32de9 100644 --- a/backend/internal/cert/deploy/deploy.go +++ b/backend/internal/cert/deploy/deploy.go @@ -55,6 +55,12 @@ func Deploy(cfg map[string]any, logger *public.Logger) error { case "localhost": logger.Debug("部署到本地...") return DeployLocalhost(cfg) + case "qiniu-cdn": + logger.Debug("部署到七牛云CDN...") + return DeployQiniuCdn(cfg) + case "qiniu-oss": + logger.Debug("部署到七牛云OSS...") + return DeployQiniuOss(cfg) default: return fmt.Errorf("不支持的部署: %s", providerName) } diff --git a/backend/internal/cert/deploy/qiniu.go b/backend/internal/cert/deploy/qiniu.go index 129abcf..f831854 100644 --- a/backend/internal/cert/deploy/qiniu.go +++ b/backend/internal/cert/deploy/qiniu.go @@ -12,41 +12,6 @@ import ( "github.com/qiniu/go-sdk/v7/client" ) -// DeployQiniuCdn deploys an SSL certificate to a Qiniu CDN domain. -// It takes a configuration map containing certificate data and domain information, -// uploads the certificate to Qiniu's service, and then applies it to the specified domain. -// -// Parameters: -// - cfg: A map containing: -// - "certificate": Map with "key" (private key) and "cert" (certificate) strings -// - "domain": String representing the domain to apply the certificate to -// - "provider_id": The ID of the Qiniu provider (string or float64) -// -// Returns: -// - error: nil on success, or an error describing what went wrong -func DeployQiniuCdn(cfg map[string]any) error { - _, ok := cfg["certificate"].(map[string]any) - if !ok { - return fmt.Errorf("证书不存在") - } - domain, ok := cfg["domain"].(string) - if !ok { - return fmt.Errorf("参数错误:domain") - } - - certId, err := uploadQiniuCert(cfg) - if err != nil { - return err - } - path := fmt.Sprintf("domain/%v/sslize", domain) - m := map[string]any{ - "certid": certId, - } - var response commonResponse - err = requestQiniu(cfg, path, m, "PUT", &response) - return err -} - type commonResponse struct { Code int `json:"code"` Error string `json:"error"` @@ -56,25 +21,6 @@ type sslCertResponse struct { CertID string `json:"certID"` } -func uploadQiniuCert(cfg map[string]any) (string, error) { - cert, ok := cfg["certificate"].(map[string]any) - keyPem, ok := cert["key"].(string) - if !ok { - return "", fmt.Errorf("证书错误:key") - } - certPem, ok := cert["cert"].(string) - if !ok { - return "", fmt.Errorf("证书错误:cert") - } - m := map[string]any{ - "pri": keyPem, - "ca": certPem, - } - var response sslCertResponse - err := requestQiniu(cfg, "sslcert", m, "POST", &response) - return response.CertID, err -} - func requestQiniu(cfg map[string]any, path string, m map[string]any, method string, response any) (err error) { var providerID string switch v := cfg["provider_id"].(type) { @@ -96,7 +42,7 @@ func requestQiniu(cfg map[string]any, path string, m map[string]any, method stri if err != nil { return err } - + uri := fmt.Sprintf("https://api.qiniu.com/%v", path) credentials := auth.New(providerConfig["access_key"], providerConfig["access_secret"]) header := http.Header{} @@ -104,3 +50,82 @@ func requestQiniu(cfg map[string]any, path string, m map[string]any, method stri err = client.DefaultClient.CredentialedCallWithJson(context.Background(), credentials, auth.TokenQBox, response, method, uri, header, m) return err } + + +func DeployQiniuCdn(cfg map[string]any) error { + _, ok := cfg["certificate"].(map[string]any) + if !ok { + return fmt.Errorf("证书不存在") + } + domain, ok := cfg["domain"].(string) + if !ok { + return fmt.Errorf("参数错误:domain") + } + + certId, err := uploadQiniuCert(cfg) + if err != nil { + return err + } + path := fmt.Sprintf("domain/%v/sslize", domain) + m := map[string]any{ + "certid": certId, + } + var response commonResponse + err = requestQiniu(cfg, path, m, "PUT", &response) + return err +} + +func DeployQiniuOss(cfg map[string]any) error { + _, ok := cfg["certificate"].(map[string]any) + if !ok { + return fmt.Errorf("证书不存在") + } + domain, ok := cfg["domain"].(string) + if !ok { + return fmt.Errorf("参数错误:domain") + } + + certId, err := uploadQiniuCert(cfg) + if err != nil { + return err + } + m := map[string]any{ + "certid": certId, + "domain": domain, + } + var response commonResponse + err = requestQiniu(cfg, "cert/bind", m, "POST", &response) + return err +} + +func uploadQiniuCert(cfg map[string]any) (string, error) { + cert, ok := cfg["certificate"].(map[string]any) + keyPem, ok := cert["key"].(string) + if !ok { + return "", fmt.Errorf("证书错误:key") + } + certPem, ok := cert["cert"].(string) + if !ok { + return "", fmt.Errorf("证书错误:cert") + } + m := map[string]any{ + "pri": keyPem, + "ca": certPem, + } + var response sslCertResponse + err := requestQiniu(cfg, "sslcert", m, "POST", &response) + return response.CertID, err +} + +func QiniuAPITest(providerID string) error { + cfg := map[string]any{ + "provider_id": providerID, + } + m := map[string]any{} + var response commonResponse + err := requestQiniu(cfg, "sslcert", m, "GET", &response) + if err != nil { + return fmt.Errorf("测试请求失败: %v", err) + } + return nil +} \ No newline at end of file diff --git a/backend/internal/cert/deploy/qiniu_test.go b/backend/internal/cert/deploy/qiniu_test.go index 0f6c497..16c0a1b 100644 --- a/backend/internal/cert/deploy/qiniu_test.go +++ b/backend/internal/cert/deploy/qiniu_test.go @@ -2,13 +2,27 @@ package deploy import "testing" +func TestQiniuUploadCert(t *testing.T) { + cfg := map[string]any{ + "domain": "xxxxx.cn", + "provider_id": "11", + "certificate": map[string]any{ + "key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAuHz6s4Q4R5DcNV0d+1R6FiGJTfrb4LLN9VNEGOWfgG3ArnJz\n3gFzOLMUZp0BLT8b6HaY1IpV1ol4ViVd0sf/oWusGG3S5+qJw1DIdr+KB096lRwr\nIH64cyhtPdtPEjY+f8PU2BBGO6qbH9qrXiGABYir0wFIvP8/17YCxmc1qcCL8r7U\nvJ58ZiFw0jw3qgxkGebPfKGAasD2irGKWf3qtHp/U9OLRTQ+vh7Vp+l5tUMLE+3n\nrLcj0nZM2GMDARjrydPMY0H53RbVkpfdEDciH1NiJMYZ1nOySAnKnE8w4Ah/+VQC\namEUkmUiL8bor2tFkX6jE7F1JzdkL+4mGmPyaQIDAQABAoIBAAOfl3BEK14jIbgT\nQp385u2dWKwv6PaiUbo87uxK7Orhp5761NIU7DWTtYBdxWKlR9U1KG5FjfG0lH5N\n+z2YZlRoysyrXNuSNy90sY3ngtH+78o9mePoU+jAcAN+1bA8DCvdOvEdbLZfn5lX\nZaCSft2ySqb5HPvH9ZyKe3EjIMzbLeP5se4ctWkIXSRfIUuZGHBIChD3c6i6F2HY\nyfBztAnrrSY9IccaTOHdLlwI4FJWeSMKYCHgeh3IYKlmkvY0gdHHCh3rgzgapTzm\n/XbtPpWIR7hl4IG3zcFHLKw5quucNI3xCDS2aeIen3J4o77btfNEqUgw+hts+72b\nVSwXHcECgYEA0LnAVxx4eTxFLA8MrhIcW/QD6qOAEMl8UN+hVJrCrBpcufG7KYU0\nHJ92SK9hmMkB1/SRe9iMNyf1yzE0PhYQoa9VZaHvo93BusjM32D+Sev2GFGH0K0a\n35mO0v9n0r/rzXf7KqRF2WckRQGf79pvtoORXREb5Xbc0+u4k6ydIZkCgYEA4kXn\nmrwIAlpmhrZ4GQtyMhq4S9ZGvEPf0rpxaJS1Ke0kSYbmStTVvYRPVrs6E4exLYSP\nAOCLDeUKxtflaFBnhJ5zJvQteyp8DTAskjxsSaS5OR3Obl4W7j6Fc6N3My1QJJqO\nJfQw7IC1ABlq6jbX7g9c+Kwuz2sOlsdTv0sDeVECgYAWDUnw6iUgSenU+dIRIgC1\nBlbTl2qUW3Uy5i2ZTrB6ll5tlsh7XoNe8soAa+cXyUTUmBY2y24k9afWS+CFHrer\nHWccUbuLyIYLQePDRfAXx0I814BN37wTG5onWKyTa4tyLdbvbmOi0G7Yi49mO+HJ\nmqTk/EXCPIigKytZDsebIQKBgQDM5QIpstUJ1HR8ziSIgT3iMyHpwloBRvEZ8Cyb\nx/UYxx2R2y8UWhBGcdYqMpYPc1M0ZZHc+HfSmDIfBwc8Y3qps5WQk5HPsxPsGVBz\nB3YDZb84Ak6Y0GixSjosEbzxwbmNu8q2gZ3/uziro1iWSB1V++FzaO9mcYofbNXg\nJfw6UQKBgQC+R+3oRHYWM83fu9th4fKVKwhpB02DCbxqHyBEV0Z0GTaSuX5jmGh3\nWceaosKWNP7kKsdycPXrhC3M1qvl5xtZvFoWSsyY89Fa5gtAlBYTnY31oTc1FNFp\nVADoQ9+6ezzJltyAm+rSnbjUrYQCFpyKX/XNvoL1PlwYAHRvkJ9Eng==\n-----END RSA PRIVATE KEY-----\n", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFADCCA+igAwIBAgISBo+AmwbcW4aYdv34jdvxVwLAMA0GCSqGSIb3DQEBCwUA\nMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD\nEwNSMTAwHhcNMjUwNTIxMDA1NDIyWhcNMjUwODE5MDA1NDIxWjAeMRwwGgYDVQQD\nExNxaWFubml1LndhbnRvcGVyLm1lMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAuHz6s4Q4R5DcNV0d+1R6FiGJTfrb4LLN9VNEGOWfgG3ArnJz3gFzOLMU\nZp0BLT8b6HaY1IpV1ol4ViVd0sf/oWusGG3S5+qJw1DIdr+KB096lRwrIH64cyht\nPdtPEjY+f8PU2BBGO6qbH9qrXiGABYir0wFIvP8/17YCxmc1qcCL8r7UvJ58ZiFw\n0jw3qgxkGebPfKGAasD2irGKWf3qtHp/U9OLRTQ+vh7Vp+l5tUMLE+3nrLcj0nZM\n2GMDARjrydPMY0H53RbVkpfdEDciH1NiJMYZ1nOySAnKnE8w4Ah/+VQCamEUkmUi\nL8bor2tFkX6jE7F1JzdkL+4mGmPyaQIDAQABo4ICITCCAh0wDgYDVR0PAQH/BAQD\nAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAA\nMB0GA1UdDgQWBBSoKVx8BE4dXkNxwpF+m6e4BN/3yTAfBgNVHSMEGDAWgBS7vMNH\npeS8qcbDpHIMEI2iNeHI6DAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAKGF2h0\ndHA6Ly9yMTAuaS5sZW5jci5vcmcvMB4GA1UdEQQXMBWCE3FpYW5uaXUud2FudG9w\nZXIubWUwEwYDVR0gBAwwCjAIBgZngQwBAgEwLgYDVR0fBCcwJTAjoCGgH4YdaHR0\ncDovL3IxMC5jLmxlbmNyLm9yZy82NS5jcmwwggECBgorBgEEAdZ5AgQCBIHzBIHw\nAO4AdQDtPEvW6AbCpKIAV9vLJOI4Ad9RL+3EhsVwDyDdtz4/4AAAAZbwiyI8AAAE\nAwBGMEQCIC+TpGUBZaC5oRkWi4j3zwk3fDLWJ9xX+BGv2x136zloAiBWANxlia2I\np7ILDHI8PikI4hnEnxK53seyylleexYccQB1AMz7D2qFcQll/pWbU87psnwi6YVc\nDZeNtql+VMD+TA2wAAABlvCLIl0AAAQDAEYwRAIgIzYfFQEsW7F6cKkR2djfkDih\nyCC6L9U7oWcQFw28dxICIFnz/I8+eWs8894oz8D6JogVsP5W4w9yidkQ3C9Pzcoj\nMA0GCSqGSIb3DQEBCwUAA4IBAQBKVpDe0xZCFGJ0pX4vEdnBgaoBt8As8QAG3VCA\nuVzR2baqvRd5XNFph6mBAu5AdRgrMLhhrlIPLMqMXDpV0bdG5zzILJ7Xv6xjZE55\n9bfdTRt0hSDqD///6F4cy4STF9JJ3iJ0bkqfu9k0k4iBixqhYY0OYeIF70Zocyy9\n01BwvWdsIFz2OyVPihsdXNOwR+szAlkoyN578cFVavlOQVyAJte114gMi3++JkBd\n1e1zSbWMhaOzoQC/VSRuye+9WW66T706APTyPKHWK0NkPnv+VqIIO2Z5rBtomRxz\n/EK9ZM4IZZf19ybCaCYnScD01QCGMjE2ERCtanN8l3tZClSb\n-----END CERTIFICATE-----\n\n-----BEGIN CERTIFICATE-----\nMIIFBTCCAu2gAwIBAgIQS6hSk/eaL6JzBkuoBI110DANBgkqhkiG9w0BAQsFADBP\nMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy\nY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa\nFw0yNzAzMTIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF\nbmNyeXB0MQwwCgYDVQQDEwNSMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\nAoIBAQDPV+XmxFQS7bRH/sknWHZGUCiMHT6I3wWd1bUYKb3dtVq/+vbOo76vACFL\nYlpaPAEvxVgD9on/jhFD68G14BQHlo9vH9fnuoE5CXVlt8KvGFs3Jijno/QHK20a\n/6tYvJWuQP/py1fEtVt/eA0YYbwX51TGu0mRzW4Y0YCF7qZlNrx06rxQTOr8IfM4\nFpOUurDTazgGzRYSespSdcitdrLCnF2YRVxvYXvGLe48E1KGAdlX5jgc3421H5KR\nmudKHMxFqHJV8LDmowfs/acbZp4/SItxhHFYyTr6717yW0QrPHTnj7JHwQdqzZq3\nDZb3EoEmUVQK7GH29/Xi8orIlQ2NAgMBAAGjgfgwgfUwDgYDVR0PAQH/BAQDAgGG\nMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/\nAgEAMB0GA1UdDgQWBBS7vMNHpeS8qcbDpHIMEI2iNeHI6DAfBgNVHSMEGDAWgBR5\ntFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKG\nFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0gBAwwCjAIBgZngQwBAgEwJwYD\nVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVuY3Iub3JnLzANBgkqhkiG9w0B\nAQsFAAOCAgEAkrHnQTfreZ2B5s3iJeE6IOmQRJWjgVzPw139vaBw1bGWKCIL0vIo\nzwzn1OZDjCQiHcFCktEJr59L9MhwTyAWsVrdAfYf+B9haxQnsHKNY67u4s5Lzzfd\nu6PUzeetUK29v+PsPmI2cJkxp+iN3epi4hKu9ZzUPSwMqtCceb7qPVxEbpYxY1p9\n1n5PJKBLBX9eb9LU6l8zSxPWV7bK3lG4XaMJgnT9x3ies7msFtpKK5bDtotij/l0\nGaKeA97pb5uwD9KgWvaFXMIEt8jVTjLEvwRdvCn294GPDF08U8lAkIv7tghluaQh\n1QnlE4SEN4LOECj8dsIGJXpGUk3aU3KkJz9icKy+aUgA+2cP21uh6NcDIS3XyfaZ\nQjmDQ993ChII8SXWupQZVBiIpcWO4RqZk3lr7Bz5MUCwzDIA359e57SSq5CCkY0N\n4B6Vulk7LktfwrdGNVI5BsC9qqxSwSKgRJeZ9wygIaehbHFHFhcBaMDKpiZlBHyz\nrsnnlFXCb5s8HKn5LsUgGvB24L7sGNZP2CX7dhHov+YhD+jozLW2p9W4959Bz2Ei\nRmqDtmiXLnzqTpXbI+suyCsohKRg6Un0RC47+cpiVwHiXZAW+cn8eiNIjqbVgXLx\nKPpdzvvtTnOPlC7SQZSYmdunr3Bf9b77AiC/ZidstK36dRILKz7OA54=\n-----END CERTIFICATE-----\n", + }, + } + certId, _ := uploadQiniuCert(cfg) + t.Logf(certId) + +} + func TestQiniuCdn(t *testing.T) { cfg := map[string]any{ - "domain": "zwrnb.cn", - "provider_id": "24", + "domain": "xxxxx.cn", + "provider_id": "11", "certificate": map[string]any{ - "key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAxIjmAi/paC2OmG7nOqZ+OJx7spDrx7yZiWvn1XgLW/5ODONh\nWhMT6W+cx0WMC80yCRm5JshIIMzmMxN03pRD1h4u1fPNUnJmGtthRZIm3aU7TlSM\n4tz/Zh8a3kVyN4MtWDmV1/1MV8H0YBtT6K2gxZ7Fz/YKhVATdh8Fy+1qEz3gSrw1\nz6qqEDcM8FtHoAXAdxQBkS8xu34SIriwZiN2YlrtL8Qy73j4XiJLh2cc/NPp+mW9\ncMY1cCEBxpwQTJiJHbX9LcEqYgOkkhWIijW2dYlCLaLsnvJw0TCRd6PooR8XK7MU\nS89+DsixFf3HL+iWjr6yVnQ/mAGVPQ+HD4pwmQIDAQABAoIBAALpcFb59MBZZHJ3\nui9RRi96ig6kPQoRjkjN83pjM+/h/bANMmUOQU5FHBKLwj5uhN5Dpk2fzAnIX2TE\nVgfyNGsYuWLsIM+m6EJfm7pXJwJDr3RCpm+6DIKr1U8TwlR2OhbDi6fOlfH66q79\n2Klq4SXsa0vgfllpTVCDtydFVjwAuQV7Cf6DGRjbNpN3DPLeOC1wYFimNZwudSK0\nf8grWpPFXw2TPaf3TgeBGxwL7GCTYSKT+Eq9USbhG4RArrM9oQt+h7rzaH2bFEdg\n7tOM4KIgV+aw8r0TsYisDG9dfiHfHr5vQnkmWgt/rxAOvHlJ7/64pBVuET1ZF0mB\nP6gu4Y0CgYEAzkwXvfnHI5qx9BVP6e9lGrpWrm0RxCKr2iCCwrOVALbX1yfKCb5L\nrP/jSERMuLt6bIKg/AoVu9ogCTGzntyHTbZXFGg/y5Xoul+1af2arQ1rGZ7A/Im7\nnteZePg2U6UiDRy07F94FF5aL/v97D4BffiSA+0atlgH6tpKyYfY6NsCgYEA8+Ku\nGQqX9kHDd5bbzPhLelNmHVnAjnMaHEhvzVtBA737F10Oqg9wyffqe/i/DvdUSx9r\nafKGUfzB2vVZjz//OpSQ8VhRzDTiyelKLsSTmzOokLBnwayyTxw85o9EDvTNrzfb\nYQbAjmAXWmnv5Xvx1KfvTaKFY3BmHsKYJDzwnJsCgYBK1SVjn2CSVMIqlTSI2nMl\nb+STnzLrn9wQ4uwr7nKlcK34+RD72dCfr67lfwkJldBB3lzBMHNT0jr+us26Waqn\nEPaji3Fgyz9BpAgtq3XZQl3QTFsbAGdTpkegrwEd9G/Wq8whVjw7v0Id193zPUbT\nSEDHNdITxPkSQx8P3bxcMwKBgQDO5EGk5KO9OFTFoqib3RbKku1RgM4lCefgjmKp\n5vvkXMohK8RA6BBahYHZ4U7TN2W+xMyueBsSekVJplFvgG7YFyhOVQovHb42Yz2X\nJxPA2bXp6HxchFBPZDkVrfuiZHIIbm4ghUXcgg/Nl4j3OIoSSNRtG63kiXlYJuRB\n+aB0eQKBgD79VrREpbOMS7HRlDTtfkDN94HY3T4MLErs26z/NLO/dC44tmBJGo2P\ngcQ+p7XxNjpWUnUbEiuz4R3Xgh6ULwuSseWtcQicolPHTkBjnc+6BEpyguZJ+FPZ\nGls3g3LxjGhdPlyd37CaWDvx/Jtjrd4Y9iGkGO2d9fXZD0Hg0ymX\n-----END RSA PRIVATE KEY-----", - "cert": "-----BEGIN CERTIFICATE-----\nMIIG5DCCBMygAwIBAgIQBPQGlt81+4RKt3RAFXPvrjANBgkqhkiG9w0BAQsFADBb\nMQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg\nSW5jLjElMCMGA1UEAxMcVHJ1c3RBc2lhIERWIFRMUyBSU0EgQ0EgMjAyNTAeFw0y\nNTA0MjIwMDAwMDBaFw0yNTA3MjAyMzU5NTlaMB8xHTAbBgNVBAMTFGFsbGluc3Ns\nLnphY2h5YW5nLmNuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxIjm\nAi/paC2OmG7nOqZ+OJx7spDrx7yZiWvn1XgLW/5ODONhWhMT6W+cx0WMC80yCRm5\nJshIIMzmMxN03pRD1h4u1fPNUnJmGtthRZIm3aU7TlSM4tz/Zh8a3kVyN4MtWDmV\n1/1MV8H0YBtT6K2gxZ7Fz/YKhVATdh8Fy+1qEz3gSrw1z6qqEDcM8FtHoAXAdxQB\nkS8xu34SIriwZiN2YlrtL8Qy73j4XiJLh2cc/NPp+mW9cMY1cCEBxpwQTJiJHbX9\nLcEqYgOkkhWIijW2dYlCLaLsnvJw0TCRd6PooR8XK7MUS89+DsixFf3HL+iWjr6y\nVnQ/mAGVPQ+HD4pwmQIDAQABo4IC3jCCAtowHwYDVR0jBBgwFoAUtBIopbTAHZ8p\ncWk82RGWSnVpUMAwHQYDVR0OBBYEFHqqdlMVBlcadf7iJLJoLnLZ7h4tMB8GA1Ud\nEQQYMBaCFGFsbGluc3NsLnphY2h5YW5nLmNuMD4GA1UdIAQ3MDUwMwYGZ4EMAQIB\nMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAOBgNV\nHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMHkGCCsG\nAQUFBwEBBG0wazAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29t\nMEMGCCsGAQUFBzAChjdodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vVHJ1c3RB\nc2lhRFZUTFNSU0FDQTIwMjUuY3J0MAwGA1UdEwEB/wQCMAAwggF9BgorBgEEAdZ5\nAgQCBIIBbQSCAWkBZwB2ABLxTjS9U3JMhAYZw48/ehP457Vih4icbTAFhOvlhiY6\nAAABll0w/o0AAAQDAEcwRQIgd24jCPm+fbHq3grMIxtvQhzkv7dvYPM/BGjPEsy1\nQ70CIQC5jXADjBh+dH50T+atn3lktBEqQhedOl6cAaP/XXmk6gB2AO08S9boBsKk\nogBX28sk4jgB31Ev7cSGxXAPIN23Pj/gAAABll0w/rUAAAQDAEcwRQIgU2GDVEH1\ns5i/RC1RhqvJjn72PAZOlDtJyLdg29vC9HECIQCj78GATYK5quitLxbn3HvD8BeT\noOz+3tacgyN6+TdvugB1AKRCxQZJYGFUjw/U6pz7ei0mRU2HqX8v30VZ9idPOoRU\nAAABll0w/sYAAAQDAEYwRAIgCvU/iBRPKoJLjmU4edBYObWAO/aJp2mWnfJ4ieAr\nrXsCIBsAppYu28h8YEOl0N9yEeF9G05IMxwkCjZKonQs2SKMMA0GCSqGSIb3DQEB\nCwUAA4ICAQB3wFou51Qvl4apMhencuQUnWF3UpYP49e0WQ72DVT3pYjYsozkSuqb\nQZcwMB6HDoHdFicxvQ/yxKyTu/nw3rXjUWYuSxXYd7lJcQ/R0tR00m6AFeinY4Aq\nq4QqoA+lriK1XqO5MomAL4FbSysT1ow/gaG9pYuXEdT4pr05I/NumjXdkwBRZOd4\nrhol2grKf3y37Qla5hUbbG3ab9nf/csJSWkCoESeXr3MB1oAU/aL9pGSagvMXSKQ\nsFs2cn2Fi8ZmJPJXIP114lgvFuFDO+C1yTNbHap/FufvAKGryfPDuPecCF6FSXej\n+bwg4/BNz5lcHbNo2XXjLgoPg4VE6mG/SQQZQEDBk5DowwMVMvh77t9RBNrHozah\nHGtQz2hCuIX7rZQYnSlvW8T75FhI/Sd+HEfU/iyTIELXBUjypnK2bOJL7+jE7f79\nuljhXlCcP52fGHCjexNBz5gIZr82KVxsfxKuZjfioPkhmWleVNMdMWYJRXu618E6\nNtNjUVsDCuMOOMNs1qScqxOT60MeDZLX+vnC93fdd/t2hLEAWWNNMkWeX2qLCE1q\nGarop9U1mJpiBWkW5cBiqnNIbhuV2fcwFIR8mVT5f1Qcw+WxE2nEjY2h75bKv8T5\n3RBngmaX8PcyLAP2s0/4UyzAnMYfioJBh37VpUYBrdriBkRds/AMZw==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFnjCCBIagAwIBAgIQCSYyO0lk42hGFRLe8aXVLDANBgkqhkiG9w0BAQsFADBh\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\nd3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH\nMjAeFw0yNTAxMDgwMDAwMDBaFw0zNTAxMDcyMzU5NTlaMFsxCzAJBgNVBAYTAkNO\nMSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSUwIwYDVQQD\nExxUcnVzdEFzaWEgRFYgVExTIFJTQSBDQSAyMDI1MIICIjANBgkqhkiG9w0BAQEF\nAAOCAg8AMIICCgKCAgEA0fuEmuBIsN6ZZVq+gRobMorOGIilTCIfQrxNpR8FUZ9R\n/GfbiekbiIKphQXEZ7N1uBnn6tXUuZ32zl6jPkZpHzN/Bmgk1BWSIzVc0npMzrWq\n/hrbk5+KddXJdsNpeG1+Q8lc8uVMBrztnxaPb7Rh7yQCsMrcO4hgVaqLJWkVvEfW\nULtoCHQnNaj4IroG6VxQf1oArQ8bPbwpI02lieSahRa78FQuXdoGVeQcrkhtVjZs\nON98vq5fPWZX2LFv7e5J6P9IHbzvOl8yyQjv+2/IOwhNSkaXX3bI+//bqF9XW/p7\n+gsUmHiK5YsvLjmXcvDmoDEGrXMzgX31Zl2nJ+umpRbLjwP8rxYIUsKoEwEdFoto\nAid59UEBJyw/GibwXQ5xTyKD/N6C8SFkr1+myOo4oe1UB+YgvRu6qSxIABo5kYdX\nFodLP4IgoVJdeUFs1Usa6bxYEO6EgMf5lCWt9hGZszvXYZwvyZGq3ogNXM7eKyi2\n20WzJXYMmi9TYFq2Fa95aZe4wki6YhDhhOO1g0sjITGVaB73G+JOCI9yJhv6+REN\nD40ZpboUHE8JNgMVWbG1isAMVCXqiADgXtuC+tmJWPEH9cR6OuJLEpwOzPfgAbnn\n2MRu7Tsdr8jPjTPbD0FxblX1ydW3RG30vwLF5lkTTRkHG9epMgpPMdYP7nY/08MC\nAwEAAaOCAVYwggFSMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLQSKKW0\nwB2fKXFpPNkRlkp1aVDAMB8GA1UdIwQYMBaAFE4iVCAYlebjbuYP+vq5Eu0GF485\nMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw\ndgYIKwYBBQUHAQEEajBoMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy\ndC5jb20wQAYIKwYBBQUHMAKGNGh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9E\naWdpQ2VydEdsb2JhbFJvb3RHMi5jcnQwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDov\nL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDARBgNV\nHSAECjAIMAYGBFUdIAAwDQYJKoZIhvcNAQELBQADggEBAJ4a3svh316GY2+Z7EYx\nmBIsOwjJSnyoEfzx2T699ctLLrvuzS79Mg3pPjxSLlUgyM8UzrFc5tgVU3dZ1sFQ\nI4RM+ysJdvIAX/7Yx1QbooVdKhkdi9X7QN7yVkjqwM3fY3WfQkRTzhIkM7mYIQbR\nr+y2Vkju61BLqh7OCRpPMiudjEpP1kEtRyGs2g0aQpEIqKBzxgitCXSayO1hoO6/\n71ts801OzYlqYW9OQQQ2GCJyFbD6XHDjdpn+bWUxTKWaMY0qedSCbHE3Kl2QEF0C\nynZ7SbC03yR+gKZQDeTXrNP1kk5Qhe7jSXgw+nhbspe0q/M1ZcNCz+sPxeOwdCcC\ngJE=\n-----END CERTIFICATE-----", + "key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAuHz6s4Q4R5DcNV0d+1R6FiGJTfrb4LLN9VNEGOWfgG3ArnJz\n3gFzOLMUZp0BLT8b6HaY1IpV1ol4ViVd0sf/oWusGG3S5+qJw1DIdr+KB096lRwr\nIH64cyhtPdtPEjY+f8PU2BBGO6qbH9qrXiGABYir0wFIvP8/17YCxmc1qcCL8r7U\nvJ58ZiFw0jw3qgxkGebPfKGAasD2irGKWf3qtHp/U9OLRTQ+vh7Vp+l5tUMLE+3n\nrLcj0nZM2GMDARjrydPMY0H53RbVkpfdEDciH1NiJMYZ1nOySAnKnE8w4Ah/+VQC\namEUkmUiL8bor2tFkX6jE7F1JzdkL+4mGmPyaQIDAQABAoIBAAOfl3BEK14jIbgT\nQp385u2dWKwv6PaiUbo87uxK7Orhp5761NIU7DWTtYBdxWKlR9U1KG5FjfG0lH5N\n+z2YZlRoysyrXNuSNy90sY3ngtH+78o9mePoU+jAcAN+1bA8DCvdOvEdbLZfn5lX\nZaCSft2ySqb5HPvH9ZyKe3EjIMzbLeP5se4ctWkIXSRfIUuZGHBIChD3c6i6F2HY\nyfBztAnrrSY9IccaTOHdLlwI4FJWeSMKYCHgeh3IYKlmkvY0gdHHCh3rgzgapTzm\n/XbtPpWIR7hl4IG3zcFHLKw5quucNI3xCDS2aeIen3J4o77btfNEqUgw+hts+72b\nVSwXHcECgYEA0LnAVxx4eTxFLA8MrhIcW/QD6qOAEMl8UN+hVJrCrBpcufG7KYU0\nHJ92SK9hmMkB1/SRe9iMNyf1yzE0PhYQoa9VZaHvo93BusjM32D+Sev2GFGH0K0a\n35mO0v9n0r/rzXf7KqRF2WckRQGf79pvtoORXREb5Xbc0+u4k6ydIZkCgYEA4kXn\nmrwIAlpmhrZ4GQtyMhq4S9ZGvEPf0rpxaJS1Ke0kSYbmStTVvYRPVrs6E4exLYSP\nAOCLDeUKxtflaFBnhJ5zJvQteyp8DTAskjxsSaS5OR3Obl4W7j6Fc6N3My1QJJqO\nJfQw7IC1ABlq6jbX7g9c+Kwuz2sOlsdTv0sDeVECgYAWDUnw6iUgSenU+dIRIgC1\nBlbTl2qUW3Uy5i2ZTrB6ll5tlsh7XoNe8soAa+cXyUTUmBY2y24k9afWS+CFHrer\nHWccUbuLyIYLQePDRfAXx0I814BN37wTG5onWKyTa4tyLdbvbmOi0G7Yi49mO+HJ\nmqTk/EXCPIigKytZDsebIQKBgQDM5QIpstUJ1HR8ziSIgT3iMyHpwloBRvEZ8Cyb\nx/UYxx2R2y8UWhBGcdYqMpYPc1M0ZZHc+HfSmDIfBwc8Y3qps5WQk5HPsxPsGVBz\nB3YDZb84Ak6Y0GixSjosEbzxwbmNu8q2gZ3/uziro1iWSB1V++FzaO9mcYofbNXg\nJfw6UQKBgQC+R+3oRHYWM83fu9th4fKVKwhpB02DCbxqHyBEV0Z0GTaSuX5jmGh3\nWceaosKWNP7kKsdycPXrhC3M1qvl5xtZvFoWSsyY89Fa5gtAlBYTnY31oTc1FNFp\nVADoQ9+6ezzJltyAm+rSnbjUrYQCFpyKX/XNvoL1PlwYAHRvkJ9Eng==\n-----END RSA PRIVATE KEY-----\n", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFADCCA+igAwIBAgISBo+AmwbcW4aYdv34jdvxVwLAMA0GCSqGSIb3DQEBCwUA\nMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD\nEwNSMTAwHhcNMjUwNTIxMDA1NDIyWhcNMjUwODE5MDA1NDIxWjAeMRwwGgYDVQQD\nExNxaWFubml1LndhbnRvcGVyLm1lMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAuHz6s4Q4R5DcNV0d+1R6FiGJTfrb4LLN9VNEGOWfgG3ArnJz3gFzOLMU\nZp0BLT8b6HaY1IpV1ol4ViVd0sf/oWusGG3S5+qJw1DIdr+KB096lRwrIH64cyht\nPdtPEjY+f8PU2BBGO6qbH9qrXiGABYir0wFIvP8/17YCxmc1qcCL8r7UvJ58ZiFw\n0jw3qgxkGebPfKGAasD2irGKWf3qtHp/U9OLRTQ+vh7Vp+l5tUMLE+3nrLcj0nZM\n2GMDARjrydPMY0H53RbVkpfdEDciH1NiJMYZ1nOySAnKnE8w4Ah/+VQCamEUkmUi\nL8bor2tFkX6jE7F1JzdkL+4mGmPyaQIDAQABo4ICITCCAh0wDgYDVR0PAQH/BAQD\nAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAA\nMB0GA1UdDgQWBBSoKVx8BE4dXkNxwpF+m6e4BN/3yTAfBgNVHSMEGDAWgBS7vMNH\npeS8qcbDpHIMEI2iNeHI6DAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAKGF2h0\ndHA6Ly9yMTAuaS5sZW5jci5vcmcvMB4GA1UdEQQXMBWCE3FpYW5uaXUud2FudG9w\nZXIubWUwEwYDVR0gBAwwCjAIBgZngQwBAgEwLgYDVR0fBCcwJTAjoCGgH4YdaHR0\ncDovL3IxMC5jLmxlbmNyLm9yZy82NS5jcmwwggECBgorBgEEAdZ5AgQCBIHzBIHw\nAO4AdQDtPEvW6AbCpKIAV9vLJOI4Ad9RL+3EhsVwDyDdtz4/4AAAAZbwiyI8AAAE\nAwBGMEQCIC+TpGUBZaC5oRkWi4j3zwk3fDLWJ9xX+BGv2x136zloAiBWANxlia2I\np7ILDHI8PikI4hnEnxK53seyylleexYccQB1AMz7D2qFcQll/pWbU87psnwi6YVc\nDZeNtql+VMD+TA2wAAABlvCLIl0AAAQDAEYwRAIgIzYfFQEsW7F6cKkR2djfkDih\nyCC6L9U7oWcQFw28dxICIFnz/I8+eWs8894oz8D6JogVsP5W4w9yidkQ3C9Pzcoj\nMA0GCSqGSIb3DQEBCwUAA4IBAQBKVpDe0xZCFGJ0pX4vEdnBgaoBt8As8QAG3VCA\nuVzR2baqvRd5XNFph6mBAu5AdRgrMLhhrlIPLMqMXDpV0bdG5zzILJ7Xv6xjZE55\n9bfdTRt0hSDqD///6F4cy4STF9JJ3iJ0bkqfu9k0k4iBixqhYY0OYeIF70Zocyy9\n01BwvWdsIFz2OyVPihsdXNOwR+szAlkoyN578cFVavlOQVyAJte114gMi3++JkBd\n1e1zSbWMhaOzoQC/VSRuye+9WW66T706APTyPKHWK0NkPnv+VqIIO2Z5rBtomRxz\n/EK9ZM4IZZf19ybCaCYnScD01QCGMjE2ERCtanN8l3tZClSb\n-----END CERTIFICATE-----\n\n-----BEGIN CERTIFICATE-----\nMIIFBTCCAu2gAwIBAgIQS6hSk/eaL6JzBkuoBI110DANBgkqhkiG9w0BAQsFADBP\nMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy\nY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa\nFw0yNzAzMTIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF\nbmNyeXB0MQwwCgYDVQQDEwNSMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\nAoIBAQDPV+XmxFQS7bRH/sknWHZGUCiMHT6I3wWd1bUYKb3dtVq/+vbOo76vACFL\nYlpaPAEvxVgD9on/jhFD68G14BQHlo9vH9fnuoE5CXVlt8KvGFs3Jijno/QHK20a\n/6tYvJWuQP/py1fEtVt/eA0YYbwX51TGu0mRzW4Y0YCF7qZlNrx06rxQTOr8IfM4\nFpOUurDTazgGzRYSespSdcitdrLCnF2YRVxvYXvGLe48E1KGAdlX5jgc3421H5KR\nmudKHMxFqHJV8LDmowfs/acbZp4/SItxhHFYyTr6717yW0QrPHTnj7JHwQdqzZq3\nDZb3EoEmUVQK7GH29/Xi8orIlQ2NAgMBAAGjgfgwgfUwDgYDVR0PAQH/BAQDAgGG\nMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/\nAgEAMB0GA1UdDgQWBBS7vMNHpeS8qcbDpHIMEI2iNeHI6DAfBgNVHSMEGDAWgBR5\ntFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKG\nFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0gBAwwCjAIBgZngQwBAgEwJwYD\nVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVuY3Iub3JnLzANBgkqhkiG9w0B\nAQsFAAOCAgEAkrHnQTfreZ2B5s3iJeE6IOmQRJWjgVzPw139vaBw1bGWKCIL0vIo\nzwzn1OZDjCQiHcFCktEJr59L9MhwTyAWsVrdAfYf+B9haxQnsHKNY67u4s5Lzzfd\nu6PUzeetUK29v+PsPmI2cJkxp+iN3epi4hKu9ZzUPSwMqtCceb7qPVxEbpYxY1p9\n1n5PJKBLBX9eb9LU6l8zSxPWV7bK3lG4XaMJgnT9x3ies7msFtpKK5bDtotij/l0\nGaKeA97pb5uwD9KgWvaFXMIEt8jVTjLEvwRdvCn294GPDF08U8lAkIv7tghluaQh\n1QnlE4SEN4LOECj8dsIGJXpGUk3aU3KkJz9icKy+aUgA+2cP21uh6NcDIS3XyfaZ\nQjmDQ993ChII8SXWupQZVBiIpcWO4RqZk3lr7Bz5MUCwzDIA359e57SSq5CCkY0N\n4B6Vulk7LktfwrdGNVI5BsC9qqxSwSKgRJeZ9wygIaehbHFHFhcBaMDKpiZlBHyz\nrsnnlFXCb5s8HKn5LsUgGvB24L7sGNZP2CX7dhHov+YhD+jozLW2p9W4959Bz2Ei\nRmqDtmiXLnzqTpXbI+suyCsohKRg6Un0RC47+cpiVwHiXZAW+cn8eiNIjqbVgXLx\nKPpdzvvtTnOPlC7SQZSYmdunr3Bf9b77AiC/ZidstK36dRILKz7OA54=\n-----END CERTIFICATE-----\n", }, } err := DeployQiniuCdn(cfg) @@ -18,3 +32,29 @@ func TestQiniuCdn(t *testing.T) { t.Logf("DeployQiniuCdn succeeded") } } + +func TestQiniuOss(t *testing.T) { + cfg := map[string]any{ + "domain": "xxxxx.cn", + "provider_id": "11", + "certificate": map[string]any{ + "key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAuHz6s4Q4R5DcNV0d+1R6FiGJTfrb4LLN9VNEGOWfgG3ArnJz\n3gFzOLMUZp0BLT8b6HaY1IpV1ol4ViVd0sf/oWusGG3S5+qJw1DIdr+KB096lRwr\nIH64cyhtPdtPEjY+f8PU2BBGO6qbH9qrXiGABYir0wFIvP8/17YCxmc1qcCL8r7U\nvJ58ZiFw0jw3qgxkGebPfKGAasD2irGKWf3qtHp/U9OLRTQ+vh7Vp+l5tUMLE+3n\nrLcj0nZM2GMDARjrydPMY0H53RbVkpfdEDciH1NiJMYZ1nOySAnKnE8w4Ah/+VQC\namEUkmUiL8bor2tFkX6jE7F1JzdkL+4mGmPyaQIDAQABAoIBAAOfl3BEK14jIbgT\nQp385u2dWKwv6PaiUbo87uxK7Orhp5761NIU7DWTtYBdxWKlR9U1KG5FjfG0lH5N\n+z2YZlRoysyrXNuSNy90sY3ngtH+78o9mePoU+jAcAN+1bA8DCvdOvEdbLZfn5lX\nZaCSft2ySqb5HPvH9ZyKe3EjIMzbLeP5se4ctWkIXSRfIUuZGHBIChD3c6i6F2HY\nyfBztAnrrSY9IccaTOHdLlwI4FJWeSMKYCHgeh3IYKlmkvY0gdHHCh3rgzgapTzm\n/XbtPpWIR7hl4IG3zcFHLKw5quucNI3xCDS2aeIen3J4o77btfNEqUgw+hts+72b\nVSwXHcECgYEA0LnAVxx4eTxFLA8MrhIcW/QD6qOAEMl8UN+hVJrCrBpcufG7KYU0\nHJ92SK9hmMkB1/SRe9iMNyf1yzE0PhYQoa9VZaHvo93BusjM32D+Sev2GFGH0K0a\n35mO0v9n0r/rzXf7KqRF2WckRQGf79pvtoORXREb5Xbc0+u4k6ydIZkCgYEA4kXn\nmrwIAlpmhrZ4GQtyMhq4S9ZGvEPf0rpxaJS1Ke0kSYbmStTVvYRPVrs6E4exLYSP\nAOCLDeUKxtflaFBnhJ5zJvQteyp8DTAskjxsSaS5OR3Obl4W7j6Fc6N3My1QJJqO\nJfQw7IC1ABlq6jbX7g9c+Kwuz2sOlsdTv0sDeVECgYAWDUnw6iUgSenU+dIRIgC1\nBlbTl2qUW3Uy5i2ZTrB6ll5tlsh7XoNe8soAa+cXyUTUmBY2y24k9afWS+CFHrer\nHWccUbuLyIYLQePDRfAXx0I814BN37wTG5onWKyTa4tyLdbvbmOi0G7Yi49mO+HJ\nmqTk/EXCPIigKytZDsebIQKBgQDM5QIpstUJ1HR8ziSIgT3iMyHpwloBRvEZ8Cyb\nx/UYxx2R2y8UWhBGcdYqMpYPc1M0ZZHc+HfSmDIfBwc8Y3qps5WQk5HPsxPsGVBz\nB3YDZb84Ak6Y0GixSjosEbzxwbmNu8q2gZ3/uziro1iWSB1V++FzaO9mcYofbNXg\nJfw6UQKBgQC+R+3oRHYWM83fu9th4fKVKwhpB02DCbxqHyBEV0Z0GTaSuX5jmGh3\nWceaosKWNP7kKsdycPXrhC3M1qvl5xtZvFoWSsyY89Fa5gtAlBYTnY31oTc1FNFp\nVADoQ9+6ezzJltyAm+rSnbjUrYQCFpyKX/XNvoL1PlwYAHRvkJ9Eng==\n-----END RSA PRIVATE KEY-----\n", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFADCCA+igAwIBAgISBo+AmwbcW4aYdv34jdvxVwLAMA0GCSqGSIb3DQEBCwUA\nMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD\nEwNSMTAwHhcNMjUwNTIxMDA1NDIyWhcNMjUwODE5MDA1NDIxWjAeMRwwGgYDVQQD\nExNxaWFubml1LndhbnRvcGVyLm1lMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAuHz6s4Q4R5DcNV0d+1R6FiGJTfrb4LLN9VNEGOWfgG3ArnJz3gFzOLMU\nZp0BLT8b6HaY1IpV1ol4ViVd0sf/oWusGG3S5+qJw1DIdr+KB096lRwrIH64cyht\nPdtPEjY+f8PU2BBGO6qbH9qrXiGABYir0wFIvP8/17YCxmc1qcCL8r7UvJ58ZiFw\n0jw3qgxkGebPfKGAasD2irGKWf3qtHp/U9OLRTQ+vh7Vp+l5tUMLE+3nrLcj0nZM\n2GMDARjrydPMY0H53RbVkpfdEDciH1NiJMYZ1nOySAnKnE8w4Ah/+VQCamEUkmUi\nL8bor2tFkX6jE7F1JzdkL+4mGmPyaQIDAQABo4ICITCCAh0wDgYDVR0PAQH/BAQD\nAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAA\nMB0GA1UdDgQWBBSoKVx8BE4dXkNxwpF+m6e4BN/3yTAfBgNVHSMEGDAWgBS7vMNH\npeS8qcbDpHIMEI2iNeHI6DAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAKGF2h0\ndHA6Ly9yMTAuaS5sZW5jci5vcmcvMB4GA1UdEQQXMBWCE3FpYW5uaXUud2FudG9w\nZXIubWUwEwYDVR0gBAwwCjAIBgZngQwBAgEwLgYDVR0fBCcwJTAjoCGgH4YdaHR0\ncDovL3IxMC5jLmxlbmNyLm9yZy82NS5jcmwwggECBgorBgEEAdZ5AgQCBIHzBIHw\nAO4AdQDtPEvW6AbCpKIAV9vLJOI4Ad9RL+3EhsVwDyDdtz4/4AAAAZbwiyI8AAAE\nAwBGMEQCIC+TpGUBZaC5oRkWi4j3zwk3fDLWJ9xX+BGv2x136zloAiBWANxlia2I\np7ILDHI8PikI4hnEnxK53seyylleexYccQB1AMz7D2qFcQll/pWbU87psnwi6YVc\nDZeNtql+VMD+TA2wAAABlvCLIl0AAAQDAEYwRAIgIzYfFQEsW7F6cKkR2djfkDih\nyCC6L9U7oWcQFw28dxICIFnz/I8+eWs8894oz8D6JogVsP5W4w9yidkQ3C9Pzcoj\nMA0GCSqGSIb3DQEBCwUAA4IBAQBKVpDe0xZCFGJ0pX4vEdnBgaoBt8As8QAG3VCA\nuVzR2baqvRd5XNFph6mBAu5AdRgrMLhhrlIPLMqMXDpV0bdG5zzILJ7Xv6xjZE55\n9bfdTRt0hSDqD///6F4cy4STF9JJ3iJ0bkqfu9k0k4iBixqhYY0OYeIF70Zocyy9\n01BwvWdsIFz2OyVPihsdXNOwR+szAlkoyN578cFVavlOQVyAJte114gMi3++JkBd\n1e1zSbWMhaOzoQC/VSRuye+9WW66T706APTyPKHWK0NkPnv+VqIIO2Z5rBtomRxz\n/EK9ZM4IZZf19ybCaCYnScD01QCGMjE2ERCtanN8l3tZClSb\n-----END CERTIFICATE-----\n\n-----BEGIN CERTIFICATE-----\nMIIFBTCCAu2gAwIBAgIQS6hSk/eaL6JzBkuoBI110DANBgkqhkiG9w0BAQsFADBP\nMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy\nY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa\nFw0yNzAzMTIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF\nbmNyeXB0MQwwCgYDVQQDEwNSMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\nAoIBAQDPV+XmxFQS7bRH/sknWHZGUCiMHT6I3wWd1bUYKb3dtVq/+vbOo76vACFL\nYlpaPAEvxVgD9on/jhFD68G14BQHlo9vH9fnuoE5CXVlt8KvGFs3Jijno/QHK20a\n/6tYvJWuQP/py1fEtVt/eA0YYbwX51TGu0mRzW4Y0YCF7qZlNrx06rxQTOr8IfM4\nFpOUurDTazgGzRYSespSdcitdrLCnF2YRVxvYXvGLe48E1KGAdlX5jgc3421H5KR\nmudKHMxFqHJV8LDmowfs/acbZp4/SItxhHFYyTr6717yW0QrPHTnj7JHwQdqzZq3\nDZb3EoEmUVQK7GH29/Xi8orIlQ2NAgMBAAGjgfgwgfUwDgYDVR0PAQH/BAQDAgGG\nMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/\nAgEAMB0GA1UdDgQWBBS7vMNHpeS8qcbDpHIMEI2iNeHI6DAfBgNVHSMEGDAWgBR5\ntFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKG\nFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0gBAwwCjAIBgZngQwBAgEwJwYD\nVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVuY3Iub3JnLzANBgkqhkiG9w0B\nAQsFAAOCAgEAkrHnQTfreZ2B5s3iJeE6IOmQRJWjgVzPw139vaBw1bGWKCIL0vIo\nzwzn1OZDjCQiHcFCktEJr59L9MhwTyAWsVrdAfYf+B9haxQnsHKNY67u4s5Lzzfd\nu6PUzeetUK29v+PsPmI2cJkxp+iN3epi4hKu9ZzUPSwMqtCceb7qPVxEbpYxY1p9\n1n5PJKBLBX9eb9LU6l8zSxPWV7bK3lG4XaMJgnT9x3ies7msFtpKK5bDtotij/l0\nGaKeA97pb5uwD9KgWvaFXMIEt8jVTjLEvwRdvCn294GPDF08U8lAkIv7tghluaQh\n1QnlE4SEN4LOECj8dsIGJXpGUk3aU3KkJz9icKy+aUgA+2cP21uh6NcDIS3XyfaZ\nQjmDQ993ChII8SXWupQZVBiIpcWO4RqZk3lr7Bz5MUCwzDIA359e57SSq5CCkY0N\n4B6Vulk7LktfwrdGNVI5BsC9qqxSwSKgRJeZ9wygIaehbHFHFhcBaMDKpiZlBHyz\nrsnnlFXCb5s8HKn5LsUgGvB24L7sGNZP2CX7dhHov+YhD+jozLW2p9W4959Bz2Ei\nRmqDtmiXLnzqTpXbI+suyCsohKRg6Un0RC47+cpiVwHiXZAW+cn8eiNIjqbVgXLx\nKPpdzvvtTnOPlC7SQZSYmdunr3Bf9b77AiC/ZidstK36dRILKz7OA54=\n-----END CERTIFICATE-----\n", + }, + } + err := DeployQiniuOss(cfg) + if err != nil { + t.Errorf("DeployQiniuOss failed: %v", err) + } else { + t.Logf("DeployQiniuOss succeeded") + } +} + +func TestQiniuAPITest(t *testing.T) { + result := QiniuAPITest("11") + if result != nil { + t.Fatalf("SSHAPITest failed: %v", result) + } else { + t.Log("SSHAPITest success") + } +} \ No newline at end of file