Merge branch 'v2-dev' of https://github.com/certd/certd into v2-dev

This commit is contained in:
xiaojunnuo
2026-01-16 09:12:51 +08:00
61 changed files with 307 additions and 300 deletions
+11
View File
@@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
### Bug Fixes
* 修复自定义插件name丢失author导致找不到插件的bug ([2fbb58e](https://github.com/certd/certd/commit/2fbb58eb2b239eab4864f90aa72b0ef2ada38e8f))
### Performance Improvements
* 优化内存占用 ([4fc8acc](https://github.com/certd/certd/commit/4fc8acce8c1beec38c24b0977b71ff6b18cb52c9))
* 自定义插件支持使用_ctx.import("/@/xxx.js")以绝对路径引用模块 ([9eace86](https://github.com/certd/certd/commit/9eace86aeeb48c23b55102fc5d42088294d9eb97))
# [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13)
### Bug Fixes ### Bug Fixes
+1 -1
View File
@@ -108,12 +108,12 @@ export default defineConfig({
text: "常见问题", text: "常见问题",
items: [ items: [
{text: "QA", link: "/guide/qa/use.md"}, {text: "QA", link: "/guide/qa/use.md"},
{text: "忘记密码/无法登录", link: "/guide/use/forgotpasswd/"},
{text: "群晖证书部署", link: "/guide/use/synology/"}, {text: "群晖证书部署", link: "/guide/use/synology/"},
{text: "腾讯云密钥获取", link: "/guide/use/tencent/"}, {text: "腾讯云密钥获取", link: "/guide/use/tencent/"},
{text: "连接windows主机", link: "/guide/use/host/windows.md"}, {text: "连接windows主机", link: "/guide/use/host/windows.md"},
{text: "Google EAB获取", link: "/guide/use/google/"}, {text: "Google EAB获取", link: "/guide/use/google/"},
{text: "阿里云相关", link: "/guide/use/aliyun/"}, {text: "阿里云相关", link: "/guide/use/aliyun/"},
{text: "忘记密码", link: "/guide/use/forgotpasswd/"},
{text: "数据备份", link: "/guide/use/backup/"}, {text: "数据备份", link: "/guide/use/backup/"},
{text: "Certd本身的证书更新", link: "/guide/use/https/index.md"}, {text: "Certd本身的证书更新", link: "/guide/use/https/index.md"},
{text: "js脚本插件使用", link: "/guide/use/custom-script/index.md"}, {text: "js脚本插件使用", link: "/guide/use/custom-script/index.md"},
+11
View File
@@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
### Bug Fixes
* 修复自定义插件name丢失author导致找不到插件的bug ([2fbb58e](https://github.com/certd/certd/commit/2fbb58eb2b239eab4864f90aa72b0ef2ada38e8f))
### Performance Improvements
* 优化内存占用 ([4fc8acc](https://github.com/certd/certd/commit/4fc8acce8c1beec38c24b0977b71ff6b18cb52c9))
* 自定义插件支持使用_ctx.import("/@/xxx.js")以绝对路径引用模块 ([9eace86](https://github.com/certd/certd/commit/9eace86aeeb48c23b55102fc5d42088294d9eb97))
# [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13)
### Bug Fixes ### Bug Fixes
+21 -6
View File
@@ -1,7 +1,15 @@
# 忘记管理员密码 # 忘记密码/无法登录
无法登录的情况:
1、忘记管理员密码
2、仅有第三方登录,但第三方登录失效,导致无法登录
请查看如下方法恢复的登录
## 一、忘记管理员密码
解决方法如下: 解决方法如下:
## 1. 修改环境变量 ### 1. 修改环境变量
docker部署的: docker部署的:
修改docker-compose.yaml文件,将环境变量`certd_system_resetAdminPasswd`改为`true` 修改docker-compose.yaml文件,将环境变量`certd_system_resetAdminPasswd`改为`true`
@@ -18,21 +26,28 @@ services:
certd_system_resetAdminPasswd=true certd_system_resetAdminPasswd=true
``` ```
## 2. 重启容器 ### 2. 重启容器
```shell ```shell
docker compose up -d docker compose up -d
docker logs -f --tail 500 certd docker logs -f --tail 500 certd
# 观察日志,当日志中输出“重置1号管理员用户密码完成”,即可操作下一步 # 观察日志,当日志中输出“重置1号管理员用户密码完成”,即可操作下一步
# 这里会打印1号管理员记录的用户名,如果你修改过管理员用户名,请注意查看此条日志 # 这里会打印1号管理员记录的用户名,如果你修改过管理员用户名,请注意查看此条日志
``` ```
## 3. 恢复环境变量 ### 3. 恢复环境变量
修改docker-compose.yaml,将`certd_system_resetAdminPasswd`改回`false` 修改docker-compose.yaml,将`certd_system_resetAdminPasswd`改回`false`
## 4. 再次重启容器 ### 4. 再次重启容器
```shell ```shell
docker compose up -d docker compose up -d
``` ```
## 5. 默认密码登录 ### 5. 默认密码登录
使用`原管理员账号/123456`登录系统,请及时修改管理员密码 使用`原管理员账号/123456`登录系统,请及时修改管理员密码
> 默认管理员账号: admin > 默认管理员账号: admin
> 如果忘记管理员账号,请查看修改密码时的启动日志,会打印管理员账号名 > 如果忘记管理员账号,请查看修改密码时的启动日志,会打印管理员账号名
## 二、仅有第三方登录,没有登录窗口
当开启仅使用第三方登录模式时,如果第三方登录未配置或已失效,则会导致无法登录
您可以通过访问 `http://你的certd地址/#/login?oauthOnly=false` 来临时关闭仅使用第三方登录模式,以使用密码登录。
+1 -1
View File
@@ -9,5 +9,5 @@
} }
}, },
"npmClient": "pnpm", "npmClient": "pnpm",
"version": "1.38.0" "version": "1.38.1"
} }
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/publishlab/node-acme-client/compare/v1.38.0...v1.38.1) (2026-01-15)
**Note:** Version bump only for package @certd/acme-client
# [1.38.0](https://github.com/publishlab/node-acme-client/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/publishlab/node-acme-client/compare/v1.37.17...v1.38.0) (2026-01-13)
**Note:** Version bump only for package @certd/acme-client **Note:** Version bump only for package @certd/acme-client
+3 -3
View File
@@ -3,7 +3,7 @@
"description": "Simple and unopinionated ACME client", "description": "Simple and unopinionated ACME client",
"private": false, "private": false,
"author": "nmorsman", "author": "nmorsman",
"version": "1.38.0", "version": "1.38.1",
"type": "module", "type": "module",
"module": "scr/index.js", "module": "scr/index.js",
"main": "src/index.js", "main": "src/index.js",
@@ -18,7 +18,7 @@
"types" "types"
], ],
"dependencies": { "dependencies": {
"@certd/basic": "^1.38.0", "@certd/basic": "^1.38.1",
"@peculiar/x509": "^1.11.0", "@peculiar/x509": "^1.11.0",
"asn1js": "^3.0.5", "asn1js": "^3.0.5",
"axios": "^1.9.0", "axios": "^1.9.0",
@@ -70,5 +70,5 @@
"bugs": { "bugs": {
"url": "https://github.com/publishlab/node-acme-client/issues" "url": "https://github.com/publishlab/node-acme-client/issues"
}, },
"gitHead": "a218cd0ffb16b658dd261e106cc0dbea63034756" "gitHead": "2c80c35b21b3f435e835167fca13db510bbc38a2"
} }
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
**Note:** Version bump only for package @certd/basic
# [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13)
**Note:** Version bump only for package @certd/basic **Note:** Version bump only for package @certd/basic
+1 -1
View File
@@ -1 +1 @@
23:23 00:55
+2 -2
View File
@@ -1,7 +1,7 @@
{ {
"name": "@certd/basic", "name": "@certd/basic",
"private": false, "private": false,
"version": "1.38.0", "version": "1.38.1",
"type": "module", "type": "module",
"main": "./dist/index.js", "main": "./dist/index.js",
"module": "./dist/index.js", "module": "./dist/index.js",
@@ -47,5 +47,5 @@
"tslib": "^2.8.1", "tslib": "^2.8.1",
"typescript": "^5.4.2" "typescript": "^5.4.2"
}, },
"gitHead": "a218cd0ffb16b658dd261e106cc0dbea63034756" "gitHead": "2c80c35b21b3f435e835167fca13db510bbc38a2"
} }
+6
View File
@@ -3,6 +3,12 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
### Bug Fixes
* 修复自定义插件name丢失author导致找不到插件的bug ([2fbb58e](https://github.com/certd/certd/commit/2fbb58eb2b239eab4864f90aa72b0ef2ada38e8f))
# [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13)
### Features ### Features
+4 -4
View File
@@ -1,7 +1,7 @@
{ {
"name": "@certd/pipeline", "name": "@certd/pipeline",
"private": false, "private": false,
"version": "1.38.0", "version": "1.38.1",
"type": "module", "type": "module",
"main": "./dist/index.js", "main": "./dist/index.js",
"module": "./dist/index.js", "module": "./dist/index.js",
@@ -18,8 +18,8 @@
"compile": "tsc --skipLibCheck --watch" "compile": "tsc --skipLibCheck --watch"
}, },
"dependencies": { "dependencies": {
"@certd/basic": "^1.38.0", "@certd/basic": "^1.38.1",
"@certd/plus-core": "^1.38.0", "@certd/plus-core": "^1.38.1",
"dayjs": "^1.11.7", "dayjs": "^1.11.7",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"reflect-metadata": "^0.1.13" "reflect-metadata": "^0.1.13"
@@ -45,5 +45,5 @@
"tslib": "^2.8.1", "tslib": "^2.8.1",
"typescript": "^5.4.2" "typescript": "^5.4.2"
}, },
"gitHead": "a218cd0ffb16b658dd261e106cc0dbea63034756" "gitHead": "2c80c35b21b3f435e835167fca13db510bbc38a2"
} }
+5 -2
View File
@@ -276,7 +276,10 @@ export class Executor {
const lastStatus = this.lastStatusMap.get(step.id); const lastStatus = this.lastStatusMap.get(step.id);
//执行任务 //执行任务
const plugin: RegistryItem<AbstractTaskPlugin> = pluginRegistry.get(step.type); const plugin: RegistryItem<AbstractTaskPlugin> = pluginRegistry.get(step.type);
if (!plugin) {
currentLogger.error(`未找到插件${step.type}`);
throw new Error(`未找到插件${step.type}`);
}
//@ts-ignore //@ts-ignore
let instance: ITaskPlugin = null; let instance: ITaskPlugin = null;
try { try {
@@ -285,7 +288,7 @@ export class Executor {
//@ts-ignore //@ts-ignore
instance = new pluginCls(); instance = new pluginCls();
} catch (e: any) { } catch (e: any) {
currentLogger.error(`实例化插件失败:${e.message}`); currentLogger.error(`实例化插件失败:${step.type}:${e.message}`);
throw new Error(`实例化插件失败`, e); throw new Error(`实例化插件失败`, e);
} }
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
**Note:** Version bump only for package @certd/lib-huawei
# [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13)
**Note:** Version bump only for package @certd/lib-huawei **Note:** Version bump only for package @certd/lib-huawei
+2 -2
View File
@@ -1,7 +1,7 @@
{ {
"name": "@certd/lib-huawei", "name": "@certd/lib-huawei",
"private": false, "private": false,
"version": "1.38.0", "version": "1.38.1",
"main": "./dist/bundle.js", "main": "./dist/bundle.js",
"module": "./dist/bundle.js", "module": "./dist/bundle.js",
"types": "./dist/d/index.d.ts", "types": "./dist/d/index.d.ts",
@@ -24,5 +24,5 @@
"prettier": "^2.8.8", "prettier": "^2.8.8",
"tslib": "^2.8.1" "tslib": "^2.8.1"
}, },
"gitHead": "a218cd0ffb16b658dd261e106cc0dbea63034756" "gitHead": "2c80c35b21b3f435e835167fca13db510bbc38a2"
} }
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
**Note:** Version bump only for package @certd/lib-iframe
# [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13)
**Note:** Version bump only for package @certd/lib-iframe **Note:** Version bump only for package @certd/lib-iframe
+2 -2
View File
@@ -1,7 +1,7 @@
{ {
"name": "@certd/lib-iframe", "name": "@certd/lib-iframe",
"private": false, "private": false,
"version": "1.38.0", "version": "1.38.1",
"type": "module", "type": "module",
"main": "./dist/index.js", "main": "./dist/index.js",
"module": "./dist/index.js", "module": "./dist/index.js",
@@ -31,5 +31,5 @@
"tslib": "^2.8.1", "tslib": "^2.8.1",
"typescript": "^5.4.2" "typescript": "^5.4.2"
}, },
"gitHead": "a218cd0ffb16b658dd261e106cc0dbea63034756" "gitHead": "2c80c35b21b3f435e835167fca13db510bbc38a2"
} }
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
**Note:** Version bump only for package @certd/jdcloud
# [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13)
**Note:** Version bump only for package @certd/jdcloud **Note:** Version bump only for package @certd/jdcloud
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "@certd/jdcloud", "name": "@certd/jdcloud",
"version": "1.38.0", "version": "1.38.1",
"description": "jdcloud openApi sdk", "description": "jdcloud openApi sdk",
"main": "./dist/bundle.js", "main": "./dist/bundle.js",
"module": "./dist/bundle.js", "module": "./dist/bundle.js",
@@ -56,5 +56,5 @@
"fetch" "fetch"
] ]
}, },
"gitHead": "a218cd0ffb16b658dd261e106cc0dbea63034756" "gitHead": "2c80c35b21b3f435e835167fca13db510bbc38a2"
} }
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
**Note:** Version bump only for package @certd/lib-k8s
# [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13)
**Note:** Version bump only for package @certd/lib-k8s **Note:** Version bump only for package @certd/lib-k8s
+3 -3
View File
@@ -1,7 +1,7 @@
{ {
"name": "@certd/lib-k8s", "name": "@certd/lib-k8s",
"private": false, "private": false,
"version": "1.38.0", "version": "1.38.1",
"type": "module", "type": "module",
"main": "./dist/index.js", "main": "./dist/index.js",
"module": "./dist/index.js", "module": "./dist/index.js",
@@ -17,7 +17,7 @@
"pub": "npm publish" "pub": "npm publish"
}, },
"dependencies": { "dependencies": {
"@certd/basic": "^1.38.0", "@certd/basic": "^1.38.1",
"@kubernetes/client-node": "0.21.0" "@kubernetes/client-node": "0.21.0"
}, },
"devDependencies": { "devDependencies": {
@@ -32,5 +32,5 @@
"tslib": "^2.8.1", "tslib": "^2.8.1",
"typescript": "^5.4.2" "typescript": "^5.4.2"
}, },
"gitHead": "a218cd0ffb16b658dd261e106cc0dbea63034756" "gitHead": "2c80c35b21b3f435e835167fca13db510bbc38a2"
} }
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
**Note:** Version bump only for package @certd/lib-server
# [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13)
### Features ### Features
+7 -7
View File
@@ -1,6 +1,6 @@
{ {
"name": "@certd/lib-server", "name": "@certd/lib-server",
"version": "1.38.0", "version": "1.38.1",
"description": "midway with flyway, sql upgrade way ", "description": "midway with flyway, sql upgrade way ",
"private": false, "private": false,
"type": "module", "type": "module",
@@ -28,11 +28,11 @@
], ],
"license": "AGPL", "license": "AGPL",
"dependencies": { "dependencies": {
"@certd/acme-client": "^1.38.0", "@certd/acme-client": "^1.38.1",
"@certd/basic": "^1.38.0", "@certd/basic": "^1.38.1",
"@certd/pipeline": "^1.38.0", "@certd/pipeline": "^1.38.1",
"@certd/plugin-lib": "^1.38.0", "@certd/plugin-lib": "^1.38.1",
"@certd/plus-core": "^1.38.0", "@certd/plus-core": "^1.38.1",
"@midwayjs/cache": "3.14.0", "@midwayjs/cache": "3.14.0",
"@midwayjs/core": "3.20.11", "@midwayjs/core": "3.20.11",
"@midwayjs/i18n": "3.20.13", "@midwayjs/i18n": "3.20.13",
@@ -64,5 +64,5 @@
"typeorm": "^0.3.11", "typeorm": "^0.3.11",
"typescript": "^5.4.2" "typescript": "^5.4.2"
}, },
"gitHead": "a218cd0ffb16b658dd261e106cc0dbea63034756" "gitHead": "2c80c35b21b3f435e835167fca13db510bbc38a2"
} }
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
**Note:** Version bump only for package @certd/midway-flyway-js
# [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13)
**Note:** Version bump only for package @certd/midway-flyway-js **Note:** Version bump only for package @certd/midway-flyway-js
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "@certd/midway-flyway-js", "name": "@certd/midway-flyway-js",
"version": "1.38.0", "version": "1.38.1",
"description": "midway with flyway, sql upgrade way ", "description": "midway with flyway, sql upgrade way ",
"private": false, "private": false,
"type": "module", "type": "module",
@@ -46,5 +46,5 @@
"typeorm": "^0.3.11", "typeorm": "^0.3.11",
"typescript": "^5.4.2" "typescript": "^5.4.2"
}, },
"gitHead": "a218cd0ffb16b658dd261e106cc0dbea63034756" "gitHead": "2c80c35b21b3f435e835167fca13db510bbc38a2"
} }
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
**Note:** Version bump only for package @certd/plugin-cert
# [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13)
### Features ### Features
+6 -6
View File
@@ -1,7 +1,7 @@
{ {
"name": "@certd/plugin-cert", "name": "@certd/plugin-cert",
"private": false, "private": false,
"version": "1.38.0", "version": "1.38.1",
"type": "module", "type": "module",
"main": "./dist/index.js", "main": "./dist/index.js",
"types": "./dist/index.d.ts", "types": "./dist/index.d.ts",
@@ -17,10 +17,10 @@
"compile": "tsc --skipLibCheck --watch" "compile": "tsc --skipLibCheck --watch"
}, },
"dependencies": { "dependencies": {
"@certd/acme-client": "^1.38.0", "@certd/acme-client": "^1.38.1",
"@certd/basic": "^1.38.0", "@certd/basic": "^1.38.1",
"@certd/pipeline": "^1.38.0", "@certd/pipeline": "^1.38.1",
"@certd/plugin-lib": "^1.38.0", "@certd/plugin-lib": "^1.38.1",
"psl": "^1.9.0", "psl": "^1.9.0",
"punycode.js": "^2.3.1" "punycode.js": "^2.3.1"
}, },
@@ -38,5 +38,5 @@
"tslib": "^2.8.1", "tslib": "^2.8.1",
"typescript": "^5.4.2" "typescript": "^5.4.2"
}, },
"gitHead": "a218cd0ffb16b658dd261e106cc0dbea63034756" "gitHead": "2c80c35b21b3f435e835167fca13db510bbc38a2"
} }
+6
View File
@@ -3,6 +3,12 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
### Bug Fixes
* 修复自定义插件name丢失author导致找不到插件的bug ([2fbb58e](https://github.com/certd/certd/commit/2fbb58eb2b239eab4864f90aa72b0ef2ada38e8f))
# [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13)
### Features ### Features
+6 -6
View File
@@ -1,7 +1,7 @@
{ {
"name": "@certd/plugin-lib", "name": "@certd/plugin-lib",
"private": false, "private": false,
"version": "1.38.0", "version": "1.38.1",
"type": "module", "type": "module",
"main": "./dist/index.js", "main": "./dist/index.js",
"types": "./dist/index.d.ts", "types": "./dist/index.d.ts",
@@ -22,10 +22,10 @@
"@alicloud/pop-core": "^1.7.10", "@alicloud/pop-core": "^1.7.10",
"@alicloud/tea-util": "^1.4.11", "@alicloud/tea-util": "^1.4.11",
"@aws-sdk/client-s3": "^3.964.0", "@aws-sdk/client-s3": "^3.964.0",
"@certd/acme-client": "^1.38.0", "@certd/acme-client": "^1.38.1",
"@certd/basic": "^1.38.0", "@certd/basic": "^1.38.1",
"@certd/pipeline": "^1.38.0", "@certd/pipeline": "^1.38.1",
"@certd/plus-core": "^1.38.0", "@certd/plus-core": "^1.38.1",
"@kubernetes/client-node": "0.21.0", "@kubernetes/client-node": "0.21.0",
"ali-oss": "^6.22.0", "ali-oss": "^6.22.0",
"basic-ftp": "^5.0.5", "basic-ftp": "^5.0.5",
@@ -57,5 +57,5 @@
"tslib": "^2.8.1", "tslib": "^2.8.1",
"typescript": "^5.4.2" "typescript": "^5.4.2"
}, },
"gitHead": "a218cd0ffb16b658dd261e106cc0dbea63034756" "gitHead": "2c80c35b21b3f435e835167fca13db510bbc38a2"
} }
@@ -1,17 +0,0 @@
import { AbstractTaskPlugin, TaskInstanceContext } from "@certd/pipeline";
import { isPlus } from "@certd/plus-core";
export function mustPlus() {
if (!isPlus()) {
throw new Error("此插件仅供专业版中使用");
}
}
export abstract class AbstractPlusTaskPlugin extends AbstractTaskPlugin {
setCtx(ctx: TaskInstanceContext) {
super.setCtx(ctx);
mustPlus();
}
abstract execute(): Promise<void>;
}
@@ -1,2 +1 @@
export * from "./ocr-api.js"; export * from "./ocr-api.js";
export * from "./check.js";
+4
View File
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
**Note:** Version bump only for package @certd/ui-client
# [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13)
### Bug Fixes ### Bug Fixes
+3 -3
View File
@@ -1,6 +1,6 @@
{ {
"name": "@certd/ui-client", "name": "@certd/ui-client",
"version": "1.38.0", "version": "1.38.1",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "vite --open", "dev": "vite --open",
@@ -106,8 +106,8 @@
"zod-defaults": "^0.1.3" "zod-defaults": "^0.1.3"
}, },
"devDependencies": { "devDependencies": {
"@certd/lib-iframe": "^1.38.0", "@certd/lib-iframe": "^1.38.1",
"@certd/pipeline": "^1.38.0", "@certd/pipeline": "^1.38.1",
"@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-commonjs": "^25.0.7",
"@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-node-resolve": "^15.2.3",
"@types/chai": "^4.3.12", "@types/chai": "^4.3.12",
@@ -811,7 +811,7 @@ export default {
oauthAutoRedirect: "自动跳转第三方登录", oauthAutoRedirect: "自动跳转第三方登录",
oauthAutoRedirectHelper: "是否自动跳转第三方登录(使用第一个已启用的第三方登录类型)", oauthAutoRedirectHelper: "是否自动跳转第三方登录(使用第一个已启用的第三方登录类型)",
oauthOnly: "仅使用第三方登录", oauthOnly: "仅使用第三方登录",
oauthOnlyHelper: "是否仅使用第三方登录,关闭密码登录(注意:请务必在测试第三方登录功能正常后再开启", oauthOnlyHelper: "是否仅使用第三方登录,关闭密码登录(注意:请务必在测试第三方登录功能正常后再开启,否则会导致无法登录)\n 如果无法登录,请访问 http://你的certd地址/#/login?oauthOnly=false 来临时关闭此模式",
email: { email: {
templates: "邮件模板", templates: "邮件模板",
+10
View File
@@ -3,6 +3,16 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.1](https://github.com/certd/certd/compare/v1.38.0...v1.38.1) (2026-01-15)
### Bug Fixes
* 修复自定义插件name丢失author导致找不到插件的bug ([2fbb58e](https://github.com/certd/certd/commit/2fbb58eb2b239eab4864f90aa72b0ef2ada38e8f))
### Performance Improvements
* 自定义插件支持使用_ctx.import("/@/xxx.js")以绝对路径引用模块 ([9eace86](https://github.com/certd/certd/commit/9eace86aeeb48c23b55102fc5d42088294d9eb97))
# [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13) # [1.38.0](https://github.com/certd/certd/compare/v1.37.17...v1.38.0) (2026-01-13)
### Bug Fixes ### Bug Fixes
+14 -14
View File
@@ -1,6 +1,6 @@
{ {
"name": "@certd/ui-server", "name": "@certd/ui-server",
"version": "1.38.0", "version": "1.38.1",
"description": "fast-server base midway", "description": "fast-server base midway",
"private": true, "private": true,
"type": "module", "type": "module",
@@ -48,20 +48,20 @@
"@aws-sdk/client-iam": "^3.964.0", "@aws-sdk/client-iam": "^3.964.0",
"@aws-sdk/client-route-53": "^3.964.0", "@aws-sdk/client-route-53": "^3.964.0",
"@aws-sdk/client-s3": "^3.964.0", "@aws-sdk/client-s3": "^3.964.0",
"@certd/acme-client": "^1.38.0", "@certd/acme-client": "^1.38.1",
"@certd/basic": "^1.38.0", "@certd/basic": "^1.38.1",
"@certd/commercial-core": "^1.38.0", "@certd/commercial-core": "^1.38.1",
"@certd/cv4pve-api-javascript": "^8.4.2", "@certd/cv4pve-api-javascript": "^8.4.2",
"@certd/jdcloud": "^1.38.0", "@certd/jdcloud": "^1.38.1",
"@certd/lib-huawei": "^1.38.0", "@certd/lib-huawei": "^1.38.1",
"@certd/lib-k8s": "^1.38.0", "@certd/lib-k8s": "^1.38.1",
"@certd/lib-server": "^1.38.0", "@certd/lib-server": "^1.38.1",
"@certd/midway-flyway-js": "^1.38.0", "@certd/midway-flyway-js": "^1.38.1",
"@certd/pipeline": "^1.38.0", "@certd/pipeline": "^1.38.1",
"@certd/plugin-cert": "^1.38.0", "@certd/plugin-cert": "^1.38.1",
"@certd/plugin-lib": "^1.38.0", "@certd/plugin-lib": "^1.38.1",
"@certd/plugin-plus": "^1.38.0", "@certd/plugin-plus": "^1.38.1",
"@certd/plus-core": "^1.38.0", "@certd/plus-core": "^1.38.1",
"@google-cloud/publicca": "^1.3.0", "@google-cloud/publicca": "^1.3.0",
"@huaweicloud/huaweicloud-sdk-cdn": "^3.1.120", "@huaweicloud/huaweicloud-sdk-cdn": "^3.1.120",
"@huaweicloud/huaweicloud-sdk-core": "^3.1.120", "@huaweicloud/huaweicloud-sdk-core": "^3.1.120",
@@ -14,7 +14,7 @@ export class BuiltInPluginService {
continue; continue;
} }
//@ts-ignore //@ts-ignore
if(Plugin.define?.type && Plugin.define?.type !== 'builtin'){ if(Plugin.define?.type && Plugin.define?.type.toLowerCase() !== 'builtin'){
continue; continue;
} }
list.push({ ...Plugin.define, key }); list.push({ ...Plugin.define, key });
@@ -96,6 +96,9 @@ input: # 插件的输入参数
const script = ` const script = `
// 要用await来import模块 // 要用await来import模块
const { AbstractTaskPlugin } = await import("@certd/pipeline") const { AbstractTaskPlugin } = await import("@certd/pipeline")
// 使用_ctx.import("/@/xxx.js") 以绝对路径引用模块,/@相当于根路径
const {AliyunAccess} = await _ctx.import("/@/plugins/plugin-lib/aliyun/access/index.js")
_ctx.logger.info("AliyunAccess:",AliyunAccess)
// 要返回一个继承AbstractTaskPlugin的class // 要返回一个继承AbstractTaskPlugin的class
return class DemoTask extends AbstractTaskPlugin { return class DemoTask extends AbstractTaskPlugin {
// 这里是插件的输入参数,对应左边的input配置 // 这里是插件的输入参数,对应左边的input配置
@@ -1,16 +1,16 @@
import {Inject, Provide, Scope, ScopeEnum} from "@midwayjs/core"; import { Inject, Provide, Scope, ScopeEnum } from "@midwayjs/core";
import {addonRegistry, BaseService, PageReq} from "@certd/lib-server"; import { addonRegistry, BaseService, PageReq } from "@certd/lib-server";
import {PluginEntity} from "../entity/plugin.js"; import { PluginEntity } from "../entity/plugin.js";
import {InjectEntityModel} from "@midwayjs/typeorm"; import { InjectEntityModel } from "@midwayjs/typeorm";
import {IsNull, Not, Repository} from "typeorm"; import { IsNull, Not, Repository } from "typeorm";
import {isComm} from "@certd/plus-core"; import { isComm } from "@certd/plus-core";
import {BuiltInPluginService} from "../../pipeline/service/builtin-plugin-service.js"; import { BuiltInPluginService } from "../../pipeline/service/builtin-plugin-service.js";
import {merge} from "lodash-es"; import { merge } from "lodash-es";
import {accessRegistry, notificationRegistry, pluginRegistry} from "@certd/pipeline"; import { accessRegistry, notificationRegistry, pluginRegistry } from "@certd/pipeline";
import {dnsProviderRegistry} from "@certd/plugin-cert"; import { dnsProviderRegistry } from "@certd/plugin-cert";
import {logger} from "@certd/basic"; import { logger } from "@certd/basic";
import yaml from "js-yaml"; import yaml from "js-yaml";
import {getDefaultAccessPlugin, getDefaultDeployPlugin, getDefaultDnsPlugin} from "./default-plugin.js"; import { getDefaultAccessPlugin, getDefaultDeployPlugin, getDefaultDnsPlugin } from "./default-plugin.js";
import fs from "fs"; import fs from "fs";
import path from "path"; import path from "path";
@@ -19,8 +19,21 @@ export type PluginImportReq = {
override?: boolean; override?: boolean;
}; };
async function importer(modulePath: string) {
if (!modulePath) {
throw new Error("modules path 不能为空")
}
if (!modulePath.startsWith("/@/")) {
return await import(modulePath)
}
modulePath = modulePath.replace("/@/", "")
//替换@为相对地址
modulePath = `../../../${modulePath}`
return await import(modulePath)
}
@Provide() @Provide()
@Scope(ScopeEnum.Request, {allowDowngrade: true}) @Scope(ScopeEnum.Request, { allowDowngrade: true })
export class PluginService extends BaseService<PluginEntity> { export class PluginService extends BaseService<PluginEntity> {
@InjectEntityModel(PluginEntity) @InjectEntityModel(PluginEntity)
repository: Repository<PluginEntity>; repository: Repository<PluginEntity>;
@@ -57,7 +70,7 @@ export class PluginService extends BaseService<PluginEntity> {
}; };
} }
async getEnabledBuildInGroup(opts?:{isSimple?:boolean,withSetting?:boolean}) { async getEnabledBuildInGroup(opts?: { isSimple?: boolean, withSetting?: boolean }) {
const groups = this.builtInPluginService.getGroups(); const groups = this.builtInPluginService.getGroups();
if (opts?.isSimple) { if (opts?.isSimple) {
for (const key in groups) { for (const key in groups) {
@@ -75,17 +88,17 @@ export class PluginService extends BaseService<PluginEntity> {
// 初始化设置 // 初始化设置
const settingPlugins = await this.repository.find({ const settingPlugins = await this.repository.find({
select:{ select: {
id:true, id: true,
name:true, name: true,
sysSetting:true sysSetting: true
}, },
where: { where: {
sysSetting : Not(IsNull()) sysSetting: Not(IsNull())
} }
}) })
//合并插件配置 //合并插件配置
const pluginSettingMap:any = {} const pluginSettingMap: any = {}
for (const item of settingPlugins) { for (const item of settingPlugins) {
if (!item.sysSetting) { if (!item.sysSetting) {
continue; continue;
@@ -99,7 +112,7 @@ export class PluginService extends BaseService<PluginEntity> {
} }
for (const item of group.plugins) { for (const item of group.plugins) {
const pluginSetting = pluginSettingMap[item.name]; const pluginSetting = pluginSettingMap[item.name];
if (pluginSetting){ if (pluginSetting) {
item.sysSetting = pluginSetting item.sysSetting = pluginSetting
} }
} }
@@ -172,13 +185,13 @@ export class PluginService extends BaseService<PluginEntity> {
} }
async setDisabled(opts: { id?: number; name?: string; type: string; disabled: boolean }) { async setDisabled(opts: { id?: number; name?: string; type: string; disabled: boolean }) {
const {id, name, type, disabled} = opts; const { id, name, type, disabled } = opts;
if (!type) { if (!type) {
throw new Error("参数错误: type 不能为空"); throw new Error("参数错误: type 不能为空");
} }
if (id > 0) { if (id > 0) {
//update //update
await this.repository.update({id}, {disabled}); await this.repository.update({ id }, { disabled });
return; return;
} }
@@ -214,7 +227,7 @@ export class PluginService extends BaseService<PluginEntity> {
throw new Error(`插件${param.author}/${param.name}已存在`); throw new Error(`插件${param.author}/${param.name}已存在`);
} }
if (param.type === "builtIn"){ if (param.type === "builtIn") {
return await super.add({ return await super.add({
...param, ...param,
}); });
@@ -233,7 +246,7 @@ export class PluginService extends BaseService<PluginEntity> {
throw new Error(`插件类型${param.pluginType}不支持`); throw new Error(`插件类型${param.pluginType}不支持`);
} }
const res= await super.add({ const res = await super.add({
...param, ...param,
...plugin ...plugin
}); });
@@ -242,18 +255,18 @@ export class PluginService extends BaseService<PluginEntity> {
return res return res
} }
async registerById(id: any) { async registerById(id: any) {
const item = await this.info(id); const item = await this.info(id);
if (!item) { if (!item) {
return; return;
} }
if(item.type === "builtIn"){ if (item.type === "builtIn") {
return; return;
} }
await this.registerPlugin(item); await this.registerPlugin(item);
} }
async unRegisterById(id: any){ async unRegisterById(id: any) {
const item = await this.info(id); const item = await this.info(id);
if (!item) { if (!item) {
return; return;
@@ -262,19 +275,19 @@ export class PluginService extends BaseService<PluginEntity> {
return; return;
} }
let name = item.name; let name = item.name;
if (item.author){ if (item.author && !item.name.startsWith(`${item.author}/`)) {
name = `${item.author}/${item.name}` name = `${item.author}/${item.name}`
} }
if (item.pluginType === "access"){ if (item.pluginType === "access") {
accessRegistry.unRegister(name) accessRegistry.unRegister(name)
}else if (item.pluginType === "deploy"){ } else if (item.pluginType === "deploy") {
pluginRegistry.unRegister(name) pluginRegistry.unRegister(name)
}else if (item.pluginType === "dnsProvider"){ } else if (item.pluginType === "dnsProvider") {
dnsProviderRegistry.unRegister(name) dnsProviderRegistry.unRegister(name)
}else if (item.pluginType === "notification"){ } else if (item.pluginType === "notification") {
notificationRegistry.unRegister(name) notificationRegistry.unRegister(name)
}else{ } else {
logger.warn(`不支持的插件类型:${item.pluginType}`) logger.warn(`不支持的插件类型:${item.pluginType}`)
} }
} }
@@ -291,7 +304,7 @@ export class PluginService extends BaseService<PluginEntity> {
} }
const res= await super.update(param); const res = await super.update(param);
await this.registerById(param.id); await this.registerById(param.id);
return res return res
@@ -300,14 +313,14 @@ export class PluginService extends BaseService<PluginEntity> {
async compile(code: string) { async compile(code: string) {
const ts = await import("typescript"); const ts = await import("typescript");
return ts.transpileModule(code, { return ts.transpileModule(code, {
compilerOptions: {module: ts.ModuleKind.ESNext} compilerOptions: { module: ts.ModuleKind.ESNext }
}).outputText; }).outputText;
} }
private async getPluginClassFromFile(item: any) { private async getPluginClassFromFile(item: any) {
const scriptFilePath = item.scriptFilePath; const scriptFilePath = item.scriptFilePath;
const res = await import((`../../..${scriptFilePath}`)) const res = await import((`../../..${scriptFilePath}`))
const classNames = Object.keys(res) const classNames = Object.keys(res)
return res[classNames[classNames.length - 1]] return res[classNames[classNames.length - 1]]
} }
@@ -331,14 +344,13 @@ export class PluginService extends BaseService<PluginEntity> {
}); });
if (info && info.length > 0) { if (info && info.length > 0) {
const plugin = info[0]; const plugin = info[0];
try { try {
const AsyncFunction = Object.getPrototypeOf(async () => { const AsyncFunction = Object.getPrototypeOf(async () => {
}).constructor; }).constructor;
// const script = await this.compile(plugin.content); // const script = await this.compile(plugin.content);
const script = plugin.content; const script = plugin.content;
const getPluginClass = new AsyncFunction(script); const getPluginClass = new AsyncFunction("_ctx", script);
return await getPluginClass({logger: logger}); return await getPluginClass({ logger: logger, import: importer });
} catch (e) { } catch (e) {
logger.error("编译插件失败:", e); logger.error("编译插件失败:", e);
throw e; throw e;
@@ -380,7 +392,7 @@ export class PluginService extends BaseService<PluginEntity> {
} }
//排序 //排序
list = list.sort((a, b) => { list = list.sort((a, b) => {
return (a.order??10) - (b.order ??10); return (a.order ?? 10) - (b.order ?? 10);
}); });
for (const item of list) { for (const item of list) {
@@ -399,12 +411,11 @@ export class PluginService extends BaseService<PluginEntity> {
delete item.metadata; delete item.metadata;
delete item.content; delete item.content;
delete item.extra; delete item.extra;
let name = item.name
if (item.author) { if (item.author) {
name = item.author + "/" + name; item.name = item.author + "/" + item.name;
} }
if(item.addonType){ let name = item.name
if (item.addonType) {
name = item.addonType + ":" + name; name = item.addonType + ":" + name;
} }
let registry = null; let registry = null;
@@ -416,9 +427,9 @@ export class PluginService extends BaseService<PluginEntity> {
registry = dnsProviderRegistry; registry = dnsProviderRegistry;
} else if (item.pluginType === "notification") { } else if (item.pluginType === "notification") {
registry = notificationRegistry; registry = notificationRegistry;
}else if (item.pluginType === "addon") { } else if (item.pluginType === "addon") {
registry = addonRegistry; registry = addonRegistry;
} else { } else {
logger.warn(`插件${name}类型错误:${item.pluginType}`); logger.warn(`插件${name}类型错误:${item.pluginType}`);
return; return;
} }
@@ -497,9 +508,9 @@ export class PluginService extends BaseService<PluginEntity> {
if (!old) { if (!old) {
//add //add
const {id} = await this.add(pluginEntity); const { id } = await this.add(pluginEntity);
pluginEntity.id = id; pluginEntity.id = id;
} else{ } else {
if (!req.override) { if (!req.override) {
throw new Error(`插件${loaded.author}/${loaded.name}已存在`); throw new Error(`插件${loaded.author}/${loaded.name}已存在`);
} }
@@ -513,8 +524,8 @@ export class PluginService extends BaseService<PluginEntity> {
} }
async deleteByIds(ids:any[]){ async deleteByIds(ids: any[]) {
await super.delete(ids); await super.delete(ids);
for (const id of ids) { for (const id of ids) {
await this.unRegisterById(id) await this.unRegisterById(id)
} }
@@ -2,7 +2,7 @@ import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipel
import fs from "fs"; import fs from "fs";
import path from "path"; import path from "path";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { AbstractPlusTaskPlugin } from "@certd/plugin-lib"; import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
import JSZip from "jszip"; import JSZip from "jszip";
import * as os from "node:os"; import * as os from "node:os";
import { OssClientContext, ossClientFactory, OssClientRemoveByOpts} from "../plugin-lib/oss/index.js"; import { OssClientContext, ossClientFactory, OssClientRemoveByOpts} from "../plugin-lib/oss/index.js";
@@ -1,8 +1,8 @@
import {IsTaskPlugin, PageSearch, pluginGroups, RunStrategy, TaskInput} from "@certd/pipeline"; import {IsTaskPlugin, PageSearch, pluginGroups, RunStrategy, TaskInput} from "@certd/pipeline";
import {CertApplyPluginNames, CertInfo} from "@certd/plugin-cert"; import {CertApplyPluginNames, CertInfo} from "@certd/plugin-cert";
import {AbstractPlusTaskPlugin, createCertDomainGetterInputDefine, createRemoteSelectInputDefine} from "@certd/plugin-lib"; import {createCertDomainGetterInputDefine, createRemoteSelectInputDefine} from "@certd/plugin-lib";
import {ApisixAccess} from "../access.js"; import {ApisixAccess} from "../access.js";
import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
@IsTaskPlugin({ @IsTaskPlugin({
//命名规范,插件类型+功能(就是目录plugin-demo中的demo),大写字母开头,驼峰命名 //命名规范,插件类型+功能(就是目录plugin-demo中的demo),大写字母开头,驼峰命名
name: "ApisixRefreshCert", name: "ApisixRefreshCert",
@@ -7,7 +7,7 @@ import {
} from "@certd/pipeline"; } from "@certd/pipeline";
import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert"; import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert";
import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib"; import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib";
import { AbstractPlusTaskPlugin } from "@certd/plugin-lib"; import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
import { CmccAccess } from "./access.js"; import { CmccAccess } from "./access.js";
@IsTaskPlugin({ @IsTaskPlugin({
@@ -1,6 +1,6 @@
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline"; import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline";
import { CertInfo } from "@certd/plugin-cert"; import { CertInfo } from "@certd/plugin-cert";
import { AbstractPlusTaskPlugin } from "@certd/plugin-lib"; import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib"; import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib";
import { tmpdir } from "node:os"; import { tmpdir } from "node:os";
import path from "node:path"; import path from "node:path";
@@ -1,6 +1,6 @@
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline"; import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline";
import { BaotaClient } from "../lib/client.js"; import { BaotaClient } from "../lib/client.js";
import { AbstractPlusTaskPlugin } from "@certd/plugin-lib"; import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
import dayjs from "dayjs"; import dayjs from "dayjs";
@IsTaskPlugin({ @IsTaskPlugin({
name: "BaotaDeleteExpiringCert", name: "BaotaDeleteExpiringCert",
@@ -1,7 +1,7 @@
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline"; import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline";
import { CertInfo } from "@certd/plugin-cert"; import { CertInfo } from "@certd/plugin-cert";
import { BaotaClient } from "../lib/client.js"; import { BaotaClient } from "../lib/client.js";
import { AbstractPlusTaskPlugin } from "@certd/plugin-lib"; import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
import { CertApplyPluginNames } from "@certd/plugin-cert"; import { CertApplyPluginNames } from "@certd/plugin-cert";
@IsTaskPlugin({ @IsTaskPlugin({
name: "BaotaDeployPanelCert", name: "BaotaDeployPanelCert",
@@ -1,8 +1,9 @@
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline"; import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline";
import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert"; import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert";
import { AbstractPlusTaskPlugin, CertReader } from "@certd/plugin-lib"; import { CertReader } from "@certd/plugin-lib";
import { SshAccess } from "../../plugin-lib/ssh/ssh-access.js"; import { SshAccess } from "../../plugin-lib/ssh/ssh-access.js";
import { SshClient } from "../../plugin-lib/ssh/ssh.js"; import { SshClient } from "../../plugin-lib/ssh/ssh.js";
import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
@IsTaskPlugin({ @IsTaskPlugin({
name: "ExsiDeployCert", name: "ExsiDeployCert",
title: "Exsi-部署证书到Exsi", title: "Exsi-部署证书到Exsi",
@@ -4,7 +4,7 @@ import { CertApplyPluginNames, CertInfo, CertReader } from "@certd/plugin-cert";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { get } from "lodash-es"; import { get } from "lodash-es";
import { K8sAccess } from "../access.js"; import { K8sAccess } from "../access.js";
import { AbstractPlusTaskPlugin } from "@certd/plugin-lib"; import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
@IsTaskPlugin({ @IsTaskPlugin({
name: "K8sApply", name: "K8sApply",
title: "K8S-Apply自定义yaml", title: "K8S-Apply自定义yaml",
@@ -2,7 +2,7 @@ import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipel
import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert"; import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert";
import { LuckyAccess } from "../access.js"; import { LuckyAccess } from "../access.js";
import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib"; import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib";
import { AbstractPlusTaskPlugin } from "@certd/plugin-lib"; import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
import { isArray } from "lodash-es"; import { isArray } from "lodash-es";
@IsTaskPlugin({ @IsTaskPlugin({
@@ -1,98 +0,0 @@
import { HttpClient, HttpRequestConfig, ILogger } from "@certd/basic";
import { MaoyunAccess } from "./access.js";
export class MaoyunClient {
privateKeyPem = "";
http: HttpClient;
logger: ILogger;
access: MaoyunAccess;
token: string;
constructor(opts: { logger: ILogger; http: HttpClient; access: MaoyunAccess }) {
this.logger = opts.logger;
this.http = opts.http;
this.access = opts.access;
this.privateKeyPem =
"\n-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAt83xKlUSU0i09/pwwQ0MQQ0v71IULdVGJ3AFo+anwLX1TRCp\nxmY5i+xmT9tshHqiPGN8qeg+lDaqA+iwmS6zqi+KlNmmKJc3kUx/h24MI3nff0xy\nz605ZfDgJhwBkJpTI6Sk4+OLX+lZxOiET0nOT7jrhKiFCKX8+0ZXjTJ1cmdifKaj\nqXmjD+XYZzBwA2fCr1kPq2xKvU097Ksu6QvM+La5X/tt+FJOuedmuqZmsb6YQ+6O\n6mJ0bcY0kFDGNkoeY6dEyeJAkIDJbda3n0I71KwRR2J0CSN3TF+w1hSQa7Hp1rXw\n+zQvR6p7O2VY8zQeZZKRKGl7OGdKW5F79iz2fQIDAQABAoIBAEN0BaRGciI0VY2H\n0CdY1X1uDIBke9lSIpvIhZlfxYJ4hFxS2CtiSo4qJGX8HbgElVNaI17rR0P3R6+F\njoG43OCA7/euZEcTL6ZYD5kw7q16RWYfNSc36A+cNXZm4sAhko9LFeQ4FmcNaQ9V\nUXEToe4p6+zUN3Y0DEJezzSXJvjjjodT5L03i2HCW+/xZIHi6oh1DuXdy7h1Ah8s\nSxN188HsX7/SoDHAxDqi/SSGyoYg/SvtOetPtrcZCfqoHfxkR+jQHNaOTq3vGmsu\np8KPtRBoFvSPMxSSHNLb4qbIFvlWRLNXfIhYnenTPtmCnnqogotZZ9CoCHL9dX5R\nt4q5L6ECgYEA5jYhqpRIhqSZOTJopGgy3LBy5T1PHDTfedTuSxnoywYWCuGNwgjI\nRgd94jcUuizO9euobxvDUTdOZ6LdK1NStfwOspb2NojvlE+9SfC8JDv7ZeRz8egB\nClrT6jtCUr80K1I0eF31ha0YMjgi7WZJvTMp53fqI0b1yQO2FaBNgWUCgYEAzGT6\nay+QlO2Fdt9mqeIJy9QiugItC7lk75fQMg5fa8A8wj9DO86o/2k4rKhl7SPg0H+R\nSJQoZGuS4M2f9muEHnLmVF8EzizuHZoR3HO4mie2adVf9NfAmkFsCluRAZKtQkNc\nt/VwlJEC6dChoZkU8Wzd0fSJKrdhjik2ayGXmzkCgYEAuie9s5UyzIXfTSwhCAkm\nT+TzE8Iu7Y0nxPnVM6+g2kNyoZvgqK23XUGDnuCRhzbiqGPGkQovN8Z0RUOiev1m\n3bgUHoAKWvECYrjURS1AxkAmuy8wPsYvyTLHOBpxOD5bLkjMGyVHe7AL59gTDktv\nh2oPEZibIamo6MJyhCxbYC0CgYAIZhnYL7MsO3phgRqR3oTyiDwJEq/RLIQWSFG4\nzNhk8BhPDxRvL7XIEQXQKndNwEyrpKJOri/euIDnlet9z7s1GRmX2/OxmS0LsFoN\nif/K7djUDn2L7RWwAQI0hsC1pNZTw7raoE5I/JB3FSifIFA4/3U5/GdqhvCOS+k9\ni7rUGQKBgQDPspapfGj2ozgWChJ2xMTGBhJhynM81w3j9w7MLvO/7/U43zYzKzyc\n7YJzApQOSwX/nLdquzi+UIbvuCB3npZVZl52S4f7BBcgLNQpdmcfWrAbDv5lySfn\n/KTN22Wxmhh20QgiNSxj+o+KIgdAgZCgWt7NrkZ5UX7Lo+ZfYU1xbg==\n-----END RSA PRIVATE KEY-----";
}
async sign(data: string) {
const { KJUR, KEYUTIL, hextob64 } = await import("jsrsasign");
const privateKey = KEYUTIL.getKey(this.privateKeyPem);
// 创建签名实例
const signature = new KJUR.crypto.Signature({
alg: "SHA256withRSA",
});
// 初始化私钥
signature.init(privateKey);
// 更新待签名数据(假设原文是字符串)
signature.updateString(data);
// 生成签名(默认返回十六进制字符串)
const hexSignature = signature.sign();
// 转换为 Base64(假设 Ix 是 Base64 编码)
return hextob64(hexSignature);
}
async doRequest(req: HttpRequestConfig) {
const timestamp = Date.now();
let data = "";
if (req.method.toLowerCase() === "get") {
// area_codes=&channel_type=0,1,2&domain_name=&https_status=&nonce=1747242446238&order=&page=1&page_size=10&status=&timestamp=1747242446238
let queryList = [];
for (const key in req.params) {
queryList.push(`${key}=${req.params[key]}`);
}
queryList.push(`nonce=${timestamp}`);
queryList.push(`timestamp=${timestamp}`);
//sort
queryList = queryList.sort();
data = queryList.join("&");
} else {
data = `body=${JSON.stringify(req.data || {})}&nonce=${timestamp}&timestamp=${timestamp}`;
}
const sign = await this.sign(data);
const headers: any = {
sign: sign,
timestamp: timestamp,
nonce: timestamp,
};
if (this.token) {
headers.Token = this.token;
}
const res = await this.http.request({
...req,
headers,
baseURL: "https://testaa.5678.jp",
});
if (!res.success && res.code !== 200) {
throw new Error(`请求失败:${res.msg}`);
}
return res.data;
}
async login() {
const req = {
email: this.access.username,
password: this.access.password,
accountType: 1,
};
const res = await this.doRequest({
url: "/api/vcloud/v1/userApi/noAuth/login",
method: "post",
data: req,
logRes: false,
logParams: false,
});
const { token } = res;
this.logger.info(`登录成功`);
this.token = token;
}
}
@@ -1,4 +1,3 @@
// 隐藏 通过下载插件形式分发 // 隐藏 通过下载插件形式分发
// export * from "./plugins/index.js"; // export * from "./plugins/index.js";
export * from "./access.js"; export * from "./access.js";
export * from "./client.js";
@@ -1,9 +1,9 @@
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline"; import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline";
import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert"; import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert";
import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib"; import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib";
import { AbstractPlusTaskPlugin } from "@certd/plugin-lib"; import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
import { MaoyunAccess } from "../access.js"; import { MaoyunAccess } from "../access.js";
import { MaoyunClient } from "../client.js"; import { MaoyunClient } from "@certd/plugin-plus";
@IsTaskPlugin({ @IsTaskPlugin({
//命名规范,插件类型+功能(就是目录plugin-demo中的demo),大写字母开头,驼峰命名 //命名规范,插件类型+功能(就是目录plugin-demo中的demo),大写字母开头,驼峰命名
@@ -1,8 +1,9 @@
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline"; import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline";
import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert"; import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert";
import { AbstractPlusTaskPlugin, CertReader } from "@certd/plugin-lib"; import { CertReader } from "@certd/plugin-lib";
import { SshAccess } from "../../plugin-lib/ssh/ssh-access.js"; import { SshAccess } from "../../plugin-lib/ssh/ssh-access.js";
import { SshClient } from "../../plugin-lib/ssh/ssh.js"; import { SshClient } from "../../plugin-lib/ssh/ssh.js";
import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
@IsTaskPlugin({ @IsTaskPlugin({
name: "OpenwrtDeployCert", name: "OpenwrtDeployCert",
title: "Openwrt-部署证书到Openwrt", title: "Openwrt-部署证书到Openwrt",
@@ -1,6 +1,6 @@
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline"; import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline";
import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert"; import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert";
import { AbstractPlusTaskPlugin } from "@certd/plugin-lib"; import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
import { PleskAccess } from "../access.js"; import { PleskAccess } from "../access.js";
import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib"; import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib";
import FormData from "form-data"; import FormData from "form-data";
@@ -1,6 +1,6 @@
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline"; import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline";
import { CertApplyPluginNames, CertInfo, CertReader } from "@certd/plugin-cert"; import { CertApplyPluginNames, CertInfo, CertReader } from "@certd/plugin-cert";
import { AbstractPlusTaskPlugin } from "@certd/plugin-lib"; import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
import { PleskAccess } from "../access.js"; import { PleskAccess } from "../access.js";
import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib"; import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib";
import FormData from "form-data"; import FormData from "form-data";
@@ -1,6 +1,6 @@
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline"; import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline";
import { CertInfo } from "@certd/plugin-lib"; import { CertInfo } from "@certd/plugin-lib";
import { AbstractPlusTaskPlugin } from "@certd/plugin-lib"; import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
import { SynologyClient } from "@certd/plugin-plus"; import { SynologyClient } from "@certd/plugin-plus";
import { SynologyAccess } from "../access.js"; import { SynologyAccess } from "../access.js";
import { CertApplyPluginNames } from "@certd/plugin-lib"; import { CertApplyPluginNames } from "@certd/plugin-lib";
@@ -1,6 +1,6 @@
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline'; import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline';
import { CertInfo } from '@certd/plugin-cert'; import { CertInfo } from '@certd/plugin-cert';
import { AbstractPlusTaskPlugin } from '@certd/plugin-lib'; import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
import { ProxmoxAccess } from '../access.js'; import { ProxmoxAccess } from '../access.js';
import { createRemoteSelectInputDefine } from '@certd/plugin-lib'; import { createRemoteSelectInputDefine } from '@certd/plugin-lib';
import { CertApplyPluginNames} from '@certd/plugin-cert'; import { CertApplyPluginNames} from '@certd/plugin-cert';
@@ -1,6 +1,6 @@
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline'; import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline';
import { CertInfo } from '@certd/plugin-cert'; import { CertInfo } from '@certd/plugin-cert';
import { AbstractPlusTaskPlugin } from '@certd/plugin-lib'; import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
import { tmpdir } from 'node:os'; import { tmpdir } from 'node:os';
import fs from 'fs'; import fs from 'fs';
import { SshAccess, SshClient } from '../../plugin-lib/ssh/index.js'; import { SshAccess, SshClient } from '../../plugin-lib/ssh/index.js';
@@ -1,5 +1,5 @@
import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline'; import { IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from '@certd/pipeline';
import { AbstractPlusTaskPlugin } from '@certd/plugin-lib'; import { AbstractPlusTaskPlugin } from "@certd/plugin-plus";
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import { remove } from 'lodash-es'; import { remove } from 'lodash-es';
import { TencentAccess, TencentSslClient } from '../../../plugin-lib/tencent/index.js'; import { TencentAccess, TencentSslClient } from '../../../plugin-lib/tencent/index.js';
+46 -40
View File
@@ -49,7 +49,7 @@ importers:
packages/core/acme-client: packages/core/acme-client:
dependencies: dependencies:
'@certd/basic': '@certd/basic':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../basic version: link:../basic
'@peculiar/x509': '@peculiar/x509':
specifier: ^1.11.0 specifier: ^1.11.0
@@ -213,10 +213,10 @@ importers:
packages/core/pipeline: packages/core/pipeline:
dependencies: dependencies:
'@certd/basic': '@certd/basic':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../basic version: link:../basic
'@certd/plus-core': '@certd/plus-core':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../pro/plus-core version: link:../../pro/plus-core
dayjs: dayjs:
specifier: ^1.11.7 specifier: ^1.11.7
@@ -412,7 +412,7 @@ importers:
packages/libs/lib-k8s: packages/libs/lib-k8s:
dependencies: dependencies:
'@certd/basic': '@certd/basic':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/basic version: link:../../core/basic
'@kubernetes/client-node': '@kubernetes/client-node':
specifier: 0.21.0 specifier: 0.21.0
@@ -452,19 +452,19 @@ importers:
packages/libs/lib-server: packages/libs/lib-server:
dependencies: dependencies:
'@certd/acme-client': '@certd/acme-client':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/acme-client version: link:../../core/acme-client
'@certd/basic': '@certd/basic':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/basic version: link:../../core/basic
'@certd/pipeline': '@certd/pipeline':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/pipeline version: link:../../core/pipeline
'@certd/plugin-lib': '@certd/plugin-lib':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../plugins/plugin-lib version: link:../../plugins/plugin-lib
'@certd/plus-core': '@certd/plus-core':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../pro/plus-core version: link:../../pro/plus-core
'@midwayjs/cache': '@midwayjs/cache':
specifier: 3.14.0 specifier: 3.14.0
@@ -610,16 +610,16 @@ importers:
packages/plugins/plugin-cert: packages/plugins/plugin-cert:
dependencies: dependencies:
'@certd/acme-client': '@certd/acme-client':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/acme-client version: link:../../core/acme-client
'@certd/basic': '@certd/basic':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/basic version: link:../../core/basic
'@certd/pipeline': '@certd/pipeline':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/pipeline version: link:../../core/pipeline
'@certd/plugin-lib': '@certd/plugin-lib':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../plugin-lib version: link:../plugin-lib
psl: psl:
specifier: ^1.9.0 specifier: ^1.9.0
@@ -683,16 +683,16 @@ importers:
specifier: ^3.964.0 specifier: ^3.964.0
version: 3.964.0(aws-crt@1.26.2) version: 3.964.0(aws-crt@1.26.2)
'@certd/acme-client': '@certd/acme-client':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/acme-client version: link:../../core/acme-client
'@certd/basic': '@certd/basic':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/basic version: link:../../core/basic
'@certd/pipeline': '@certd/pipeline':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/pipeline version: link:../../core/pipeline
'@certd/plus-core': '@certd/plus-core':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../pro/plus-core version: link:../../pro/plus-core
'@kubernetes/client-node': '@kubernetes/client-node':
specifier: 0.21.0 specifier: 0.21.0
@@ -783,16 +783,16 @@ importers:
packages/pro/commercial-core: packages/pro/commercial-core:
dependencies: dependencies:
'@certd/basic': '@certd/basic':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/basic version: link:../../core/basic
'@certd/lib-server': '@certd/lib-server':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../libs/lib-server version: link:../../libs/lib-server
'@certd/pipeline': '@certd/pipeline':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/pipeline version: link:../../core/pipeline
'@certd/plus-core': '@certd/plus-core':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../plus-core version: link:../plus-core
'@midwayjs/core': '@midwayjs/core':
specifier: 3.20.11 specifier: 3.20.11
@@ -865,14 +865,17 @@ importers:
packages/pro/plugin-plus: packages/pro/plugin-plus:
dependencies: dependencies:
'@certd/basic': '@certd/basic':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/basic version: link:../../core/basic
'@certd/pipeline': '@certd/pipeline':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/pipeline version: link:../../core/pipeline
'@certd/plugin-lib': '@certd/plugin-lib':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../plugins/plugin-lib version: link:../../plugins/plugin-lib
'@certd/plus-core':
specifier: ^1.38.0
version: link:../plus-core
crypto-js: crypto-js:
specifier: ^4.2.0 specifier: ^4.2.0
version: 4.2.0 version: 4.2.0
@@ -882,6 +885,9 @@ importers:
form-data: form-data:
specifier: ^4.0.0 specifier: ^4.0.0
version: 4.0.2 version: 4.0.2
jsrsasign:
specifier: ^11.1.0
version: 11.1.0
querystring: querystring:
specifier: ^0.2.1 specifier: ^0.2.1
version: 0.2.1 version: 0.2.1
@@ -944,7 +950,7 @@ importers:
packages/pro/plus-core: packages/pro/plus-core:
dependencies: dependencies:
'@certd/basic': '@certd/basic':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/basic version: link:../../core/basic
dayjs: dayjs:
specifier: ^1.11.7 specifier: ^1.11.7
@@ -1240,10 +1246,10 @@ importers:
version: 0.1.3(zod@3.24.4) version: 0.1.3(zod@3.24.4)
devDependencies: devDependencies:
'@certd/lib-iframe': '@certd/lib-iframe':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../libs/lib-iframe version: link:../../libs/lib-iframe
'@certd/pipeline': '@certd/pipeline':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/pipeline version: link:../../core/pipeline
'@rollup/plugin-commonjs': '@rollup/plugin-commonjs':
specifier: ^25.0.7 specifier: ^25.0.7
@@ -1432,46 +1438,46 @@ importers:
specifier: ^3.964.0 specifier: ^3.964.0
version: 3.964.0(aws-crt@1.26.2) version: 3.964.0(aws-crt@1.26.2)
'@certd/acme-client': '@certd/acme-client':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/acme-client version: link:../../core/acme-client
'@certd/basic': '@certd/basic':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/basic version: link:../../core/basic
'@certd/commercial-core': '@certd/commercial-core':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../pro/commercial-core version: link:../../pro/commercial-core
'@certd/cv4pve-api-javascript': '@certd/cv4pve-api-javascript':
specifier: ^8.4.2 specifier: ^8.4.2
version: 8.4.2 version: 8.4.2
'@certd/jdcloud': '@certd/jdcloud':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../libs/lib-jdcloud version: link:../../libs/lib-jdcloud
'@certd/lib-huawei': '@certd/lib-huawei':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../libs/lib-huawei version: link:../../libs/lib-huawei
'@certd/lib-k8s': '@certd/lib-k8s':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../libs/lib-k8s version: link:../../libs/lib-k8s
'@certd/lib-server': '@certd/lib-server':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../libs/lib-server version: link:../../libs/lib-server
'@certd/midway-flyway-js': '@certd/midway-flyway-js':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../libs/midway-flyway-js version: link:../../libs/midway-flyway-js
'@certd/pipeline': '@certd/pipeline':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../core/pipeline version: link:../../core/pipeline
'@certd/plugin-cert': '@certd/plugin-cert':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../plugins/plugin-cert version: link:../../plugins/plugin-cert
'@certd/plugin-lib': '@certd/plugin-lib':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../plugins/plugin-lib version: link:../../plugins/plugin-lib
'@certd/plugin-plus': '@certd/plugin-plus':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../pro/plugin-plus version: link:../../pro/plugin-plus
'@certd/plus-core': '@certd/plus-core':
specifier: ^1.37.17 specifier: ^1.38.0
version: link:../../pro/plus-core version: link:../../pro/plus-core
'@google-cloud/publicca': '@google-cloud/publicca':
specifier: ^1.3.0 specifier: ^1.3.0
+1 -1
View File
@@ -1 +1 @@
2 01:00
+1 -1
View File
@@ -1 +1 @@
3 01:32