Compare commits

...

8 Commits

Author SHA1 Message Date
xiaojunnuo 898bc9b9f2 v1.39.12 2026-04-29 23:10:25 +08:00
xiaojunnuo d8e5928523 build: prepare to build 2026-04-29 23:06:41 +08:00
xiaojunnuo 36808a953e chore: 1 2026-04-29 23:06:34 +08:00
xiaojunnuo 39d3f79026 build: prepare to build 2026-04-29 00:12:48 +08:00
xiaojunnuo 6463e1ca22 chore: 1 2026-04-29 00:12:07 +08:00
xiaojunnuo c985a13544 perf: 支持页脚自定义 2026-04-29 00:07:20 +08:00
xiaojunnuo 64b3184b28 perf: 阿里云证书订单支持获取2.0的订单 2026-04-28 11:51:54 +08:00
xiaojunnuo 2f1ad7201f fix: 修复腾讯云clb部署报缺少sslmode参数的bug 2026-04-28 10:52:09 +08:00
47 changed files with 428 additions and 164 deletions
+15
View File
@@ -3,6 +3,21 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.39.12](https://github.com/certd/certd/compare/v1.39.11...v1.39.12) (2026-04-29)
### Bug Fixes
* 调整手机版首页标题被挤开的bug ([eab66e2](https://github.com/certd/certd/commit/eab66e2d1988635985745f2d1b227b958969ee00))
* 修复腾讯云clb部署报缺少sslmode参数的bug ([2f1ad72](https://github.com/certd/certd/commit/2f1ad7201f5ed9e00368a28b9e40907d4b415852))
### Performance Improvements
* 524错误时重试3次 ([00e6d58](https://github.com/certd/certd/commit/00e6d580c2f54af70fe96a214aff87c4b96426c2))
* 阿里云证书订单支持获取2.0的订单 ([64b3184](https://github.com/certd/certd/commit/64b3184b286fee996002d857b0de588452abdadd))
* 优化流水线执行时的状态保存性能 ([e00830b](https://github.com/certd/certd/commit/e00830bebcfe6344499e490bc174de96f9fb22d6))
* 增加权威NS检查开关,某些用户服务器禁止向黑名单NS服务器发请求 ([1aa50cf](https://github.com/certd/certd/commit/1aa50cf53a0deab752f35ec973912e41ab8161b6))
* 支持页脚自定义 ([c985a13](https://github.com/certd/certd/commit/c985a13544aa31b0eb0783f9a3193a7e8bdc6ed6))
## [1.39.11](https://github.com/certd/certd/compare/v1.39.10...v1.39.11) (2026-04-26)
### Bug Fixes
+1 -1
View File
@@ -6,7 +6,7 @@
|-----|-----|-----|
| 1.| **证书申请(JS版)** | 免费通配符域名证书申请,支持多个域名打到同一个证书上 |
| 2.| **已有证书托管** | 手动上传自定义证书后,自动部署(每次证书有更新,都需要手动上传一次) |
| 3.| **获取阿里云订阅证书** | 从阿里云拉取订阅模式的商用证书 |
| 3.| **获取阿里云订阅证书** | 从阿里云拉取订阅模式的商用证书(支持 API 1.0 和 2.0 |
| 4.| **证书申请(Lego** | 支持海量DNS解析提供商,推荐使用,一样的免费通配符域名证书申请,支持多个域名打到同一个证书上 |
## 2. 主机
+1 -1
View File
@@ -9,5 +9,5 @@
}
},
"npmClient": "pnpm",
"version": "1.39.11"
"version": "1.39.12"
}
+6
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.39.12](https://github.com/publishlab/node-acme-client/compare/v1.39.11...v1.39.12) (2026-04-29)
### Performance Improvements
* 增加权威NS检查开关,某些用户服务器禁止向黑名单NS服务器发请求 ([1aa50cf](https://github.com/publishlab/node-acme-client/commit/1aa50cf53a0deab752f35ec973912e41ab8161b6))
## [1.39.11](https://github.com/publishlab/node-acme-client/compare/v1.39.10...v1.39.11) (2026-04-26)
### Performance Improvements
+2 -2
View File
@@ -3,7 +3,7 @@
"description": "Simple and unopinionated ACME client",
"private": false,
"author": "nmorsman",
"version": "1.39.11",
"version": "1.39.12",
"type": "module",
"module": "scr/index.js",
"main": "src/index.js",
@@ -18,7 +18,7 @@
"types"
],
"dependencies": {
"@certd/basic": "^1.39.11",
"@certd/basic": "^1.39.12",
"@peculiar/x509": "^1.11.0",
"asn1js": "^3.0.5",
"axios": "^1.9.0",
+6
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.39.12](https://github.com/certd/certd/compare/v1.39.11...v1.39.12) (2026-04-29)
### Performance Improvements
* 524错误时重试3次 ([00e6d58](https://github.com/certd/certd/commit/00e6d580c2f54af70fe96a214aff87c4b96426c2))
## [1.39.11](https://github.com/certd/certd/compare/v1.39.10...v1.39.11) (2026-04-26)
**Note:** Version bump only for package @certd/basic
+1 -1
View File
@@ -1 +1 @@
13:28
23:06
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/basic",
"private": false,
"version": "1.39.11",
"version": "1.39.12",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
+7
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.39.12](https://github.com/certd/certd/compare/v1.39.11...v1.39.12) (2026-04-29)
### Performance Improvements
* 524错误时重试3次 ([00e6d58](https://github.com/certd/certd/commit/00e6d580c2f54af70fe96a214aff87c4b96426c2))
* 优化流水线执行时的状态保存性能 ([e00830b](https://github.com/certd/certd/commit/e00830bebcfe6344499e490bc174de96f9fb22d6))
## [1.39.11](https://github.com/certd/certd/compare/v1.39.10...v1.39.11) (2026-04-26)
### Performance Improvements
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/pipeline",
"private": false,
"version": "1.39.11",
"version": "1.39.12",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
@@ -18,8 +18,8 @@
"compile": "tsc --skipLibCheck --watch"
},
"dependencies": {
"@certd/basic": "^1.39.11",
"@certd/plus-core": "^1.39.11",
"@certd/basic": "^1.39.12",
"@certd/plus-core": "^1.39.12",
"dayjs": "^1.11.7",
"lodash-es": "^4.17.21",
"reflect-metadata": "^0.1.13"
+4
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.39.12](https://github.com/certd/certd/compare/v1.39.11...v1.39.12) (2026-04-29)
**Note:** Version bump only for package @certd/lib-huawei
## [1.39.11](https://github.com/certd/certd/compare/v1.39.10...v1.39.11) (2026-04-26)
**Note:** Version bump only for package @certd/lib-huawei
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/lib-huawei",
"private": false,
"version": "1.39.11",
"version": "1.39.12",
"main": "./dist/bundle.js",
"module": "./dist/bundle.js",
"types": "./dist/d/index.d.ts",
+4
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.39.12](https://github.com/certd/certd/compare/v1.39.11...v1.39.12) (2026-04-29)
**Note:** Version bump only for package @certd/lib-iframe
## [1.39.11](https://github.com/certd/certd/compare/v1.39.10...v1.39.11) (2026-04-26)
**Note:** Version bump only for package @certd/lib-iframe
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/lib-iframe",
"private": false,
"version": "1.39.11",
"version": "1.39.12",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
+4
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.39.12](https://github.com/certd/certd/compare/v1.39.11...v1.39.12) (2026-04-29)
**Note:** Version bump only for package @certd/jdcloud
## [1.39.11](https://github.com/certd/certd/compare/v1.39.10...v1.39.11) (2026-04-26)
**Note:** Version bump only for package @certd/jdcloud
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@certd/jdcloud",
"version": "1.39.11",
"version": "1.39.12",
"description": "jdcloud openApi sdk",
"main": "./dist/bundle.js",
"module": "./dist/bundle.js",
+4
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.39.12](https://github.com/certd/certd/compare/v1.39.11...v1.39.12) (2026-04-29)
**Note:** Version bump only for package @certd/lib-k8s
## [1.39.11](https://github.com/certd/certd/compare/v1.39.10...v1.39.11) (2026-04-26)
**Note:** Version bump only for package @certd/lib-k8s
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/lib-k8s",
"private": false,
"version": "1.39.11",
"version": "1.39.12",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
@@ -18,7 +18,7 @@
"compile": "tsc --skipLibCheck --watch"
},
"dependencies": {
"@certd/basic": "^1.39.11",
"@certd/basic": "^1.39.12",
"@kubernetes/client-node": "0.21.0"
},
"devDependencies": {
+7
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.39.12](https://github.com/certd/certd/compare/v1.39.11...v1.39.12) (2026-04-29)
### Performance Improvements
* 增加权威NS检查开关,某些用户服务器禁止向黑名单NS服务器发请求 ([1aa50cf](https://github.com/certd/certd/commit/1aa50cf53a0deab752f35ec973912e41ab8161b6))
* 支持页脚自定义 ([c985a13](https://github.com/certd/certd/commit/c985a13544aa31b0eb0783f9a3193a7e8bdc6ed6))
## [1.39.11](https://github.com/certd/certd/compare/v1.39.10...v1.39.11) (2026-04-26)
### Bug Fixes
+6 -6
View File
@@ -1,6 +1,6 @@
{
"name": "@certd/lib-server",
"version": "1.39.11",
"version": "1.39.12",
"description": "midway with flyway, sql upgrade way ",
"private": false,
"type": "module",
@@ -28,11 +28,11 @@
],
"license": "AGPL",
"dependencies": {
"@certd/acme-client": "^1.39.11",
"@certd/basic": "^1.39.11",
"@certd/pipeline": "^1.39.11",
"@certd/plugin-lib": "^1.39.11",
"@certd/plus-core": "^1.39.11",
"@certd/acme-client": "^1.39.12",
"@certd/basic": "^1.39.12",
"@certd/pipeline": "^1.39.12",
"@certd/plugin-lib": "^1.39.12",
"@certd/plus-core": "^1.39.12",
"@midwayjs/cache": "3.14.0",
"@midwayjs/core": "3.20.11",
"@midwayjs/i18n": "3.20.13",
@@ -29,6 +29,7 @@ export class SysPublicSettings extends BaseSettings {
managerOtherUserPipeline = false;
icpNo?: string;
mpsNo?: string;
customFooter?: string;
robots?: boolean = true;
aiChatEnabled = true;
@@ -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.39.12](https://github.com/certd/certd/compare/v1.39.11...v1.39.12) (2026-04-29)
**Note:** Version bump only for package @certd/midway-flyway-js
## [1.39.11](https://github.com/certd/certd/compare/v1.39.10...v1.39.11) (2026-04-26)
**Note:** Version bump only for package @certd/midway-flyway-js
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@certd/midway-flyway-js",
"version": "1.39.11",
"version": "1.39.12",
"description": "midway with flyway, sql upgrade way ",
"private": false,
"type": "module",
@@ -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.39.12](https://github.com/certd/certd/compare/v1.39.11...v1.39.12) (2026-04-29)
**Note:** Version bump only for package @certd/plugin-cert
## [1.39.11](https://github.com/certd/certd/compare/v1.39.10...v1.39.11) (2026-04-26)
**Note:** Version bump only for package @certd/plugin-cert
+5 -5
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/plugin-cert",
"private": false,
"version": "1.39.11",
"version": "1.39.12",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -17,10 +17,10 @@
"compile": "tsc --skipLibCheck --watch"
},
"dependencies": {
"@certd/acme-client": "^1.39.11",
"@certd/basic": "^1.39.11",
"@certd/pipeline": "^1.39.11",
"@certd/plugin-lib": "^1.39.11",
"@certd/acme-client": "^1.39.12",
"@certd/basic": "^1.39.12",
"@certd/pipeline": "^1.39.12",
"@certd/plugin-lib": "^1.39.12",
"psl": "^1.9.0",
"punycode.js": "^2.3.1"
},
+4
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.39.12](https://github.com/certd/certd/compare/v1.39.11...v1.39.12) (2026-04-29)
**Note:** Version bump only for package @certd/plugin-lib
## [1.39.11](https://github.com/certd/certd/compare/v1.39.10...v1.39.11) (2026-04-26)
### Performance Improvements
+5 -5
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/plugin-lib",
"private": false,
"version": "1.39.11",
"version": "1.39.12",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
@@ -22,10 +22,10 @@
"@alicloud/pop-core": "^1.7.10",
"@alicloud/tea-util": "^1.4.11",
"@aws-sdk/client-s3": "^3.964.0",
"@certd/acme-client": "^1.39.11",
"@certd/basic": "^1.39.11",
"@certd/pipeline": "^1.39.11",
"@certd/plus-core": "^1.39.11",
"@certd/acme-client": "^1.39.12",
"@certd/basic": "^1.39.12",
"@certd/pipeline": "^1.39.12",
"@certd/plus-core": "^1.39.12",
"@kubernetes/client-node": "0.21.0",
"ali-oss": "^6.22.0",
"basic-ftp": "^5.0.5",
+12
View File
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.39.12](https://github.com/certd/certd/compare/v1.39.11...v1.39.12) (2026-04-29)
### Bug Fixes
* 调整手机版首页标题被挤开的bug ([eab66e2](https://github.com/certd/certd/commit/eab66e2d1988635985745f2d1b227b958969ee00))
### Performance Improvements
* 524错误时重试3次 ([00e6d58](https://github.com/certd/certd/commit/00e6d580c2f54af70fe96a214aff87c4b96426c2))
* 增加权威NS检查开关,某些用户服务器禁止向黑名单NS服务器发请求 ([1aa50cf](https://github.com/certd/certd/commit/1aa50cf53a0deab752f35ec973912e41ab8161b6))
* 支持页脚自定义 ([c985a13](https://github.com/certd/certd/commit/c985a13544aa31b0eb0783f9a3193a7e8bdc6ed6))
## [1.39.11](https://github.com/certd/certd/compare/v1.39.10...v1.39.11) (2026-04-26)
### Bug Fixes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@certd/ui-client",
"version": "1.39.11",
"version": "1.39.12",
"private": true,
"scripts": {
"dev": "vite --open",
@@ -106,8 +106,8 @@
"zod-defaults": "^0.1.3"
},
"devDependencies": {
"@certd/lib-iframe": "^1.39.11",
"@certd/pipeline": "^1.39.11",
"@certd/lib-iframe": "^1.39.12",
"@certd/pipeline": "^1.39.12",
"@rollup/plugin-commonjs": "^25.0.7",
"@rollup/plugin-node-resolve": "^15.2.3",
"@types/chai": "^4.3.12",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

@@ -3,7 +3,7 @@
<div class="flex items-center">
<span v-if="!settingStore.isComm">
<span>Powered by</span>
<a> handsfree.work </a>
<a href="https://certd.docmirror.cn/" target="_blank"> handfree.work </a>
<a-divider type="vertical" />
</span>
@@ -21,7 +21,12 @@
<span v-if="sysPublic.mpsNo">
<a href="http://www.beian.gov.cn/portal/registerSystemInfo" target="_blank">{{ sysPublic.mpsNo }}</a>
<a-divider type="vertical" />
</span>
<template v-if="sysPublic.customFooter && settingStore.isPlus">
<div v-html="sysPublic.customFooter"></div>
</template>
</div>
<div class="ml-5">v{{ version }}</div>
</div>
@@ -75,7 +75,7 @@
<div>
<span v-if="!settingStore.isComm">
<span>Powered by</span>
<a> handfree.work </a>
<a href="https://certd.docmirror.cn/" target="_blank"> handfree.work </a>
</span>
<template v-if="siteInfo.licenseTo">
@@ -802,6 +802,10 @@ export default {
noticeHelper: "系统公告,将在首页显示",
noticePlaceholder: "系统公告",
customFooter: "自定义页脚",
customFooterHelper: "自定义页脚,支持HTML",
customFooterPlaceholder: "自定义页脚",
reverseProxy: "反向代理列表",
reverseProxyHelper: "证书颁发机构ACME地址的反向代理,在申请证书时自动使用",
reverseProxyPlaceholder: "http://le.px.handfree.work",
@@ -45,6 +45,7 @@ export type SysPublicSetting = {
managerOtherUserPipeline?: boolean;
icpNo?: string;
mpsNo?: string;
customFooter?: string;
robots?: boolean;
aiChatEnabled?: boolean;
@@ -21,6 +21,7 @@ import { LayoutFooter } from "./footer";
import { LayoutHeader } from "./header";
import { LayoutExtraMenu, LayoutMenu, LayoutMixedMenu, useExtraMenu, useMixedMenu } from "./menu";
import { LayoutTabbar } from "./tabbar";
import router from "/@/router";
defineOptions({ name: "BasicLayout" });
@@ -160,7 +161,7 @@ const headerSlots = computed(() => {
>
<!-- logo -->
<template #logo>
<VbenLogo v-if="preferences.logo.enable" :class="logoClass" :collapsed="logoCollapsed" :src="preferences.logo.source" :text="preferences.app.name" :theme="showHeaderNav ? headerTheme : theme" />
<VbenLogo v-if="preferences.logo.enable" class="pointer" :class="logoClass" :collapsed="logoCollapsed" :src="preferences.logo.source" :text="preferences.app.name" :theme="showHeaderNav ? headerTheme : theme" />
</template>
<!-- 头部区域 -->
<template #header>
@@ -1,6 +1,6 @@
<script setup lang="ts">
import { VbenAvatar } from "../avatar";
import { useRouter } from "vue-router";
interface Props {
/**
* @zh_CN 是否收起文本
@@ -39,10 +39,15 @@ withDefaults(defineProps<Props>(), {
src: "",
theme: "light",
});
const router = useRouter();
function handleLogoClick() {
router.push({ path: "/" });
}
</script>
<template>
<div :class="theme" class="flex h-full items-center text-lg">
<div :class="theme" class="flex h-full items-center text-lg pointer" @click="handleLogoClick">
<a :class="$attrs.class" :href="href" class="flex h-full items-center gap-2 overflow-hidden px-3 text-lg leading-normal transition-all duration-500">
<VbenAvatar v-if="src" :alt="text" :src="src" class="relative w-8 rounded-none bg-transparent" />
<span v-if="!collapsed" class="text-foreground truncate text-nowrap font-semibold">
@@ -935,7 +935,7 @@ export default defineComponent({
};
const historyCancel = () => {
changeCurrentHistory();
// changeCurrentHistory();
console.log("currentPipeline", pipeline);
};
@@ -22,7 +22,7 @@
</div>
</nav>
<section class="hero-section">
<section class="hero-section bg-[#f7f7fc] dark:bg-[#000000]">
<div class="hero-container">
<div class="hero-content">
<h1 class="hero-title flex flex-col md:flex-row">
@@ -45,7 +45,6 @@
</div>
</div>
</section>
<section id="features" class="features-section">
<div class="container">
<div class="section-header">
@@ -21,10 +21,16 @@
</a-form-item>
<a-form-item :label="t('certd.sys.setting.notice')" :name="['public', 'notice']">
<a-textarea v-model:value="formState.public.notice" :placeholder="t('certd.sys.setting.noticePlaceholder')" :rows="5" />
<a-textarea v-model:value="formState.public.notice" :placeholder="t('certd.sys.setting.noticePlaceholder')" :rows="3" />
<div class="helper" v-html="t('certd.sys.setting.noticeHelper')"></div>
</a-form-item>
<a-form-item :label="t('certd.sys.setting.customFooter')" :name="['public', 'customFooter']">
<a-textarea v-model:value="formState.public.customFooter" :disabled="!settingsStore.isPlus" :placeholder="t('certd.sys.setting.customFooterPlaceholder')" :rows="3" />
<div class="helper" v-html="t('certd.sys.setting.customFooterHelper')"></div>
<vip-button class="ml-5 justify-start" mode="button"></vip-button>
</a-form-item>
<a-form-item :label="t('certd.sys.setting.bindUrl')">
<a-button class="ml-2" type="primary" @click="settingsStore.openBindUrlModal({ closable: true })">{{ t("certd.sys.setting.bindUrl") }}</a-button>
<div class="helper" v-html="t('certd.sys.setting.bindUrlHelper')"></div>
+13
View File
@@ -3,6 +3,19 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.39.12](https://github.com/certd/certd/compare/v1.39.11...v1.39.12) (2026-04-29)
### Bug Fixes
* 修复腾讯云clb部署报缺少sslmode参数的bug ([2f1ad72](https://github.com/certd/certd/commit/2f1ad7201f5ed9e00368a28b9e40907d4b415852))
### Performance Improvements
* 524错误时重试3次 ([00e6d58](https://github.com/certd/certd/commit/00e6d580c2f54af70fe96a214aff87c4b96426c2))
* 阿里云证书订单支持获取2.0的订单 ([64b3184](https://github.com/certd/certd/commit/64b3184b286fee996002d857b0de588452abdadd))
* 优化流水线执行时的状态保存性能 ([e00830b](https://github.com/certd/certd/commit/e00830bebcfe6344499e490bc174de96f9fb22d6))
* 支持页脚自定义 ([c985a13](https://github.com/certd/certd/commit/c985a13544aa31b0eb0783f9a3193a7e8bdc6ed6))
## [1.39.11](https://github.com/certd/certd/compare/v1.39.10...v1.39.11) (2026-04-26)
### Bug Fixes
@@ -6,7 +6,7 @@ name: CertApplyGetFormAliyun
icon: ph:certificate
title: 获取阿里云订阅证书
group: cert
desc: 从阿里云拉取订阅模式的商用证书
desc: 从阿里云拉取订阅模式的商用证书(支持 API 1.0 和 2.0
input:
domains:
title: 证书域名
@@ -49,27 +49,28 @@ input:
order: -1
helper: 请输入邮箱
accessId:
title: Access授权
helper: 阿里云授权AccessKeyId、AccessKeySecret
title: Access 授权
helper: 阿里云授权 AccessKeyId、AccessKeySecret
component:
name: access-selector
type: aliyun
required: true
order: 0
orderType:
title: 订单类型
value: CPACK
apiVersion:
title: 证书API 版本
value: v1
component:
name: a-select
vModel: value
options:
- label: 资源虚拟订单(一般选这个)
value: CPACK
- label: 售卖订单
value: BUY
- label: API 1.0 (旧版)
value: v1
- label: API 2.0 (新版)
value: v2
helper: 选择阿里云证书 API 版本
order: 0
orderId:
title: 证书订单ID
title: 证书订单 ID
component:
name: RemoteSelect
vModel: value
@@ -95,7 +96,7 @@ input:
},
}
helper: 订阅模式的证书订单Id
helper: 订阅模式的证书订单 Id(在新建流水线时暂时无法获取,可以先随便填个数字,先创建,进入流水线编辑页面再获取选择即可)
order: 0
pfxPassword:
title: 证书加密密码
+14 -14
View File
@@ -1,6 +1,6 @@
{
"name": "@certd/ui-server",
"version": "1.39.11",
"version": "1.39.12",
"description": "fast-server base midway",
"private": true,
"type": "module",
@@ -52,20 +52,20 @@
"@aws-sdk/client-sts": "^3.990.0",
"@azure/arm-dns": "^5.1.0",
"@azure/identity": "^4.13.1",
"@certd/acme-client": "^1.39.11",
"@certd/basic": "^1.39.11",
"@certd/commercial-core": "^1.39.11",
"@certd/acme-client": "^1.39.12",
"@certd/basic": "^1.39.12",
"@certd/commercial-core": "^1.39.12",
"@certd/cv4pve-api-javascript": "^8.4.2",
"@certd/jdcloud": "^1.39.11",
"@certd/lib-huawei": "^1.39.11",
"@certd/lib-k8s": "^1.39.11",
"@certd/lib-server": "^1.39.11",
"@certd/midway-flyway-js": "^1.39.11",
"@certd/pipeline": "^1.39.11",
"@certd/plugin-cert": "^1.39.11",
"@certd/plugin-lib": "^1.39.11",
"@certd/plugin-plus": "^1.39.11",
"@certd/plus-core": "^1.39.11",
"@certd/jdcloud": "^1.39.12",
"@certd/lib-huawei": "^1.39.12",
"@certd/lib-k8s": "^1.39.12",
"@certd/lib-server": "^1.39.12",
"@certd/midway-flyway-js": "^1.39.12",
"@certd/pipeline": "^1.39.12",
"@certd/plugin-cert": "^1.39.12",
"@certd/plugin-lib": "^1.39.12",
"@certd/plugin-plus": "^1.39.12",
"@certd/plus-core": "^1.39.12",
"@google-cloud/dns": "^5.3.1",
"@google-cloud/publicca": "^1.3.0",
"@huaweicloud/huaweicloud-sdk-cdn": "^3.1.185",
@@ -702,11 +702,16 @@ export class PipelineService extends BaseService<PipelineEntity> {
}
await doSaveHistory(latest);
}
async start(){
this.started = true
//先存一次,确保有数据
await this.save();
setTimeout(()=>{
//2秒后保存一次,尽快显示第一个任务的状态
this.save();
}, 1000 * 2);
this.interval = setInterval(()=>{
//之后每5秒保存一次
this.save();
}, 1000 * 5);
}
@@ -9,7 +9,7 @@ import dayjs from "dayjs";
icon: "ph:certificate",
title: "获取阿里云订阅证书",
group: pluginGroups.cert.key,
desc: "从阿里云拉取订阅模式的商用证书",
desc: "从阿里云拉取订阅模式的商用证书(支持 API 1.0 和 2.0",
default: {
strategy: {
runStrategy: RunStrategy.AlwaysRun,
@@ -18,8 +18,8 @@ import dayjs from "dayjs";
})
export class CertApplyGetFormAliyunPlugin extends CertApplyBasePlugin {
@TaskInput({
title: "Access授权",
helper: "阿里云授权AccessKeyId、AccessKeySecret",
title: "Access 授权",
helper: "阿里云授权 AccessKeyId、AccessKeySecret",
component: {
name: "access-selector",
type: "aliyun",
@@ -28,34 +28,34 @@ export class CertApplyGetFormAliyunPlugin extends CertApplyBasePlugin {
})
accessId!: string;
@TaskInput(
@TaskInput(
{
title:"订单类型",
value:"CPACK",
component:{
name:"a-select",
vModel:"value",
options:[
title: "证书API 版本",
value: "v1",
component: {
name: "a-select",
vModel: "value",
options: [
{
label:"资源虚拟订单(一般选这个)",
value:"CPACK",
label: "API 1.0 (旧版)",
value: "v1",
},
{
label:"售卖订单",
value:"BUY",
}
]
}
label: "API 2.0 (新版)",
value: "v2",
},
],
},
helper: "选择阿里云证书 API 版本",
}
)
orderType!: string;
apiVersion!: string;
@TaskInput(
createRemoteSelectInputDefine({
title: "证书订单ID",
helper: "订阅模式的证书订单Id",
title: "证书订单 ID",
helper: "订阅模式的证书订单 Id(在新建流水线时暂时无法获取,可以先随便填个数字,先创建,进入流水线编辑页面再获取选择即可)",
typeName: "CertApplyGetFormAliyun",
pageSize: 50,
component: {
@@ -68,40 +68,53 @@ export class CertApplyGetFormAliyunPlugin extends CertApplyBasePlugin {
)
orderId!: string;
async onInit(): Promise<void> {}
async onInit(): Promise<void> { }
async doCertApply(): Promise<CertReader> {
const access = await this.getAccess<AliyunAccess>(this.accessId);
const client = await access.getClient("cas.aliyuncs.com");
this.logger.info(`开始获取证书,orderId:${this.orderId}`);
if (this.apiVersion === "v2") {
return this.doCertApplyV2(client);
} else {
return this.doCertApplyV1(client);
}
}
async doCertApplyV1(client: any): Promise<CertReader> {
this.logger.info(`开始获取证书 (API 1.0),orderId:${this.orderId}`);
let orderId: any = this.orderId;
if (!orderId) {
throw new Error("请先输入证书订单ID");
throw new Error("请先输入证书订单 ID");
}
if (typeof orderId !== "string") {
orderId = parseInt(orderId);
}
const certState = await this.getCertificateState(client, orderId);
this.logger.info(`获取到证书Id:${JSON.stringify(certState.CertId)}`);
this.logger.info(`获取到证书 Id:${JSON.stringify(certState.CertId)}`);
const certDetail = await this.getCertDetail(client, certState.CertId);
this.logger.info(`获取到证书:${certDetail.getAllDomains()}, 过期时间:${dayjs(certDetail.expires).format("YYYY-MM-DD HH:mm:ss")}`);
return certDetail;
}
async doCertApplyV2(client: any): Promise<CertReader> {
this.logger.info(`开始获取证书 (API 2.0),instanceId:${this.orderId}`);
if (!this.orderId) {
throw new Error("请先输入证书实例 ID");
}
const certDetail = await this.getCertDetailV2(client, this.orderId);
this.logger.info(`获取到证书:${certDetail.getAllDomains()}, 过期时间:${dayjs(certDetail.expires).format("YYYY-MM-DD HH:mm:ss")}`);
return certDetail;
}
async getCertDetail(client: any, certId: any) {
const res = await client.doRequest({
// 接口名称
// 接口名称
action: "GetUserCertificateDetail",
// 接口版本
version: "2020-04-07",
// 接口协议
protocol: "HTTPS",
// 接口 HTTP 方法
method: "POST",
authType: "AK",
style: "RPC",
// 接口 PATH
pathname: `/`,
data: {
query: {
@@ -120,19 +133,40 @@ export class CertApplyGetFormAliyunPlugin extends CertApplyBasePlugin {
});
}
async getCertificateState(client: any, orderId: any): Promise<{ CertId: string; Type: string; Domain: string }> {
async getCertDetailV2(client: any, instanceId: string) {
const res = await client.doRequest({
// 接口名称
action: "DescribeCertificateState",
// 接口版本
action: "GetUserCertificateDetail",
version: "2020-04-07",
protocol: "HTTPS",
method: "POST",
authType: "AK",
style: "RPC",
pathname: `/`,
data: {
query: {
CertId: instanceId,
},
},
});
const crt = res.Cert;
const key = res.Key;
return new CertReader({
crt,
key,
csr: "",
});
}
async getCertificateState(client: any, orderId: any): Promise<{ CertId: string; Type: string; Domain: string }> {
const res = await client.doRequest({
action: "DescribeCertificateState",
version: "2020-04-07",
// 接口协议
protocol: "HTTPS",
// 接口 HTTP 方法
method: "POST",
authType: "AK",
style: "RPC",
// 接口 PATH
pathname: `/`,
data: {
query: {
@@ -146,35 +180,41 @@ export class CertApplyGetFormAliyunPlugin extends CertApplyBasePlugin {
async onGetOrderList(req: PageSearch) {
if (!this.accessId) {
throw new Error("请先选择Access授权");
throw new Error("请先选择 Access 授权");
}
const access = await this.getAccess<AliyunAccess>(this.accessId);
const client = await access.getClient("cas.aliyuncs.com");
const pager = new Pager(req)
const pager = new Pager(req);
if (this.apiVersion === "v2") {
return this.onGetOrderListV2(client, pager);
} else {
return this.onGetOrderListV1(client, pager);
}
}
async onGetOrderListV1(client: any, pager: Pager) {
const res = await client.doRequest({
// 接口名称
action: "ListUserCertificateOrder",
// 接口版本
version: "2020-04-07",
method: "POST",
authType: "AK",
style: "RPC",
// 接口 PATH
pathname: `/`,
data: {
query: {
OrderType: this.orderType,
OrderType: "CPACK",
Status: "ISSUED",
CurrentPage: pager.pageNo,
ShowSize : pager.pageSize,
ShowSize: pager.pageSize,
},
},
});
const list = res?.CertificateOrderList || [];
if (!list || list.length === 0) {
return []
return [];
}
const total = res.TotalCount || 0;
@@ -195,9 +235,49 @@ export class CertApplyGetFormAliyunPlugin extends CertApplyBasePlugin {
};
});
return {
list:records,
list: records,
total,
};
}
async onGetOrderListV2(client: any, pager: Pager) {
const res = await client.doRequest({
action: "ListInstances",
version: "2020-04-07",
method: "POST",
authType: "AK",
style: "RPC",
pathname: `/`,
data: {
query: {
Status: "normal",
CurrentPage: pager.pageNo,
ShowSize: pager.pageSize,
},
},
});
const list = res?.InstanceList || [];
if (!list || list.length === 0) {
return [];
}
const total = res.TotalCount || 0;
const records = list.map((item: any) => {
const value = item.InstanceId;
const domain = item.Domain;
const label = `${item.Domain}<${item.CertificateName}>`;
return {
label: label,
value: value,
Domain: domain,
};
});
return {
list: records,
total,
};
}
}
@@ -246,6 +246,7 @@ export class DeployCertToTencentCLB extends AbstractTaskPlugin {
if (typeof this.cert === 'string') {
return {
Certificate: {
SSLMode: 'UNIDIRECTIONAL', // 单向认证
CertId: certId,
},
LoadBalancerId: this.loadBalancerId,
+108 -47
View File
@@ -49,7 +49,7 @@ importers:
packages/core/acme-client:
dependencies:
'@certd/basic':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../basic
'@peculiar/x509':
specifier: ^1.11.0
@@ -213,11 +213,11 @@ importers:
packages/core/pipeline:
dependencies:
'@certd/basic':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../basic
'@certd/plus-core':
specifier: ^1.39.10
version: link:../../pro/plus-core
specifier: ^1.39.11
version: 1.39.11
dayjs:
specifier: ^1.11.7
version: 1.11.13
@@ -412,7 +412,7 @@ importers:
packages/libs/lib-k8s:
dependencies:
'@certd/basic':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../core/basic
'@kubernetes/client-node':
specifier: 0.21.0
@@ -452,20 +452,20 @@ importers:
packages/libs/lib-server:
dependencies:
'@certd/acme-client':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../core/pipeline
'@certd/plugin-lib':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../plugins/plugin-lib
'@certd/plus-core':
specifier: ^1.39.10
version: link:../../pro/plus-core
specifier: ^1.39.11
version: 1.39.11
'@midwayjs/cache':
specifier: 3.14.0
version: 3.14.0
@@ -610,16 +610,16 @@ importers:
packages/plugins/plugin-cert:
dependencies:
'@certd/acme-client':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../core/pipeline
'@certd/plugin-lib':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../plugin-lib
psl:
specifier: ^1.9.0
@@ -683,17 +683,17 @@ importers:
specifier: ^3.964.0
version: 3.964.0(aws-crt@1.26.2)
'@certd/acme-client':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../core/pipeline
'@certd/plus-core':
specifier: ^1.39.10
version: link:../../pro/plus-core
specifier: ^1.39.11
version: 1.39.11
'@kubernetes/client-node':
specifier: 0.21.0
version: 0.21.0
@@ -783,16 +783,16 @@ importers:
packages/pro/commercial-core:
dependencies:
'@certd/basic':
specifier: ^1.39.10
specifier: ^1.39.7
version: link:../../core/basic
'@certd/lib-server':
specifier: ^1.39.10
specifier: ^1.39.7
version: link:../../libs/lib-server
'@certd/pipeline':
specifier: ^1.39.10
specifier: ^1.39.7
version: link:../../core/pipeline
'@certd/plus-core':
specifier: ^1.39.10
specifier: ^1.39.7
version: link:../plus-core
'@midwayjs/core':
specifier: 3.20.11
@@ -868,16 +868,16 @@ importers:
packages/pro/plugin-plus:
dependencies:
'@certd/basic':
specifier: ^1.39.10
specifier: ^1.39.7
version: link:../../core/basic
'@certd/pipeline':
specifier: ^1.39.10
specifier: ^1.39.7
version: link:../../core/pipeline
'@certd/plugin-lib':
specifier: ^1.39.10
specifier: ^1.39.7
version: link:../../plugins/plugin-lib
'@certd/plus-core':
specifier: ^1.39.10
specifier: ^1.39.7
version: link:../plus-core
crypto-js:
specifier: ^4.2.0
@@ -953,7 +953,7 @@ importers:
packages/pro/plus-core:
dependencies:
'@certd/basic':
specifier: ^1.39.10
specifier: ^1.39.7
version: link:../../core/basic
dayjs:
specifier: ^1.11.7
@@ -1249,10 +1249,10 @@ importers:
version: 0.1.3(zod@3.24.4)
devDependencies:
'@certd/lib-iframe':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../libs/lib-iframe
'@certd/pipeline':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../core/pipeline
'@rollup/plugin-commonjs':
specifier: ^25.0.7
@@ -1453,47 +1453,47 @@ importers:
specifier: ^4.13.1
version: 4.13.1
'@certd/acme-client':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../core/acme-client
'@certd/basic':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../core/basic
'@certd/commercial-core':
specifier: ^1.39.10
version: link:../../pro/commercial-core
specifier: ^1.39.11
version: 1.39.11(better-sqlite3@11.10.0)(mysql2@3.14.1)(pg@8.16.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@18.19.100)(typescript@5.9.3))
'@certd/cv4pve-api-javascript':
specifier: ^8.4.2
version: 8.4.2
'@certd/jdcloud':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../libs/lib-jdcloud
'@certd/lib-huawei':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../libs/lib-huawei
'@certd/lib-k8s':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../libs/lib-k8s
'@certd/lib-server':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../libs/lib-server
'@certd/midway-flyway-js':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../libs/midway-flyway-js
'@certd/pipeline':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../core/pipeline
'@certd/plugin-cert':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../plugins/plugin-cert
'@certd/plugin-lib':
specifier: ^1.39.10
specifier: ^1.39.11
version: link:../../plugins/plugin-lib
'@certd/plugin-plus':
specifier: ^1.39.10
version: link:../../pro/plugin-plus
specifier: ^1.39.11
version: 1.39.11
'@certd/plus-core':
specifier: ^1.39.10
version: link:../../pro/plus-core
specifier: ^1.39.11
version: 1.39.11
'@google-cloud/dns':
specifier: ^5.3.1
version: 5.3.1
@@ -2907,9 +2907,18 @@ packages:
'@better-scroll/zoom@2.5.1':
resolution: {integrity: sha512-aGvFY5ooeZWS4RcxQLD+pGLpQHQxpPy0sMZV3yadcd2QK53PK9gS4Dp+BYfRv8lZ4/P2LoNEhr6Wq1DN6+uPlA==}
'@certd/commercial-core@1.39.11':
resolution: {integrity: sha512-sX0WOF+FflGcx3aeBt1f/meu8plnHqC7UnPivJr9gMx54PRdyTC/zQ5jKvcSTUlivp8xX9Mm2qLmevb5XlN8uQ==}
'@certd/cv4pve-api-javascript@8.4.2':
resolution: {integrity: sha512-udGce7ewrVl4DmZvX+17PjsnqsdDIHEDatr8QP0AVrY2p+8JkaSPW4mXCKiLGf82C9K2+GXgT+qNIqgW7tfF9Q==}
'@certd/plugin-plus@1.39.11':
resolution: {integrity: sha512-oi3+0gcyHswI97+cAY7dNXPP66sQga9n98STQYtaDQ5d2LY8dXYpXQl9V1L7IvfAafc1ZAcQLTrfwKA+b9kAZg==}
'@certd/plus-core@1.39.11':
resolution: {integrity: sha512-DOi7mTUTEK4iFhfLjmxSL7gcF/LMlFguERBPyd7YHI7QBkkufTodLu3l8SuXYwFtp3O883XzlDkcBlnQNAdkwA==}
'@certd/vue-js-cron-core@6.0.3':
resolution: {integrity: sha512-kqzoAMhYz9j6FGNWEODRYtt4NpUEUwjpkU89z5WVg2tCtOcI5VhwyUGOd8AxiBCRfd6PtXvzuqw85PaOps9wrQ==}
@@ -15455,12 +15464,64 @@ snapshots:
dependencies:
'@better-scroll/core': 2.5.1
'@certd/commercial-core@1.39.11(better-sqlite3@11.10.0)(mysql2@3.14.1)(pg@8.16.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@18.19.100)(typescript@5.9.3))':
dependencies:
'@certd/basic': link:packages/core/basic
'@certd/lib-server': link:packages/libs/lib-server
'@certd/pipeline': link:packages/core/pipeline
'@certd/plus-core': 1.39.11
'@midwayjs/core': 3.20.11
'@midwayjs/koa': 3.20.13
'@midwayjs/logger': 3.4.2
'@midwayjs/swagger': 3.20.11
'@midwayjs/typeorm': 3.20.11
dayjs: 1.11.13
typeorm: 0.3.24(better-sqlite3@11.10.0)(mysql2@3.14.1)(pg@8.16.0)(reflect-metadata@0.2.2)(ts-node@10.9.2(@types/node@18.19.100)(typescript@5.9.3))
transitivePeerDependencies:
- '@google-cloud/spanner'
- '@sap/hana-client'
- babel-plugin-macros
- better-sqlite3
- hdb-pool
- ioredis
- mongodb
- mssql
- mysql2
- oracledb
- pg
- pg-native
- pg-query-stream
- redis
- reflect-metadata
- sql.js
- sqlite3
- supports-color
- ts-node
- typeorm-aurora-data-api-driver
'@certd/cv4pve-api-javascript@8.4.2':
dependencies:
debug: 4.4.3(supports-color@8.1.1)
transitivePeerDependencies:
- supports-color
'@certd/plugin-plus@1.39.11':
dependencies:
'@certd/basic': link:packages/core/basic
'@certd/pipeline': link:packages/core/pipeline
'@certd/plugin-lib': link:packages/plugins/plugin-lib
'@certd/plus-core': 1.39.11
crypto-js: 4.2.0
dayjs: 1.11.13
form-data: 4.0.2
jsrsasign: 11.1.0
querystring: 0.2.1
'@certd/plus-core@1.39.11':
dependencies:
'@certd/basic': link:packages/core/basic
dayjs: 1.11.13
'@certd/vue-js-cron-core@6.0.3':
dependencies:
mustache: 4.2.0