mirror of https://github.com/allinssl/allinssl
Merge remote-tracking branch 'github/1.0.3' into 1.0.3
commit
2c12a4bb84
|
@ -324,6 +324,8 @@ func TestAccess(c *gin.Context) {
|
|||
result = deploy.AliyunCdnAPITest(form.ID)
|
||||
case "qiniu":
|
||||
result = deploy.QiniuAPITest(form.ID)
|
||||
case "baidu":
|
||||
result = deploy.BaiduyunAPITest(form.ID)
|
||||
default:
|
||||
public.FailMsg(c, "不支持测试的提供商")
|
||||
return
|
||||
|
|
|
@ -0,0 +1,91 @@
|
|||
package deploy
|
||||
|
||||
import (
|
||||
"ALLinSSL/backend/internal/access"
|
||||
baiduyuncdn "ALLinSSL/backend/internal/cert/deploy/client/baiduyun"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
func DeployBaiduCdn(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")
|
||||
}
|
||||
//
|
||||
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
|
||||
}
|
||||
|
||||
client, err := baiduyuncdn.ClientBaiduCdn(providerConfig["access_key"], providerConfig["secret_key"])
|
||||
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")
|
||||
}
|
||||
|
||||
certName := fmt.Sprintf("%s_allinssl_%d", domain, time.Now().UnixMilli())
|
||||
_, err = client.IPutCert(domain, certName, certPem, keyPem)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func BaiduyunAPITest(providerID string) error {
|
||||
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
|
||||
}
|
||||
|
||||
client, err := baiduyuncdn.ClientBaiduCdn(providerConfig["access_key"], providerConfig["secret_key"])
|
||||
_, _, err = client.ListDomains("")
|
||||
|
||||
if err != nil {
|
||||
return fmt.Errorf("测试请求失败: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package deploy
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestBaiduyunCdn(t *testing.T) {
|
||||
cfg := map[string]any{
|
||||
"domain": "xxxx.xxxx.cn",
|
||||
"provider_id": "13",
|
||||
"certificate": map[string]any{
|
||||
"key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEA1yMBi68Kqm9daL+uyC4Pu7pNOf9BzoK5ZKt7LXr2dXtLgcGC\nywB+af85Cy8Zo6CBiR1rN3yn7ALJK0S8C4d16hF2mpWiL7u99g295VrpGwgFjVz6\n8TcNSE8XrCUACU85823RK/uW5yPkOUBDhNii+6FbAwIu226m7lCNvvo2BkkP3ySX\nnHY5u5Q2adW1FRrz9VoGFz1kwxOWW5H4a1owuYDBFzLUvsTidBorfvzTef7cpmBw\n8GxiIZ7zQgJh/gWcF2ZGRbbiUbeWvauNEGQnNTRjIFIURPwHCdbucWG+222qBN+T\nL2dIWAmkF5DnZ1HpMEbDJzKmSNuuuS53H5wkmQIDAQABAoIBAQCErrdOUedvE/31\nE3sVRKs5aX4ljdMlLSRv/P6cHyEPdboszY7/6k8MynaA+kyCyQP676TndL8P5Ovy\n/pJHPgUwFhMi5bRAYjaXIQSEBpyLqlfaRoUR7ZUIipcb+Tnbg/xGsOz3hlQcO9uO\nn57EuONT88DwyxDhDo5vnki9hw14s8dMGtPu7/pjmpqZCG9QmTgePvTGYSw7QpY1\nKKNnJh4DSbDZh3blvFjnYM9VleAmfIijemnuu6tkH/z9oiFr1CSYCW7m8YPB1C7Q\nrYsC/28eJFSDHBwd4Yvo5kFAhHfkybScmbefhs+F7sRKFNRXQtgetR8MsSmZlCjg\n2m3cBPqBAoGBAOamNIzNaJDbpdUMRvohNZgZ+bPKOiErTYuGp8YYK3uradbqYb8X\n+XV+20/wETDZWqxRqE2e+xenKh7ujXQtup2VDZ08cJ5Rkiiv8ZolWMAnxo5TM6NO\nGgl/iy0euXDY3e4QeZY7rnmTqIQXXUSaiIl/b9vtq5W2kz3dihu6WifpAoGBAO7I\nUxGUui+1TkOmdssPGhg5JUKQ3zJC4OGiBMACmJeetsz4HMZ/o2/sg2O99YySSPOi\nrG/lvcM/8ZOKnAUaTfFnWIV2yxwO8Sd3RkKkjFLH9woW/z8f+kgCLaTeAYY51Ntv\n9acpQE9A1XkL7k4ZcrBgx9FoDaPwLlFmDKe2ltkxAoGAHiIEp4iGarZneef6td70\n04RBPR3kbkTsAph6/sRVmfiRAUTptD97lcAXAuCIPmuHDxAz/sAQacyrEhN0Y4M9\n6Cx69NnalLRvdeVWmR7b826+4AU6r9EaUbdaBXEIJRgQFnQMjnYJm1SRJYCv7LCL\nufruMDtiuVJ69hAlZO35rVECgYB23z+LdxEhgw8NWqe0+zWwbXKBKwISUX0GltPq\niuBQSvESJUqd/xjsNUBLvVuquYCb2ZYitqq7su+e1dhKKgg3b42AE92VgFLJpPVT\nY/t/kpEHct9rG45Lntn+Q49atRukip4us7iSO+KKOkhOlRileei/9R8lSAKm/zi5\nnYqHYQKBgENB0EBeOSo8M1+Avx8WTEvR2iwE/amvbnkATGYlEZ52GTDBxMhjDAX6\nw8erP+yuUfWzLWToYpTVdQ160vXUDV6LjsYfkLg7An+oygv+weiuAZRRCxS7Ehjr\nrrpOhYLoMdw8gZw2h6eZvWTZLpy/u6d58AoKQdRvfdsUDuoCF2gD\n-----END RSA PRIVATE KEY-----\n",
|
||||
"cert": "-----BEGIN CERTIFICATE-----\nMIIFBjCCA+6gAwIBAgISBefOUdMdaC9fvpPhttut+KHXMA0GCSqGSIb3DQEBCwUA\nMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD\nEwNSMTEwHhcNMjUwNTIyMDgxNDE3WhcNMjUwODIwMDgxNDE2WjAfMR0wGwYDVQQD\nExRhbGxpbnNzbC56YWNoeWFuZy5jbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBANcjAYuvCqpvXWi/rsguD7u6TTn/Qc6CuWSrey169nV7S4HBgssAfmn/\nOQsvGaOggYkdazd8p+wCyStEvAuHdeoRdpqVoi+7vfYNveVa6RsIBY1c+vE3DUhP\nF6wlAAlPOfNt0Sv7lucj5DlAQ4TYovuhWwMCLttupu5Qjb76NgZJD98kl5x2ObuU\nNmnVtRUa8/VaBhc9ZMMTlluR+GtaMLmAwRcy1L7E4nQaK37803n+3KZgcPBsYiGe\n80ICYf4FnBdmRkW24lG3lr2rjRBkJzU0YyBSFET8BwnW7nFhvtttqgTfky9nSFgJ\npBeQ52dR6TBGwycypkjbrrkudx+cJJkCAwEAAaOCAiYwggIiMA4GA1UdDwEB/wQE\nAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIw\nADAdBgNVHQ4EFgQU+rqOAafyO+lEob/9rvo8Ya/sMmEwHwYDVR0jBBgwFoAUxc9G\npOr0w8B6bJXELbBeki8m47kwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzAChhdo\ndHRwOi8vcjExLmkubGVuY3Iub3JnLzAfBgNVHREEGDAWghRhbGxpbnNzbC56YWNo\neWFuZy5jbjATBgNVHSAEDDAKMAgGBmeBDAECATAuBgNVHR8EJzAlMCOgIaAfhh1o\ndHRwOi8vcjExLmMubGVuY3Iub3JnLzg4LmNybDCCAQYGCisGAQQB1nkCBAIEgfcE\ngfQA8gB3ABLxTjS9U3JMhAYZw48/ehP457Vih4icbTAFhOvlhiY6AAABlvdEQgYA\nAAQDAEgwRgIhAI10SpN8nv5YVk0aCB62RhV7dtjR/8/sn0EEmiMnssM6AiEA8mXe\nDI2SwLc6ESOApGFlIflEnCC4CMtfhe2unrlyPfYAdwCkQsUGSWBhVI8P1Oqc+3ot\nJkVNh6l/L99FWfYnTzqEVAAAAZb3REnaAAAEAwBIMEYCIQCfsdZ4XMs+lO5JQyjW\nhrNnL4hCGADi/KuoaQGBrZrcwAIhAPsfHyshp2qr3pXI7/BHBLfiAbU+s96k6bUZ\nJxBTexxyMA0GCSqGSIb3DQEBCwUAA4IBAQCujdClfa2VXeOA0IBcC48Ba7Gopv9x\nr2ac+yUzj+I+bSNcfjVFfVuLdZQFPPiWC8CK1KVf7vTs81NkUB6beXPeJsyEnegH\nA6/rgHLuPt1G8XndEoXnCg7NyjxM72MIzt4bkySshu8btHHLgQZkYxp4tJQKsN0Q\n2xVcRjCHRvpcXyGrbbvGrj0TVFZVe7jKDsnEXQ+XGrd2PrqQUByevaiH8JOFSlFu\nacUcVf6CSsCzc8wnCixIiyTG5KGPT8fkoInfz9wadRna8d61C288txY5+OsLvmY3\nTX7dxKdy4MwPSjSAz5WE1SEjNrV+YoWbMabYWsWwA1DJ6QgRdSTBlCh7\n-----END CERTIFICATE-----\n\n-----BEGIN CERTIFICATE-----\nMIIFBjCCAu6gAwIBAgIRAIp9PhPWLzDvI4a9KQdrNPgwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw\nWhcNMjcwMzEyMjM1OTU5WjAzMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\nRW5jcnlwdDEMMAoGA1UEAxMDUjExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAuoe8XBsAOcvKCs3UZxD5ATylTqVhyybKUvsVAbe5KPUoHu0nsyQYOWcJ\nDAjs4DqwO3cOvfPlOVRBDE6uQdaZdN5R2+97/1i9qLcT9t4x1fJyyXJqC4N0lZxG\nAGQUmfOx2SLZzaiSqhwmej/+71gFewiVgdtxD4774zEJuwm+UE1fj5F2PVqdnoPy\n6cRms+EGZkNIGIBloDcYmpuEMpexsr3E+BUAnSeI++JjF5ZsmydnS8TbKF5pwnnw\nSVzgJFDhxLyhBax7QG0AtMJBP6dYuC/FXJuluwme8f7rsIU5/agK70XEeOtlKsLP\nXzze41xNG/cLJyuqC0J3U095ah2H2QIDAQABo4H4MIH1MA4GA1UdDwEB/wQEAwIB\nhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwEgYDVR0TAQH/BAgwBgEB\n/wIBADAdBgNVHQ4EFgQUxc9GpOr0w8B6bJXELbBeki8m47kwHwYDVR0jBBgwFoAU\nebRZ5nu25eQBc4AIiMgaWPbpm24wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAC\nhhZodHRwOi8veDEuaS5sZW5jci5vcmcvMBMGA1UdIAQMMAowCAYGZ4EMAQIBMCcG\nA1UdHwQgMB4wHKAaoBiGFmh0dHA6Ly94MS5jLmxlbmNyLm9yZy8wDQYJKoZIhvcN\nAQELBQADggIBAE7iiV0KAxyQOND1H/lxXPjDj7I3iHpvsCUf7b632IYGjukJhM1y\nv4Hz/MrPU0jtvfZpQtSlET41yBOykh0FX+ou1Nj4ScOt9ZmWnO8m2OG0JAtIIE38\n01S0qcYhyOE2G/93ZCkXufBL713qzXnQv5C/viOykNpKqUgxdKlEC+Hi9i2DcaR1\ne9KUwQUZRhy5j/PEdEglKg3l9dtD4tuTm7kZtB8v32oOjzHTYw+7KdzdZiw/sBtn\nUfhBPORNuay4pJxmY/WrhSMdzFO2q3Gu3MUBcdo27goYKjL9CTF8j/Zz55yctUoV\naneCWs/ajUX+HypkBTA+c8LGDLnWO2NKq0YD/pnARkAnYGPfUDoHR9gVSp/qRx+Z\nWghiDLZsMwhN1zjtSC0uBWiugF3vTNzYIEFfaPG7Ws3jDrAMMYebQ95JQ+HIBD/R\nPBuHRTBpqKlyDnkSHDHYPiNX3adPoPAcgdF3H2/W0rmoswMWgTlLn1Wu0mrks7/q\npdWfS6PJ1jty80r2VKsM/Dj3YIDfbjXKdaFU5C+8bhfJGqU3taKauuz0wHVGT3eo\n6FlWkWYtbt4pgdamlwVeZEW+LM7qZEJEsMNPrfC03APKmZsJgpWCDWOKZvkZcvjV\nuYkQ4omYCTX5ohy+knMjdOmdH9c7SpqEWBDC86fiNex+O0XOMEZSa8DA\n-----END CERTIFICATE-----\n",
|
||||
"issuer": "cert-issuer",
|
||||
},
|
||||
}
|
||||
err := DeployBaiduCdn(cfg)
|
||||
if err != nil {
|
||||
t.Errorf("DeployAliCdn failed: %v", err)
|
||||
} else {
|
||||
t.Logf("DeployAliCdn succeeded")
|
||||
}
|
||||
}
|
||||
|
||||
func TestBaiduyunAPITest(t *testing.T) {
|
||||
result := BaiduyunAPITest("13")
|
||||
if result != nil {
|
||||
t.Fatalf("BaiduyunAPITest failed: %v", result)
|
||||
} else {
|
||||
t.Log("BaiduyunAPITest success")
|
||||
}
|
||||
}
|
|
@ -6,11 +6,11 @@ import (
|
|||
"github.com/alibabacloud-go/tea/tea"
|
||||
)
|
||||
|
||||
type ClientAliCas struct {
|
||||
type AliyunCasClient struct {
|
||||
aliyuncas.Client
|
||||
}
|
||||
|
||||
func NewClientAliCas(accessKey, accessSecret string) (_result *ClientAliCas, err error) {
|
||||
func ClientAliCas(accessKey, accessSecret string) (_result *AliyunCasClient, err error) {
|
||||
config := &openapi.Config{
|
||||
AccessKeyId: tea.String(accessKey),
|
||||
AccessKeySecret: tea.String(accessSecret),
|
||||
|
@ -21,13 +21,13 @@ func NewClientAliCas(accessKey, accessSecret string) (_result *ClientAliCas, err
|
|||
return nil, err
|
||||
}
|
||||
|
||||
client := &ClientAliCas{
|
||||
client := &AliyunCasClient{
|
||||
Client: *casClient,
|
||||
}
|
||||
return client, nil
|
||||
}
|
||||
|
||||
func (c *ClientAliCas) UploadCert(certName, certContent, certKey string) (*int64, error) {
|
||||
func (c *AliyunCasClient) UploadCert(certName, certContent, certKey string) (*int64, error) {
|
||||
certificateRequest := &aliyuncas.UploadUserCertificateRequest{
|
||||
Cert: tea.String(certContent),
|
||||
Key: tea.String(certKey),
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package baiduyun
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
baiduyuncdn "github.com/baidubce/bce-sdk-go/services/cdn"
|
||||
"github.com/baidubce/bce-sdk-go/services/cdn/api"
|
||||
)
|
||||
|
||||
type BaiduyunCdnClient struct {
|
||||
baiduyuncdn.Client
|
||||
}
|
||||
|
||||
func ClientBaiduCdn(ak, sk string) (*BaiduyunCdnClient, error) {
|
||||
client, err := baiduyuncdn.NewClient(ak, sk, "https://cdn.baidubce.com")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
baiduCdnClient := &BaiduyunCdnClient{
|
||||
Client: *client,
|
||||
}
|
||||
return baiduCdnClient, nil
|
||||
}
|
||||
|
||||
func (client *BaiduyunCdnClient) IPutCert(domain, certName, certContent, certKey string) (string, error) {
|
||||
certId, err := client.PutCert(domain, &api.UserCertificate{
|
||||
CertName: certName,
|
||||
ServerData: certContent,
|
||||
PrivateData: certKey,
|
||||
}, "ON")
|
||||
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("修改域名证书失败: %v", err)
|
||||
}
|
||||
return certId, nil
|
||||
}
|
|
@ -72,6 +72,9 @@ func Deploy(cfg map[string]any, logger *public.Logger) error {
|
|||
case "qiniu-oss":
|
||||
logger.Debug("部署到七牛云OSS...")
|
||||
return DeployQiniuOss(cfg)
|
||||
case "baidu-cdn":
|
||||
logger.Debug("部署到百度云CDN...")
|
||||
return DeployBaiduCdn(cfg)
|
||||
default:
|
||||
return fmt.Errorf("不支持的部署: %s", providerName)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue