mirror of
https://gitee.com/mirrors/AllinSSL.git
synced 2026-03-15 19:02:01 +08:00
【调整】插件支持动态参数和参数类型
【调整】获取证书列表支持状态过滤 【新增】dns提供商腾讯云eo
This commit is contained in:
74
plugins/alicloud/esa/action.go
Normal file
74
plugins/alicloud/esa/action.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package esa
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
|
||||
esa "github.com/alibabacloud-go/esa-20240910/v2/client"
|
||||
util "github.com/alibabacloud-go/tea-utils/v2/service"
|
||||
"github.com/alibabacloud-go/tea/tea"
|
||||
)
|
||||
|
||||
func CreateClient(accessKey, accessSecret string) (*esa.Client, error) {
|
||||
config := &openapi.Config{
|
||||
AccessKeyId: tea.String(accessKey),
|
||||
AccessKeySecret: tea.String(accessSecret),
|
||||
Endpoint: tea.String("esa.ap-southeast-1.aliyuncs.com"),
|
||||
}
|
||||
return esa.NewClient(config)
|
||||
}
|
||||
|
||||
func UploadCert(client *esa.Client, siteID int64, certPEM, keyPEM string) error {
|
||||
req := esa.SetCertificateRequest{
|
||||
SiteId: tea.Int64(siteID),
|
||||
Type: tea.String("upload"),
|
||||
Certificate: tea.String(certPEM),
|
||||
PrivateKey: tea.String(keyPEM),
|
||||
}
|
||||
runtime := &util.RuntimeOptions{}
|
||||
_, err := client.SetCertificateWithOptions(&req, runtime)
|
||||
return err
|
||||
}
|
||||
|
||||
func Deploy(cfg map[string]any) error {
|
||||
certPEM, ok := cfg["cert"].(string)
|
||||
if !ok || certPEM == "" {
|
||||
return fmt.Errorf("证书错误:cert")
|
||||
}
|
||||
keyPEM, ok := cfg["key"].(string)
|
||||
if !ok || keyPEM == "" {
|
||||
return fmt.Errorf("证书错误:key")
|
||||
}
|
||||
accessKey, ok := cfg["access_key_id"].(string)
|
||||
if !ok || accessKey == "" {
|
||||
return fmt.Errorf("参数错误:access_key_id")
|
||||
}
|
||||
accessSecret, ok := cfg["access_key_secret"].(string)
|
||||
if !ok || accessSecret == "" {
|
||||
return fmt.Errorf("参数错误:access_key_secret")
|
||||
}
|
||||
var siteID int64
|
||||
switch v := cfg["site_id"].(type) {
|
||||
case float64:
|
||||
siteID = int64(v)
|
||||
case string:
|
||||
var err error
|
||||
siteID, err = strconv.ParseInt(v, 10, 64)
|
||||
if err != nil {
|
||||
return fmt.Errorf("site_id 格式错误: %w", err)
|
||||
}
|
||||
case int:
|
||||
siteID = int64(v)
|
||||
default:
|
||||
return fmt.Errorf("site_id 格式错误")
|
||||
}
|
||||
client, err := CreateClient(accessKey, accessSecret)
|
||||
if err != nil {
|
||||
return fmt.Errorf("创建 ESA 客户端失败: %w", err)
|
||||
}
|
||||
if err := UploadCert(client, siteID, certPEM, keyPEM); err != nil {
|
||||
return fmt.Errorf("上传证书到 ESA 失败: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user