Compare commits

...

8 Commits

Author SHA1 Message Date
xiaojunnuo
ef46aeae6f v1.36.20 2025-09-14 00:59:40 +08:00
xiaojunnuo
7edb3fd856 build: prepare to build 2025-09-14 00:56:22 +08:00
xiaojunnuo
43b79778ea fix: 修复授权类型和名称字段排到最后的bug 2025-09-14 00:47:30 +08:00
xiaojunnuo
37f1f53b56 chore: 数据库同步 2025-09-14 00:40:38 +08:00
xiaojunnuo
67bd1cdcd9 chore: 2025-09-14 00:22:17 +08:00
xiaojunnuo
506385e5a2 fix: 修复证书手动托管时新上传的证书无效的bug 2025-09-13 23:59:16 +08:00
ahe
2d4586b1c4 perf: 证书到期剩余天数进度条根据实际证书有效期计算 (#528) nicheng-he
* Create FUNDING.yml

* Update FUNDING.yml

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README_en.md

* 证书到期剩余天数进度条根据实际证书时间计算

---------

Co-authored-by: greper <xiaojunnuo@qq.com>
2025-09-13 23:40:06 +08:00
xiaojunnuo
1476b9cb9c chore: 设置tab页签标题中英文优化 2025-09-13 23:33:18 +08:00
62 changed files with 461 additions and 151 deletions

5
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,5 @@
# These are supported funding model platforms
github: greper
buy_me_a_coffee: greper
custom: ['https://afdian.com/a/greper']

View File

@@ -3,6 +3,26 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.36.20](https://github.com/certd/certd/compare/v1.36.19...v1.36.20) (2025-09-13)
### Bug Fixes
* 修复商业版退出登录后丢失站点个性化设置的bug ([d75dd05](https://github.com/certd/certd/commit/d75dd058d65c85f80c49e1fa7a910e6c6f08e824))
* 修复授权类型和名称字段排到最后的bug ([43b7977](https://github.com/certd/certd/commit/43b79778ea9034065f6a15af3296274315597c6b))
* 修复证书监控某些情况下报 options.lookup不能为null的bug ([d2ecfe5](https://github.com/certd/certd/commit/d2ecfe5491b2639eb30b5cae293af6062d58bb9f))
* 修复证书手动托管时新上传的证书无效的bug ([506385e](https://github.com/certd/certd/commit/506385e5a2600887fe30854e0713583caaa2e689))
* 修复secret patch 类型多了type的bug ([d04f383](https://github.com/certd/certd/commit/d04f3831611011a90ec0594724b9694490d5edd0))
### Performance Improvements
* 登录支持极验验证码 ([370db62](https://github.com/certd/certd/commit/370db62bf0aece241859244927beabba32d6a257))
* 登录注册、找回密码都支持极验验证码和图片验证码 ([7bdde68](https://github.com/certd/certd/commit/7bdde68ecea29fe2c570fd3cb082139db6c93d93))
* 优化加量包展示效果 ([3c65f37](https://github.com/certd/certd/commit/3c65f37d84177ba107d4a6462648af12d2fc4b7a))
* 证书到期剩余天数进度条根据实际证书有效期计算 ([#528](https://github.com/certd/certd/issues/528)) nicheng-he ([2d4586b](https://github.com/certd/certd/commit/2d4586b1c42c39f97d2a95b9453cca4bc8bfbe61))
* add preferred chain option ([#519](https://github.com/certd/certd/issues/519)) @ZeroClover ([902359f](https://github.com/certd/certd/commit/902359f24ed12eee4f9b65178f1d6a60378351d2))
* ssh配置增加脚本类型设置bash还是sh ([ae41c60](https://github.com/certd/certd/commit/ae41c6038b27c9476e64a2402a8daf247c38a5b6))
* start.sh增加sudo ([b7271d7](https://github.com/certd/certd/commit/b7271d7a464773a1bf87d7d1f24d933ba0f86915))
## [1.36.19](https://github.com/certd/certd/compare/v1.36.18...v1.36.19) (2025-09-05)
### Bug Fixes

View File

@@ -152,7 +152,7 @@ https://certd.handfree.work/
## 八、捐赠
************************
支持开源,为爱发电,我已入驻爱发电
支持开源,为爱发电,我已入驻爱发电
https://afdian.com/a/greper
发电权益:
@@ -171,6 +171,7 @@ https://afdian.com/a/greper
| 自动部署插件 | 阿里云CDN、腾讯云、七牛CDN、主机部署、宝塔、1Panel等大部分插件 | 群晖 |
| 通知 | 邮件通知、自定义webhook | 邮件免配置、企微、钉钉、飞书、anpush、server酱等 |
************************
************************

View File

@@ -134,6 +134,8 @@ You can also add the author as a friend.
| QR Code | <img height="230" src="./docs/guide/contact/images/me.png"> |
## 8. Donation
************************
[![Sponsor](https://img.shields.io/badge/Sponsor-%E2%9D%A4-red)](https://github.com/sponsors/greper)
************************
Support open-source projects and contribute with love. I've joined Afdian.
https://afdian.com/a/greper

View File

@@ -9,5 +9,5 @@
}
},
"npmClient": "pnpm",
"version": "1.36.19"
"version": "1.36.20"
}

View File

@@ -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.36.20](https://github.com/publishlab/node-acme-client/compare/v1.36.19...v1.36.20) (2025-09-13)
**Note:** Version bump only for package @certd/acme-client
## [1.36.19](https://github.com/publishlab/node-acme-client/compare/v1.36.18...v1.36.19) (2025-09-05)
### Performance Improvements

View File

@@ -3,7 +3,7 @@
"description": "Simple and unopinionated ACME client",
"private": false,
"author": "nmorsman",
"version": "1.36.19",
"version": "1.36.20",
"type": "module",
"module": "scr/index.js",
"main": "src/index.js",
@@ -18,7 +18,7 @@
"types"
],
"dependencies": {
"@certd/basic": "^1.36.19",
"@certd/basic": "^1.36.20",
"@peculiar/x509": "^1.11.0",
"asn1js": "^3.0.5",
"axios": "^1.7.2",

View File

@@ -502,7 +502,7 @@ class AcmeClient {
await verify[challenge.type](authz, challenge, keyAuthorization);
};
log('Waiting for ACME challenge verification等待ACME挑战验证', this.backoffOpts);
log('Waiting for ACME challenge verification等待ACME挑战验证');
return util.retry(verifyFn, this.backoffOpts);
}

View File

@@ -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.36.20](https://github.com/certd/certd/compare/v1.36.19...v1.36.20) (2025-09-13)
**Note:** Version bump only for package @certd/basic
## [1.36.19](https://github.com/certd/certd/compare/v1.36.18...v1.36.19) (2025-09-05)
### Bug Fixes

View File

@@ -1 +1 @@
00:30
00:56

View File

@@ -1,7 +1,7 @@
{
"name": "@certd/basic",
"private": false,
"version": "1.36.19",
"version": "1.36.20",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",

View File

@@ -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.36.20](https://github.com/certd/certd/compare/v1.36.19...v1.36.20) (2025-09-13)
**Note:** Version bump only for package @certd/pipeline
## [1.36.19](https://github.com/certd/certd/compare/v1.36.18...v1.36.19) (2025-09-05)
### Bug Fixes

View File

@@ -1,7 +1,7 @@
{
"name": "@certd/pipeline",
"private": false,
"version": "1.36.19",
"version": "1.36.20",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
@@ -17,8 +17,8 @@
"pub": "npm publish"
},
"dependencies": {
"@certd/basic": "^1.36.19",
"@certd/plus-core": "^1.36.19",
"@certd/basic": "^1.36.20",
"@certd/plus-core": "^1.36.20",
"dayjs": "^1.11.7",
"lodash-es": "^4.17.21",
"reflect-metadata": "^0.1.13"

View File

@@ -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.36.20](https://github.com/certd/certd/compare/v1.36.19...v1.36.20) (2025-09-13)
**Note:** Version bump only for package @certd/lib-huawei
## [1.36.19](https://github.com/certd/certd/compare/v1.36.18...v1.36.19) (2025-09-05)
**Note:** Version bump only for package @certd/lib-huawei

View File

@@ -1,7 +1,7 @@
{
"name": "@certd/lib-huawei",
"private": false,
"version": "1.36.19",
"version": "1.36.20",
"main": "./dist/bundle.js",
"module": "./dist/bundle.js",
"types": "./dist/d/index.d.ts",

View File

@@ -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.36.20](https://github.com/certd/certd/compare/v1.36.19...v1.36.20) (2025-09-13)
**Note:** Version bump only for package @certd/lib-iframe
## [1.36.19](https://github.com/certd/certd/compare/v1.36.18...v1.36.19) (2025-09-05)
**Note:** Version bump only for package @certd/lib-iframe

View File

@@ -1,7 +1,7 @@
{
"name": "@certd/lib-iframe",
"private": false,
"version": "1.36.19",
"version": "1.36.20",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",

View File

@@ -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.36.20](https://github.com/certd/certd/compare/v1.36.19...v1.36.20) (2025-09-13)
**Note:** Version bump only for package @certd/jdcloud
## [1.36.19](https://github.com/certd/certd/compare/v1.36.18...v1.36.19) (2025-09-05)
**Note:** Version bump only for package @certd/jdcloud

View File

@@ -1,6 +1,6 @@
{
"name": "@certd/jdcloud",
"version": "1.36.19",
"version": "1.36.20",
"description": "jdcloud openApi sdk",
"main": "./dist/bundle.js",
"module": "./dist/bundle.js",

View File

@@ -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.36.20](https://github.com/certd/certd/compare/v1.36.19...v1.36.20) (2025-09-13)
### Bug Fixes
* 修复secret patch 类型多了type的bug ([d04f383](https://github.com/certd/certd/commit/d04f3831611011a90ec0594724b9694490d5edd0))
## [1.36.19](https://github.com/certd/certd/compare/v1.36.18...v1.36.19) (2025-09-05)
### Bug Fixes

View File

@@ -1,7 +1,7 @@
{
"name": "@certd/lib-k8s",
"private": false,
"version": "1.36.19",
"version": "1.36.20",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
@@ -17,7 +17,7 @@
"pub": "npm publish"
},
"dependencies": {
"@certd/basic": "^1.36.19",
"@certd/basic": "^1.36.20",
"@kubernetes/client-node": "0.21.0"
},
"devDependencies": {

View File

@@ -3,6 +3,13 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.36.20](https://github.com/certd/certd/compare/v1.36.19...v1.36.20) (2025-09-13)
### Performance Improvements
* 登录支持极验验证码 ([370db62](https://github.com/certd/certd/commit/370db62bf0aece241859244927beabba32d6a257))
* 登录注册、找回密码都支持极验验证码和图片验证码 ([7bdde68](https://github.com/certd/certd/commit/7bdde68ecea29fe2c570fd3cb082139db6c93d93))
## [1.36.19](https://github.com/certd/certd/compare/v1.36.18...v1.36.19) (2025-09-05)
**Note:** Version bump only for package @certd/lib-server

View File

@@ -1,6 +1,6 @@
{
"name": "@certd/lib-server",
"version": "1.36.19",
"version": "1.36.20",
"description": "midway with flyway, sql upgrade way ",
"private": false,
"type": "module",
@@ -27,10 +27,10 @@
],
"license": "AGPL",
"dependencies": {
"@certd/acme-client": "^1.36.19",
"@certd/basic": "^1.36.19",
"@certd/pipeline": "^1.36.19",
"@certd/plus-core": "^1.36.19",
"@certd/acme-client": "^1.36.20",
"@certd/basic": "^1.36.20",
"@certd/pipeline": "^1.36.20",
"@certd/plus-core": "^1.36.20",
"@midwayjs/cache": "~3.14.0",
"@midwayjs/core": "~3.20.3",
"@midwayjs/i18n": "~3.20.3",

View File

@@ -23,6 +23,7 @@ export type AddonDefine = Registrable & {
input?: {
[key: string]: AddonInputDefine;
};
showTest?: boolean;
};
export type AddonInstanceConfig = {

View File

@@ -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.36.20](https://github.com/certd/certd/compare/v1.36.19...v1.36.20) (2025-09-13)
**Note:** Version bump only for package @certd/midway-flyway-js
## [1.36.19](https://github.com/certd/certd/compare/v1.36.18...v1.36.19) (2025-09-05)
**Note:** Version bump only for package @certd/midway-flyway-js

View File

@@ -1,6 +1,6 @@
{
"name": "@certd/midway-flyway-js",
"version": "1.36.19",
"version": "1.36.20",
"description": "midway with flyway, sql upgrade way ",
"private": false,
"type": "module",

View File

@@ -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.36.20](https://github.com/certd/certd/compare/v1.36.19...v1.36.20) (2025-09-13)
### Bug Fixes
* 修复证书手动托管时新上传的证书无效的bug ([506385e](https://github.com/certd/certd/commit/506385e5a2600887fe30854e0713583caaa2e689))
### Performance Improvements
* 证书到期剩余天数进度条根据实际证书有效期计算 ([#528](https://github.com/certd/certd/issues/528)) nicheng-he ([2d4586b](https://github.com/certd/certd/commit/2d4586b1c42c39f97d2a95b9453cca4bc8bfbe61))
* add preferred chain option ([#519](https://github.com/certd/certd/issues/519)) @ZeroClover ([902359f](https://github.com/certd/certd/commit/902359f24ed12eee4f9b65178f1d6a60378351d2))
## [1.36.19](https://github.com/certd/certd/compare/v1.36.18...v1.36.19) (2025-09-05)
### Performance Improvements

View File

@@ -1,7 +1,7 @@
{
"name": "@certd/plugin-cert",
"private": false,
"version": "1.36.19",
"version": "1.36.20",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -16,10 +16,10 @@
"pub": "npm publish"
},
"dependencies": {
"@certd/acme-client": "^1.36.19",
"@certd/basic": "^1.36.19",
"@certd/pipeline": "^1.36.19",
"@certd/plugin-lib": "^1.36.19",
"@certd/acme-client": "^1.36.20",
"@certd/basic": "^1.36.20",
"@certd/pipeline": "^1.36.20",
"@certd/plugin-lib": "^1.36.20",
"@google-cloud/publicca": "^1.3.0",
"dayjs": "^1.11.7",
"jszip": "^3.10.1",

View File

@@ -99,6 +99,7 @@ export abstract class CertApplyBaseConvertPlugin extends AbstractTaskPlugin {
const cert: CertInfo = certReader.toCertInfo();
this.cert = cert;
this._result.pipelineVars.certEffectiveTime = dayjs(certReader.detail.notBefore).valueOf();
this._result.pipelineVars.certExpiresTime = dayjs(certReader.detail.notAfter).valueOf();
if (!this._result.pipelinePrivateVars) {
this._result.pipelinePrivateVars = {};

View File

@@ -35,6 +35,7 @@ export class CertReader {
detail: CertificateInfo;
//毫秒时间戳
effective: number;
expires: number;
constructor(certInfo: CertInfo) {
this.cert = certInfo;
@@ -52,8 +53,9 @@ export class CertReader {
}
try {
const { detail, expires } = this.getCrtDetail(this.cert.crt);
const { detail, effective, expires } = this.getCrtDetail(this.cert.crt);
this.detail = detail;
this.effective = effective.getTime();
this.expires = expires.getTime();
} catch (e) {
throw new Error("证书解析失败:" + e.message);
@@ -102,8 +104,9 @@ export class CertReader {
static readCertDetail(crt: string) {
const detail = crypto.readCertificateInfo(crt.toString());
const effective = detail.notBefore;
const expires = detail.notAfter;
return { detail, expires };
return { detail, effective, expires };
}
getAllDomains() {

View File

@@ -118,7 +118,7 @@ export class CertApplyUploadPlugin extends CertApplyBaseConvertPlugin {
}
async execute(): Promise<string | void> {
const certReader = await this.getCertFromStore();
let certReader = await this.getCertFromStore();
const crtMd5 = this.ctx.utils.hash.md5(certReader.cert.crt);
const leftDays = dayjs(certReader.expires).diff(dayjs(), "day");
@@ -141,9 +141,13 @@ export class CertApplyUploadPlugin extends CertApplyBaseConvertPlugin {
this.logger.info("输入参数有变化,重新部署");
}
certReader = new CertReader(this.uploadCert);
this.clearLastStatus();
//输出证书MD5
this.certMd5 = crtMd5;
this.certMd5 = this.ctx.utils.hash.md5(certReader.cert.crt);
const newLeftDays = dayjs(certReader.expires).diff(dayjs(), "day");
this.logger.info(`新证书过期时间${dayjs(certReader.expires).format("YYYY-MM-DD HH:mm:ss")},剩余${newLeftDays}`);
await this.output(certReader, true);
//必须output之后执行

View File

@@ -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.36.20](https://github.com/certd/certd/compare/v1.36.19...v1.36.20) (2025-09-13)
### Performance Improvements
* ssh配置增加脚本类型设置bash还是sh ([ae41c60](https://github.com/certd/certd/commit/ae41c6038b27c9476e64a2402a8daf247c38a5b6))
## [1.36.19](https://github.com/certd/certd/compare/v1.36.18...v1.36.19) (2025-09-05)
### Performance Improvements

View File

@@ -1,7 +1,7 @@
{
"name": "@certd/plugin-lib",
"private": false,
"version": "1.36.19",
"version": "1.36.20",
"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.36.19",
"@certd/pipeline": "^1.36.19",
"@certd/basic": "^1.36.20",
"@certd/pipeline": "^1.36.20",
"@kubernetes/client-node": "0.21.0",
"ali-oss": "^6.22.0",
"basic-ftp": "^5.0.5",

View File

@@ -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.36.20](https://github.com/certd/certd/compare/v1.36.19...v1.36.20) (2025-09-13)
### Bug Fixes
* 修复商业版退出登录后丢失站点个性化设置的bug ([d75dd05](https://github.com/certd/certd/commit/d75dd058d65c85f80c49e1fa7a910e6c6f08e824))
* 修复授权类型和名称字段排到最后的bug ([43b7977](https://github.com/certd/certd/commit/43b79778ea9034065f6a15af3296274315597c6b))
### Performance Improvements
* 登录支持极验验证码 ([370db62](https://github.com/certd/certd/commit/370db62bf0aece241859244927beabba32d6a257))
* 登录注册、找回密码都支持极验验证码和图片验证码 ([7bdde68](https://github.com/certd/certd/commit/7bdde68ecea29fe2c570fd3cb082139db6c93d93))
* 优化加量包展示效果 ([3c65f37](https://github.com/certd/certd/commit/3c65f37d84177ba107d4a6462648af12d2fc4b7a))
* 证书到期剩余天数进度条根据实际证书有效期计算 ([#528](https://github.com/certd/certd/issues/528)) nicheng-he ([2d4586b](https://github.com/certd/certd/commit/2d4586b1c42c39f97d2a95b9453cca4bc8bfbe61))
## [1.36.19](https://github.com/certd/certd/compare/v1.36.18...v1.36.19) (2025-09-05)
### Bug Fixes

View File

@@ -1,6 +1,6 @@
{
"name": "@certd/ui-client",
"version": "1.36.19",
"version": "1.36.20",
"private": true,
"scripts": {
"dev": "vite --open",
@@ -32,10 +32,10 @@
"@aws-sdk/s3-request-presigner": "^3.535.0",
"@certd/vue-js-cron-light": "^4.0.14",
"@ctrl/tinycolor": "^4.1.0",
"@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",
"@fast-crud/fast-crud": "^1.26.6",
"@fast-crud/fast-extends": "^1.26.6",
"@fast-crud/ui-antdv4": "^1.26.6",
"@fast-crud/ui-interface": "^1.26.6",
"@iconify/tailwind": "^1.2.0",
"@iconify/vue": "^4.1.1",
"@manypkg/get-packages": "^2.2.2",
@@ -103,8 +103,8 @@
"zod-defaults": "^0.1.3"
},
"devDependencies": {
"@certd/lib-iframe": "^1.36.19",
"@certd/pipeline": "^1.36.19",
"@certd/lib-iframe": "^1.36.20",
"@certd/pipeline": "^1.36.20",
"@rollup/plugin-commonjs": "^25.0.7",
"@rollup/plugin-node-resolve": "^15.2.3",
"@types/chai": "^4.3.12",

View File

@@ -119,6 +119,7 @@ export default {
scheduledTaskCount: "Scheduled Task Count",
deployTaskCount: "Deployment Task Count",
remainingValidity: "Remaining Validity",
effectiveTime: "Effective time",
expiryTime: "Expiry Time",
status: "Status",
lastRun: "Last Run",
@@ -250,7 +251,9 @@ export default {
ok: "Valid",
expired: "Expired",
},
certEffectiveTime: "Certificate Effective",
certExpiresTime: "Certificate Expiration",
remainingValidity: "Remaining Validity",
expired: "expired",
days: "days",
lastCheckTime: "Last Check Time",
@@ -465,6 +468,7 @@ export default {
validDays: "Valid Days",
expires: " expires",
days: " days",
effectiveTime: "Effective Time",
expireTime: "Expiration Time",
certIssuer: "Certificate Issuer",
applyTime: "Application Time",
@@ -707,6 +711,10 @@ export default {
pipeline: "Pipeline",
},
addonType: "Type",
addonName: "Name",
addonNameHelper: "Fill freely, helps to distinguish when multiple same type exist",
addonTypeSelect: "Select type",
sys: {
setting: {
showRunStrategy: "Show RunStrategy",
@@ -714,7 +722,12 @@ export default {
captchaEnabled: "Enable Login Captcha",
captchaHelper: "Whether to enable captcha verification for login",
captchaType: "Captcha Type",
captchaType: "Captcha Setting",
baseSetting: "Base Settings",
registerSetting: "Register Settings",
safeSetting: "Safe Settings",
paymentSetting: "Payment Settings",
},
},
modal: {

View File

@@ -125,6 +125,7 @@ export default {
scheduledTaskCount: "定时任务数",
deployTaskCount: "部署任务数",
remainingValidity: "到期剩余",
effectiveTime: "生效时间",
expiryTime: "过期时间",
status: "状态",
lastRun: "最后运行",
@@ -255,7 +256,9 @@ export default {
ok: "正常",
expired: "过期",
},
certEffectiveTime: "证书生效时间",
certExpiresTime: "证书到期时间",
remainingValidity: "到期剩余",
expired: "过期",
days: "天",
lastCheckTime: "上次检查时间",
@@ -471,6 +474,7 @@ export default {
validDays: "有效天数",
expires: "过期",
days: "天",
effectiveTime: "生效时间",
expireTime: "过期时间",
certIssuer: "证书颁发机构",
applyTime: "申请时间",
@@ -695,7 +699,10 @@ export default {
setAsDefault: "设为默认",
disabledLabel: "禁用",
confirmToggleStatus: "确定要{action}吗?",
addonType: "类型",
addonName: "名称",
addonNameHelper: "随意填写,相同类型助于区分即可",
addonTypeSelect: "请选择",
template: {
title: "流水线模版",
edit: "流水线模版编辑",
@@ -717,7 +724,12 @@ export default {
captchaEnabled: "启用登录验证码",
captchaHelper: "登录时是否启用验证码",
captchaType: "验证码类型",
captchaType: "验证码配置",
baseSetting: "基本设置",
registerSetting: "注册设置",
safeSetting: "安全设置",
paymentSetting: "支付设置",
},
},
modal: {

View File

@@ -87,6 +87,7 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any) {
order: -1,
},
form: {
order: -1,
component: {
disabled: false,
showSearch: true,

View File

@@ -79,6 +79,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
},
form: {
rules: [{ required: true, message: "必填项" }],
order: -11,
},
column: {
width: 300,

View File

@@ -127,3 +127,16 @@ export function createAddonApi(opts: { from: any; addonType: string }) {
},
};
}
export const AddonTypeDefines = {
captcha: {
name: "captcha",
title: "验证码",
showDefault: false,
showTest: false,
},
};
export function getAddonTypeDefine(addonType: string) {
return AddonTypeDefines[addonType];
}

View File

@@ -6,6 +6,7 @@ import { Modal } from "ant-design-vue";
import { mitter } from "/@/utils/util.mitt";
import { useI18n } from "/src/locales";
import * as pipelineApi from "/@/views/certd/pipeline/api";
import { getAddonTypeDefine } from "/@/views/certd/addon/api";
export function addonProvide(api: any) {
provide("addonApi", api);
@@ -104,7 +105,7 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any, a
// },
// },
type: {
title: t("certd.notificationType"),
title: t("certd.addonType"),
type: "dict-select",
dict: addonTypeDictRef,
search: {
@@ -122,6 +123,7 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any, a
},
},
form: {
order: -22,
component: {
disabled: false,
showSearch: true,
@@ -138,7 +140,7 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any, a
);
},
},
rules: [{ required: true, message: t("certd.selectNotificationType") }],
rules: [{ required: true, message: t("certd.addonTypeSelect") }],
valueChange: {
immediate: true,
async handle({ value, mode, form, immediate }) {
@@ -173,14 +175,15 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any, a
},
} as ColumnCompositionProps,
name: {
title: t("certd.notificationName"),
title: t("certd.addonName"),
search: {
show: true,
},
type: ["text"],
form: {
order: -2,
rules: [{ required: true, message: t("certd.enterName") }],
helper: t("certd.helperNotificationName"),
helper: t("certd.addonNameHelper"),
},
column: {
width: 200,
@@ -196,6 +199,9 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any, a
],
}),
form: {
show: computed(() => {
return getAddonTypeDefine(addonType)?.showDefault ?? false;
}),
value: false,
rules: [{ required: true, message: t("certd.selectIsDefault") }],
order: 999,
@@ -203,6 +209,9 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any, a
column: {
align: "center",
width: 100,
show: computed(() => {
return getAddonTypeDefine(addonType)?.showDefault ?? false;
}),
component: {
name: "a-switch",
vModel: "checked",
@@ -210,6 +219,7 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any, a
return value === true;
}),
on: {
// @ts-ignore
change({ row }) {
Modal.confirm({
title: t("certd.prompt"),
@@ -226,12 +236,12 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any, a
},
},
},
} as ColumnCompositionProps,
},
test: {
title: t("certd.test"),
form: {
show: compute(({ form }) => {
return !!form.type;
return !!form.type && currentDefine.value?.showTest === true;
}),
component: {
name: "api-test",

View File

@@ -220,22 +220,47 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
sorter: true,
conditionalRender: false,
cellRender({ row }) {
const value = row.expiresTime;
if (!value) {
const {
applyTime,
effectiveTime,
expiresTime,
} = row || {};
if (!expiresTime) {
return "-";
}
const expireDate = dayjs(value).format("YYYY-MM-DD");
const leftDays = dayjs(value).diff(dayjs(), "day");
// 申请时间 ps:此处为证书在certd创建的时间而非实际证书申请时间
const applyDate = dayjs(effectiveTime ?? applyTime ?? Date.now()).format("YYYY-MM-DD");
// 失效时间
const expireDate = dayjs(expiresTime).format("YYYY-MM-DD");
// 有效天数 ps:此处证书最小设置为90d
const effectiveDays = Math.max(90, dayjs(expiresTime).diff(applyDate, "day"));
// 距离失效时间剩余天数
const leftDays = dayjs(expiresTime).diff(dayjs(), "day");
const color = leftDays < 20 ? "red" : "#389e0d";
const percent = (leftDays / 90) * 100;
const percent = (leftDays / effectiveDays) * 100;
const textColor = leftDays < 20 ? "red" : leftDays > 60 ? "#389e0d" : "";
const format = () => {
return <span style={{ color: textColor }}>{`${leftDays}${t("certd.days")}`}</span>;
};
// console.log('cellRender', 'effectiveDays', effectiveDays, 'expiresTime', expiresTime, 'applyTime', applyTime, 'percent', percent, row)
return <a-progress title={expireDate + t("certd.expires")} percent={percent} strokeColor={color} format={format} />;
},
},
},
effectiveTime: {
title: t("certd.effectiveTime"),
search: {
show: false,
},
type: "datetime",
form: {
show: false,
},
column: {
sorter: true,
show: false,
},
},
expiresTime: {
title: t("certd.expireTime"),
search: {

View File

@@ -345,25 +345,64 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
align: "center",
},
},
certEffectiveTime: {
title: t("certd.monitor.certEffectiveTime"),
search: {
show: false,
},
type: "datetime",
form: {
show: false,
},
column: {
sorter: true,
width: 155,
},
},
certExpiresTime: {
title: t("certd.monitor.certExpiresTime"),
search: {
show: false,
},
type: "datetime",
form: {
show: false,
},
column: {
sorter: true,
width: 155,
},
},
remainingValidity: {
title: t("certd.monitor.remainingValidity"),
search: {
show: false,
},
type: "date",
form: {
show: false,
},
column: {
sorter: true,
cellRender({ value }) {
if (!value) {
conditionalRender: false,
cellRender({ row }) {
const {
certEffectiveTime: effectiveTime,
certExpiresTime: expiresTime,
} = row || {};
if (!expiresTime) {
return "-";
}
const expireDate = dayjs(value).format("YYYY-MM-DD");
const leftDays = dayjs(value).diff(dayjs(), "day");
// 申请时间 ps:此处为证书在certd创建的时间而非实际证书申请时间
const applyDate = dayjs(effectiveTime ?? Date.now()).format("YYYY-MM-DD");
// 失效时间
const expireDate = dayjs(expiresTime).format("YYYY-MM-DD");
// 有效天数 ps:此处证书最小设置为90d
const effectiveDays = Math.max(90, dayjs(expiresTime).diff(applyDate, "day"));
// 距离失效时间剩余天数
const leftDays = dayjs(expiresTime).diff(dayjs(), "day");
const color = leftDays < 20 ? "red" : "#389e0d";
const percent = (leftDays / 90) * 100;
const percent = (leftDays / effectiveDays) * 100;
// console.log('cellRender', 'effectiveDays', effectiveDays, 'expiresTime', expiresTime, 'applyTime', applyTime, 'percent', percent, row)
return <a-progress title={expireDate + t("certd.monitor.expired")} percent={percent} strokeColor={color} format={(percent: number) => `${leftDays}${t("certd.monitor.days")}`} />;
},
},

View File

@@ -96,6 +96,7 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any) {
},
},
form: {
order: -3,
component: {
disabled: false,
showSearch: true,
@@ -153,6 +154,7 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any) {
},
type: ["text"],
form: {
order: -2,
rules: [{ required: true, message: t("certd.enterName") }],
helper: t("certd.helperNotificationName"),
},

View File

@@ -366,23 +366,49 @@ export default function ({ crudExpose, context: { groupDictRef, selectedRowKeys
},
column: {
cellRender({ row }) {
const value = row.lastVars?.certExpiresTime;
if (!value) {
const {
certEffectiveTime: effectiveTime,
certExpiresTime: expiresTime,
} = row?.lastVars || {};
if (!expiresTime) {
return "-";
}
const expireDate = dayjs(value).format("YYYY-MM-DD");
const leftDays = dayjs(value).diff(dayjs(), "day");
// 申请时间 ps:此处为证书在certd创建的时间而非实际证书申请时间
const applyDate = dayjs(effectiveTime ?? Date.now()).format("YYYY-MM-DD");
// 失效时间
const expireDate = dayjs(expiresTime).format("YYYY-MM-DD");
// 有效天数 ps:此处证书最小设置为90d
const effectiveDays = Math.max(90, dayjs(expiresTime).diff(applyDate, "day"));
// 距离失效时间剩余天数
const leftDays = dayjs(expiresTime).diff(dayjs(), "day");
const color = leftDays < 20 ? "red" : "#389e0d";
const percent = (leftDays / 90) * 100;
const percent = (leftDays / effectiveDays) * 100;
const textColor = leftDays < 20 ? "red" : leftDays > 60 ? "#389e0d" : "";
const format = () => {
return <span style={{ color: textColor }}>{`${leftDays}${t("certd.days")}`}</span>;
};
// console.log('cellRender', 'effectiveDays', effectiveDays, 'expiresTime', expiresTime, 'applyTime', applyTime, 'percent', percent, row)
return <a-progress title={expireDate + t("certd.expires")} percent={percent} strokeColor={color} format={format} />;
},
width: 150,
},
},
"lastVars.certEffectiveTime": {
title: t("certd.fields.effectiveTime"),
search: {
show: false,
},
type: "datetime",
form: {
show: false,
},
column: {
sorter: false,
show: false,
width: 150,
align: "center",
},
},
"lastVars.certExpiresTime": {
title: t("certd.fields.expiryTime"),
search: {

View File

@@ -5,17 +5,17 @@
<!-- </template>-->
<div class="sys-settings-body md:p-5">
<a-tabs :active-key="activeKey" type="card" class="sys-settings-tabs" @update:active-key="onChange">
<a-tab-pane key="base" tab="基本设置">
<a-tab-pane key="base" :tab="t('certd.sys.setting.baseSetting')">
<SettingBase v-if="activeKey === 'base'" />
</a-tab-pane>
<a-tab-pane key="register" tab="注册设置">
<a-tab-pane key="register" :tab="t('certd.sys.setting.registerSetting')">
<SettingRegister v-if="activeKey === 'register'" />
</a-tab-pane>
<a-tab-pane v-if="settingsStore.isComm" key="payment" tab="支付设置">
<a-tab-pane v-if="settingsStore.isComm" key="payment" :tab="t('certd.sys.setting.paymentSetting')">
<SettingPayment v-if="activeKey === 'payment'" />
</a-tab-pane>
<a-tab-pane key="save" tab="安全设置">
<SettingSafe v-if="activeKey === 'save'" />
<a-tab-pane key="safe" :tab="t('certd.sys.setting.safeSetting')">
<SettingSafe v-if="activeKey === 'safe'" />
</a-tab-pane>
</a-tabs>
</div>
@@ -30,9 +30,11 @@ import SettingSafe from "/@/views/sys/settings/tabs/safe.vue";
import { useRoute, useRouter } from "vue-router";
import { ref } from "vue";
import { useSettingStore } from "/@/store/settings";
import { useI18n } from "/@/locales";
defineOptions({
name: "SysSettings",
});
const { t } = useI18n();
const settingsStore = useSettingStore();
const activeKey = ref("base");
const route = useRoute();

View File

@@ -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.36.20](https://github.com/certd/certd/compare/v1.36.19...v1.36.20) (2025-09-13)
### Bug Fixes
* 修复证书监控某些情况下报 options.lookup不能为null的bug ([d2ecfe5](https://github.com/certd/certd/commit/d2ecfe5491b2639eb30b5cae293af6062d58bb9f))
* 修复证书手动托管时新上传的证书无效的bug ([506385e](https://github.com/certd/certd/commit/506385e5a2600887fe30854e0713583caaa2e689))
### Performance Improvements
* 登录支持极验验证码 ([370db62](https://github.com/certd/certd/commit/370db62bf0aece241859244927beabba32d6a257))
* 登录注册、找回密码都支持极验验证码和图片验证码 ([7bdde68](https://github.com/certd/certd/commit/7bdde68ecea29fe2c570fd3cb082139db6c93d93))
* 证书到期剩余天数进度条根据实际证书有效期计算 ([#528](https://github.com/certd/certd/issues/528)) nicheng-he ([2d4586b](https://github.com/certd/certd/commit/2d4586b1c42c39f97d2a95b9453cca4bc8bfbe61))
* add preferred chain option ([#519](https://github.com/certd/certd/issues/519)) @ZeroClover ([902359f](https://github.com/certd/certd/commit/902359f24ed12eee4f9b65178f1d6a60378351d2))
## [1.36.19](https://github.com/certd/certd/compare/v1.36.18...v1.36.19) (2025-09-05)
### Bug Fixes

View File

@@ -0,0 +1,2 @@
ALTER TABLE cd_cert_info ADD COLUMN effective_time bigint;
ALTER TABLE cd_site_info ADD COLUMN cert_effective_time bigint;

View File

@@ -0,0 +1,13 @@
CREATE TABLE `cd_addon` (
`id` bigint PRIMARY KEY AUTO_INCREMENT NOT NULL,
`user_id` bigint NOT NULL,
`name` varchar(100) NOT NULL,
`type` varchar(100) NOT NULL,
`addon_type` varchar(100) NOT NULL,
`is_default` boolean NOT NULL DEFAULT false,
`is_system` boolean NOT NULL DEFAULT false,
`setting` longtext,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);

View File

@@ -0,0 +1,2 @@
ALTER TABLE cd_cert_info ADD COLUMN effective_time bigint;
ALTER TABLE cd_site_info ADD COLUMN cert_effective_time bigint;

View File

@@ -0,0 +1,13 @@
CREATE TABLE "cd_addon" (
"id" bigint PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY NOT NULL,
"user_id" bigint NOT NULL,
"name" varchar(100) NOT NULL,
"type" varchar(100) NOT NULL,
"addon_type" varchar(100) NOT NULL,
"is_default" boolean NOT NULL DEFAULT (false),
"is_system" boolean NOT NULL DEFAULT (false),
"setting" text,
"create_time" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP),
"update_time" timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP)
);

View File

@@ -0,0 +1,2 @@
ALTER TABLE cd_cert_info ADD COLUMN effective_time INTEGER;
ALTER TABLE cd_site_info ADD COLUMN cert_effective_time INTEGER;

View File

@@ -39,6 +39,7 @@ function transformPG() {
pgSql = pgSql.replaceAll(/boolean DEFAULT \(0\)/g, 'boolean DEFAULT (false)');
pgSql = pgSql.replaceAll(/boolean.*NOT NULL DEFAULT \(0\)/g, 'boolean NOT NULL DEFAULT (false)');
pgSql = pgSql.replaceAll(/integer/g, 'bigint');
pgSql = pgSql.replaceAll(/INTEGER/g, 'bigint');
pgSql = pgSql.replaceAll(/last_insert_rowid\(\)/g, 'LASTVAL()');
fs.writeFileSync(`./migration-pg/${notFile}`, pgSql);
}
@@ -66,6 +67,7 @@ function transformMysql() {
//DEFAULT (xxx) 替换成 DEFAULT xxx
pgSql = pgSql.replaceAll(/DEFAULT \(([^)]*)\)/g, 'DEFAULT $1');
pgSql = pgSql.replaceAll(/integer/g, 'bigint');
pgSql = pgSql.replaceAll(/INTEGER/g, 'bigint');
pgSql = pgSql.replaceAll(/last_insert_rowid\(\)/g, 'LAST_INSERT_ID()');
//text 改成longtext
pgSql = pgSql.replaceAll(/text/g, 'longtext');

View File

@@ -1,6 +1,6 @@
{
"name": "@certd/ui-server",
"version": "1.36.19",
"version": "1.36.20",
"description": "fast-server base midway",
"private": true,
"type": "module",
@@ -43,20 +43,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.36.19",
"@certd/basic": "^1.36.19",
"@certd/commercial-core": "^1.36.19",
"@certd/acme-client": "^1.36.20",
"@certd/basic": "^1.36.20",
"@certd/commercial-core": "^1.36.20",
"@certd/cv4pve-api-javascript": "^8.4.2",
"@certd/jdcloud": "^1.36.19",
"@certd/lib-huawei": "^1.36.19",
"@certd/lib-k8s": "^1.36.19",
"@certd/lib-server": "^1.36.19",
"@certd/midway-flyway-js": "^1.36.19",
"@certd/pipeline": "^1.36.19",
"@certd/plugin-cert": "^1.36.19",
"@certd/plugin-lib": "^1.36.19",
"@certd/plugin-plus": "^1.36.19",
"@certd/plus-core": "^1.36.19",
"@certd/jdcloud": "^1.36.20",
"@certd/lib-huawei": "^1.36.20",
"@certd/lib-k8s": "^1.36.20",
"@certd/lib-server": "^1.36.20",
"@certd/midway-flyway-js": "^1.36.20",
"@certd/pipeline": "^1.36.20",
"@certd/plugin-cert": "^1.36.20",
"@certd/plugin-lib": "^1.36.20",
"@certd/plugin-plus": "^1.36.20",
"@certd/plus-core": "^1.36.20",
"@huaweicloud/huaweicloud-sdk-cdn": "^3.1.120",
"@huaweicloud/huaweicloud-sdk-core": "^3.1.120",
"@koa/cors": "^5.0.0",

View File

@@ -30,6 +30,9 @@ export class CertInfoEntity {
@Column({ name: 'cert_provider', comment: '证书颁发机构' })
certProvider: string;
@Column({ name: 'effective_time', comment: '生效时间' })
effectiveTime: number;
@Column({ name: 'expires_time', comment: '过期时间' })
expiresTime: number;

View File

@@ -26,6 +26,8 @@ export class SiteInfoEntity {
@Column({ name: 'cert_provider', comment: '证书颁发机构', length: 100 })
certProvider: string;
@Column({ name: 'cert_effective_time', comment: '证书生效时间' })
certEffectiveTime: number;
@Column({ name: 'cert_expires_time', comment: '证书到期时间' })
certExpiresTime: number;
@Column({ name: 'last_check_time', comment: '上次检查时间' })

View File

@@ -164,6 +164,7 @@ export class CertInfoService extends BaseService<CertInfoEntity> {
bean.domains = domains.join(',');
bean.domain = domains[0];
bean.domainCount = domains.length;
bean.effectiveTime = certReader.effective;
bean.expiresTime = certReader.expires;
bean.certProvider = certReader.detail.issuer.commonName;
bean.userId = userId

View File

@@ -134,6 +134,7 @@ export class SiteInfoService extends BaseService<SiteInfoEntity> {
if (!certi) {
throw new Error("没有发现证书");
}
const effective = certi.valid_from;
const expires = certi.valid_to;
const allDomains = certi.subjectaltname?.replaceAll("DNS:", "").split(",") || [];
const mainDomain = certi.subject?.CN;
@@ -149,12 +150,13 @@ export class SiteInfoService extends BaseService<SiteInfoEntity> {
certDomains: domains.join(","),
certStatus: status,
certProvider: issuer,
certEffectiveTime: dayjs(effective).valueOf(),
certExpiresTime: dayjs(expires).valueOf(),
lastCheckTime: dayjs().valueOf(),
error: null,
checkStatus: "ok"
};
logger.info(`测试站点成功id=${updateData.id},site=${site.name},expiresTime=${updateData.certExpiresTime}`)
logger.info(`测试站点成功id=${updateData.id},site=${site.name},certEffectiveTime=${updateData.certEffectiveTime},expiresTime=${updateData.certExpiresTime}`)
if (site.ipCheck) {
delete updateData.checkStatus
}

View File

@@ -5,22 +5,24 @@ import { ICaptchaAddon } from "../api.js";
@IsAddon({
addonType:"captcha",
name: 'geetest',
title: '极验验证码',
title: '极验验证码v4',
desc: '',
showTest:false,
})
export class GeeTestCaptcha extends BaseAddon implements ICaptchaAddon{
@AddonInput({
title: 'captchaId',
title: '验证ID',
component: {
placeholder: 'captchaId',
},
helper:"[极验验证码v4](https://console.geetest.com/sensbot/management) -> 创建业务模块 -> 新增业务场景",
required: true,
})
captchaId = '';
@AddonInput({
title: 'captchaKey',
title: '验证Key',
component: {
placeholder: 'captchaKey',
},

View File

@@ -8,6 +8,7 @@ import { nanoid } from "nanoid";
name: 'image',
title: '图片验证码',
desc: '',
showTest:false,
})
export class ImageCaptcha extends BaseAddon implements ICaptchaAddon{

124
pnpm-lock.yaml generated
View File

@@ -49,7 +49,7 @@ importers:
packages/core/acme-client:
dependencies:
'@certd/basic':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../basic
'@peculiar/x509':
specifier: ^1.11.0
@@ -210,10 +210,10 @@ importers:
packages/core/pipeline:
dependencies:
'@certd/basic':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../basic
'@certd/plus-core':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../pro/plus-core
dayjs:
specifier: ^1.11.7
@@ -418,7 +418,7 @@ importers:
packages/libs/lib-k8s:
dependencies:
'@certd/basic':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/basic
'@kubernetes/client-node':
specifier: 0.21.0
@@ -458,16 +458,16 @@ importers:
packages/libs/lib-server:
dependencies:
'@certd/acme-client':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/pipeline
'@certd/plus-core':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../pro/plus-core
'@midwayjs/cache':
specifier: ~3.14.0
@@ -610,16 +610,16 @@ importers:
packages/plugins/plugin-cert:
dependencies:
'@certd/acme-client':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/pipeline
'@certd/plugin-lib':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../plugin-lib
'@google-cloud/publicca':
specifier: ^1.3.0
@@ -701,10 +701,10 @@ importers:
specifier: ^3.787.0
version: 3.810.0(aws-crt@1.26.2)
'@certd/basic':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/pipeline
'@kubernetes/client-node':
specifier: 0.21.0
@@ -792,19 +792,19 @@ importers:
packages/pro/commercial-core:
dependencies:
'@certd/basic':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/basic
'@certd/lib-server':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../libs/lib-server
'@certd/pipeline':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/pipeline
'@certd/plugin-plus':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../plugin-plus
'@certd/plus-core':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../plus-core
'@midwayjs/core':
specifier: ~3.20.3
@@ -889,22 +889,22 @@ importers:
specifier: ^1.0.2
version: 1.0.3
'@certd/basic':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/basic
'@certd/lib-k8s':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../libs/lib-k8s
'@certd/pipeline':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/pipeline
'@certd/plugin-cert':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../plugins/plugin-cert
'@certd/plugin-lib':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../plugins/plugin-lib
'@certd/plus-core':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../plus-core
ali-oss:
specifier: ^6.21.0
@@ -1007,7 +1007,7 @@ importers:
packages/pro/plus-core:
dependencies:
'@certd/basic':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/basic
dayjs:
specifier: ^1.11.7
@@ -1089,17 +1089,17 @@ importers:
specifier: ^4.1.0
version: 4.1.0
'@fast-crud/fast-crud':
specifier: ^1.25.13
version: 1.25.13(vue@3.5.14(typescript@5.8.3))
specifier: ^1.26.6
version: 1.26.6(vue@3.5.14(typescript@5.8.3))
'@fast-crud/fast-extends':
specifier: ^1.25.13
version: 1.25.13(aws-crt@1.26.2)(vue@3.5.14(typescript@5.8.3))
specifier: ^1.26.6
version: 1.26.6(aws-crt@1.26.2)(vue@3.5.14(typescript@5.8.3))
'@fast-crud/ui-antdv4':
specifier: ^1.25.13
version: 1.25.13
specifier: ^1.26.6
version: 1.26.6
'@fast-crud/ui-interface':
specifier: ^1.25.13
version: 1.25.13
specifier: ^1.26.6
version: 1.26.6
'@iconify/tailwind':
specifier: ^1.2.0
version: 1.2.0
@@ -1297,10 +1297,10 @@ importers:
version: 0.1.3(zod@3.24.4)
devDependencies:
'@certd/lib-iframe':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../libs/lib-iframe
'@certd/pipeline':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/pipeline
'@rollup/plugin-commonjs':
specifier: ^25.0.7
@@ -1483,46 +1483,46 @@ importers:
specifier: ^3.705.0
version: 3.810.0(aws-crt@1.26.2)
'@certd/acme-client':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/basic
'@certd/commercial-core':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../pro/commercial-core
'@certd/cv4pve-api-javascript':
specifier: ^8.4.2
version: 8.4.2
'@certd/jdcloud':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../libs/lib-jdcloud
'@certd/lib-huawei':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../libs/lib-huawei
'@certd/lib-k8s':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../libs/lib-k8s
'@certd/lib-server':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../libs/lib-server
'@certd/midway-flyway-js':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../libs/midway-flyway-js
'@certd/pipeline':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../core/pipeline
'@certd/plugin-cert':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../plugins/plugin-cert
'@certd/plugin-lib':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../plugins/plugin-lib
'@certd/plugin-plus':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../pro/plugin-plus
'@certd/plus-core':
specifier: ^1.36.18
specifier: ^1.36.19
version: link:../../pro/plus-core
'@huaweicloud/huaweicloud-sdk-cdn':
specifier: ^3.1.120
@@ -3408,17 +3408,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.13':
resolution: {integrity: sha512-2UDp0Wzsf9CXA9qJnyYjHYOR2usBRPij/8/15ksyFhBPLC8JJgXHFUae0lXqhib6QCV0CYrF8t7REEtxKmkUfw==}
'@fast-crud/fast-crud@1.26.6':
resolution: {integrity: sha512-m44F0qPUaswEBAn+bUqpjNm/+zn/icsTEpr4rGnDd692eZKzx7uPP1szVFwCc0nZeVteI5hNNAioIKB/6Xns1w==}
'@fast-crud/fast-extends@1.25.13':
resolution: {integrity: sha512-Hn4p/sdO96KB/+umfrZhgPM3ZbaU78uMamjl+UKhyEB5U42jN45XSEsP4ax1IHFCpvxLvTMnmTzRHqkbgTS18g==}
'@fast-crud/fast-extends@1.26.6':
resolution: {integrity: sha512-OHWxN7ZWmE0I0rGyqLjgx9RfZxHakWO68cAX5b6ADwFfFlGR2zfQuj6VjfYayPe6VSt5p3ZoUSsxQgmLbHYnKA==}
'@fast-crud/ui-antdv4@1.25.13':
resolution: {integrity: sha512-3BDfZRGH9rBEYKw6hUyXD1kI9XtUFl9U/dX4PDH98i1tMg3GhUJ51gDZjZ8as9HsMrCE88m8ZUPjjQU/HLVY1w==}
'@fast-crud/ui-antdv4@1.26.6':
resolution: {integrity: sha512-VeTt75ejjhIzii5wcQFWY5ugEizLGZhU2cowLNTGskCBmMEAP3GGUwn4TP33dtmQWvTu7FMjwaKtyWnFaiYmuA==}
'@fast-crud/ui-interface@1.25.13':
resolution: {integrity: sha512-hWjN6j6H2e9YxtqKL+fpls4/TTLZX6TuazjuxE+VoH0EdJF9QRk/D8GLxORGvnRgPABClbQvVPyofb6rPHjbAw==}
'@fast-crud/ui-interface@1.26.6':
resolution: {integrity: sha512-C6lWTWs8Vl76qQjORGbPmOy53clo3rO5KnVX2FhTcu5TTecR9JOc85IcQPSWRnWEn+dCdted2wXR83TgQK41eA==}
'@fidm/asn1@1.0.4':
resolution: {integrity: sha512-esd1jyNvRb2HVaQGq2Gg8Z0kbQPXzV9Tq5Z14KNIov6KfFD6PTaRIO8UpcsYiTNzOqJpmyzWgVTrUwFV3UF4TQ==}
@@ -15969,7 +15969,7 @@ snapshots:
'@eslint/js@8.57.0': {}
'@fast-crud/fast-crud@1.25.13(vue@3.5.14(typescript@5.8.3))':
'@fast-crud/fast-crud@1.26.6(vue@3.5.14(typescript@5.8.3))':
dependencies:
'@iconify/types': 2.0.0
file-saver: 2.0.5
@@ -15979,7 +15979,7 @@ snapshots:
transitivePeerDependencies:
- vue
'@fast-crud/fast-extends@1.25.13(aws-crt@1.26.2)(vue@3.5.14(typescript@5.8.3))':
'@fast-crud/fast-extends@1.26.6(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
@@ -15996,8 +15996,6 @@ snapshots:
js-yaml: 4.1.0
jsoneditor: 9.10.5
lodash-es: 4.17.21
monaco-editor: 0.52.2
monaco-yaml: 5.4.0(monaco-editor@0.52.2)
object-assign: 4.1.1
qiniu-js: 3.4.1
quill: 1.3.7
@@ -16011,9 +16009,9 @@ snapshots:
- utf-8-validate
- vue
'@fast-crud/ui-antdv4@1.25.13': {}
'@fast-crud/ui-antdv4@1.26.6': {}
'@fast-crud/ui-interface@1.25.13':
'@fast-crud/ui-interface@1.26.6':
dependencies:
lodash-es: 4.17.21