diff --git a/backend/internal/cert/deploy/btpanel.go b/backend/internal/cert/deploy/btpanel.go index 337277c..06193de 100644 --- a/backend/internal/cert/deploy/btpanel.go +++ b/backend/internal/cert/deploy/btpanel.go @@ -252,11 +252,48 @@ func BtPanelSiteList(providerID string) ([]response.AccessSiteList, error) { if !ok { return nil, fmt.Errorf("获取网站列表失败: 数据格式错误") } - + for _, site := range sites { result = append(result, response.AccessSiteList{Id: "", SiteName: site.(string), Domain: []string{}}) } - + //fmt.Printf("siteList:%#v\n", result) return result, nil } +func DeployBtSingleSite(cfg map[string]any) error { + cert, ok := cfg["certificate"].(map[string]any) + if !ok { + return fmt.Errorf("证书不存在") + } + // 设置证书 + keyPem, ok := cert["key"].(string) + if !ok { + return fmt.Errorf("证书错误:key") + } + certPem, ok := cert["cert"].(string) + if !ok { + return fmt.Errorf("证书错误:cert") + } + 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") + } + siteName, ok := cfg["siteName"].(string) + if !ok { + return fmt.Errorf("参数错误:siteName") + } + data := url.Values{} + data.Set("key", keyPem) + data.Set("csr", certPem) + data.Set("siteName", siteName) + _, err := RequestBt(&data, "POST", providerID, "/site?action=SetSSL") + if err != nil { + return fmt.Errorf("证书部署失败: %v", err) + } + return nil +} diff --git a/backend/internal/cert/deploy/deploy.go b/backend/internal/cert/deploy/deploy.go index 802eea7..7689e34 100644 --- a/backend/internal/cert/deploy/deploy.go +++ b/backend/internal/cert/deploy/deploy.go @@ -20,6 +20,9 @@ func Deploy(cfg map[string]any, logger *public.Logger) error { case "btpanel-dockersite": logger.Debug("部署到宝塔Docker面板网站...") return DeployBtDockerSite(cfg) + case "btpanel-singlesite": + logger.Debug("部署到旧版本宝塔单个站点...") + return DeployBtSingleSite(cfg) case "btwaf-site": logger.Debug("部署到宝塔WAF面板网站...") return DeployBtWafSite(cfg)