From 6a2d3f98cdaeb64f4d50b93e78725547df5b44bc Mon Sep 17 00:00:00 2001 From: v-me-50 Date: Fri, 20 Jun 2025 12:02:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B7=A5=E4=BD=9C=E6=B5=81?= =?UTF-8?q?=E4=B8=BB=E6=96=B9=E6=B3=95=EF=BC=8C=E4=BF=AE=E6=94=B9=E8=AF=81?= =?UTF-8?q?=E4=B9=A6=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/api/acme_account.go | 10 ++++++ backend/internal/cert/apply/account.go | 31 +++++++++++++++++++ backend/internal/cert/apply/apply.go | 9 +++++- backend/internal/cert/deploy/plugin/deploy.go | 4 +-- backend/internal/workflow/workflow.go | 4 +++ backend/route/route.go | 1 + 6 files changed, 56 insertions(+), 3 deletions(-) diff --git a/backend/app/api/acme_account.go b/backend/app/api/acme_account.go index b838ab6..62928f0 100644 --- a/backend/app/api/acme_account.go +++ b/backend/app/api/acme_account.go @@ -125,3 +125,13 @@ func GetAccountList(c *gin.Context) { } public.SuccessData(c, accounts, total) } + +func GetCaList(c *gin.Context) { + cas, total, err := apply.GetCaList() + if err != nil { + public.FailMsg(c, err.Error()) + return + } + public.SuccessData(c, cas, total) + +} diff --git a/backend/internal/cert/apply/account.go b/backend/internal/cert/apply/account.go index f118fbf..18bcd95 100644 --- a/backend/internal/cert/apply/account.go +++ b/backend/internal/cert/apply/account.go @@ -228,3 +228,34 @@ func GetAccountList(search, ca string, p, limit int64) ([]map[string]interface{} return data, int(count), nil } + +func GetCaList() ([]string, int, error) { + db, err := GetSqlite() + if err != nil { + return nil, 0, fmt.Errorf("failed to get sqlite: %w", err) + } + data, err := db.Field([]string{"type"}).GroupBy("type").Select() + if err != nil { + return nil, 0, fmt.Errorf("failed to get CA list: %w", err) + } + caList := []string{"letsencrypt", "buypass", "zerossl"} + for i := range data { + if data[i]["type"] == "Let's Encrypt" { + data[i]["type"] = "letsencrypt" + } + if !containsString(caList, data[i]["type"].(string)) { + caList = append(caList, data[i]["type"].(string)) + } + } + count := len(caList) + return caList, count, nil +} + +func containsString(slice []string, target string) bool { + for _, v := range slice { + if v == target { + return true + } + } + return false +} diff --git a/backend/internal/cert/apply/apply.go b/backend/internal/cert/apply/apply.go index 0db7bbf..c95300f 100644 --- a/backend/internal/cert/apply/apply.go +++ b/backend/internal/cert/apply/apply.go @@ -343,8 +343,15 @@ func GetAcmeClient(email, algorithm, eabId, ca string, httpClient *http.Client, } } } - var reg *registration.Resource + var ( + reg *registration.Resource + Kid, HmacEncoded string + ) if eabData != nil { + Kid = eabData["Kid"].(string) + HmacEncoded = eabData["HmacEncoded"].(string) + } + if Kid != "" && HmacEncoded != "" { Kid := eabData["Kid"].(string) HmacEncoded := eabData["HmacEncoded"].(string) reg, err = client.Registration.RegisterWithExternalAccountBinding(registration.RegisterEABOptions{ diff --git a/backend/internal/cert/deploy/plugin/deploy.go b/backend/internal/cert/deploy/plugin/deploy.go index 7dcb580..3c11dd4 100644 --- a/backend/internal/cert/deploy/plugin/deploy.go +++ b/backend/internal/cert/deploy/plugin/deploy.go @@ -83,10 +83,10 @@ func Deploy(cfg map[string]any, logger *public.Logger) error { // 调用插件 logger.Debug(fmt.Sprintf("调用插件%s:%s", pluginName, action)) - rep, err := CallPlugin(pluginName, action, pluginConfig, logger) + _, err = CallPlugin(pluginName, action, pluginConfig, logger) if err != nil { return fmt.Errorf("调用插件失败:%v", err) } - fmt.Println(rep) + //fmt.Println(rep) return err } diff --git a/backend/internal/workflow/workflow.go b/backend/internal/workflow/workflow.go index b407334..ae38b36 100644 --- a/backend/internal/workflow/workflow.go +++ b/backend/internal/workflow/workflow.go @@ -286,6 +286,10 @@ func RunNode(node *WorkflowNode, ctx *ExecutionContext) error { } if node.ChildNode != nil { + fromNodeData, ok := ctx.GetOutput(node.Id) + if ok && fromNodeData != nil && node.ChildNode.Config["fromNodeData"] == nil { + node.ChildNode.Config["fromNodeData"] = fromNodeData + } return RunNode(node.ChildNode, ctx) } return nil diff --git a/backend/route/route.go b/backend/route/route.go index bdfff48..98067b6 100644 --- a/backend/route/route.go +++ b/backend/route/route.go @@ -60,6 +60,7 @@ func Register(r *gin.Engine) { acmeAccount := v1.Group("/acme_account") { acmeAccount.POST("/get_list", api.GetAccountList) + acmeAccount.POST("/get_ca_list", api.GetCaList) acmeAccount.POST("/add_account", api.AddAccount) acmeAccount.POST("/del_account", api.DelAccount) acmeAccount.POST("/upd_account", api.UpdateAccount)