mirror of
https://gitee.com/mirrors/AllinSSL.git
synced 2026-03-08 15:51:11 +08:00
修复1panel网站部署、申请证书兼容cf和华为云
This commit is contained in:
@@ -15,6 +15,9 @@ import (
|
||||
"github.com/go-acme/lego/v4/challenge/dns01"
|
||||
"github.com/go-acme/lego/v4/lego"
|
||||
"github.com/go-acme/lego/v4/providers/dns/alidns"
|
||||
"github.com/go-acme/lego/v4/providers/dns/baiducloud"
|
||||
"github.com/go-acme/lego/v4/providers/dns/cloudflare"
|
||||
"github.com/go-acme/lego/v4/providers/dns/huaweicloud"
|
||||
"github.com/go-acme/lego/v4/providers/dns/tencentcloud"
|
||||
"github.com/go-acme/lego/v4/registration"
|
||||
"strconv"
|
||||
@@ -39,17 +42,33 @@ func GetDNSProvider(providerName string, creds map[string]string) (challenge.Pro
|
||||
config.SecretID = creds["secret_id"]
|
||||
config.SecretKey = creds["secret_key"]
|
||||
return tencentcloud.NewDNSProviderConfig(config)
|
||||
|
||||
// case "cloudflare":
|
||||
// config := cloudflare.NewDefaultConfig()
|
||||
// config.AuthToken = creds["CLOUDFLARE_API_TOKEN"]
|
||||
// return cloudflare.NewDNSProviderConfig(config)
|
||||
|
||||
case "cloudflare":
|
||||
config := cloudflare.NewDefaultConfig()
|
||||
config.AuthEmail = creds["email"]
|
||||
config.AuthKey = creds["api_key"]
|
||||
return cloudflare.NewDNSProviderConfig(config)
|
||||
case "aliyun":
|
||||
config := alidns.NewDefaultConfig()
|
||||
config.APIKey = creds["access_key"]
|
||||
config.SecretKey = creds["access_secret"]
|
||||
return alidns.NewDNSProviderConfig(config)
|
||||
case "huaweicloud":
|
||||
config := huaweicloud.NewDefaultConfig()
|
||||
config.AccessKeyID = creds["access_key"]
|
||||
config.SecretAccessKey = creds["secret_key"]
|
||||
// 不传会报错
|
||||
config.Region = "cn-north-1"
|
||||
return huaweicloud.NewDNSProviderConfig(config)
|
||||
case "baidu":
|
||||
config := baiducloud.NewDefaultConfig()
|
||||
config.AccessKeyID = creds["access_key"]
|
||||
config.SecretAccessKey = creds["secret_key"]
|
||||
return baiducloud.NewDNSProviderConfig(config)
|
||||
// case "godaddy":
|
||||
// config := godaddy.NewDefaultConfig()
|
||||
// config.APIKey = creds["api_key"]
|
||||
// config.APISecret = creds["api_secret"]
|
||||
// return godaddy.NewDNSProviderConfig(config)
|
||||
|
||||
default:
|
||||
return nil, fmt.Errorf("不支持的 DNS Provider: %s", providerName)
|
||||
@@ -221,7 +240,8 @@ func Apply(cfg map[string]any, logger *public.Logger) (map[string]any, error) {
|
||||
dns01.AddRecursiveNameservers([]string{
|
||||
"8.8.8.8:53",
|
||||
"1.1.1.1:53",
|
||||
}))
|
||||
}),
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -40,12 +40,12 @@ func Request1panel(data *map[string]any, method, providerID, requestUrl string)
|
||||
}
|
||||
timestamp := fmt.Sprintf("%d", time.Now().Unix())
|
||||
token := generateToken(timestamp, providerConfig["api_key"])
|
||||
|
||||
|
||||
// data, requestUrl, method := GetDeploy1PBody(cfg, Type)
|
||||
if requestUrl == "" || data == nil {
|
||||
return nil, fmt.Errorf("不支持的部署类型")
|
||||
}
|
||||
|
||||
|
||||
// 编码为 JSON
|
||||
jsonData, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
@@ -61,12 +61,12 @@ func Request1panel(data *map[string]any, method, providerID, requestUrl string)
|
||||
// fmt.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
req.Header.Set("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36")
|
||||
req.Header.Set("1Panel-Timestamp", timestamp)
|
||||
req.Header.Set("1Panel-Token", token)
|
||||
|
||||
|
||||
// 自定义 Transport,跳过 SSL 证书验证
|
||||
ignoreSsl := false
|
||||
if providerConfig["ignore_ssl"] == "1" {
|
||||
@@ -75,7 +75,7 @@ func Request1panel(data *map[string]any, method, providerID, requestUrl string)
|
||||
tr := &http.Transport{
|
||||
TLSClientConfig: &tls.Config{InsecureSkipVerify: ignoreSsl},
|
||||
}
|
||||
|
||||
|
||||
client := &http.Client{Transport: tr}
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
@@ -84,7 +84,7 @@ func Request1panel(data *map[string]any, method, providerID, requestUrl string)
|
||||
}
|
||||
body, _ := io.ReadAll(resp.Body)
|
||||
defer resp.Body.Close()
|
||||
|
||||
|
||||
var res map[string]interface{}
|
||||
err = json.Unmarshal(body, &res)
|
||||
if err != nil {
|
||||
@@ -102,7 +102,7 @@ func Request1panel(data *map[string]any, method, providerID, requestUrl string)
|
||||
return nil, fmt.Errorf("证书部署失败: %s", msg)
|
||||
}
|
||||
return res, nil
|
||||
|
||||
|
||||
}
|
||||
|
||||
func Deploy1panel(cfg map[string]any) error {
|
||||
@@ -128,7 +128,7 @@ func Deploy1panel(cfg map[string]any) error {
|
||||
if !ok {
|
||||
return fmt.Errorf("证书错误:cert")
|
||||
}
|
||||
|
||||
|
||||
data := map[string]interface{}{
|
||||
"cert": certPem,
|
||||
"key": keyPem,
|
||||
@@ -179,14 +179,14 @@ func Deploy1panelSite(cfg map[string]any) error {
|
||||
if err != nil {
|
||||
return fmt.Errorf("获取网站参数失败: %v", err)
|
||||
}
|
||||
|
||||
|
||||
siteData, ok = siteData["data"].(map[string]any)
|
||||
if !ok {
|
||||
return fmt.Errorf("获取网站参数失败: data")
|
||||
}
|
||||
SSLProtocol, ok := siteData["ssl_protocol"].(string)
|
||||
SSLProtocol, ok := siteData["SSLProtocol"].(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("获取网站参数失败: data.ssl_protocol")
|
||||
return fmt.Errorf("获取网站参数失败: data.SSLProtocol")
|
||||
}
|
||||
algorithm, ok := siteData["algorithm"].(string)
|
||||
if !ok {
|
||||
@@ -200,11 +200,11 @@ func Deploy1panelSite(cfg map[string]any) error {
|
||||
if !ok {
|
||||
return fmt.Errorf("获取网站参数失败: data.hsts")
|
||||
}
|
||||
httpConfig, ok := siteData["http_config"].(string)
|
||||
httpConfig, ok := siteData["httpConfig"].(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("获取网站参数失败: data.http_config")
|
||||
return fmt.Errorf("获取网站参数失败: data.httpConfig")
|
||||
}
|
||||
|
||||
|
||||
data := map[string]any{
|
||||
"SSLProtocol": SSLProtocol,
|
||||
// "acmeAccountId": siteData["SSL"].(map[string]any)["acmeAccountId"].(float64),
|
||||
|
||||
Reference in New Issue
Block a user