mirror of
https://github.com/certd/certd.git
synced 2026-04-05 23:40:55 +08:00
Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d15dfafd5d | ||
|
|
545c13d55c | ||
|
|
e2099ac9ca | ||
|
|
c937583a50 | ||
|
|
43c7a19849 | ||
|
|
83543487e7 | ||
|
|
434b259525 | ||
|
|
add8efaba8 | ||
|
|
12ed79ca60 | ||
|
|
1e863382d3 | ||
|
|
bad3504d4a | ||
|
|
d94f207162 | ||
|
|
2c4b7781a4 | ||
|
|
4574c6ff07 | ||
|
|
7b5043e87b | ||
|
|
a06f3ac5da | ||
|
|
721346a40a |
14
CHANGELOG.md
14
CHANGELOG.md
@@ -3,6 +3,20 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.35.3](https://github.com/certd/certd/compare/v1.35.2...v1.35.3) (2025-06-12)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* 修复消息内容存在()<>等括号情况下无法发送tg通知的bug ([c937583](https://github.com/certd/certd/commit/c937583a50d8513d76adead3648f83eee2fcc6f9))
|
||||
* 修复重试次数设置无效的bug ([e2099ac](https://github.com/certd/certd/commit/e2099ac9ca344bc70bfa4219002e9138708973ae))
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* 授权列表类型颜色优化 ([1e86338](https://github.com/certd/certd/commit/1e863382d3d1a8cc95a1abf51e75bf6eaea3244f))
|
||||
* 支持雨云dns解析 ([8354348](https://github.com/certd/certd/commit/83543487e7418683bd79cfe3b9e0d792bdb977f7))
|
||||
* 支持雨云dns解析以及雨云证书更新 ([43c7a19](https://github.com/certd/certd/commit/43c7a1984926f5d4647760cc134bb0aede3a7b7a))
|
||||
* github 版本检查支持执行脚本 ([bad3504](https://github.com/certd/certd/commit/bad3504d4a15e6989b967b66aa9da8c6981f25bf))
|
||||
|
||||
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
Certd 是一个免费全自动申请和自动部署更新SSL证书的管理系统。
|
||||
后缀d取自linux守护进程的命名风格,意为证书守护进程。
|
||||
|
||||
> 首创流水线模式自动申请和部署证书,已被多个项目“借鉴”,被抄也是一种成功。
|
||||
|
||||
关键字:证书自动申请、证书自动更新、证书自动续期、证书自动续签、证书管理工具
|
||||
|
||||
> 关于证书续期:
|
||||
|
||||
@@ -1 +1 @@
|
||||
09:12
|
||||
23:58
|
||||
|
||||
@@ -3,6 +3,22 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* 修复阿里云新加坡clb无法部署证书的bug ([c1fbc8c](https://github.com/certd/certd/commit/c1fbc8cd68ae020ef342e4e92f4d9b4869ca1ead))
|
||||
* 修复阿里云新加坡clb无法部署证书的bug ([3e84e11](https://github.com/certd/certd/commit/3e84e116e863b54c6b4d7db160af372dacc5857f))
|
||||
* 修复检查github release 插件无法保存最后版本的bug ([a92107c](https://github.com/certd/certd/commit/a92107cc47133883b099d5228b06373e84c8bb50))
|
||||
* 修复站点监控定时器多次添加的bug ([9361679](https://github.com/certd/certd/commit/936167972fe83e519bc01a0dd961d9c0635d24ab))
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* 阿里云dns操作增加重试机制 ([424fd96](https://github.com/certd/certd/commit/424fd96615c05e949af8c837c261c1400bdffba2))
|
||||
* 优化阿里云nlb支持部署扩展证书 ([9cbdfda](https://github.com/certd/certd/commit/9cbdfda829b231733d54c66c5024d46e6fc11af3))
|
||||
* 子域名托管帮助链接优化为打开新窗口 ([7c0cdd1](https://github.com/certd/certd/commit/7c0cdd169e2f943e703e433677f2f437d4aa02ee))
|
||||
* history增加触发类型显示 ([7f6070c](https://github.com/certd/certd/commit/7f6070c960ed7bf02add5ab36436de6573f2f1fa))
|
||||
|
||||
## [1.35.1](https://github.com/certd/certd/compare/v1.35.0...v1.35.1) (2025-06-07)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
@@ -9,5 +9,5 @@
|
||||
}
|
||||
},
|
||||
"npmClient": "pnpm",
|
||||
"version": "1.35.2"
|
||||
"version": "1.35.3"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.35.3](https://github.com/publishlab/node-acme-client/compare/v1.35.2...v1.35.3) (2025-06-12)
|
||||
|
||||
**Note:** Version bump only for package @certd/acme-client
|
||||
|
||||
## [1.35.2](https://github.com/publishlab/node-acme-client/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
**Note:** Version bump only for package @certd/acme-client
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"description": "Simple and unopinionated ACME client",
|
||||
"private": false,
|
||||
"author": "nmorsman",
|
||||
"version": "1.35.2",
|
||||
"version": "1.35.3",
|
||||
"type": "module",
|
||||
"module": "scr/index.js",
|
||||
"main": "src/index.js",
|
||||
@@ -18,7 +18,7 @@
|
||||
"types"
|
||||
],
|
||||
"dependencies": {
|
||||
"@certd/basic": "^1.35.2",
|
||||
"@certd/basic": "^1.35.3",
|
||||
"@peculiar/x509": "^1.11.0",
|
||||
"asn1js": "^3.0.5",
|
||||
"axios": "^1.7.2",
|
||||
@@ -69,5 +69,5 @@
|
||||
"bugs": {
|
||||
"url": "https://github.com/publishlab/node-acme-client/issues"
|
||||
},
|
||||
"gitHead": "a619f8a2fee68169ae3c57cf6e8de18141de17ba"
|
||||
"gitHead": "f252871fb892af015c99052e3728fb0a0535b012"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.35.3](https://github.com/certd/certd/compare/v1.35.2...v1.35.3) (2025-06-12)
|
||||
|
||||
**Note:** Version bump only for package @certd/basic
|
||||
|
||||
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
**Note:** Version bump only for package @certd/basic
|
||||
|
||||
@@ -1 +1 @@
|
||||
23:54
|
||||
00:27
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@certd/basic",
|
||||
"private": false,
|
||||
"version": "1.35.2",
|
||||
"version": "1.35.3",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
"module": "./dist/index.js",
|
||||
@@ -45,5 +45,5 @@
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "^5.4.2"
|
||||
},
|
||||
"gitHead": "a619f8a2fee68169ae3c57cf6e8de18141de17ba"
|
||||
"gitHead": "f252871fb892af015c99052e3728fb0a0535b012"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,12 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.35.3](https://github.com/certd/certd/compare/v1.35.2...v1.35.3) (2025-06-12)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* 修复消息内容存在()<>等括号情况下无法发送tg通知的bug ([c937583](https://github.com/certd/certd/commit/c937583a50d8513d76adead3648f83eee2fcc6f9))
|
||||
|
||||
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
**Note:** Version bump only for package @certd/pipeline
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@certd/pipeline",
|
||||
"private": false,
|
||||
"version": "1.35.2",
|
||||
"version": "1.35.3",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
"module": "./dist/index.js",
|
||||
@@ -17,8 +17,8 @@
|
||||
"pub": "npm publish"
|
||||
},
|
||||
"dependencies": {
|
||||
"@certd/basic": "^1.35.2",
|
||||
"@certd/plus-core": "^1.35.2",
|
||||
"@certd/basic": "^1.35.3",
|
||||
"@certd/plus-core": "^1.35.3",
|
||||
"dayjs": "^1.11.7",
|
||||
"lodash-es": "^4.17.21",
|
||||
"reflect-metadata": "^0.1.13"
|
||||
@@ -44,5 +44,5 @@
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "^5.4.2"
|
||||
},
|
||||
"gitHead": "a619f8a2fee68169ae3c57cf6e8de18141de17ba"
|
||||
"gitHead": "f252871fb892af015c99052e3728fb0a0535b012"
|
||||
}
|
||||
|
||||
@@ -121,9 +121,13 @@ export abstract class BaseNotification implements INotification {
|
||||
async onTestRequest() {
|
||||
return await this.doSend({
|
||||
userId: 0,
|
||||
title: "【Certd】测试通知【*.foo.com】,标题长度测试、测试、测试",
|
||||
content: `测试通知,*.foo.com
|
||||
title: "【标题】测试通知【*.foo.com】,标题长度测试、测试、测试",
|
||||
content: `测试通知
|
||||
域名测试: *.foo.com
|
||||
换行测试
|
||||
(括号测试)
|
||||
<尖括号测试>
|
||||
[中括号测试]
|
||||
`,
|
||||
pipeline: {
|
||||
id: 1,
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.35.3](https://github.com/certd/certd/compare/v1.35.2...v1.35.3) (2025-06-12)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-huawei
|
||||
|
||||
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-huawei
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@certd/lib-huawei",
|
||||
"private": false,
|
||||
"version": "1.35.2",
|
||||
"version": "1.35.3",
|
||||
"main": "./dist/bundle.js",
|
||||
"module": "./dist/bundle.js",
|
||||
"types": "./dist/d/index.d.ts",
|
||||
@@ -24,5 +24,5 @@
|
||||
"prettier": "^2.8.8",
|
||||
"tslib": "^2.8.1"
|
||||
},
|
||||
"gitHead": "a619f8a2fee68169ae3c57cf6e8de18141de17ba"
|
||||
"gitHead": "f252871fb892af015c99052e3728fb0a0535b012"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.35.3](https://github.com/certd/certd/compare/v1.35.2...v1.35.3) (2025-06-12)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-iframe
|
||||
|
||||
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-iframe
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@certd/lib-iframe",
|
||||
"private": false,
|
||||
"version": "1.35.2",
|
||||
"version": "1.35.3",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
"module": "./dist/index.js",
|
||||
@@ -31,5 +31,5 @@
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "^5.4.2"
|
||||
},
|
||||
"gitHead": "a619f8a2fee68169ae3c57cf6e8de18141de17ba"
|
||||
"gitHead": "f252871fb892af015c99052e3728fb0a0535b012"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.35.3](https://github.com/certd/certd/compare/v1.35.2...v1.35.3) (2025-06-12)
|
||||
|
||||
**Note:** Version bump only for package @certd/jdcloud
|
||||
|
||||
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
**Note:** Version bump only for package @certd/jdcloud
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@certd/jdcloud",
|
||||
"version": "1.35.2",
|
||||
"version": "1.35.3",
|
||||
"description": "jdcloud openApi sdk",
|
||||
"main": "./dist/bundle.js",
|
||||
"module": "./dist/bundle.js",
|
||||
@@ -61,5 +61,5 @@
|
||||
"fetch"
|
||||
]
|
||||
},
|
||||
"gitHead": "a619f8a2fee68169ae3c57cf6e8de18141de17ba"
|
||||
"gitHead": "f252871fb892af015c99052e3728fb0a0535b012"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.35.3](https://github.com/certd/certd/compare/v1.35.2...v1.35.3) (2025-06-12)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-k8s
|
||||
|
||||
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-k8s
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@certd/lib-k8s",
|
||||
"private": false,
|
||||
"version": "1.35.2",
|
||||
"version": "1.35.3",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
"module": "./dist/index.js",
|
||||
@@ -17,7 +17,7 @@
|
||||
"pub": "npm publish"
|
||||
},
|
||||
"dependencies": {
|
||||
"@certd/basic": "^1.35.2",
|
||||
"@certd/basic": "^1.35.3",
|
||||
"@kubernetes/client-node": "0.21.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -32,5 +32,5 @@
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "^5.4.2"
|
||||
},
|
||||
"gitHead": "a619f8a2fee68169ae3c57cf6e8de18141de17ba"
|
||||
"gitHead": "f252871fb892af015c99052e3728fb0a0535b012"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.35.3](https://github.com/certd/certd/compare/v1.35.2...v1.35.3) (2025-06-12)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-server
|
||||
|
||||
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
**Note:** Version bump only for package @certd/lib-server
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@certd/lib-server",
|
||||
"version": "1.35.2",
|
||||
"version": "1.35.3",
|
||||
"description": "midway with flyway, sql upgrade way ",
|
||||
"private": false,
|
||||
"type": "module",
|
||||
@@ -27,10 +27,10 @@
|
||||
],
|
||||
"license": "AGPL",
|
||||
"dependencies": {
|
||||
"@certd/acme-client": "^1.35.2",
|
||||
"@certd/basic": "^1.35.2",
|
||||
"@certd/pipeline": "^1.35.2",
|
||||
"@certd/plus-core": "^1.35.2",
|
||||
"@certd/acme-client": "^1.35.3",
|
||||
"@certd/basic": "^1.35.3",
|
||||
"@certd/pipeline": "^1.35.3",
|
||||
"@certd/plus-core": "^1.35.3",
|
||||
"@midwayjs/cache": "~3.14.0",
|
||||
"@midwayjs/core": "~3.20.3",
|
||||
"@midwayjs/i18n": "~3.20.3",
|
||||
@@ -61,5 +61,5 @@
|
||||
"typeorm": "^0.3.11",
|
||||
"typescript": "^5.4.2"
|
||||
},
|
||||
"gitHead": "a619f8a2fee68169ae3c57cf6e8de18141de17ba"
|
||||
"gitHead": "f252871fb892af015c99052e3728fb0a0535b012"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.35.3](https://github.com/certd/certd/compare/v1.35.2...v1.35.3) (2025-06-12)
|
||||
|
||||
**Note:** Version bump only for package @certd/midway-flyway-js
|
||||
|
||||
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
**Note:** Version bump only for package @certd/midway-flyway-js
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@certd/midway-flyway-js",
|
||||
"version": "1.35.2",
|
||||
"version": "1.35.3",
|
||||
"description": "midway with flyway, sql upgrade way ",
|
||||
"private": false,
|
||||
"type": "module",
|
||||
@@ -46,5 +46,5 @@
|
||||
"typeorm": "^0.3.11",
|
||||
"typescript": "^5.4.2"
|
||||
},
|
||||
"gitHead": "a619f8a2fee68169ae3c57cf6e8de18141de17ba"
|
||||
"gitHead": "f252871fb892af015c99052e3728fb0a0535b012"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.35.3](https://github.com/certd/certd/compare/v1.35.2...v1.35.3) (2025-06-12)
|
||||
|
||||
**Note:** Version bump only for package @certd/plugin-cert
|
||||
|
||||
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
**Note:** Version bump only for package @certd/plugin-cert
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@certd/plugin-cert",
|
||||
"private": false,
|
||||
"version": "1.35.2",
|
||||
"version": "1.35.3",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
@@ -16,10 +16,10 @@
|
||||
"pub": "npm publish"
|
||||
},
|
||||
"dependencies": {
|
||||
"@certd/acme-client": "^1.35.2",
|
||||
"@certd/basic": "^1.35.2",
|
||||
"@certd/pipeline": "^1.35.2",
|
||||
"@certd/plugin-lib": "^1.35.2",
|
||||
"@certd/acme-client": "^1.35.3",
|
||||
"@certd/basic": "^1.35.3",
|
||||
"@certd/pipeline": "^1.35.3",
|
||||
"@certd/plugin-lib": "^1.35.3",
|
||||
"@google-cloud/publicca": "^1.3.0",
|
||||
"dayjs": "^1.11.7",
|
||||
"jszip": "^3.10.1",
|
||||
@@ -43,5 +43,5 @@
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "^5.4.2"
|
||||
},
|
||||
"gitHead": "a619f8a2fee68169ae3c57cf6e8de18141de17ba"
|
||||
"gitHead": "f252871fb892af015c99052e3728fb0a0535b012"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.35.3](https://github.com/certd/certd/compare/v1.35.2...v1.35.3) (2025-06-12)
|
||||
|
||||
**Note:** Version bump only for package @certd/plugin-lib
|
||||
|
||||
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@certd/plugin-lib",
|
||||
"private": false,
|
||||
"version": "1.35.2",
|
||||
"version": "1.35.3",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
@@ -21,8 +21,8 @@
|
||||
"@alicloud/pop-core": "^1.7.10",
|
||||
"@alicloud/tea-util": "^1.4.10",
|
||||
"@aws-sdk/client-s3": "^3.787.0",
|
||||
"@certd/basic": "^1.35.2",
|
||||
"@certd/pipeline": "^1.35.2",
|
||||
"@certd/basic": "^1.35.3",
|
||||
"@certd/pipeline": "^1.35.3",
|
||||
"@kubernetes/client-node": "0.21.0",
|
||||
"ali-oss": "^6.22.0",
|
||||
"basic-ftp": "^5.0.5",
|
||||
@@ -53,5 +53,5 @@
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "^5.4.2"
|
||||
},
|
||||
"gitHead": "a619f8a2fee68169ae3c57cf6e8de18141de17ba"
|
||||
"gitHead": "f252871fb892af015c99052e3728fb0a0535b012"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,17 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## [1.35.3](https://github.com/certd/certd/compare/v1.35.2...v1.35.3) (2025-06-12)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* 修复重试次数设置无效的bug ([e2099ac](https://github.com/certd/certd/commit/e2099ac9ca344bc70bfa4219002e9138708973ae))
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* 授权列表类型颜色优化 ([1e86338](https://github.com/certd/certd/commit/1e863382d3d1a8cc95a1abf51e75bf6eaea3244f))
|
||||
* 支持雨云dns解析以及雨云证书更新 ([43c7a19](https://github.com/certd/certd/commit/43c7a1984926f5d4647760cc134bb0aede3a7b7a))
|
||||
|
||||
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@certd/ui-client",
|
||||
"version": "1.35.2",
|
||||
"version": "1.35.3",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "vite --open",
|
||||
@@ -30,10 +30,10 @@
|
||||
"@aws-sdk/client-s3": "^3.535.0",
|
||||
"@aws-sdk/s3-request-presigner": "^3.535.0",
|
||||
"@ctrl/tinycolor": "^4.1.0",
|
||||
"@fast-crud/fast-crud": "^1.25.8",
|
||||
"@fast-crud/fast-extends": "^1.25.8",
|
||||
"@fast-crud/ui-antdv4": "^1.25.8",
|
||||
"@fast-crud/ui-interface": "^1.25.8",
|
||||
"@fast-crud/fast-crud": "^1.25.13",
|
||||
"@fast-crud/fast-extends": "^1.25.13",
|
||||
"@fast-crud/ui-antdv4": "^1.25.13",
|
||||
"@fast-crud/ui-interface": "^1.25.13",
|
||||
"@iconify/tailwind": "^1.2.0",
|
||||
"@iconify/vue": "^4.1.1",
|
||||
"@manypkg/get-packages": "^2.2.2",
|
||||
@@ -102,8 +102,8 @@
|
||||
"zod-defaults": "^0.1.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@certd/lib-iframe": "^1.35.2",
|
||||
"@certd/pipeline": "^1.35.2",
|
||||
"@certd/lib-iframe": "^1.35.3",
|
||||
"@certd/pipeline": "^1.35.3",
|
||||
"@rollup/plugin-commonjs": "^25.0.7",
|
||||
"@rollup/plugin-node-resolve": "^15.2.3",
|
||||
"@types/chai": "^4.3.12",
|
||||
|
||||
@@ -334,6 +334,22 @@ function install(app: App, options: any = {}) {
|
||||
return columnProps;
|
||||
},
|
||||
});
|
||||
|
||||
registerMergeColumnPlugin({
|
||||
name: "reset-values-format-colors",
|
||||
order: 10,
|
||||
handle: (columnProps: ColumnCompositionProps) => {
|
||||
// 你可以在此处做你自己的处理
|
||||
// 比如你可以定义一个readonly的公共属性,处理该字段只读,不能编辑
|
||||
if (columnProps.column?.component?.name === "fs-values-format") {
|
||||
// 合并column配置
|
||||
if (!columnProps.column.component.autoColors) {
|
||||
columnProps.column.component.autoColors = ["green", "cyan", "blue", "purple", "geekblue"];
|
||||
}
|
||||
}
|
||||
return columnProps;
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export default {
|
||||
|
||||
@@ -49,38 +49,38 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
||||
pageRequest,
|
||||
addRequest,
|
||||
editRequest,
|
||||
delRequest
|
||||
delRequest,
|
||||
},
|
||||
toolbar: {
|
||||
show: false
|
||||
show: false,
|
||||
},
|
||||
search: {
|
||||
show: false
|
||||
show: false,
|
||||
},
|
||||
form: {
|
||||
wrapper: {
|
||||
width: "1050px"
|
||||
}
|
||||
width: "1050px",
|
||||
},
|
||||
},
|
||||
rowHandle: {
|
||||
width: 200
|
||||
width: 200,
|
||||
},
|
||||
table: {
|
||||
scroll: {
|
||||
x: 800
|
||||
x: 800,
|
||||
},
|
||||
rowSelection: {
|
||||
type: "radio",
|
||||
selectedRowKeys: selectedRowKey,
|
||||
onChange: onSelectChange
|
||||
onChange: onSelectChange,
|
||||
},
|
||||
customRow: (record: any) => {
|
||||
return {
|
||||
onClick: () => {
|
||||
onSelectChange([record.id]);
|
||||
} // 点击行
|
||||
}, // 点击行
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
columns: {
|
||||
id: {
|
||||
@@ -88,25 +88,25 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
||||
key: "id",
|
||||
type: "number",
|
||||
column: {
|
||||
width: 50
|
||||
width: 50,
|
||||
},
|
||||
form: {
|
||||
show: false
|
||||
}
|
||||
show: false,
|
||||
},
|
||||
},
|
||||
name: {
|
||||
title: "名称",
|
||||
search: {
|
||||
show: true
|
||||
show: true,
|
||||
},
|
||||
type: ["text"],
|
||||
form: {
|
||||
rules: [{ required: true, message: "请填写名称" }],
|
||||
helper: "随便填,当多个相同类型的授权时,便于区分"
|
||||
helper: "随便填,当多个相同类型的授权时,便于区分",
|
||||
},
|
||||
column: {
|
||||
width: 200
|
||||
}
|
||||
width: 200,
|
||||
},
|
||||
},
|
||||
from: {
|
||||
title: "级别",
|
||||
@@ -114,29 +114,29 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
||||
dict: dict({
|
||||
data: [
|
||||
{ label: "系统", value: "sys" },
|
||||
{ label: "用户", value: "user" }
|
||||
]
|
||||
{ label: "用户", value: "user" },
|
||||
],
|
||||
}),
|
||||
search: {
|
||||
show: false
|
||||
show: false,
|
||||
},
|
||||
form: {
|
||||
show: false
|
||||
show: false,
|
||||
},
|
||||
column: {
|
||||
width: 100,
|
||||
align: "center",
|
||||
component: {
|
||||
color: "auto"
|
||||
color: "auto",
|
||||
},
|
||||
order: 10
|
||||
order: 10,
|
||||
},
|
||||
valueBuilder: ({ row, key, value }) => {
|
||||
row[key] = row.userId > 0 ? "user" : "sys";
|
||||
}
|
||||
},
|
||||
},
|
||||
...commonColumnsDefine
|
||||
}
|
||||
}
|
||||
...commonColumnsDefine,
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
||||
await api.DoCheck(row.id);
|
||||
await crudExpose.doRefresh();
|
||||
notification.success({
|
||||
message: "检查完成",
|
||||
message: "检查任务已提交,请稍后刷新查看结果",
|
||||
});
|
||||
},
|
||||
},
|
||||
|
||||
@@ -137,7 +137,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
||||
await api.DoCheck(row.id);
|
||||
await crudExpose.doRefresh();
|
||||
notification.success({
|
||||
message: "检查任务已提交",
|
||||
message: "检查任务已提交,请稍后刷新查看结果",
|
||||
});
|
||||
},
|
||||
},
|
||||
|
||||
@@ -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.35.3](https://github.com/certd/certd/compare/v1.35.2...v1.35.3) (2025-06-12)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* 修复重试次数设置无效的bug ([e2099ac](https://github.com/certd/certd/commit/e2099ac9ca344bc70bfa4219002e9138708973ae))
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* 支持雨云dns解析 ([8354348](https://github.com/certd/certd/commit/83543487e7418683bd79cfe3b9e0d792bdb977f7))
|
||||
* 支持雨云dns解析以及雨云证书更新 ([43c7a19](https://github.com/certd/certd/commit/43c7a1984926f5d4647760cc134bb0aede3a7b7a))
|
||||
* github 版本检查支持执行脚本 ([bad3504](https://github.com/certd/certd/commit/bad3504d4a15e6989b967b66aa9da8c6981f25bf))
|
||||
|
||||
## [1.35.2](https://github.com/certd/certd/compare/v1.35.1...v1.35.2) (2025-06-09)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@certd/ui-server",
|
||||
"version": "1.35.2",
|
||||
"version": "1.35.3",
|
||||
"description": "fast-server base midway",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
@@ -42,20 +42,20 @@
|
||||
"@aws-sdk/client-cloudfront": "^3.699.0",
|
||||
"@aws-sdk/client-iam": "^3.699.0",
|
||||
"@aws-sdk/client-s3": "^3.705.0",
|
||||
"@certd/acme-client": "^1.35.2",
|
||||
"@certd/basic": "^1.35.2",
|
||||
"@certd/commercial-core": "^1.35.2",
|
||||
"@certd/acme-client": "^1.35.3",
|
||||
"@certd/basic": "^1.35.3",
|
||||
"@certd/commercial-core": "^1.35.3",
|
||||
"@certd/cv4pve-api-javascript": "^8.4.1",
|
||||
"@certd/jdcloud": "^1.35.2",
|
||||
"@certd/lib-huawei": "^1.35.2",
|
||||
"@certd/lib-k8s": "^1.35.2",
|
||||
"@certd/lib-server": "^1.35.2",
|
||||
"@certd/midway-flyway-js": "^1.35.2",
|
||||
"@certd/pipeline": "^1.35.2",
|
||||
"@certd/plugin-cert": "^1.35.2",
|
||||
"@certd/plugin-lib": "^1.35.2",
|
||||
"@certd/plugin-plus": "^1.35.2",
|
||||
"@certd/plus-core": "^1.35.2",
|
||||
"@certd/jdcloud": "^1.35.3",
|
||||
"@certd/lib-huawei": "^1.35.3",
|
||||
"@certd/lib-k8s": "^1.35.3",
|
||||
"@certd/lib-server": "^1.35.3",
|
||||
"@certd/midway-flyway-js": "^1.35.3",
|
||||
"@certd/pipeline": "^1.35.3",
|
||||
"@certd/plugin-cert": "^1.35.3",
|
||||
"@certd/plugin-lib": "^1.35.3",
|
||||
"@certd/plugin-plus": "^1.35.3",
|
||||
"@certd/plus-core": "^1.35.3",
|
||||
"@huaweicloud/huaweicloud-sdk-cdn": "^3.1.120",
|
||||
"@huaweicloud/huaweicloud-sdk-core": "^3.1.120",
|
||||
"@koa/cors": "^5.0.0",
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
import { Autoload, Config, Init, Inject, Scope, ScopeEnum } from '@midwayjs/core';
|
||||
import { PipelineService } from '../pipeline/service/pipeline-service.js';
|
||||
import { logger } from '@certd/basic';
|
||||
import { SysSettingsService } from '@certd/lib-server';
|
||||
import {SysSettingsService, SysSiteInfo} from '@certd/lib-server';
|
||||
import { SiteInfoService } from '../monitor/index.js';
|
||||
import { Cron } from '../cron/cron.js';
|
||||
import {UserSettingsService} from "../mine/service/user-settings-service.js";
|
||||
import {UserSiteMonitorSetting} from "../mine/service/models.js";
|
||||
import {getPlusInfo} from "@certd/plus-core";
|
||||
import dayjs from "dayjs";
|
||||
import {NotificationService} from "../pipeline/service/notification-service.js";
|
||||
import {UserService} from "../sys/authority/service/user-service.js";
|
||||
|
||||
@Autoload()
|
||||
@Scope(ScopeEnum.Request, { allowDowngrade: true })
|
||||
@@ -33,6 +37,13 @@ export class AutoCRegisterCron {
|
||||
@Inject()
|
||||
cron: Cron;
|
||||
|
||||
@Inject()
|
||||
notificationService: NotificationService;
|
||||
|
||||
@Inject()
|
||||
userService: UserService;
|
||||
|
||||
|
||||
@Init()
|
||||
async init() {
|
||||
logger.info('加载定时trigger开始');
|
||||
@@ -44,6 +55,9 @@ export class AutoCRegisterCron {
|
||||
// const metas = listPropertyDataFromClass(CLASS_KEY, this.echoPlugin);
|
||||
// console.log('metas', metas);
|
||||
await this.registerSiteMonitorCron();
|
||||
|
||||
|
||||
await this.registerPlusExpireCheckCron();
|
||||
}
|
||||
|
||||
async registerSiteMonitorCron() {
|
||||
@@ -69,4 +83,58 @@ export class AutoCRegisterCron {
|
||||
await this.siteInfoService.triggerJobOnce()
|
||||
}
|
||||
}
|
||||
|
||||
registerPlusExpireCheckCron(){
|
||||
// 添加plus即将到期检查任务
|
||||
this.cron.register({
|
||||
name: 'plus-expire-check',
|
||||
cron: `0 10 9 * * *`, // 一天只能检查一次,否则会重复发送通知
|
||||
job: async () => {
|
||||
const plusInfo = getPlusInfo()
|
||||
if (!plusInfo.originVipType || plusInfo.originVipType==="free" ) {
|
||||
return
|
||||
}
|
||||
let label ="专业版"
|
||||
if( plusInfo.originVipType === 'comm'){
|
||||
label = "商业版"
|
||||
}
|
||||
const siteInfo = await this.sysSettingsService.getSetting<SysSiteInfo>(SysSiteInfo)
|
||||
|
||||
const appTitle = siteInfo.title || "certd"
|
||||
const expiresDate = dayjs(plusInfo.expireTime).format("YYYY-MM-DD")
|
||||
// plusInfo.expireTime= dayjs("2025-06-10").valueOf()
|
||||
let expiresDays =Math.floor((plusInfo.expireTime - new Date().getTime())/ 1000 / 60 / 60 / 24)
|
||||
let title = ""
|
||||
let content =""
|
||||
if(expiresDays === 20 ||expiresDays === 10 || expiresDays === 3 || expiresDays === 1 || expiresDays === 0){
|
||||
title = `vip(${label})即将到期`
|
||||
content = `您的${appTitle} vip (${label})剩余${expiresDays}天(${expiresDate})到期,请及时续期,以免影响业务`
|
||||
}else if (expiresDays === -1 || expiresDays === -3 || expiresDays === -7) {
|
||||
title = `vip(${label})已过期`
|
||||
content = `您的${appTitle} vip (${label})已过期${Math.abs(expiresDays)}天(${expiresDate}),请尽快续期,以免影响业务`
|
||||
}
|
||||
if(title){
|
||||
logger.warn(title)
|
||||
logger.warn(content)
|
||||
const url = await this.notificationService.getBindUrl("");
|
||||
const adminUsers = await this.userService.getAdmins()
|
||||
for (const adminUser of adminUsers) {
|
||||
logger.info(`发送vip到期通知给管理员:${adminUser.username}`)
|
||||
await this.notificationService.send({
|
||||
useDefault: true,
|
||||
logger: logger,
|
||||
body:{
|
||||
title,
|
||||
content,
|
||||
errorMessage:title,
|
||||
url
|
||||
}
|
||||
},adminUser.id)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ export class SiteInfoService extends BaseService<SiteInfoEntity> {
|
||||
* @param notify
|
||||
* @param retryTimes
|
||||
*/
|
||||
async doCheck(site: SiteInfoEntity, notify = true, retryTimes = 3) {
|
||||
async doCheck(site: SiteInfoEntity, notify = true, retryTimes = null) {
|
||||
if (!site?.domain) {
|
||||
throw new Error("站点域名不能为空");
|
||||
}
|
||||
@@ -152,7 +152,7 @@ export class SiteInfoService extends BaseService<SiteInfoEntity> {
|
||||
|
||||
|
||||
//检查ip
|
||||
await this.checkAllIp(site);
|
||||
await this.checkAllIp(site,retryTimes);
|
||||
|
||||
if (!notify) {
|
||||
return;
|
||||
@@ -181,7 +181,7 @@ export class SiteInfoService extends BaseService<SiteInfoEntity> {
|
||||
}
|
||||
}
|
||||
|
||||
async checkAllIp(site: SiteInfoEntity) {
|
||||
async checkAllIp(site: SiteInfoEntity,retryTimes = null) {
|
||||
if (!site.ipCheck) {
|
||||
return;
|
||||
}
|
||||
@@ -225,7 +225,7 @@ export class SiteInfoService extends BaseService<SiteInfoEntity> {
|
||||
logger.error("send notify error", e);
|
||||
}
|
||||
};
|
||||
await this.siteIpService.checkAll(site, onFinished);
|
||||
await this.siteIpService.checkAll(site, retryTimes,onFinished);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -234,7 +234,7 @@ export class SiteInfoService extends BaseService<SiteInfoEntity> {
|
||||
* @param notify
|
||||
* @param retryTimes
|
||||
*/
|
||||
async check(id: number, notify = false, retryTimes = 3) {
|
||||
async check(id: number, notify = false, retryTimes = null) {
|
||||
const site = await this.info(id);
|
||||
if (!site) {
|
||||
throw new Error("站点不存在");
|
||||
@@ -326,7 +326,6 @@ export class SiteInfoService extends BaseService<SiteInfoEntity> {
|
||||
return setting;
|
||||
}
|
||||
for (const site of sites) {
|
||||
let retryTimes = 3;
|
||||
const setting = await getFromCache(site.userId)
|
||||
if (isCommon) {
|
||||
//公共的检查,排除有设置cron的用户
|
||||
@@ -334,8 +333,8 @@ export class SiteInfoService extends BaseService<SiteInfoEntity> {
|
||||
//设置了cron,跳过公共检查
|
||||
continue;
|
||||
}
|
||||
retryTimes = setting.retryTimes??retryTimes
|
||||
}
|
||||
let retryTimes = setting?.retryTimes
|
||||
this.doCheck(site,true,retryTimes).catch(e => {
|
||||
logger.error(`检查站点证书失败,${site.domain}`, e.message);
|
||||
});
|
||||
|
||||
@@ -88,7 +88,7 @@ export class SiteIpService extends BaseService<SiteIpEntity> {
|
||||
await this.updateIpCount(entity.id)
|
||||
}
|
||||
|
||||
async check(ipId: number, domain: string, port: number) {
|
||||
async check(ipId: number, domain: string, port: number,retryTimes = null) {
|
||||
if(!ipId){
|
||||
return
|
||||
}
|
||||
@@ -105,7 +105,7 @@ export class SiteIpService extends BaseService<SiteIpEntity> {
|
||||
const res = await siteTester.test({
|
||||
host: domain,
|
||||
port: port,
|
||||
retryTimes: 3,
|
||||
retryTimes : retryTimes??3,
|
||||
ipAddress: entity.ipAddress
|
||||
});
|
||||
|
||||
@@ -154,7 +154,7 @@ export class SiteIpService extends BaseService<SiteIpEntity> {
|
||||
}
|
||||
}
|
||||
|
||||
async checkAll(siteInfo: SiteInfoEntity,onFinish?: (e: any) => void) {
|
||||
async checkAll(siteInfo: SiteInfoEntity,retryTimes = null,onFinish?: (e: any) => void) {
|
||||
const siteId = siteInfo.id;
|
||||
const ips = await this.repository.find({
|
||||
where: {
|
||||
@@ -167,7 +167,7 @@ export class SiteIpService extends BaseService<SiteIpEntity> {
|
||||
for (const item of ips) {
|
||||
const func = async () => {
|
||||
try {
|
||||
return await this.check(item.id, domain, port);
|
||||
return await this.check(item.id, domain, port,retryTimes);
|
||||
} catch (e) {
|
||||
logger.error("check site item error", e);
|
||||
return {
|
||||
|
||||
@@ -18,7 +18,7 @@ export type SiteTestRes = {
|
||||
export class SiteTester {
|
||||
async test(req: SiteTestReq): Promise<SiteTestRes> {
|
||||
logger.info("测试站点:", JSON.stringify(req));
|
||||
const maxRetryTimes = req.retryTimes ?? 3;
|
||||
const maxRetryTimes = req.retryTimes==null ? 3 : req.retryTimes;
|
||||
let tryCount = 0;
|
||||
let result: SiteTestRes = {};
|
||||
while (true) {
|
||||
@@ -28,12 +28,12 @@ export class SiteTester {
|
||||
} catch (e) {
|
||||
tryCount++;
|
||||
if (tryCount > maxRetryTimes) {
|
||||
logger.error(`测试站点出错,重试${maxRetryTimes}次。`, e.message);
|
||||
logger.error(`测试站点出错,已超过最大重试次数(${maxRetryTimes})`, e.message);
|
||||
throw e;
|
||||
}
|
||||
//指数退避
|
||||
const time = 2 ** tryCount;
|
||||
logger.error(`测试站点出错,${time}s后重试`, e);
|
||||
logger.error(`测试站点出错,${time}s后重试(${tryCount}/${maxRetryTimes})`, e);
|
||||
await utils.sleep(time * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core';
|
||||
import { InjectEntityModel } from '@midwayjs/typeorm';
|
||||
import { MoreThan, Not, Repository } from 'typeorm';
|
||||
import {In, MoreThan, Not, Repository} from 'typeorm';
|
||||
import { UserEntity } from '../entity/user.js';
|
||||
import * as _ from 'lodash-es';
|
||||
import { BaseService, CommonException, Constants, FileService, SysInstallInfo, SysSettingsService } from '@certd/lib-server';
|
||||
@@ -15,6 +15,8 @@ import { DbAdapter } from '../../../db/index.js';
|
||||
import { simpleNanoId, utils } from '@certd/basic';
|
||||
|
||||
export type RegisterType = 'username' | 'mobile' | 'email';
|
||||
|
||||
export const AdminRoleId = 1
|
||||
/**
|
||||
* 系统用户
|
||||
*/
|
||||
@@ -275,7 +277,7 @@ export class UserService extends BaseService<UserEntity> {
|
||||
},
|
||||
});
|
||||
const roleIds = userRoles.map(item => item.roleId);
|
||||
if (roleIds.includes(1)) {
|
||||
if (roleIds.includes(AdminRoleId)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -313,4 +315,23 @@ export class UserService extends BaseService<UserEntity> {
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
async getAdmins() {
|
||||
const admins = await this.userRoleService.find({
|
||||
where: {
|
||||
roleId: AdminRoleId,
|
||||
},
|
||||
});
|
||||
|
||||
const userIds = admins.map(item => item.userId);
|
||||
return await this.repository.find({
|
||||
where: {
|
||||
id: In(userIds),
|
||||
status: 1,
|
||||
},
|
||||
order: {
|
||||
updateTime: 'DESC',
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,3 +24,4 @@ export * from './plugin-notification/index.js'
|
||||
export * from './plugin-flex/index.js'
|
||||
export * from './plugin-farcdn/index.js'
|
||||
export * from './plugin-fnos/index.js'
|
||||
export * from './plugin-rainyun/index.js'
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput, TaskOutput } from "@certd/pipeline";
|
||||
import { GithubAccess } from "../access.js";
|
||||
import {SshClient} from "@certd/plugin-lib";
|
||||
|
||||
@IsTaskPlugin({
|
||||
//命名规范,插件类型+功能(就是目录plugin-demo中的demo),大写字母开头,驼峰命名
|
||||
@@ -56,6 +57,31 @@ export class GithubCheckRelease extends AbstractTaskPlugin {
|
||||
lastVersion?: string;
|
||||
|
||||
|
||||
@TaskInput({
|
||||
title: '主机登录配置',
|
||||
helper: '登录',
|
||||
component: {
|
||||
name: 'access-selector',
|
||||
type: 'ssh',
|
||||
},
|
||||
required: false,
|
||||
})
|
||||
sshAccessId!: string;
|
||||
|
||||
@TaskInput({
|
||||
title: 'shell脚本命令',
|
||||
component: {
|
||||
name: 'a-textarea',
|
||||
vModel: 'value',
|
||||
rows: 6,
|
||||
placeholder: `#拉取最新版镜像\ndocker pull greper/certd:latest \n#重建容器 \nnohup sh -c 'sleep 10; cd ~/deploy/certd/ ; docker compose down; docker compose up -d' >/dev/null & `,
|
||||
},
|
||||
helper: '有新版本后执行命令,比如:拉取最新版镜像,然后重建容器\n注意:自己升级自己需要使用nobup配合sleep',
|
||||
required: false,
|
||||
})
|
||||
script!: string;
|
||||
|
||||
|
||||
//插件实例化时执行的方法
|
||||
async onInstance() {
|
||||
}
|
||||
@@ -100,6 +126,19 @@ export class GithubCheckRelease extends AbstractTaskPlugin {
|
||||
})
|
||||
}
|
||||
|
||||
if (this.script != null && this.script.trim() != "") {
|
||||
const connectConf = await this.getAccess(this.sshAccessId);
|
||||
const sshClient = new SshClient(this.logger);
|
||||
const scripts = this.script.split('\n');
|
||||
await sshClient.exec({
|
||||
connectConf,
|
||||
script: scripts,
|
||||
env: {
|
||||
REPO: this.repoName,
|
||||
LAST_VERSION: this.lastVersion,
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,8 @@ export class TelegramNotification extends BaseNotification {
|
||||
skipSslVerify: boolean;
|
||||
|
||||
replaceText(text: string) {
|
||||
return text.replaceAll('.', '\\.').replaceAll('*', '\\*');
|
||||
// .*()<> 等都需要用\\进行替换
|
||||
return text.replace(/[\\.*()<>]/g, '\\$&');
|
||||
}
|
||||
async send(body: NotificationBody) {
|
||||
if (!this.botToken || !this.chatId) {
|
||||
|
||||
152
packages/ui/certd-server/src/plugins/plugin-rainyun/access.ts
Normal file
152
packages/ui/certd-server/src/plugins/plugin-rainyun/access.ts
Normal file
@@ -0,0 +1,152 @@
|
||||
import {AccessInput, BaseAccess, IsAccess} from "@certd/pipeline";
|
||||
import {HttpRequestConfig} from "@certd/basic";
|
||||
import { CertInfo } from "@certd/plugin-cert";
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
@IsAccess({
|
||||
name: "rainyun",
|
||||
title: "雨云授权",
|
||||
desc: "https://app.rainyun.com/",
|
||||
icon: "svg:icon-lucky"
|
||||
})
|
||||
export class RainyunAccess extends BaseAccess {
|
||||
|
||||
|
||||
@AccessInput({
|
||||
title: "ApiKey",
|
||||
component: {
|
||||
placeholder: "api-key",
|
||||
component: {
|
||||
name: "a-input",
|
||||
vModel: "value"
|
||||
}
|
||||
},
|
||||
helper:"https://app.rainyun.com/account/settings/api-key",
|
||||
encrypt: true,
|
||||
required: true
|
||||
})
|
||||
apiKey!: string;
|
||||
|
||||
|
||||
|
||||
@AccessInput({
|
||||
title: "测试",
|
||||
component: {
|
||||
name: "api-test",
|
||||
action: "TestRequest"
|
||||
},
|
||||
helper: "点击测试接口是否正常"
|
||||
})
|
||||
testRequest = true;
|
||||
|
||||
async onTestRequest() {
|
||||
await this.getDomainList({limit:1});
|
||||
return "ok"
|
||||
}
|
||||
|
||||
// {"columnFilters":{"domains.Domain":"domain"},"sort":[],"page":1,"perPage":20}
|
||||
async getDomainList(req:{offset?:number,limit?:number,query?:string}){
|
||||
const size = req.limit ?? 20;
|
||||
const offset = req.offset ?? 0;
|
||||
let page = Math.floor(offset / size);
|
||||
if(offset % size === 0 ){
|
||||
page++
|
||||
}
|
||||
const options ={
|
||||
page: page,
|
||||
perPage: size,
|
||||
columnFilters: {
|
||||
"domains.Domain": req.query??""
|
||||
},
|
||||
}
|
||||
const res = await this.doRequest({
|
||||
url: `/product/domain/?options=${encodeURIComponent(JSON.stringify(options))}`,
|
||||
method: "GET",
|
||||
});
|
||||
|
||||
return {
|
||||
total: res.TotalRecords,
|
||||
list: res.Records || [],
|
||||
limit: size,
|
||||
offset: offset
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async getCertList(req:{offset?:number,limit?:number,query?:string}){
|
||||
const size = req.limit ?? 20;
|
||||
const offset = req.offset ?? 0;
|
||||
let page = Math.floor(offset / size);
|
||||
if(offset % size === 0 ){
|
||||
page++
|
||||
}
|
||||
const options ={
|
||||
columnFilters: {
|
||||
Domain: req.query??""
|
||||
},
|
||||
sort:[],
|
||||
page: page,
|
||||
perPage: size,
|
||||
|
||||
}
|
||||
const res = await this.doRequest({
|
||||
url: `product/sslcenter/?options=${encodeURIComponent(JSON.stringify(options))}`,
|
||||
method: "GET",
|
||||
});
|
||||
|
||||
return {
|
||||
total: res.TotalRecords,
|
||||
list: res.Records || [],
|
||||
limit: size,
|
||||
offset: offset
|
||||
}
|
||||
}
|
||||
|
||||
async doCertReplace(req:{certId:number,cert:CertInfo}){
|
||||
|
||||
// /product/sslcenter/{id}
|
||||
return await this.doRequest({
|
||||
url: `product/sslcenter/${req.certId}`,
|
||||
method: "PUT",
|
||||
data: {
|
||||
cert: req.cert.crt,
|
||||
key: req.cert.key,
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
async getDomainId(domain:string){
|
||||
const res = await this.getDomainList({query: domain,limit:1});
|
||||
if (res.list.length === 0) {
|
||||
throw new Error(`域名${domain}不存在` );
|
||||
}
|
||||
return res.list[0].id;
|
||||
}
|
||||
|
||||
async doRequest(req:HttpRequestConfig){
|
||||
const res = await this.ctx.http.request({
|
||||
url: req.url,
|
||||
baseURL:"https://api.v2.rainyun.com",
|
||||
method: req.method|| "POST",
|
||||
data: req.data,
|
||||
params: req.params,
|
||||
headers:{
|
||||
"X-Api-Key": this.apiKey
|
||||
},
|
||||
// httpProxy: this.httpProxy||undefined,
|
||||
});
|
||||
|
||||
if (res.code === 200) {
|
||||
return res.data;
|
||||
}
|
||||
throw new Error(res.message || res);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
new RainyunAccess();
|
||||
@@ -0,0 +1,66 @@
|
||||
import { AbstractDnsProvider, CreateRecordOptions, IsDnsProvider, RemoveRecordOptions } from "@certd/plugin-cert";
|
||||
import { RainyunAccess } from "./access.js";
|
||||
|
||||
@IsDnsProvider({
|
||||
name: "rainyun",
|
||||
title: "雨云",
|
||||
desc: "雨云DNS解析提供商",
|
||||
accessType: "rainyun",
|
||||
icon: "svg:icon-lucky",
|
||||
order: 0
|
||||
})
|
||||
export class RainyunDnsProvider extends AbstractDnsProvider {
|
||||
|
||||
client: any;
|
||||
|
||||
async onInstance() {
|
||||
|
||||
}
|
||||
|
||||
async createRecord(options: CreateRecordOptions): Promise<any> {
|
||||
|
||||
const access: RainyunAccess = this.ctx.access as RainyunAccess;
|
||||
|
||||
const domainId = await access.getDomainId(options.domain);
|
||||
if (!domainId) {
|
||||
throw new Error(`域名${options.domain}未找到`);
|
||||
}
|
||||
|
||||
const { fullRecord, hostRecord, value, type, domain } = options;
|
||||
this.logger.info("添加域名解析:", fullRecord, value, domain);
|
||||
|
||||
const ret = await access.doRequest({
|
||||
url: `/product/domain/${domainId}/dns`,
|
||||
method: "POST",
|
||||
data: {
|
||||
host: hostRecord,
|
||||
value: value,
|
||||
level: 1,
|
||||
type: type,
|
||||
line: "DEFAULT",
|
||||
ttl: 60
|
||||
}
|
||||
});
|
||||
this.logger.info("添加域名解析成功:", JSON.stringify(options), ret);
|
||||
return {
|
||||
recordId: ret,
|
||||
domainId: domainId
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
||||
async removeRecord(options: RemoveRecordOptions<any>): Promise<any> {
|
||||
const { fullRecord, value } = options.recordReq;
|
||||
const access: RainyunAccess = this.ctx.access as RainyunAccess;
|
||||
const record = options.recordRes;
|
||||
const ret = await access.doRequest({
|
||||
url: `/product/domain/${record.domainId}/dns?record_id=${record.recordId}`,
|
||||
method: "DELETE",
|
||||
});
|
||||
this.logger.info("删除域名解析成功:", fullRecord, value, ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
new RainyunDnsProvider();
|
||||
@@ -0,0 +1,2 @@
|
||||
export * from "./plugins/index.js";
|
||||
export * from "./access.js";
|
||||
@@ -0,0 +1,113 @@
|
||||
import { AbstractTaskPlugin, IsTaskPlugin, PageReq, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline";
|
||||
import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert";
|
||||
import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib";
|
||||
import { RainyunAccess } from "../access.js";
|
||||
|
||||
@IsTaskPlugin({
|
||||
//命名规范,插件类型+功能(就是目录plugin-demo中的demo),大写字母开头,驼峰命名
|
||||
name: "RainyunRefreshCert",
|
||||
title: "雨云-更新证书",
|
||||
desc: "app.rainyun.com",
|
||||
icon: "svg:icon-lucky",
|
||||
//插件分组
|
||||
group: pluginGroups.cdn.key,
|
||||
needPlus: false,
|
||||
default: {
|
||||
//默认值配置照抄即可
|
||||
strategy: {
|
||||
runStrategy: RunStrategy.SkipWhenSucceed
|
||||
}
|
||||
}
|
||||
})
|
||||
//类名规范,跟上面插件名称(name)一致
|
||||
export class RainyunRefreshCert extends AbstractTaskPlugin {
|
||||
//证书选择,此项必须要有
|
||||
@TaskInput({
|
||||
title: "域名证书",
|
||||
helper: "请选择前置任务输出的域名证书",
|
||||
component: {
|
||||
name: "output-selector",
|
||||
from: [...CertApplyPluginNames]
|
||||
}
|
||||
// required: true, // 必填
|
||||
})
|
||||
cert!: CertInfo;
|
||||
|
||||
@TaskInput(createCertDomainGetterInputDefine({ props: { required: false } }))
|
||||
certDomains!: string[];
|
||||
|
||||
//授权选择框
|
||||
@TaskInput({
|
||||
title: "雨云授权",
|
||||
component: {
|
||||
name: "access-selector",
|
||||
type: "rainyun" //固定授权类型
|
||||
},
|
||||
required: true //必填
|
||||
})
|
||||
accessId!: string;
|
||||
//
|
||||
|
||||
@TaskInput(
|
||||
createRemoteSelectInputDefine({
|
||||
title: "证书Id",
|
||||
helper: "要更新的rainyun证书id",
|
||||
|
||||
action: RainyunRefreshCert.prototype.onGetCertList.name
|
||||
})
|
||||
)
|
||||
certList!: number[];
|
||||
|
||||
//插件实例化时执行的方法
|
||||
async onInstance() {
|
||||
}
|
||||
|
||||
//插件执行方法
|
||||
async execute(): Promise<void> {
|
||||
const access = await this.getAccess<RainyunAccess>(this.accessId);
|
||||
|
||||
for (const item of this.certList) {
|
||||
this.logger.info(`----------- 开始更新证书:${item}`);
|
||||
await access.doCertReplace({
|
||||
certId: item,
|
||||
cert: this.cert
|
||||
});
|
||||
this.logger.info(`----------- 更新证书${item}成功`);
|
||||
}
|
||||
|
||||
this.logger.info("部署完成");
|
||||
}
|
||||
|
||||
async onGetCertList(req: PageReq = {}) {
|
||||
const access = await this.getAccess<RainyunAccess>(this.accessId);
|
||||
|
||||
const offset = req.offset ?? 0;
|
||||
const limit = req.limit ?? 100;
|
||||
const res = await access.getCertList({
|
||||
offset,
|
||||
limit
|
||||
});
|
||||
const total = res.total;
|
||||
const list = res.list;
|
||||
if (!list || list.length === 0) {
|
||||
throw new Error("没有找到证书,请先在控制台上传一次证书且关联站点");
|
||||
}
|
||||
|
||||
const options = list.map((item: any) => {
|
||||
return {
|
||||
label: `${item.Domain}<${item.ID}>`,
|
||||
value: item.ID,
|
||||
domain: item.Domain.split(",").map(item => item.trim())
|
||||
};
|
||||
});
|
||||
return {
|
||||
list: this.ctx.utils.options.buildGroupOptions(options, this.certDomains),
|
||||
total: total,
|
||||
offset: offset,
|
||||
limit: limit
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
//实例化一下,注册插件
|
||||
new RainyunRefreshCert();
|
||||
130
pnpm-lock.yaml
generated
130
pnpm-lock.yaml
generated
@@ -46,7 +46,7 @@ importers:
|
||||
packages/core/acme-client:
|
||||
dependencies:
|
||||
'@certd/basic':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../basic
|
||||
'@peculiar/x509':
|
||||
specifier: ^1.11.0
|
||||
@@ -207,10 +207,10 @@ importers:
|
||||
packages/core/pipeline:
|
||||
dependencies:
|
||||
'@certd/basic':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../basic
|
||||
'@certd/plus-core':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../pro/plus-core
|
||||
dayjs:
|
||||
specifier: ^1.11.7
|
||||
@@ -415,7 +415,7 @@ importers:
|
||||
packages/libs/lib-k8s:
|
||||
dependencies:
|
||||
'@certd/basic':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/basic
|
||||
'@kubernetes/client-node':
|
||||
specifier: 0.21.0
|
||||
@@ -455,16 +455,16 @@ importers:
|
||||
packages/libs/lib-server:
|
||||
dependencies:
|
||||
'@certd/acme-client':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/acme-client
|
||||
'@certd/basic':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/basic
|
||||
'@certd/pipeline':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/pipeline
|
||||
'@certd/plus-core':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../pro/plus-core
|
||||
'@midwayjs/cache':
|
||||
specifier: ~3.14.0
|
||||
@@ -607,16 +607,16 @@ importers:
|
||||
packages/plugins/plugin-cert:
|
||||
dependencies:
|
||||
'@certd/acme-client':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/acme-client
|
||||
'@certd/basic':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/basic
|
||||
'@certd/pipeline':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/pipeline
|
||||
'@certd/plugin-lib':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../plugin-lib
|
||||
'@google-cloud/publicca':
|
||||
specifier: ^1.3.0
|
||||
@@ -698,10 +698,10 @@ importers:
|
||||
specifier: ^3.787.0
|
||||
version: 3.810.0(aws-crt@1.26.2)
|
||||
'@certd/basic':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/basic
|
||||
'@certd/pipeline':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/pipeline
|
||||
'@kubernetes/client-node':
|
||||
specifier: 0.21.0
|
||||
@@ -789,19 +789,19 @@ importers:
|
||||
packages/pro/commercial-core:
|
||||
dependencies:
|
||||
'@certd/basic':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/basic
|
||||
'@certd/lib-server':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../libs/lib-server
|
||||
'@certd/pipeline':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/pipeline
|
||||
'@certd/plugin-plus':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../plugin-plus
|
||||
'@certd/plus-core':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../plus-core
|
||||
'@midwayjs/core':
|
||||
specifier: ~3.20.3
|
||||
@@ -886,22 +886,22 @@ importers:
|
||||
specifier: ^1.0.2
|
||||
version: 1.0.3
|
||||
'@certd/basic':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/basic
|
||||
'@certd/lib-k8s':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../libs/lib-k8s
|
||||
'@certd/pipeline':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/pipeline
|
||||
'@certd/plugin-cert':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../plugins/plugin-cert
|
||||
'@certd/plugin-lib':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../plugins/plugin-lib
|
||||
'@certd/plus-core':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../plus-core
|
||||
ali-oss:
|
||||
specifier: ^6.21.0
|
||||
@@ -1004,7 +1004,7 @@ importers:
|
||||
packages/pro/plus-core:
|
||||
dependencies:
|
||||
'@certd/basic':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/basic
|
||||
dayjs:
|
||||
specifier: ^1.11.7
|
||||
@@ -1083,17 +1083,17 @@ importers:
|
||||
specifier: ^4.1.0
|
||||
version: 4.1.0
|
||||
'@fast-crud/fast-crud':
|
||||
specifier: ^1.25.8
|
||||
version: 1.25.11(vue@3.5.14(typescript@5.8.3))
|
||||
specifier: ^1.25.13
|
||||
version: 1.25.13(vue@3.5.14(typescript@5.8.3))
|
||||
'@fast-crud/fast-extends':
|
||||
specifier: ^1.25.8
|
||||
version: 1.25.11(aws-crt@1.26.2)(vue@3.5.14(typescript@5.8.3))
|
||||
specifier: ^1.25.13
|
||||
version: 1.25.13(aws-crt@1.26.2)(vue@3.5.14(typescript@5.8.3))
|
||||
'@fast-crud/ui-antdv4':
|
||||
specifier: ^1.25.8
|
||||
version: 1.25.11
|
||||
specifier: ^1.25.13
|
||||
version: 1.25.13
|
||||
'@fast-crud/ui-interface':
|
||||
specifier: ^1.25.8
|
||||
version: 1.25.11
|
||||
specifier: ^1.25.13
|
||||
version: 1.25.13
|
||||
'@iconify/tailwind':
|
||||
specifier: ^1.2.0
|
||||
version: 1.2.0
|
||||
@@ -1294,10 +1294,10 @@ importers:
|
||||
version: 0.1.3(zod@3.24.4)
|
||||
devDependencies:
|
||||
'@certd/lib-iframe':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../libs/lib-iframe
|
||||
'@certd/pipeline':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/pipeline
|
||||
'@rollup/plugin-commonjs':
|
||||
specifier: ^25.0.7
|
||||
@@ -1480,46 +1480,46 @@ importers:
|
||||
specifier: ^3.705.0
|
||||
version: 3.810.0(aws-crt@1.26.2)
|
||||
'@certd/acme-client':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/acme-client
|
||||
'@certd/basic':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/basic
|
||||
'@certd/commercial-core':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../pro/commercial-core
|
||||
'@certd/cv4pve-api-javascript':
|
||||
specifier: ^8.4.1
|
||||
version: 8.4.1
|
||||
'@certd/jdcloud':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../libs/lib-jdcloud
|
||||
'@certd/lib-huawei':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../libs/lib-huawei
|
||||
'@certd/lib-k8s':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../libs/lib-k8s
|
||||
'@certd/lib-server':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../libs/lib-server
|
||||
'@certd/midway-flyway-js':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../libs/midway-flyway-js
|
||||
'@certd/pipeline':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../core/pipeline
|
||||
'@certd/plugin-cert':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../plugins/plugin-cert
|
||||
'@certd/plugin-lib':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../plugins/plugin-lib
|
||||
'@certd/plugin-plus':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../pro/plugin-plus
|
||||
'@certd/plus-core':
|
||||
specifier: ^1.35.1
|
||||
specifier: ^1.35.2
|
||||
version: link:../../pro/plus-core
|
||||
'@huaweicloud/huaweicloud-sdk-cdn':
|
||||
specifier: ^3.1.120
|
||||
@@ -3393,17 +3393,17 @@ packages:
|
||||
resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
|
||||
'@fast-crud/fast-crud@1.25.11':
|
||||
resolution: {integrity: sha512-goqkB2ve05TSZ1pEXZZpyK2XuTn2jAM/0CYwYIUlZaQzY0xaKkh+7/8/wX/ZRsAV+Ppee6FEnnbEZaIA3YUb8w==}
|
||||
'@fast-crud/fast-crud@1.25.13':
|
||||
resolution: {integrity: sha512-2UDp0Wzsf9CXA9qJnyYjHYOR2usBRPij/8/15ksyFhBPLC8JJgXHFUae0lXqhib6QCV0CYrF8t7REEtxKmkUfw==}
|
||||
|
||||
'@fast-crud/fast-extends@1.25.11':
|
||||
resolution: {integrity: sha512-TmH/SpDeHmKkcKmXlBj93R/ibhmtf7yki1z2wEIX1bEpAi0Nb5O5YwZXZO4sbze3LfTDAJhP1H74eerp009qWQ==}
|
||||
'@fast-crud/fast-extends@1.25.13':
|
||||
resolution: {integrity: sha512-Hn4p/sdO96KB/+umfrZhgPM3ZbaU78uMamjl+UKhyEB5U42jN45XSEsP4ax1IHFCpvxLvTMnmTzRHqkbgTS18g==}
|
||||
|
||||
'@fast-crud/ui-antdv4@1.25.11':
|
||||
resolution: {integrity: sha512-0MceuaHdMizkRkTbRTNAqeWbJd6CkVsRPXYsOYBtM6L7HrtOJ/a/xqVlZaZyHlNqp2ZgwUV4eU4b0xWtPgksLA==}
|
||||
'@fast-crud/ui-antdv4@1.25.13':
|
||||
resolution: {integrity: sha512-3BDfZRGH9rBEYKw6hUyXD1kI9XtUFl9U/dX4PDH98i1tMg3GhUJ51gDZjZ8as9HsMrCE88m8ZUPjjQU/HLVY1w==}
|
||||
|
||||
'@fast-crud/ui-interface@1.25.11':
|
||||
resolution: {integrity: sha512-/mu0fGNfugsl3NgoP7sEPDm8UGWXf4o8s6JxuhUIspS10YKwRs+1HgrI59YxRYq34/L2oGkCBVyPC0traT7kZA==}
|
||||
'@fast-crud/ui-interface@1.25.13':
|
||||
resolution: {integrity: sha512-hWjN6j6H2e9YxtqKL+fpls4/TTLZX6TuazjuxE+VoH0EdJF9QRk/D8GLxORGvnRgPABClbQvVPyofb6rPHjbAw==}
|
||||
|
||||
'@fidm/asn1@1.0.4':
|
||||
resolution: {integrity: sha512-esd1jyNvRb2HVaQGq2Gg8Z0kbQPXzV9Tq5Z14KNIov6KfFD6PTaRIO8UpcsYiTNzOqJpmyzWgVTrUwFV3UF4TQ==}
|
||||
@@ -14546,10 +14546,10 @@ snapshots:
|
||||
'@aws-sdk/crt-loader': 3.810.0
|
||||
'@aws-sdk/signature-v4-multi-region': 3.810.0
|
||||
'@aws-sdk/types': 3.804.0
|
||||
'@smithy/querystring-parser': 4.0.2
|
||||
'@smithy/signature-v4': 5.1.0
|
||||
'@smithy/types': 4.2.0
|
||||
'@smithy/util-middleware': 4.0.2
|
||||
'@smithy/querystring-parser': 4.0.4
|
||||
'@smithy/signature-v4': 5.1.2
|
||||
'@smithy/types': 4.3.1
|
||||
'@smithy/util-middleware': 4.0.4
|
||||
tslib: 2.8.1
|
||||
transitivePeerDependencies:
|
||||
- bufferutil
|
||||
@@ -15935,7 +15935,7 @@ snapshots:
|
||||
|
||||
'@eslint/js@8.57.0': {}
|
||||
|
||||
'@fast-crud/fast-crud@1.25.11(vue@3.5.14(typescript@5.8.3))':
|
||||
'@fast-crud/fast-crud@1.25.13(vue@3.5.14(typescript@5.8.3))':
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
file-saver: 2.0.5
|
||||
@@ -15945,7 +15945,7 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- vue
|
||||
|
||||
'@fast-crud/fast-extends@1.25.11(aws-crt@1.26.2)(vue@3.5.14(typescript@5.8.3))':
|
||||
'@fast-crud/fast-extends@1.25.13(aws-crt@1.26.2)(vue@3.5.14(typescript@5.8.3))':
|
||||
dependencies:
|
||||
'@aws-sdk/client-s3': 3.810.0(aws-crt@1.26.2)
|
||||
'@aws-sdk/s3-request-presigner': 3.810.0
|
||||
@@ -15977,9 +15977,9 @@ snapshots:
|
||||
- utf-8-validate
|
||||
- vue
|
||||
|
||||
'@fast-crud/ui-antdv4@1.25.11': {}
|
||||
'@fast-crud/ui-antdv4@1.25.13': {}
|
||||
|
||||
'@fast-crud/ui-interface@1.25.11':
|
||||
'@fast-crud/ui-interface@1.25.13':
|
||||
dependencies:
|
||||
lodash-es: 4.17.21
|
||||
|
||||
|
||||
Reference in New Issue
Block a user