mirror of https://github.com/allinssl/allinssl
修改esa部署和多吉云cdn部署
parent
1d5cd9ca03
commit
426b358d56
|
@ -204,6 +204,9 @@ func GetAccountList(search, ca string, p, limit int64) ([]map[string]interface{}
|
||||||
if ca == "custom" {
|
if ca == "custom" {
|
||||||
whereSql += `and type not in ('Let's Encrypt','buypass', 'google', 'sslcom', 'zerossl')`
|
whereSql += `and type not in ('Let's Encrypt','buypass', 'google', 'sslcom', 'zerossl')`
|
||||||
} else {
|
} else {
|
||||||
|
if ca == "letsencrypt" {
|
||||||
|
ca = "Let's Encrypt"
|
||||||
|
}
|
||||||
whereSql += " and type=?"
|
whereSql += " and type=?"
|
||||||
whereArgs = append(whereArgs, ca)
|
whereArgs = append(whereArgs, ca)
|
||||||
}
|
}
|
||||||
|
@ -217,6 +220,7 @@ func GetAccountList(search, ca string, p, limit int64) ([]map[string]interface{}
|
||||||
data[i]["ca"] = data[i]["type"]
|
data[i]["ca"] = data[i]["type"]
|
||||||
delete(data[i], "private_key")
|
delete(data[i], "private_key")
|
||||||
delete(data[i], "reg")
|
delete(data[i], "reg")
|
||||||
|
delete(data[i], "type")
|
||||||
}
|
}
|
||||||
|
|
||||||
return data, int(count), nil
|
return data, int(count), nil
|
||||||
|
|
|
@ -87,11 +87,11 @@ func DeployAliyunESA(cfg map[string]any) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("创建 ESA 客户端失败: %w", err)
|
return fmt.Errorf("创建 ESA 客户端失败: %w", err)
|
||||||
}
|
}
|
||||||
certPEM, ok := cert["cert_pem"].(string)
|
certPEM, ok := cert["cert"].(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
return fmt.Errorf("证书内容不存在或格式错误")
|
return fmt.Errorf("证书内容不存在或格式错误")
|
||||||
}
|
}
|
||||||
privkeyPEM, ok := cert["privkey_pem"].(string)
|
privkeyPEM, ok := cert["key"].(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
return fmt.Errorf("私钥内容不存在或格式错误")
|
return fmt.Errorf("私钥内容不存在或格式错误")
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package doge
|
package doge
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"ALLinSSL/backend/internal/access"
|
||||||
"ALLinSSL/backend/public"
|
"ALLinSSL/backend/public"
|
||||||
"crypto/hmac"
|
"crypto/hmac"
|
||||||
"crypto/sha1"
|
"crypto/sha1"
|
||||||
|
@ -10,6 +11,7 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -26,36 +28,54 @@ func NewAuth(accessKey, secretKey string) *Auth {
|
||||||
}
|
}
|
||||||
|
|
||||||
func DeployCdn(cfg map[string]any) error {
|
func DeployCdn(cfg map[string]any) error {
|
||||||
if cfg == nil {
|
cert, ok := cfg["certificate"].(map[string]any)
|
||||||
return fmt.Errorf("config cannot be nil")
|
if !ok {
|
||||||
|
return fmt.Errorf("证书不存在")
|
||||||
}
|
}
|
||||||
certStr, ok := cfg["cert"].(string)
|
var providerID string
|
||||||
if !ok || certStr == "" {
|
switch v := cfg["provider_id"].(type) {
|
||||||
return fmt.Errorf("cert is required and must be a string")
|
case float64:
|
||||||
|
providerID = strconv.Itoa(int(v))
|
||||||
|
case string:
|
||||||
|
providerID = v
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("参数错误:provider_id")
|
||||||
}
|
}
|
||||||
keyStr, ok := cfg["key"].(string)
|
//
|
||||||
if !ok || keyStr == "" {
|
providerData, err := access.GetAccess(providerID)
|
||||||
return fmt.Errorf("key is required and must be a string")
|
if err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
accessKey, ok := cfg["access_key"].(string)
|
providerConfigStr, ok := providerData["config"].(string)
|
||||||
if !ok || accessKey == "" {
|
if !ok {
|
||||||
return fmt.Errorf("access_key is required and must be a string")
|
return fmt.Errorf("api配置错误")
|
||||||
}
|
}
|
||||||
secretKey, ok := cfg["secret_key"].(string)
|
// 解析 JSON 配置
|
||||||
if !ok || secretKey == "" {
|
var providerConfig map[string]string
|
||||||
return fmt.Errorf("secret_key is required and must be a string")
|
err = json.Unmarshal([]byte(providerConfigStr), &providerConfig)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
domain, ok := cfg["domain"].(string)
|
domain, ok := cfg["domain"].(string)
|
||||||
if !ok || domain == "" {
|
if !ok || domain == "" {
|
||||||
return fmt.Errorf("domain is required and must be a string")
|
return fmt.Errorf("domain is required and must be a string")
|
||||||
}
|
}
|
||||||
|
certStr, ok := cert["cert"].(string)
|
||||||
|
if !ok || certStr == "" {
|
||||||
|
return fmt.Errorf("cert is required and must be a string")
|
||||||
|
}
|
||||||
|
keyStr, ok := cert["key"].(string)
|
||||||
|
if !ok || keyStr == "" {
|
||||||
|
return fmt.Errorf("key is required and must be a string")
|
||||||
|
}
|
||||||
sha256, err := public.GetSHA256(certStr)
|
sha256, err := public.GetSHA256(certStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to get SHA256 of cert: %w", err)
|
return fmt.Errorf("failed to get SHA256 of cert: %w", err)
|
||||||
}
|
}
|
||||||
note := fmt.Sprintf("allinssl-%s", sha256)
|
note := fmt.Sprintf("allinssl-%s", sha256)
|
||||||
|
|
||||||
a := NewAuth(accessKey, secretKey)
|
a := NewAuth(providerConfig["access_key"], providerConfig["secret_key"])
|
||||||
// 检查证书是否已存在于 CDN
|
// 检查证书是否已存在于 CDN
|
||||||
certList, err := a.listCertFromCdn()
|
certList, err := a.listCertFromCdn()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue