From 1f6ffe36e96f45f62a7902e3ac982c623c863e34 Mon Sep 17 00:00:00 2001 From: Lystran Date: Thu, 5 Feb 2026 21:21:01 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91=E9=9B=B7?= =?UTF-8?q?=E6=B1=A0waf=E8=AE=A4=E8=AF=81=E4=B8=AD=E5=BF=83=E8=AF=81?= =?UTF-8?q?=E4=B9=A6=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/cert/deploy/deploy.go | 3 + backend/internal/cert/deploy/safelinewaf.go | 62 +++++++++++++++++++ .../internal/cert/deploy/safelinewaf_test.go | 11 +++- .../allin-ssl/cache/translation_cache.json | 17 +++++ .../src/components/flowChart/types.d.ts | 1 + frontend/apps/allin-ssl/src/config/data.tsx | 1 + .../allin-ssl/src/locales/model/arDZ.json | 1 + .../allin-ssl/src/locales/model/enUS.json | 1 + .../allin-ssl/src/locales/model/esAR.json | 1 + .../allin-ssl/src/locales/model/frFR.json | 1 + .../allin-ssl/src/locales/model/jaJP.json | 1 + .../allin-ssl/src/locales/model/koKR.json | 1 + .../allin-ssl/src/locales/model/ptBR.json | 1 + .../allin-ssl/src/locales/model/ruRU.json | 1 + .../allin-ssl/src/locales/model/zhCN.json | 1 + .../allin-ssl/src/locales/model/zhTW.json | 1 + 16 files changed, 104 insertions(+), 1 deletion(-) diff --git a/backend/internal/cert/deploy/deploy.go b/backend/internal/cert/deploy/deploy.go index 56f5b98..34d75b4 100644 --- a/backend/internal/cert/deploy/deploy.go +++ b/backend/internal/cert/deploy/deploy.go @@ -77,6 +77,9 @@ func Deploy(cfg map[string]any, logger *public.Logger) error { case "safeline-panel": logger.Debug("部署雷池WAF面板...") return DeploySafeLineWaf(cfg) + case "safeline-portal": + logger.Debug("部署雷池WAF认证中心...") + return DeploySafeLineWafPortal(cfg, logger) case "localhost": logger.Debug("部署到本地...") return DeployLocalhost(cfg) diff --git a/backend/internal/cert/deploy/safelinewaf.go b/backend/internal/cert/deploy/safelinewaf.go index 6bc90b1..866f68a 100644 --- a/backend/internal/cert/deploy/safelinewaf.go +++ b/backend/internal/cert/deploy/safelinewaf.go @@ -93,6 +93,15 @@ func matchSafeLineSiteByColumn(siteList []any, column string, keyword string) (s return siteInfo } +func GetSafeLineWafPortalConfig(providerID string) (map[string]any, error) { + response, err := RequestSafeLineWaf(&map[string]any{}, "GET", providerID, "api/open/portal") + if err != nil { + return nil, err + } + res := response["data"].(map[string]any) + return res, nil +} + // 上传证书 certId="" 新上传证书 否则覆盖证书 func uploadSafeLineCert(certId float64, key, cert, providerId string) (id float64, err error) { data := map[string]any{ @@ -206,6 +215,59 @@ func DeploySafeLineWafSite(cfg map[string]any, logger *public.Logger) error { return nil } +// DeploySafeLineWafPortal 部署证书到雷池WAF认证中心 +func DeploySafeLineWafPortal(cfg map[string]any, logger *public.Logger) 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") + } + + portalCfg, err := GetSafeLineWafPortalConfig(providerID) + if err != nil { + return fmt.Errorf("获取认证中心配置失败: %s", err.Error()) + } + + var portalCertId float64 + if v, ok := portalCfg["cert_id"].(float64); ok { + portalCertId = v + } + + // 上传/更新证书 + if portalCertId == 0 { + logger.Debug("认证中心未启用证书,上传证书中...") + certId, err := uploadSafeLineCert(0, keyPem, certPem, providerID) + if err != nil { + return fmt.Errorf("认证中心上传证书失败: %s", err.Error()) + } + logger.Debug(fmt.Sprintf("认证中心上传证书成功 证书ID:%d 请手动添加至认证中心", int(certId))) + } else { + logger.Debug(fmt.Sprintf("认证中心已启用证书ID:%d,更新证书中...", int(portalCertId))) + _, err = uploadSafeLineCert(portalCertId, keyPem, certPem, providerID) + if err != nil { + return fmt.Errorf("认证中心更新证书失败: %s", err.Error()) + } + } + + return nil +} + func SafeLineAPITest(providerID string) error { _, err := RequestSafeLineWaf(&map[string]any{}, "GET", providerID, "api/open/site/group") if err != nil { diff --git a/backend/internal/cert/deploy/safelinewaf_test.go b/backend/internal/cert/deploy/safelinewaf_test.go index 2678a26..3628918 100644 --- a/backend/internal/cert/deploy/safelinewaf_test.go +++ b/backend/internal/cert/deploy/safelinewaf_test.go @@ -46,6 +46,15 @@ func TestGetSafeLineWAFSiteList(t *testing.T) { fmt.Println(siteId) } +func TestSafeLineWAFPortalGet(t *testing.T) { + res, err := GetSafeLineWafPortalConfig("1") + if err != nil { + t.Fatalf(err.Error()) + return + } + fmt.Println(res) +} + func TestSafeLineAPITest(t *testing.T) { result := SafeLineAPITest("5") if result != nil { @@ -53,4 +62,4 @@ func TestSafeLineAPITest(t *testing.T) { } else { t.Log("SafeLineAPITest success") } -} \ No newline at end of file +} diff --git a/frontend/apps/allin-ssl/cache/translation_cache.json b/frontend/apps/allin-ssl/cache/translation_cache.json index e6970cb..d7ef297 100644 --- a/frontend/apps/allin-ssl/cache/translation_cache.json +++ b/frontend/apps/allin-ssl/cache/translation_cache.json @@ -11744,5 +11744,22 @@ "arDZ": "الرجاء إدخال اسم الشهادة للبحث" }, "timestamp": "2025-11-19T09:00:47.861Z" + }, + "雷池WAF-认证中心": { + "text": "雷池WAF-认证中心", + "key": "t_0_1770278647457", + "translations": { + "zhCN": "雷池WAF-认证中心", + "zhTW": "雷池WAF-認證中心", + "enUS": "LeiChi WAF - Authentication Center", + "jaJP": "雷池WAF-認証センター", + "koKR": "뢰지WAF-인증센터", + "ruRU": "LeiChi WAF - Центр аутентификации", + "ptBR": "LeiChi WAF - Centro de Autenticação", + "frFR": "LeiChi WAF - Centre d'authentification", + "esAR": "LeiChi WAF - Centro de Autenticación", + "arDZ": "واقي LeiChi WAF - مركز المصادقة" + }, + "timestamp": "2026-02-05T08:04:07.457Z" } } \ No newline at end of file diff --git a/frontend/apps/allin-ssl/src/components/flowChart/types.d.ts b/frontend/apps/allin-ssl/src/components/flowChart/types.d.ts index 307ef79..7bc4a19 100644 --- a/frontend/apps/allin-ssl/src/components/flowChart/types.d.ts +++ b/frontend/apps/allin-ssl/src/components/flowChart/types.d.ts @@ -270,6 +270,7 @@ export interface DeployConfig< | "qiniu-oss" | "safeline-site" | "safeline-panel" + | "safeline-portal" | "btpanel-dockersite" | "lecdn" // LeCDN 部署类型 | "plugin" // 新增插件类型 diff --git a/frontend/apps/allin-ssl/src/config/data.tsx b/frontend/apps/allin-ssl/src/config/data.tsx index e6a3048..f6feb91 100644 --- a/frontend/apps/allin-ssl/src/config/data.tsx +++ b/frontend/apps/allin-ssl/src/config/data.tsx @@ -143,6 +143,7 @@ export const ApiProjectConfig: Record = { hostRelated: { panel: { name: $t("t_1_1747298114192") }, site: { name: $t("t_12_1747886302725") }, + portal: { name: $t("t_0_1770278647457") }, }, sort: 8, }, diff --git a/frontend/apps/allin-ssl/src/locales/model/arDZ.json b/frontend/apps/allin-ssl/src/locales/model/arDZ.json index dec869b..7639cce 100644 --- a/frontend/apps/allin-ssl/src/locales/model/arDZ.json +++ b/frontend/apps/allin-ssl/src/locales/model/arDZ.json @@ -1,4 +1,5 @@ { + "t_0_1770278647457": "واقي LeiChi WAF - مركز المصادقة", "t_0_1744098811152": "تحذير: لقد دخلتم منطقة غير معروفة، الصفحة التي تحاول زيارتها غير موجودة، يرجى الضغط على الزر للعودة إلى الصفحة الرئيسية.", "t_1_1744098801860": "رجوع إلى الصفحة الرئيسية", "t_2_1744098804908": "نصيحة أمنية: إذا كنت تعتقد أن هذا خطأ، يرجى الاتصال بالمدير على الفور", diff --git a/frontend/apps/allin-ssl/src/locales/model/enUS.json b/frontend/apps/allin-ssl/src/locales/model/enUS.json index 85f0716..74085b7 100644 --- a/frontend/apps/allin-ssl/src/locales/model/enUS.json +++ b/frontend/apps/allin-ssl/src/locales/model/enUS.json @@ -1,4 +1,5 @@ { + "t_0_1770278647457": "LeiChi WAF - Authentication Center", "t_0_1744098811152": "Warning: You have entered an unknown area, the page you are visiting does not exist, please click the button to return to the homepage.", "t_1_1744098801860": "Return Home", "t_2_1744098804908": "Safety Tip: If you think this is an error, please contact the administrator immediately", diff --git a/frontend/apps/allin-ssl/src/locales/model/esAR.json b/frontend/apps/allin-ssl/src/locales/model/esAR.json index c4b6e1c..173cc1f 100644 --- a/frontend/apps/allin-ssl/src/locales/model/esAR.json +++ b/frontend/apps/allin-ssl/src/locales/model/esAR.json @@ -1,4 +1,5 @@ { + "t_0_1770278647457": "LeiChi WAF - Centro de Autenticación", "t_0_1744098811152": "Advertencia: Ha ingresado a una zona desconocida, la página que intenta visitar no existe, por favor, haga clic en el botón para regresar a la página de inicio.", "t_1_1744098801860": "Volver al inicio", "t_2_1744098804908": "Consejo de seguridad: Si piensa que es un error, póngase en contacto con el administrador inmediatamente", diff --git a/frontend/apps/allin-ssl/src/locales/model/frFR.json b/frontend/apps/allin-ssl/src/locales/model/frFR.json index d9aaee9..4f95da2 100644 --- a/frontend/apps/allin-ssl/src/locales/model/frFR.json +++ b/frontend/apps/allin-ssl/src/locales/model/frFR.json @@ -1,4 +1,5 @@ { + "t_0_1770278647457": "LeiChi WAF - Centre d'authentification", "t_0_1744098811152": "Avertissement : Vous avez entré dans une zone inconnue, la page que vous visitez n'existe pas, veuillez cliquer sur le bouton pour revenir à la page d'accueil.", "t_1_1744098801860": "Retour à l'accueil", "t_2_1744098804908": "Avis de sécurité : Si vous pensez que c'est une erreur, veuillez contacter l'administrateur immédiatement", diff --git a/frontend/apps/allin-ssl/src/locales/model/jaJP.json b/frontend/apps/allin-ssl/src/locales/model/jaJP.json index 735557b..3f060da 100644 --- a/frontend/apps/allin-ssl/src/locales/model/jaJP.json +++ b/frontend/apps/allin-ssl/src/locales/model/jaJP.json @@ -1,4 +1,5 @@ { + "t_0_1770278647457": "雷池WAF-認証センター", "t_0_1744098811152": "警告:未知のエリアに進入しました。アクセスしようとしたページは存在しません。ボタンをクリックしてホームページに戻ってください。", "t_1_1744098801860": "ホームに戻る", "t_2_1744098804908": "安全注意:これが誤りだと思われる場合は、すぐに管理者に連絡してください", diff --git a/frontend/apps/allin-ssl/src/locales/model/koKR.json b/frontend/apps/allin-ssl/src/locales/model/koKR.json index 5dfcae5..518877b 100644 --- a/frontend/apps/allin-ssl/src/locales/model/koKR.json +++ b/frontend/apps/allin-ssl/src/locales/model/koKR.json @@ -1,4 +1,5 @@ { + "t_0_1770278647457": "뢰지WAF-인증센터", "t_0_1744098811152": "경고: 알 수 없는 영역에 진입했습니다. 방문하려는 페이지가 존재하지 않습니다. 버튼을 클릭하여 홈페이지로 돌아가세요。", "t_1_1744098801860": "홈으로 돌아가기", "t_2_1744098804908": "안전 유의사항: 이가 오류라면 즉시 관리자에게 연락하십시오", diff --git a/frontend/apps/allin-ssl/src/locales/model/ptBR.json b/frontend/apps/allin-ssl/src/locales/model/ptBR.json index f5fc717..f10ae4d 100644 --- a/frontend/apps/allin-ssl/src/locales/model/ptBR.json +++ b/frontend/apps/allin-ssl/src/locales/model/ptBR.json @@ -1,4 +1,5 @@ { + "t_0_1770278647457": "LeiChi WAF - Centro de Autenticação", "t_0_1744098811152": "Aviso: Você entrou em uma área desconhecida, a página que você está visitando não existe, por favor, clique no botão para voltar para a página inicial.", "t_1_1744098801860": "Voltar para a homepage", "t_2_1744098804908": "Dica de Segurança: Se você acha que isso é um erro, entre em contato com o administrador imediatamente", diff --git a/frontend/apps/allin-ssl/src/locales/model/ruRU.json b/frontend/apps/allin-ssl/src/locales/model/ruRU.json index 9c7d368..d5ed444 100644 --- a/frontend/apps/allin-ssl/src/locales/model/ruRU.json +++ b/frontend/apps/allin-ssl/src/locales/model/ruRU.json @@ -1,4 +1,5 @@ { + "t_0_1770278647457": "LeiChi WAF - Центр аутентификации", "t_0_1744098811152": "Предупреждение: Вы вошли в неизвестную зону, посещаемая страница не существует, пожалуйста, нажмите кнопку, чтобы вернуться на главную страницу.", "t_1_1744098801860": "Вернуться на главную", "t_2_1744098804908": "Совет по безопасности: Если вы считаете, что это ошибка, немедленно свяжитесь с администратором", diff --git a/frontend/apps/allin-ssl/src/locales/model/zhCN.json b/frontend/apps/allin-ssl/src/locales/model/zhCN.json index a451362..c9ae8c7 100644 --- a/frontend/apps/allin-ssl/src/locales/model/zhCN.json +++ b/frontend/apps/allin-ssl/src/locales/model/zhCN.json @@ -1,4 +1,5 @@ { + "t_0_1770278647457": "雷池WAF-认证中心", "t_0_1744098811152": "警告:您已进入未知区域,所访问的页面不存在,请点击按钮返回首页。", "t_1_1744098801860": "返回首页", "t_2_1744098804908": "安全提示:如果您认为这是个错误,请立即联系管理员", diff --git a/frontend/apps/allin-ssl/src/locales/model/zhTW.json b/frontend/apps/allin-ssl/src/locales/model/zhTW.json index 7df4f68..02efc95 100644 --- a/frontend/apps/allin-ssl/src/locales/model/zhTW.json +++ b/frontend/apps/allin-ssl/src/locales/model/zhTW.json @@ -1,4 +1,5 @@ { + "t_0_1770278647457": "雷池WAF-認證中心", "t_0_1744098811152": "警告:您已進入未知區域,所訪問的頁面不存在,請點擊按鈕返回首頁。", "t_1_1744098801860": "返回首頁", "t_2_1744098804908": "安全提示:如果您認為這是個錯誤,請立即聯繫管理員",