mirror of https://github.com/allinssl/allinssl
【新增】【部署】新增火山引擎DCDN
parent
c3a38aa008
commit
414321e3cf
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -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"})
|
||||
|
||||
|
|
Loading…
Reference in New Issue