From 453f1baa0b9eb0f648aa1b71ccf5a95b202ce13f Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Fri, 23 Aug 2024 11:35:34 +0800 Subject: [PATCH] perf: email proxy --- packages/core/pipeline/src/core/license.ts | 5 ++ .../core/pipeline/src/utils/util.request.ts | 18 ++++- .../src/layout/layout-outside.vue | 1 - .../ui/certd-client/src/store/modules/user.ts | 3 + .../views/certd/settings/email-setting.vue | 74 ++++++++++++------- .../modules/basic/service/email-service.ts | 43 +++++++++-- .../src/modules/basic/service/plus-service.ts | 54 ++++++++++++++ packages/ui/certd-server/src/utils/http.ts | 3 + 8 files changed, 166 insertions(+), 35 deletions(-) create mode 100644 packages/ui/certd-server/src/modules/basic/service/plus-service.ts diff --git a/packages/core/pipeline/src/core/license.ts b/packages/core/pipeline/src/core/license.ts index ea659c81..09cf1d65 100644 --- a/packages/core/pipeline/src/core/license.ts +++ b/packages/core/pipeline/src/core/license.ts @@ -28,6 +28,7 @@ class LicenseHolder { expireTime = 0; level = 1; message?: string = undefined; + secret?: string = undefined; } const holder = new LicenseHolder(); holder.isPlus = false; @@ -44,12 +45,14 @@ class LicenseVerifier { if (value && info) { holder.isPlus = true; holder.expireTime = info.expireTime; + holder.secret = info.secret; holder.level = info.level; } else { holder.isPlus = false; holder.expireTime = 0; holder.level = 1; holder.message = info.message; + holder.secret = undefined; } return { ...holder, @@ -87,6 +90,7 @@ class LicenseVerifier { return this.setPlus(true, { expireTime: json.expireTime, level: json.level || 1, + secret: json.secret, }); } @@ -108,6 +112,7 @@ export function getPlusInfo() { isPlus: holder.isPlus, level: holder.level, expireTime: holder.expireTime, + secret: holder.secret, }; } diff --git a/packages/core/pipeline/src/utils/util.request.ts b/packages/core/pipeline/src/utils/util.request.ts index 2efd0fa1..58e7ce35 100644 --- a/packages/core/pipeline/src/utils/util.request.ts +++ b/packages/core/pipeline/src/utils/util.request.ts @@ -53,7 +53,23 @@ export function createAxiosService({ logger }: { logger: Logger }) { logger.error(`请求出错:url:${error?.response?.config.url},method:${error?.response?.config?.method},status:${error?.response?.status}`); logger.info("返回数据:", JSON.stringify(error?.response?.data)); delete error.config; - return Promise.reject(error.response || error); + const data = error?.response?.data; + if (!data) { + error.message = data.message || data.msg || data.error || data; + } + if (error?.response) { + return Promise.reject({ + status: error?.response?.status, + statusText: error?.response?.statusText, + request: { + url: error?.response?.config?.url, + method: error?.response?.config?.method, + data: error?.response?.data, + }, + data: error?.response?.data, + }); + } + return Promise.reject(error); } ); return service; diff --git a/packages/ui/certd-client/src/layout/layout-outside.vue b/packages/ui/certd-client/src/layout/layout-outside.vue index c3e229f6..0dc736fa 100644 --- a/packages/ui/certd-client/src/layout/layout-outside.vue +++ b/packages/ui/certd-client/src/layout/layout-outside.vue @@ -1,7 +1,6 @@
- - - + + + +
专业版功能,免除繁琐的邮件配置,直接发邮件
+ - - - - - -
如果是qq邮箱,需要到qq邮箱的设置里面申请授权码作为密码
-
- - - - - -
ssl和非ssl的smtp端口是不一样的,注意修改端口
-
- - - 保存 @@ -55,6 +70,7 @@ import * as emailApi from "./api.email"; import { SettingKeys } from "./api"; import { notification } from "ant-design-vue"; +import { useUserStore } from "/@/store/modules/user"; interface FormState { host: string; @@ -69,6 +85,7 @@ interface FormState { rejectUnauthorized?: boolean; }; sender: string; + usePlus: boolean; } const formState = reactive>({ @@ -76,7 +93,8 @@ const formState = reactive>({ user: "", pass: "" }, - tls: {} + tls: {}, + usePlus: false }); async function load() { @@ -118,6 +136,8 @@ async function onTestSend() { testFormState.loading = false; } } + +const userStore = useUserStore();