Compare commits

...

32 Commits

Author SHA1 Message Date
xiaojunnuo 2e19dda72e fix(pipeline): 修复批量随机修改定时没有生效的bug 2026-06-03 10:54:53 +08:00
xiaojunnuo c637985575 perf: 插件全局配置支持下拉选项自定义映射功能 2026-06-01 09:31:38 +08:00
xiaojunnuo 55f75c6051 chore(acme): 包装DNS提供商错误信息并抛出异常
为DNS解析记录创建操作添加异常捕获,将错误信息添加上提供商名称前缀后重新抛出,便于定位具体出错的DNS服务商
2026-05-27 10:56:08 +08:00
xiaojunnuo 42d9c3ef14 chore: 优化http提示 2026-05-27 09:19:07 +08:00
xiaojunnuo 03ce030754 build: release 2026-05-26 15:40:34 +08:00
xiaojunnuo f2c1e362a0 build: publish 2026-05-26 14:02:47 +08:00
xiaojunnuo 6426aa57a2 build: trigger build image 2026-05-26 14:02:35 +08:00
xiaojunnuo 7ceb0f6306 v1.40.5 2026-05-26 14:00:57 +08:00
xiaojunnuo b26a1944c6 build: prepare to build 2026-05-26 13:31:45 +08:00
xiaojunnuo 235aec3e42 chore: 1 2026-05-26 13:29:12 +08:00
xiaojunnuo 346fb730a3 fix: 修复查询阿里云cdn Dcdn 域名太多无法选择的bug 2026-05-26 12:30:58 +08:00
xiaojunnuo c87bc22a5f chore: package 2026-05-26 11:55:04 +08:00
xiaojunnuo 7198e24945 chore: 1 2026-05-26 11:54:04 +08:00
xiaojunnuo 1a08bd340e fix: 安装glibc,增加Alpine镜像下 dns解析结果的兼容性 2026-05-26 11:35:06 +08:00
xiaojunnuo af9047bf3c fix: 修复阿里云证书订单orderid 选择出错的问题 2026-05-26 11:28:14 +08:00
xiaojunnuo 9566fc4e03 chore: 阿里云订单优化只获取一个订单id 2026-05-26 11:28:07 +08:00
xiaojunnuo f721cefb4a build: release 2026-05-25 00:32:36 +08:00
xiaojunnuo fc2c947afe build: publish 2026-05-25 00:23:24 +08:00
xiaojunnuo d0272095cc build: trigger build image 2026-05-25 00:23:12 +08:00
xiaojunnuo 4a09cf289d v1.40.4 2026-05-25 00:22:01 +08:00
xiaojunnuo 89c23fef35 build: prepare to build 2026-05-25 00:18:32 +08:00
xiaojunnuo 5e59651d45 fix(pipeline-service): 修复流水线运行时超过套餐部署次数仍然能够正常运行的bug 2026-05-25 00:15:23 +08:00
xiaojunnuo 5e72f75395 perf: 商业版套餐只支持设置为可叠加 2026-05-24 23:53:55 +08:00
xiaojunnuo 8edb6f8727 perf: 新增阿里云直播证书部署插件 2026-05-22 19:06:55 +08:00
xiaojunnuo b30f02a1fb chore: 1 2026-05-22 00:06:55 +08:00
xiaojunnuo 7e2333a63a chore: 1 2026-05-22 00:06:18 +08:00
xiaojunnuo 0be66cccbc build: release 2026-05-21 23:48:39 +08:00
xiaojunnuo ed26ed196d build: publish 2026-05-21 23:26:57 +08:00
xiaojunnuo a204f270dd build: trigger build image 2026-05-21 23:26:51 +08:00
xiaojunnuo 7585d7bbd0 build: publish 2026-05-21 23:25:32 +08:00
xiaojunnuo 2981f086c8 build: trigger build image 2026-05-21 23:25:21 +08:00
xiaojunnuo 784ef8a6a4 chore: 1 2026-05-21 23:23:20 +08:00
164 changed files with 1038 additions and 276 deletions
+1 -1
View File
@@ -44,7 +44,7 @@ jobs:
# cache: 'npm'
# working-directory: ./packages/ui/certd-client
- run: |
npm install -g pnpm
npm install -g pnpm@10.33.4
pnpm install
npm run build
working-directory: ./packages/ui/certd-client
+1 -1
View File
@@ -46,7 +46,7 @@ jobs:
console.log("certd_version:",pkg.version);
return pkg.version
- run: |
npm install -g pnpm
npm install -g pnpm@10.33.4
pnpm install
npm run build
working-directory: ./packages/ui/certd-client
+1 -1
View File
@@ -35,7 +35,7 @@ jobs:
run: |
export GITEE_TOKEN=${{ secrets.GITEE_TOKEN }}
rm -rf ./pnpm*.yaml
npm install -g pnpm
npm install -g pnpm@10.33.4
pnpm install
npm run publish_to_gitee
working-directory: ./
+1 -1
View File
@@ -35,7 +35,7 @@ jobs:
run: |
export GITHUB_TOKEN=${{ secrets.GH_TOKEN }}
rm -rf ./pnpm*.yaml
npm install -g pnpm
npm install -g pnpm@10.33.4
pnpm install
npm run publish_to_github
working-directory: ./
+1 -1
View File
@@ -50,7 +50,7 @@ jobs:
# cache: 'npm'
# working-directory: ./packages/ui/certd-client
- run: |
npm install -g pnpm
npm install -g pnpm@10.33.4
pnpm install
npm run build
working-directory: ./packages/ui/certd-client
+3 -1
View File
@@ -32,4 +32,6 @@ test/**/*.js
test.js
.history
/logs
.pnpm-lock.yaml
.pnpm-lock.yaml
pnpm-lock.yaml
.studio/
+2 -1
View File
@@ -20,5 +20,6 @@
"scm.repositories.visible": 9,
"scm.repositories.explorer": false,
"scm.repositories.selectionMode": "multiple",
"scm.repositories.sortOrder": "discovery time"
"scm.repositories.sortOrder": "discovery time",
"git.ignoreLimitWarning": true
}
+4 -1
View File
@@ -1,4 +1,4 @@
# Certd 开发 Agent 上下文
# Certd 开发 Agent 上下文
这个文件是给在本仓库工作的开发 agent 看的常驻项目说明。后续会话进入仓库后,应先读取它,再按任务需要查看具体代码,避免每次都重新全量扫描项目。
@@ -218,3 +218,6 @@ Get-ChildItem packages\ui\certd-client\src\views\certd
- 单个 monorepo 包运行单元测试时,优先使用 `corepack pnpm --dir <包目录> test:unit`,例如 `corepack pnpm --dir packages\ui\certd-server test:unit``corepack pnpm --dir packages\core\basic test:unit``corepack pnpm --dir packages\plugins\plugin-lib test:unit`;也可以用包名过滤,例如 `corepack pnpm --filter @certd/ui-server test:unit`。前端 `packages\ui\certd-client` 暂时不跑单元测试。
- 前端 TS/Vue/locale 等文件改动后,优先只对本次改动文件运行项目现有自动格式化/修复;Windows/PowerShell 下 Prettier 已验证可用命令为 `packages\ui\certd-client\node_modules\.bin\prettier.cmd --write <files>`ESLint 可用命令为 `packages\ui\certd-client\node_modules\.bin\eslint.cmd --fix <files>`;不要运行 `vue-tsc` / `pnpm tsc`;不要为了格式化无关文件而扩大 diff。项目保留了 `tslint` 依赖,但当前主要使用 ESLint + Prettier。
- 优先对改动包运行聚焦的测试;后端可按包运行单元测试,前端优先使用 Prettier/ESLint 做改动文件验证。只有跨包影响明显时再考虑全 monorepo 构建。
- 不要主动运行 `pnpm install` 安装依赖:用户会事先准备好 `node_modules`。如果 `pnpm install``test:unit` 因缺少依赖、TTY 或网络问题失败,立即停止尝试,告知用户解决环境问题。
+19
View File
@@ -3,6 +3,25 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/certd/certd/compare/v1.40.4...v1.40.5) (2026-05-26)
### Bug Fixes
* 安装glibc,增加Alpine镜像下 dns解析结果的兼容性 ([1a08bd3](https://github.com/certd/certd/commit/1a08bd340e1e7d3f9acf5d40f7bba7998459b8fb))
* 修复阿里云证书订单orderid 选择出错的问题 ([af9047b](https://github.com/certd/certd/commit/af9047bf3c54ce71b11727ccc6220288ed1f57be))
* 修复查询阿里云cdn Dcdn 域名太多无法选择的bug ([346fb73](https://github.com/certd/certd/commit/346fb730a37e035576f5d9ea5c0d74c052b34aeb))
## [1.40.4](https://github.com/certd/certd/compare/v1.40.3...v1.40.4) (2026-05-24)
### Bug Fixes
* **pipeline-service:** 修复流水线运行时超过套餐部署次数仍然能够正常运行的bug ([5e59651](https://github.com/certd/certd/commit/5e59651d45bc91919629e35995ff1b3cff6b87ea))
### Performance Improvements
* 商业版套餐只支持设置为可叠加 ([5e72f75](https://github.com/certd/certd/commit/5e72f75395fb632a30e80c07d35d8ba40ef631fa))
* 新增阿里云直播证书部署插件 ([8edb6f8](https://github.com/certd/certd/commit/8edb6f8727bd148f106801bef25567880fd35e9e))
## [1.40.3](https://github.com/certd/certd/compare/v1.40.2...v1.40.3) (2026-05-21)
### Bug Fixes
+1
View File
@@ -135,6 +135,7 @@ export default defineConfig({
{text: "支付宝配置", link: "/guide/use/comm/payments/alipay.md"},
{text: "微信支付配置", link: "/guide/use/comm/payments/wxpay.md"},
{text: "彩虹易支付配置", link: "/guide/use/comm/payments/yizhifu.md"},
{text: "插件选项映射", link: "/guide/use/comm/plugin/"},
]
},
{
+29
View File
@@ -3,6 +3,35 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/certd/certd/compare/v1.40.4...v1.40.5) (2026-05-26)
### Bug Fixes
* 安装glibc,增加Alpine镜像下 dns解析结果的兼容性 ([1a08bd3](https://github.com/certd/certd/commit/1a08bd340e1e7d3f9acf5d40f7bba7998459b8fb))
* 修复阿里云证书订单orderid 选择出错的问题 ([af9047b](https://github.com/certd/certd/commit/af9047bf3c54ce71b11727ccc6220288ed1f57be))
* 修复查询阿里云cdn Dcdn 域名太多无法选择的bug ([346fb73](https://github.com/certd/certd/commit/346fb730a37e035576f5d9ea5c0d74c052b34aeb))
## [1.40.4](https://github.com/certd/certd/compare/v1.40.3...v1.40.4) (2026-05-24)
### Bug Fixes
* **pipeline-service:** 修复流水线运行时超过套餐部署次数仍然能够正常运行的bug ([5e59651](https://github.com/certd/certd/commit/5e59651d45bc91919629e35995ff1b3cff6b87ea))
### Performance Improvements
* 商业版套餐只支持设置为可叠加 ([5e72f75](https://github.com/certd/certd/commit/5e72f75395fb632a30e80c07d35d8ba40ef631fa))
* 新增阿里云直播证书部署插件 ([8edb6f8](https://github.com/certd/certd/commit/8edb6f8727bd148f106801bef25567880fd35e9e))
## [1.40.3](https://github.com/certd/certd/compare/v1.40.2...v1.40.3) (2026-05-21)
### Bug Fixes
* 修复暗黑模式下注册页面验证码看不清的问题 ([5ba33be](https://github.com/certd/certd/commit/5ba33be30f765f06cafbfcc04f5e25320db01449))
### Performance Improvements
* 修复商业版套餐添加和修改时的字段显示 ([fb5b00d](https://github.com/certd/certd/commit/fb5b00d73f925036a65ce5003c57c1199578c34d))
## [1.40.2](https://github.com/certd/certd/compare/v1.40.1...v1.40.2) (2026-05-19)
### Bug Fixes
+1 -1
View File
@@ -22,7 +22,7 @@
| 证书域名数量 | 无限制 | 无限制 | 无限制 |
| 证书流水线条数 | 无限制 | 无限制 | 无限制 |
| 自动部署插件 | 阿里云CDN、腾讯云、七牛CDN、主机部署、宝塔、1Panel等大部分插件 | 群晖、威联通、proxmox等 | 同专业版 |
| 通知 | 邮件通知、自定义webhook | 邮件免配置、企微、钉钉、飞书、anpush、server酱等 | 同专业版 |
| 通知 | 邮件通知、自定义webhook | 企微、钉钉、飞书、anpush、server酱等 | 同专业版 |
| 站点监控 | 限制1条 | 无限制 | 无限制 |
| 批量操作 | 无 | 流水线模版,流水线复制,批量运行,批量设置通知、定时等 | 同专业版 |
| VIP群 | 无 | 可加,一对一技术支持,必要时可申请远程协助 | 商业版技术支持 |
+9 -8
View File
@@ -1,5 +1,5 @@
# 任务插件
`131` 款任务插件
`132` 款任务插件
## 1. 证书申请
| 序号 | 名称 | 说明 |
@@ -93,13 +93,14 @@
| 9.| **阿里云-部署至ESA** | 部署证书到阿里云ESA(边缘安全加速),自动删除过期证书 |
| 10.| **阿里云-部署至阿里云FC(3.0)** | 部署证书到阿里云函数计算(FC3.0) |
| 11.| **阿里云-部署至GA** | 部署证书到阿里云GA(全球加速),支持更新默认证书和扩展证书 |
| 12.| **阿里云-部署至NLB(网络负载均衡)** | NLB,网络负载均衡,更新监听器的默认证书 |
| 13.| **阿里云-部署证书至OSS** | 部署域名证书至阿里云OSS自定义域名,不是上传到阿里云oss |
| 14.| **阿里云-部署至CLB(传统负载均衡)** | 部署证书到阿里云CLB(传统负载均衡) |
| 15.| **阿里云-部署至VOD** | 部署证书到阿里云视频点播(vod |
| 16.| **阿里云-部署至阿里云WAF(云产品接入)** | 部署证书到阿里云WAF(云产品接入),CNAME方式接入的请选择另外一个waf插件 |
| 17.| **阿里云-部署至阿里云WAF(cname接入)** | 部署证书到阿里云WAF(cname接入),云资源的请选择另外一个waf插件 |
| 18.| **阿里云-上传证书到CAS** | 上传证书到阿里云证书管理服务(CAS),如果不想在阿里云上同一份证书上传多次,可以把此任务作为前置任务,其他阿里云任务证书那一项选择此任务的输出 |
| 12.| **阿里云-部署至直播(Live** | 部署证书到阿里云视频直播(Live)域名 |
| 13.| **阿里云-部署至NLB(网络负载均衡)** | NLB,网络负载均衡,更新监听器的默认证书 |
| 14.| **阿里云-部署证书至OSS** | 部署域名证书至阿里云OSS自定义域名,不是上传到阿里云oss |
| 15.| **阿里云-部署至CLB(传统负载均衡)** | 部署证书到阿里云CLB(传统负载均衡) |
| 16.| **阿里云-部署至VOD** | 部署证书到阿里云视频点播(vod |
| 17.| **阿里云-部署至阿里云WAF(云产品接入)** | 部署证书到阿里云WAF(云产品接入)CNAME方式接入的请选择另外一个waf插件 |
| 18.| **阿里云-部署至阿里云WAF(cname接入)** | 部署证书到阿里云WAF(cname接入),云资源的请选择另外一个waf插件 |
| 19.| **阿里云-上传证书到CAS** | 上传证书到阿里云证书管理服务(CAS),如果不想在阿里云上同一份证书上传多次,可以把此任务作为前置任务,其他阿里云任务证书那一项选择此任务的输出 |
## 6. 华为云
| 序号 | 名称 | 说明 |
+2 -1
View File
@@ -6,4 +6,5 @@
* [支付宝支付配置](./payments/alipay.md)
* [微信支付配置](./payments/wxpay.md)
* [彩虹易支付配置](./payments/yizhifu.md)
* [彩虹易支付配置](./payments/yizhifu.md)
* [插件选项映射](./plugin/)
Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

+37
View File
@@ -0,0 +1,37 @@
# 插件选项映射
商业版可以通过插件配置,自定义插件中下拉选择框的选项显示内容。
## 适用场景
插件中部分下拉选择框的选项可能带有"免费"、"测试"等字眼,商业版运营场景下需要隐藏或改写这些文字。
## 配置方式
1. 进入"系统管理" → "插件管理"
2. 找到需要配置的插件(如 CertApply 证书申请),点击"配置"按钮
3. 在"插件参数自定义"对话框中,找到带有下拉选项的参数(如"证书颁发机构")
4. 该参数的配置行会多出一项"选项映射",点击"自定义"
### 填写映射关系
![](./images/options-1.png)
系统会列出该下拉框的所有**选项值**和**原始显示内容**:
| 选项值 | 原始显示 | 自定义显示 |
|---|---|---|
| letsencrypt | Let's Encrypt(免费,新手推荐,支持IP证书) | [输入框] |
| google | Google(免费) | [输入框] |
- "自定义显示"一列为输入框,默认 placeholder 显示原始内容
- 只需填写**需要改写**的选项,留空的选项将保持原始显示
- 例如:将 Let's Encrypt(免费,新手推荐,支持IP证书) 改写为 Let's Encrypt
### 保存生效
![](./images/options-2.png)
填写完成后保存配置,用户在创建证书流水线时看到的选项文字即会变更为自定义内容。
+1 -1
View File
@@ -9,5 +9,5 @@
}
},
"npmClient": "pnpm",
"version": "1.40.3"
"version": "1.40.5"
}
+2 -1
View File
@@ -20,6 +20,7 @@
"devb": "lerna run dev-build",
"i-all": "lerna link && lerna exec npm install ",
"publish": "pnpm run prepublishOnly2 && lerna publish --force-publish=pro/plus-core --conventional-commits && pnpm run afterpublishOnly ",
"publish2":" npm run pub_all && pnpm run afterpublishOnly",
"afterpublishOnly": "pnpm run copylogs && time /t >trigger/build.trigger && git add ./trigger/build.trigger && git commit -m \"build: trigger build image\" && TIMEOUT /T 10 && pnpm run commitAll",
"transform-sql": "cd ./packages/ui/certd-server/db/ && node --experimental-json-modules transform.js",
"plugin-doc-gen": "cd ./packages/ui/certd-server/ && pnpm run export-metadata",
@@ -39,7 +40,7 @@
"test:unit": "cross-env NODE_ENV=unittest pnpm -r --workspace-concurrency=1 run test:unit",
"pub": "echo 1",
"dev": "pnpm run -r --parallel compile ",
"pub_all":"pnpm run -r --parallel pub ",
"pub_all": "node ./scripts/pub-all.js",
"release": "time /t >trigger/release.trigger && git add trigger/release.trigger && git commit -m \"build: release\" && git push",
"publish_to_atomgit": "node --experimental-json-modules ./scripts/publish-atomgit.js",
"publish_to_gitee": "node --experimental-json-modules ./scripts/publish-gitee.js",
+10
View File
@@ -3,6 +3,16 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/publishlab/node-acme-client/compare/v1.40.4...v1.40.5) (2026-05-26)
### Bug Fixes
* 修复阿里云证书订单orderid 选择出错的问题 ([af9047b](https://github.com/publishlab/node-acme-client/commit/af9047bf3c54ce71b11727ccc6220288ed1f57be))
## [1.40.4](https://github.com/publishlab/node-acme-client/compare/v1.40.3...v1.40.4) (2026-05-24)
**Note:** Version bump only for package @certd/acme-client
## [1.40.3](https://github.com/publishlab/node-acme-client/compare/v1.40.2...v1.40.3) (2026-05-21)
**Note:** Version bump only for package @certd/acme-client
+3 -3
View File
@@ -3,7 +3,7 @@
"description": "Simple and unopinionated ACME client",
"private": false,
"author": "nmorsman",
"version": "1.40.3",
"version": "1.40.5",
"type": "module",
"module": "./dist/index.js",
"main": "./dist/index.js",
@@ -18,7 +18,7 @@
"types"
],
"dependencies": {
"@certd/basic": "^1.40.3",
"@certd/basic": "^1.40.5",
"@peculiar/x509": "^1.11.0",
"asn1js": "^3.0.5",
"axios": "^1.9.0",
@@ -76,5 +76,5 @@
"bugs": {
"url": "https://github.com/publishlab/node-acme-client/issues"
},
"gitHead": "678b70cee8510a2b5217788c5db9469f49cbd439"
"gitHead": "7ceb0f6306b8b5e9ab875b9f7c41cc7d56209ea4"
}
+8
View File
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/certd/certd/compare/v1.40.4...v1.40.5) (2026-05-26)
**Note:** Version bump only for package @certd/basic
## [1.40.4](https://github.com/certd/certd/compare/v1.40.3...v1.40.4) (2026-05-24)
**Note:** Version bump only for package @certd/basic
## [1.40.3](https://github.com/certd/certd/compare/v1.40.2...v1.40.3) (2026-05-21)
**Note:** Version bump only for package @certd/basic
+1 -1
View File
@@ -1 +1 @@
22:57
13:31
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/basic",
"private": false,
"version": "1.40.3",
"version": "1.40.5",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
@@ -52,5 +52,5 @@
"tslib": "^2.8.1",
"typescript": "^5.4.2"
},
"gitHead": "678b70cee8510a2b5217788c5db9469f49cbd439"
"gitHead": "7ceb0f6306b8b5e9ab875b9f7c41cc7d56209ea4"
}
+10
View File
@@ -3,6 +3,16 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/certd/certd/compare/v1.40.4...v1.40.5) (2026-05-26)
### Bug Fixes
* 修复阿里云证书订单orderid 选择出错的问题 ([af9047b](https://github.com/certd/certd/commit/af9047bf3c54ce71b11727ccc6220288ed1f57be))
## [1.40.4](https://github.com/certd/certd/compare/v1.40.3...v1.40.4) (2026-05-24)
**Note:** Version bump only for package @certd/pipeline
## [1.40.3](https://github.com/certd/certd/compare/v1.40.2...v1.40.3) (2026-05-21)
**Note:** Version bump only for package @certd/pipeline
+4 -4
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/pipeline",
"private": false,
"version": "1.40.3",
"version": "1.40.5",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
@@ -19,8 +19,8 @@
"compile": "tsc --skipLibCheck --watch"
},
"dependencies": {
"@certd/basic": "^1.40.3",
"@certd/plus-core": "^1.40.3",
"@certd/basic": "^1.40.5",
"@certd/plus-core": "^1.40.5",
"dayjs": "^1.11.7",
"lodash-es": "^4.17.21",
"reflect-metadata": "^0.1.13"
@@ -49,5 +49,5 @@
"tslib": "^2.8.1",
"typescript": "^5.4.2"
},
"gitHead": "678b70cee8510a2b5217788c5db9469f49cbd439"
"gitHead": "7ceb0f6306b8b5e9ab875b9f7c41cc7d56209ea4"
}
+8
View File
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/certd/certd/compare/v1.40.4...v1.40.5) (2026-05-26)
**Note:** Version bump only for package @certd/lib-huawei
## [1.40.4](https://github.com/certd/certd/compare/v1.40.3...v1.40.4) (2026-05-24)
**Note:** Version bump only for package @certd/lib-huawei
## [1.40.3](https://github.com/certd/certd/compare/v1.40.2...v1.40.3) (2026-05-21)
**Note:** Version bump only for package @certd/lib-huawei
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/lib-huawei",
"private": false,
"version": "1.40.3",
"version": "1.40.5",
"main": "./dist/bundle.js",
"module": "./dist/bundle.js",
"types": "./dist/d/index.d.ts",
@@ -27,5 +27,5 @@
"prettier": "^2.8.8",
"tslib": "^2.8.1"
},
"gitHead": "678b70cee8510a2b5217788c5db9469f49cbd439"
"gitHead": "7ceb0f6306b8b5e9ab875b9f7c41cc7d56209ea4"
}
+8
View File
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/certd/certd/compare/v1.40.4...v1.40.5) (2026-05-26)
**Note:** Version bump only for package @certd/lib-iframe
## [1.40.4](https://github.com/certd/certd/compare/v1.40.3...v1.40.4) (2026-05-24)
**Note:** Version bump only for package @certd/lib-iframe
## [1.40.3](https://github.com/certd/certd/compare/v1.40.2...v1.40.3) (2026-05-21)
**Note:** Version bump only for package @certd/lib-iframe
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/lib-iframe",
"private": false,
"version": "1.40.3",
"version": "1.40.5",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
@@ -34,5 +34,5 @@
"tslib": "^2.8.1",
"typescript": "^5.4.2"
},
"gitHead": "678b70cee8510a2b5217788c5db9469f49cbd439"
"gitHead": "7ceb0f6306b8b5e9ab875b9f7c41cc7d56209ea4"
}
+8
View File
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/certd/certd/compare/v1.40.4...v1.40.5) (2026-05-26)
**Note:** Version bump only for package @certd/jdcloud
## [1.40.4](https://github.com/certd/certd/compare/v1.40.3...v1.40.4) (2026-05-24)
**Note:** Version bump only for package @certd/jdcloud
## [1.40.3](https://github.com/certd/certd/compare/v1.40.2...v1.40.3) (2026-05-21)
**Note:** Version bump only for package @certd/jdcloud
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@certd/jdcloud",
"version": "1.40.3",
"version": "1.40.5",
"description": "jdcloud openApi sdk",
"main": "./dist/bundle.js",
"module": "./dist/bundle.js",
@@ -59,5 +59,5 @@
"fetch"
]
},
"gitHead": "678b70cee8510a2b5217788c5db9469f49cbd439"
"gitHead": "7ceb0f6306b8b5e9ab875b9f7c41cc7d56209ea4"
}
+8
View File
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/certd/certd/compare/v1.40.4...v1.40.5) (2026-05-26)
**Note:** Version bump only for package @certd/lib-k8s
## [1.40.4](https://github.com/certd/certd/compare/v1.40.3...v1.40.4) (2026-05-24)
**Note:** Version bump only for package @certd/lib-k8s
## [1.40.3](https://github.com/certd/certd/compare/v1.40.2...v1.40.3) (2026-05-21)
**Note:** Version bump only for package @certd/lib-k8s
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/lib-k8s",
"private": false,
"version": "1.40.3",
"version": "1.40.5",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
@@ -19,7 +19,7 @@
"compile": "tsc --skipLibCheck --watch"
},
"dependencies": {
"@certd/basic": "^1.40.3",
"@certd/basic": "^1.40.5",
"@kubernetes/client-node": "0.21.0"
},
"devDependencies": {
@@ -36,5 +36,5 @@
"tslib": "^2.8.1",
"typescript": "^5.4.2"
},
"gitHead": "678b70cee8510a2b5217788c5db9469f49cbd439"
"gitHead": "7ceb0f6306b8b5e9ab875b9f7c41cc7d56209ea4"
}
+12
View File
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/certd/certd/compare/v1.40.4...v1.40.5) (2026-05-26)
### Bug Fixes
* 修复阿里云证书订单orderid 选择出错的问题 ([af9047b](https://github.com/certd/certd/commit/af9047bf3c54ce71b11727ccc6220288ed1f57be))
## [1.40.4](https://github.com/certd/certd/compare/v1.40.3...v1.40.4) (2026-05-24)
### Performance Improvements
* 商业版套餐只支持设置为可叠加 ([5e72f75](https://github.com/certd/certd/commit/5e72f75395fb632a30e80c07d35d8ba40ef631fa))
## [1.40.3](https://github.com/certd/certd/compare/v1.40.2...v1.40.3) (2026-05-21)
**Note:** Version bump only for package @certd/lib-server
+7 -7
View File
@@ -1,6 +1,6 @@
{
"name": "@certd/lib-server",
"version": "1.40.3",
"version": "1.40.5",
"description": "midway with flyway, sql upgrade way ",
"private": false,
"type": "module",
@@ -29,11 +29,11 @@
],
"license": "AGPL",
"dependencies": {
"@certd/acme-client": "^1.40.3",
"@certd/basic": "^1.40.3",
"@certd/pipeline": "^1.40.3",
"@certd/plugin-lib": "^1.40.3",
"@certd/plus-core": "^1.40.3",
"@certd/acme-client": "^1.40.5",
"@certd/basic": "^1.40.5",
"@certd/pipeline": "^1.40.5",
"@certd/plugin-lib": "^1.40.5",
"@certd/plus-core": "^1.40.5",
"@midwayjs/cache": "3.14.0",
"@midwayjs/core": "3.20.11",
"@midwayjs/i18n": "3.20.13",
@@ -69,5 +69,5 @@
"typeorm": "^0.3.11",
"typescript": "^5.4.2"
},
"gitHead": "678b70cee8510a2b5217788c5db9469f49cbd439"
"gitHead": "7ceb0f6306b8b5e9ab875b9f7c41cc7d56209ea4"
}
@@ -245,6 +245,8 @@ export class SysSuiteSetting extends BaseSettings {
enabled: boolean = false;
allowSuiteStack: boolean = false;
registerGift?: {
productId: number;
duration: number;
@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/certd/certd/compare/v1.40.4...v1.40.5) (2026-05-26)
**Note:** Version bump only for package @certd/midway-flyway-js
## [1.40.4](https://github.com/certd/certd/compare/v1.40.3...v1.40.4) (2026-05-24)
**Note:** Version bump only for package @certd/midway-flyway-js
## [1.40.3](https://github.com/certd/certd/compare/v1.40.2...v1.40.3) (2026-05-21)
**Note:** Version bump only for package @certd/midway-flyway-js
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@certd/midway-flyway-js",
"version": "1.40.3",
"version": "1.40.5",
"description": "midway with flyway, sql upgrade way ",
"private": false,
"type": "module",
@@ -49,5 +49,5 @@
"typeorm": "^0.3.11",
"typescript": "^5.4.2"
},
"gitHead": "678b70cee8510a2b5217788c5db9469f49cbd439"
"gitHead": "7ceb0f6306b8b5e9ab875b9f7c41cc7d56209ea4"
}
+10
View File
@@ -3,6 +3,16 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/certd/certd/compare/v1.40.4...v1.40.5) (2026-05-26)
### Bug Fixes
* 修复阿里云证书订单orderid 选择出错的问题 ([af9047b](https://github.com/certd/certd/commit/af9047bf3c54ce71b11727ccc6220288ed1f57be))
## [1.40.4](https://github.com/certd/certd/compare/v1.40.3...v1.40.4) (2026-05-24)
**Note:** Version bump only for package @certd/plugin-cert
## [1.40.3](https://github.com/certd/certd/compare/v1.40.2...v1.40.3) (2026-05-21)
**Note:** Version bump only for package @certd/plugin-cert
+6 -6
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/plugin-cert",
"private": false,
"version": "1.40.3",
"version": "1.40.5",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -18,10 +18,10 @@
"compile": "tsc --skipLibCheck --watch"
},
"dependencies": {
"@certd/acme-client": "^1.40.3",
"@certd/basic": "^1.40.3",
"@certd/pipeline": "^1.40.3",
"@certd/plugin-lib": "^1.40.3",
"@certd/acme-client": "^1.40.5",
"@certd/basic": "^1.40.5",
"@certd/pipeline": "^1.40.5",
"@certd/plugin-lib": "^1.40.5",
"psl": "^1.9.0",
"punycode.js": "^2.3.1"
},
@@ -41,5 +41,5 @@
"tslib": "^2.8.1",
"typescript": "^5.4.2"
},
"gitHead": "678b70cee8510a2b5217788c5db9469f49cbd439"
"gitHead": "7ceb0f6306b8b5e9ab875b9f7c41cc7d56209ea4"
}
+12
View File
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/certd/certd/compare/v1.40.4...v1.40.5) (2026-05-26)
### Bug Fixes
* 修复阿里云证书订单orderid 选择出错的问题 ([af9047b](https://github.com/certd/certd/commit/af9047bf3c54ce71b11727ccc6220288ed1f57be))
## [1.40.4](https://github.com/certd/certd/compare/v1.40.3...v1.40.4) (2026-05-24)
### Performance Improvements
* 新增阿里云直播证书部署插件 ([8edb6f8](https://github.com/certd/certd/commit/8edb6f8727bd148f106801bef25567880fd35e9e))
## [1.40.3](https://github.com/certd/certd/compare/v1.40.2...v1.40.3) (2026-05-21)
**Note:** Version bump only for package @certd/plugin-lib
+6 -6
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/plugin-lib",
"private": false,
"version": "1.40.3",
"version": "1.40.5",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -23,10 +23,10 @@
"@alicloud/pop-core": "^1.7.10",
"@alicloud/tea-util": "^1.4.11",
"@aws-sdk/client-s3": "^3.964.0",
"@certd/acme-client": "^1.40.3",
"@certd/basic": "^1.40.3",
"@certd/pipeline": "^1.40.3",
"@certd/plus-core": "^1.40.3",
"@certd/acme-client": "^1.40.5",
"@certd/basic": "^1.40.5",
"@certd/pipeline": "^1.40.5",
"@certd/plus-core": "^1.40.5",
"@kubernetes/client-node": "0.21.0",
"ali-oss": "^6.22.0",
"basic-ftp": "^5.0.5",
@@ -61,5 +61,5 @@
"tslib": "^2.8.1",
"typescript": "^5.4.2"
},
"gitHead": "678b70cee8510a2b5217788c5db9469f49cbd439"
"gitHead": "7ceb0f6306b8b5e9ab875b9f7c41cc7d56209ea4"
}
@@ -13,7 +13,7 @@ export interface ICertInfoGetter {
export type CertInfo = {
crt: string; //fullchain证书
key: string; //私钥
csr: string; //csr
csr?: string; //csr
oc?: string; //仅证书,非fullchain证书
ic?: string; //中间证书
pfx?: string;
@@ -34,7 +34,7 @@ describe("plugin-lib common util", () => {
title: "选择资源",
action: "ListResource",
typeName: "resource",
multi: false,
single: true,
search: true,
watches: ["region"],
});
@@ -46,8 +46,8 @@ describe("plugin-lib common util", () => {
vModel: "value",
action: "ListResource",
typeName: "resource",
mode: "default",
multi: false,
mode: "tags",
single: true,
search: true,
});
expect(define.component.watches).to.deep.equal(["certDomains", "accessId", "region"]);
@@ -35,7 +35,7 @@ export function createRemoteSelectInputDefine(opts?: {
helper?: string;
formItem?: any;
mode?: string;
multi?: boolean;
single?: boolean;
required?: boolean;
rules?: any;
mergeScript?: string;
@@ -59,11 +59,8 @@ export function createRemoteSelectInputDefine(opts?: {
const helper = opts?.helper || "请选择";
const search = opts?.search ?? false;
const pager = opts?.pager ?? false;
let mode = "default";
const multi = opts?.multi ?? true;
if (multi) {
mode = "tags";
}
const mode = "tags";
const single = opts?.single ?? false;
const item = {
title,
component: {
@@ -75,7 +72,7 @@ export function createRemoteSelectInputDefine(opts?: {
action,
search,
pager,
multi,
single,
pageSize: opts?.pageSize,
watches: [certDomainsInputKey, accessIdInputKey, ...watches],
uploadCert: opts?.uploadCert,
+1
View File
@@ -36,6 +36,7 @@ EXPOSE 7002
RUN apk add --no-cache openssl
RUN apk add --no-cache openjdk8
RUN apk add --no-cache gcompat
WORKDIR /app/
COPY --from=builder /workspace/certd-server/ /app/
+12
View File
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/certd/certd/compare/v1.40.4...v1.40.5) (2026-05-26)
### Bug Fixes
* 修复阿里云证书订单orderid 选择出错的问题 ([af9047b](https://github.com/certd/certd/commit/af9047bf3c54ce71b11727ccc6220288ed1f57be))
## [1.40.4](https://github.com/certd/certd/compare/v1.40.3...v1.40.4) (2026-05-24)
### Performance Improvements
* 商业版套餐只支持设置为可叠加 ([5e72f75](https://github.com/certd/certd/commit/5e72f75395fb632a30e80c07d35d8ba40ef631fa))
## [1.40.3](https://github.com/certd/certd/compare/v1.40.2...v1.40.3) (2026-05-21)
### Bug Fixes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@certd/ui-client",
"version": "1.40.3",
"version": "1.40.5",
"private": true,
"scripts": {
"dev": "vite --open",
@@ -106,8 +106,8 @@
"zod-defaults": "^0.1.3"
},
"devDependencies": {
"@certd/lib-iframe": "^1.40.3",
"@certd/pipeline": "^1.40.3",
"@certd/lib-iframe": "^1.40.5",
"@certd/pipeline": "^1.40.5",
"@rollup/plugin-commonjs": "^25.0.7",
"@rollup/plugin-node-resolve": "^15.2.3",
"@types/chai": "^4.3.12",
@@ -30,10 +30,9 @@
</template>
<script lang="ts" setup>
import { Ref, ref, watch, nextTick } from "vue";
import { nextTick, Ref, ref, watch } from "vue";
import { useI18n } from "vue-i18n";
import { HttpRecord } from "/@/components/plugins/cert/domains-verify-plan-editor/type";
import { dict } from "@fast-crud/fast-crud";
import { Dicts } from "/@/components/plugins/lib/dicts";
defineOptions({
@@ -46,7 +46,13 @@
<div class="form-item">
<span class="label">{{ t("certd.verifyPlan.dnsAccess") }}:</span>
<span class="input">
<access-selector v-model="item.dnsProviderAccessId" size="small" :type="item.dnsProviderAccessType || item.dnsProviderType" :placeholder="t('certd.verifyPlan.pleaseSelect')" @change="onPlanChanged"></access-selector>
<access-selector
v-model="item.dnsProviderAccessId"
size="small"
:type="item.dnsProviderAccessType || item.dnsProviderType"
:placeholder="t('certd.verifyPlan.pleaseSelect')"
@change="onPlanChanged"
></access-selector>
</span>
</div>
</div>
@@ -69,7 +69,7 @@ const props = defineProps<
watches?: string[];
search?: boolean;
pager?: boolean;
multi?: boolean;
single?: boolean;
pageSize?: number;
uploadCert?: UploadCertProps;
} & ComponentPropsType
@@ -79,15 +79,15 @@ const emit = defineEmits<{
}>();
function updateValue(value: any) {
// if (props.multi !== false) {
// emit("update:value", value);
// } else {
// const last = value?.[value.length - 1];
// emit("update:value", last);
// selectRef.value.blur();
// }
if (props.single === true) {
const last = value?.[value.length - 1];
emit("update:value", last);
selectRef.value.blur();
} else {
emit("update:value", value);
}
emit("update:value", value);
// emit("update:value", value);
}
const attrs = useAttrs();
@@ -57,6 +57,18 @@ export class PluginGroups {
for (const plugin of groups[key].plugins) {
if (plugin.sysSetting) {
merge(plugin.input, plugin.sysSetting.metadata?.input || {});
// 应用选项映射
for (const key of Object.keys(plugin.input)) {
const inputDef = plugin.input[key];
if (inputDef.optionsMapping && inputDef.component?.options) {
const mapping = inputDef.optionsMapping;
for (const opt of inputDef.component.options) {
if (mapping[opt.value] !== undefined) {
opt.label = mapping[opt.value];
}
}
}
}
}
}
}
@@ -8,7 +8,7 @@
<a-col :span="24">
<a-card>
<div class="suite-intro-box">
<div>说明 同一时间只有最新购买的一个套餐生效 可以购买多个加量包加量包立即生效 套餐和加量包内的数量可以叠加</div>
<div>{{ buyHelperText }}</div>
<div v-if="suiteIntro" v-html="suiteIntro"></div>
</div>
</a-card>
@@ -31,7 +31,7 @@
</template>
<script lang="ts" setup>
import { ref } from "vue";
import { computed, ref } from "vue";
import * as api from "./api";
import ProductInfo from "/@/views/certd/suite/product-info.vue";
import OrderModal from "/@/views/certd/suite/order-modal.vue";
@@ -55,9 +55,17 @@ async function doOrder(req: any) {
}
const suiteIntro = ref("");
const allowSuiteStack = ref(false);
const buyHelperText = computed(() => {
if (allowSuiteStack.value) {
return "说明:可以购买多个套餐和加量包,套餐和加量包内的数量可以叠加";
}
return "说明:① 同一时间只有最新购买的一个套餐生效;② 可以购买多个加量包,加量包立即生效;③ 套餐和加量包内的数量可以叠加";
});
async function loadSuiteIntro() {
const res = await api.GetSuiteSetting();
suiteIntro.value = res.intro;
allowSuiteStack.value = !!res.allowSuiteStack;
}
loadSuiteIntro();
</script>
@@ -4,8 +4,14 @@
<a-popover>
<template #content>
<div style="width: 300px">
<div v-if="detail.addonList.length > 0" class="flex flex-wrap">
<a-tag v-for="(item, index) of detail.addonList" :key="index" color="green" class="pointer flex-o m-1">
<div v-if="hiddenSuiteList.length > 0 || detail.addonList.length > 0" class="flex flex-wrap">
<a-tag v-for="(item, index) of hiddenSuiteList" :key="`suite-${index}`" color="green" class="pointer flex-o m-1">
<span class="mr-5">
{{ item.title }}
</span>
<span>(<expires-time-text :value="item.expiresTime" />)</span>
</a-tag>
<a-tag v-for="(item, index) of detail.addonList" :key="`addon-${index}`" color="green" class="pointer flex-o m-1">
<span class="mr-5">
{{ item.title }}
</span>
@@ -43,13 +49,13 @@
</template>
<div class="flex-o">
<fs-icon icon="ant-design:gift-outlined" class="color-green mr-5" />
<a-tag v-for="(item, index) of detail.suiteList" :key="index" color="green" class="pointer flex-o">
<a-tag v-if="currentSuite" color="green" class="pointer flex-o">
<span class="mr-5">
{{ item.title }}
{{ currentSuite.title }}
</span>
<span>(<expires-time-text :value="item.expiresTime" />)</span>
<span>(<expires-time-text :value="currentSuite.expiresTime" />)</span>
<span v-if="hiddenCount > 0" class="ml-5">+{{ hiddenCount }}</span>
</a-tag>
<a-tag v-if="detail.addonList.length > 0" color="green" class="pointer flex-o">加量包+{{ detail.addonList.length }}</a-tag>
<div v-if="detail.suites?.length === 0" class="flex-o ml-5">暂无套餐 <a-button class="ml-5" type="primary" size="small" @click="goBuy">去购买</a-button></div>
</div>
</a-popover>
@@ -59,7 +65,7 @@
<script lang="ts" setup>
import SuiteValue from "/@/views/sys/suite/product/suite-value.vue";
import { ref } from "vue";
import { computed, ref } from "vue";
import ExpiresTimeText from "/@/components/expires-time-text.vue";
import { mySuiteApi, SuiteDetail } from "/@/views/certd/suite/mine/api";
import { FsIcon } from "@fast-crud/fast-crud";
@@ -71,6 +77,10 @@ defineOptions({
const detail = ref<SuiteDetail>({});
const currentSuite = computed(() => detail.value.suiteList?.[0]);
const hiddenSuiteList = computed(() => detail.value.suiteList?.slice(1) || []);
const hiddenCount = computed(() => hiddenSuiteList.value.length + (detail.value.addonList?.length || 0));
async function loadSuiteDetail() {
detail.value = await mySuiteApi.SuiteDetailGet();
const suites = detail.value.suites.filter(item => item.productType === "suite");
@@ -17,9 +17,9 @@
</thead>
<tbody>
<template v-for="item in originInputs" :key="item.key">
<template v-for="prop in editableKeys" :key="prop.key">
<template v-for="prop in getEditableKeys(item)" :key="prop.key">
<tr>
<td v-if="prop.key === 'value'" class="border-t-2 p-5" rowspan="3" :class="{ 'border-t-2': prop.key === 'value' }">{{ item.title }}</td>
<td v-if="prop.key === 'value'" class="border-t-2 p-5" :rowspan="getEditableKeys(item).length" :class="{ 'border-t-2': prop.key === 'value' }">{{ item.title }}</td>
<td class="border-t p-5" :class="{ 'border-t-2': prop.key === 'value' }">{{ prop.label }}</td>
<td class="border-t p-5" :class="{ 'border-t-2': prop.key === 'value' }">
<rollbackable :value="configForm[item.key][prop.key]" @set="prop.onSet(item)" @clear="delete configForm[item.key][prop.key]">
@@ -157,6 +157,92 @@ const editableKeys = ref([
},
]);
const optionsMappingKey = {
key: "optionsMapping",
label: "选项映射",
onSet(item: any) {
configForm[item.key]["optionsMapping"] = item.optionsMapping ?? null;
},
defaultRender(item: any) {
return () => {
const mapping = item["optionsMapping"];
if (!mapping || Object.keys(mapping).length === 0) {
return <span class="text-gray-400">未设置</span>;
}
return (
<div class="options-mapping-tags">
{Object.entries(mapping).map(([key, label]: any) => (
<a-tag color="blue" size="small" class="mb-2 mr-2">
{key} {label}
</a-tag>
))}
</div>
);
};
},
editRender(item: any) {
return () => {
const options = item.component?.options || [];
if (options.length === 0) {
return <span class="text-gray-400">该组件没有预设选项</span>;
}
const onLabelChange = (optValue: string, newLabel: string) => {
const mapping = configForm[item.key]["optionsMapping"] || {};
if (newLabel) {
mapping[optValue] = newLabel;
configForm[item.key]["optionsMapping"] = { ...mapping };
} else {
delete mapping[optValue];
if (Object.keys(mapping).length > 0) {
configForm[item.key]["optionsMapping"] = { ...mapping };
} else {
delete configForm[item.key]["optionsMapping"];
}
}
};
const getLabel = (optValue: string) => {
return configForm[item.key]["optionsMapping"]?.[optValue] || "";
};
return (
<div class="options-mapping-editor">
<table class="w-full table-auto border-collapse border border-gray-300 text-sm">
<thead>
<tr class="bg-gray-50">
<th class="border border-gray-300 px-2 py-1 text-left">选项值</th>
<th class="border border-gray-300 px-2 py-1 text-left">原始显示</th>
<th class="border border-gray-300 px-2 py-1 text-left">自定义显示</th>
</tr>
</thead>
<tbody>
{options.map((opt: any) => (
<tr>
<td class="border border-gray-300 px-2 py-1">
<code class="text-xs">{opt.value}</code>
</td>
<td class="border border-gray-300 px-2 py-1 text-gray-500">{opt.label}</td>
<td class="border border-gray-300 px-2 py-1">
<a-input size="small" placeholder={opt.label} value={getLabel(opt.value)} onUpdate:value={(val: string) => onLabelChange(opt.value, val)} />
</td>
</tr>
))}
</tbody>
</table>
<div class="helper mt-1">只需填写需要自定义的选项留空则使用原始显示内容</div>
</div>
);
};
},
};
function getEditableKeys(item: any) {
if (item.component?.name === "a-select" || item.component?.name === "icon-select") {
return [...editableKeys.value, optionsMappingKey];
}
return editableKeys.value;
}
const originInputs = computed(() => {
if (!currentPlugin.value) {
return;
@@ -15,6 +15,9 @@
<div>
<a-form-item :label="t('certd.smtpDomain')" name="host" :rules="[{ required: true, message: t('certd.pleaseEnterSmtpDomain') }]">
<a-input v-model:value="formState.host" />
<div class="helper">
{{ t("certd.sendFailHelpDoc") }}<a href="https://certd.docmirror.cn/guide/use/email/" target="_blank">{{ t("certd.emailConfigHelpDoc") }}</a>
</div>
</a-form-item>
<a-form-item :label="t('certd.smtpPort')" name="port" :rules="[{ required: true, message: t('certd.pleaseEnterSmtpPort') }]">
@@ -42,7 +45,7 @@
</a-form-item>
</div>
</a-tab-pane>
<a-tab-pane key="plus" class="plus" :disabled="!settingStore.isPlus">
<a-tab-pane key="plus" class="plus" :disabled="!settingStore.isPlus" v-if="formState.usePlus">
<template #tab>
<span class="flex items-center">
{{ t("certd.useOfficialEmailServer") }}
@@ -113,7 +116,6 @@
<div class="helper">
{{ t("certd.sendFailHelpDoc") }}<a href="https://certd.docmirror.cn/guide/use/email/" target="_blank">{{ t("certd.emailConfigHelpDoc") }}</a>
</div>
<div class="helper">{{ t("certd.tryOfficialEmailServer") }}</div>
</a-form-item>
<a-form-item :wrapper-col="{ offset: 8, span: 16 }">
<a-button type="primary" :loading="testFormState.loading" html-type="submit">{{ t("certd.test") }}</a-button>
@@ -21,6 +21,11 @@
<div class="helper">不建议设置免费套餐可以在下方配置注册赠送套餐或者在用户套餐管理中手动赠送套餐</div>
</a-form-item>
<a-form-item label="套餐支持叠加" name="allowSuiteStack">
<a-switch v-model:checked="formState.allowSuiteStack" />
<div class="helper">默认只有一个套餐生效开启此开关可以让多个套餐可以叠加加量包无论是否开启此开关都可以叠加</div>
</a-form-item>
<a-form-item label="注册赠送套餐" name="registerGift">
<suite-duration-selector ref="suiteDurationSelectedRef" v-model="formState.registerGift"></suite-duration-selector>
<div class="helper">添加套餐后再选择</div>
@@ -73,6 +78,7 @@ const formRef = ref<any>(null);
const formState = reactive<
Partial<{
enabled: boolean;
allowSuiteStack: boolean;
registerGift?: {
productId?: number;
duration?: number;
+1 -1
View File
@@ -1,2 +1,2 @@
link-workspace-packages=deep
prefer-workspace-packages=true
prefer-workspace-packages=true
+17
View File
@@ -3,6 +3,23 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.40.5](https://github.com/certd/certd/compare/v1.40.4...v1.40.5) (2026-05-26)
### Bug Fixes
* 修复阿里云证书订单orderid 选择出错的问题 ([af9047b](https://github.com/certd/certd/commit/af9047bf3c54ce71b11727ccc6220288ed1f57be))
* 修复查询阿里云cdn Dcdn 域名太多无法选择的bug ([346fb73](https://github.com/certd/certd/commit/346fb730a37e035576f5d9ea5c0d74c052b34aeb))
## [1.40.4](https://github.com/certd/certd/compare/v1.40.3...v1.40.4) (2026-05-24)
### Bug Fixes
* **pipeline-service:** 修复流水线运行时超过套餐部署次数仍然能够正常运行的bug ([5e59651](https://github.com/certd/certd/commit/5e59651d45bc91919629e35995ff1b3cff6b87ea))
### Performance Improvements
* 新增阿里云直播证书部署插件 ([8edb6f8](https://github.com/certd/certd/commit/8edb6f8727bd148f106801bef25567880fd35e9e))
## [1.40.3](https://github.com/certd/certd/compare/v1.40.2...v1.40.3) (2026-05-21)
### Bug Fixes
@@ -54,7 +54,7 @@ input:
action: onGetNodes
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -54,7 +54,7 @@ input:
action: onGetNodes
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -83,7 +83,7 @@ input:
action: onGetSSLIds
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -51,7 +51,7 @@ input:
action: onGetWebsiteList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -66,13 +66,13 @@ input:
component:
name: remote-select
vModel: value
mode: default
mode: tags
type: plugin
typeName: AliyunDeployCertToALB
action: onGetRegionList
search: false
pager: false
multi: false
single: true
watches:
- certDomains
- accessId
@@ -101,7 +101,7 @@ input:
action: onGetLoadBalanceList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -130,7 +130,7 @@ input:
action: onGetListenerList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -116,7 +116,7 @@ input:
action: onGetProductList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -146,7 +146,7 @@ input:
action: onGetContactList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -80,7 +80,7 @@ input:
action: onGetSiteList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -111,7 +111,7 @@ input:
action: onGetDomainList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -62,12 +62,12 @@ input:
component:
name: remote-select
vModel: value
mode: default
mode: tags
type: plugin
action: onGetAcceleratorList
search: false
pager: false
multi: false
single: true
watches:
- certDomains
- accessId
@@ -95,7 +95,7 @@ input:
action: onGetListenerList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -137,7 +137,7 @@ input:
action: onGetAdditionalDomainList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -66,13 +66,13 @@ input:
component:
name: remote-select
vModel: value
mode: default
mode: tags
type: plugin
typeName: AliyunDeployCertToNLB
action: onGetRegionList
search: false
pager: false
multi: false
single: true
watches:
- certDomains
- accessId
@@ -101,7 +101,7 @@ input:
action: onGetLoadBalanceList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -130,7 +130,7 @@ input:
action: onGetListenerList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -66,12 +66,12 @@ input:
component:
name: remote-select
vModel: value
mode: default
mode: tags
type: plugin
action: onGetRegionList
search: false
pager: false
multi: false
single: true
watches:
- certDomains
- accessId
@@ -99,7 +99,7 @@ input:
action: onGetLoadBalanceList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -127,7 +127,7 @@ input:
action: onGetListenerList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -169,7 +169,7 @@ input:
action: onGetExtensionDomainList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -68,7 +68,7 @@ input:
action: onGetDomainList
search: true
pager: true
multi: true
single: false
watches:
- certDomains
- accessId
@@ -84,7 +84,7 @@ input:
action: onGetCnameList
search: true
pager: true
multi: true
single: false
watches:
- certDomains
- accessId
@@ -84,7 +84,7 @@ input:
action: onGetCloudResourceList
search: true
pager: true
multi: true
single: false
watches:
- certDomains
- accessId
@@ -51,7 +51,7 @@ input:
action: onGetCertList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -71,7 +71,7 @@ input:
action: onGetDistributions
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -133,7 +133,7 @@ input:
action: onGetDistributions
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -63,7 +63,7 @@ input:
action: onGetCertList
search: true
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -92,7 +92,7 @@ input:
action: onGetSiteList
search: true
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -80,7 +80,7 @@ input:
action: onGetOrderList
search: false
pager: true
multi: true
single: true
pageSize: 50
watches:
- certDomains
@@ -51,7 +51,7 @@ input:
action: onGetDomainList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -76,7 +76,7 @@ input:
action: onGetDomainList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -101,7 +101,7 @@ input:
action: onGetSiteList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -56,7 +56,7 @@ input:
action: onGetRegionList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -85,7 +85,7 @@ input:
action: onGetGroupList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -114,7 +114,7 @@ input:
action: onGetDomainList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -53,7 +53,7 @@ input:
action: onGetRegionList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -94,7 +94,7 @@ input:
action: onGetDomainList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -98,9 +98,10 @@ input:
type: plugin
typeName: DeployCertToAliyunCDN
action: onGetDomainList
search: false
search: true
pager: true
multi: true
single: false
pageSize: 100
watches:
- certDomains
- accessId
@@ -68,9 +68,10 @@ input:
mode: tags
type: plugin
action: onGetDomainList
search: false
search: true
pager: true
multi: true
single: false
pageSize: 100
watches:
- certDomains
- accessId
@@ -0,0 +1,96 @@
showRunStrategy: false
default:
strategy:
runStrategy: 1
name: DeployCertToAliyunLive
title: 阿里云-部署至直播(Live
icon: svg:icon-aliyun
group: aliyun
desc: 部署证书到阿里云视频直播(Live)域名
needPlus: false
input:
cert:
title: 域名证书
helper: 请选择前置任务输出的域名证书
component:
name: output-selector
from:
- ':cert:'
- uploadCertToAliyun
template: false
required: true
order: 0
certDomains:
title: 当前证书域名
component:
name: cert-domains-getter
mergeScript: |2-
return {
component:{
inputKey: ctx.compute(({form})=>{
return form.cert
}),
}
}
template: false
required: false
order: 0
accessId:
title: Access授权
helper: 阿里云授权AccessKeyId、AccessKeySecret
component:
name: access-selector
type: aliyun
required: true
order: 0
endpoint:
title: 证书服务接入点
helper: 不会选就按默认
value: cas.aliyuncs.com
component:
name: a-select
options:
- value: cas.aliyuncs.com
label: 中国大陆
- value: cas.ap-southeast-1.aliyuncs.com
label: 新加坡
- value: cas.eu-central-1.aliyuncs.com
label: 德国(法兰克福)
required: true
order: 0
domainList:
title: 直播域名
component:
name: remote-select
vModel: value
mode: tags
type: plugin
typeName: DeployCertToAliyunLive
action: onGetDomainList
search: true
pager: true
single: false
watches:
- certDomains
- accessId
- certDomains
- accessId
required: true
mergeScript: |2-
return {
component:{
form: ctx.compute(({form})=>{
return form
})
},
}
helper: 请选择要部署证书的直播域名
order: 0
output: {}
pluginType: deploy
type: builtIn
scriptFilePath: /plugins/plugin-aliyun/plugin/deploy-to-live/index.js
@@ -149,7 +149,7 @@ input:
action: onGetDomainList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -88,7 +88,7 @@ input:
action: onGetDomainList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -53,7 +53,7 @@ input:
action: onGetZoneList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -82,7 +82,7 @@ input:
action: onGetDomainList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -53,7 +53,7 @@ input:
action: onGetDomainList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -51,7 +51,7 @@ input:
action: onGetServerList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -51,7 +51,7 @@ input:
action: onGetCertList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -50,7 +50,7 @@ input:
action: onGetCertList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -56,7 +56,7 @@ input:
action: onGetCertList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -61,7 +61,7 @@ input:
action: onGetCertList
search: true
pager: true
multi: true
single: false
watches:
- certDomains
- accessId
@@ -63,7 +63,7 @@ input:
action: onGetDomainList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -50,13 +50,13 @@ input:
component:
name: remote-select
vModel: value
mode: default
mode: tags
type: plugin
typeName: HauweiDeployCertToELB
action: onGetProjectList
search: false
pager: false
multi: false
single: true
watches:
- certDomains
- accessId
@@ -84,7 +84,7 @@ input:
action: onGetCertList
search: true
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -56,7 +56,7 @@ input:
action: onGetBucketList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -83,7 +83,7 @@ input:
action: onGetDomainList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -51,7 +51,7 @@ input:
action: onGetSiteList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId
@@ -53,7 +53,7 @@ input:
action: onGetDomainList
search: false
pager: false
multi: true
single: false
watches:
- certDomains
- accessId

Some files were not shown because too many files have changed in this diff Show More