From e1eef013a856d26fe80a05d9ec6e505e2e31e5f9 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Wed, 12 Nov 2025 22:15:17 +0800 Subject: [PATCH 1/9] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E7=AB=8B=E5=8D=B3=E8=A7=A6=E5=8F=91=E8=BF=90=E8=A1=8C=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/certd/pipeline/detail.vue | 4 +-- .../views/certd/pipeline/pipeline/index.vue | 28 +++++++++++-------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/packages/ui/certd-client/src/views/certd/pipeline/detail.vue b/packages/ui/certd-client/src/views/certd/pipeline/detail.vue index a27ed3abe..d713a5603 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/detail.vue +++ b/packages/ui/certd-client/src/views/certd/pipeline/detail.vue @@ -20,8 +20,8 @@ defineOptions({ name: "PipelineDetail", }); const route = useRoute(); -const pipelineId: Ref = ref(route.query.id); -const historyId = ref(route.query.historyId as string); +const pipelineId: Ref = ref(parseInt((route.query.id as string) || "0")); +const historyId: Ref = ref(parseInt((route.query.historyId as string) || "0")); const pluginStore = usePluginStore(); const pipelineOptions: PipelineOptions = { async getPipelineDetail({ pipelineId }) { diff --git a/packages/ui/certd-client/src/views/certd/pipeline/pipeline/index.vue b/packages/ui/certd-client/src/views/certd/pipeline/pipeline/index.vue index bcb6f0877..43a14ea14 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/pipeline/index.vue +++ b/packages/ui/certd-client/src/views/certd/pipeline/pipeline/index.vue @@ -327,11 +327,11 @@ export default defineComponent({ }, props: { pipelineId: { - type: [Number, String], + type: Number, default: 0, }, historyId: { - type: [Number, String], + type: Number, default: 0, }, editMode: { @@ -348,6 +348,7 @@ export default defineComponent({ emits: ["update:modelValue", "update:editMode"], setup(props, ctx) { const { t } = useI18n(); + //右侧选中的pipeline const currentPipeline: Ref = ref({}); const pipeline: Ref = ref({}); const pipelineEntity: Ref = ref({}); @@ -399,7 +400,7 @@ export default defineComponent({ currentPipeline.value = currentHistory.value.pipeline; }; - async function loadHistoryList(reload = false) { + async function loadHistoryList(reload = false, historyId: number) { if (props.editMode) { return; } @@ -416,11 +417,11 @@ export default defineComponent({ histories.value = historyList; if (historyList.length > 0) { - //@ts-ignore - if (props.historyId > 0) { - const found = historyList.find(item => { + if (historyId > 0) { + //如果传递了history,优先显示历史记录作为当前 + const found = histories.value.find(item => { //字符串==int - return item.id == props.historyId; + return item.id == historyId; }); if (found) { await changeCurrentHistory(found); @@ -428,7 +429,8 @@ export default defineComponent({ } } //@ts-ignore - if (historyList[0]?.version === pipeline.value.version) { + if (historyList[0]?.version === pipeline.value?.version) { + //如果当前的流水线版本与历史记录最后一条一致,则将该记录设置为current await changeCurrentHistory(historyList[0]); } } @@ -482,7 +484,7 @@ export default defineComponent({ if (editMode) { changeCurrentHistory(); } else if (histories.value.length > 0) { - if (histories.value[0].pipeline.version === pipeline.value.version) { + if (histories.value[0].pipeline?.version === pipeline.value?.version) { changeCurrentHistory(histories.value[0]); } } @@ -508,7 +510,7 @@ export default defineComponent({ detail.pipeline ); pipeline.value = currentPipeline.value; - await loadHistoryList(true); + await loadHistoryList(true, props.historyId); }, { immediate: true, @@ -740,7 +742,11 @@ export default defineComponent({ //@ts-ignore await changeCurrentHistory(null); if (histories.value.length > 0) { - pipeline.value = histories.value[0].pipeline; + //看是不是最新的pipeline版本 + if (pipeline.value?.version !== histories.value[0].pipeline?.version) { + const detail: PipelineDetail = await props.options.getPipelineDetail({ pipelineId: pipeline.value.id }); + pipeline.value = detail.pipeline; + } } await props.options.doTrigger({ pipelineId: pipeline.value.id, stepId: stepId }); From 86ce00adf92ff98fead87a3eaaa6631036708f47 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Wed, 12 Nov 2025 23:56:02 +0800 Subject: [PATCH 2/9] =?UTF-8?q?perf:=20=E6=94=AF=E6=8C=81=E4=BD=BF?= =?UTF-8?q?=E7=94=A8letencrypt=E6=B5=8B=E8=AF=95=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E7=94=B3=E8=AF=B7ip=E8=AF=81=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 3 +- packages/core/acme-client/src/auto.js | 21 ++++++++-- packages/core/basic/src/utils/util.domain.ts | 40 +++++++++++++++---- .../src/plugin/cert-plugin/acme.ts | 32 +++++++-------- 4 files changed, 68 insertions(+), 28 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 9a59ecdae..217769ea5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,5 +4,6 @@ "typescript.tsc.autoDetect": "watch", "git.scanRepositories": [ "./packages/pro" - ] + ], + "editor.defaultFormatter": "dbaeumer.vscode-eslint" } \ No newline at end of file diff --git a/packages/core/acme-client/src/auto.js b/packages/core/acme-client/src/auto.js index e87e288ac..ad3f1d3c4 100644 --- a/packages/core/acme-client/src/auto.js +++ b/packages/core/acme-client/src/auto.js @@ -4,6 +4,9 @@ import { readCsrDomains } from "./crypto/index.js"; import { wait } from "./wait.js"; import { CancelError } from "./error.js"; +import { domainUtils } from '@certd/basic'; + + const defaultOpts = { @@ -65,7 +68,7 @@ export default async (client, userOpts) => { * Parse domains from CSR */ - log("[auto] Parsing domains from Certificate Signing Request "); + log("[auto] Parsing domains from Certificate Signing Request"); const { commonName, altNames } = readCsrDomains(opts.csr); const uniqueDomains = Array.from(new Set([commonName].concat(altNames).filter((d) => d))); @@ -76,9 +79,21 @@ export default async (client, userOpts) => { */ log("[auto] Placing new certificate order with ACME provider"); - const orderPayload = { identifiers: uniqueDomains.map((d) => ({ type: "dns", value: d })) }; - if (opts.profile && client.sslProvider === 'letsencrypt' ){ + + let hasIp = false + const orderPayload = { identifiers: uniqueDomains.map((d) =>{ + // 判断是否为IP(v4或v6),否则按域名处理 + const type = domainUtils.isIp(d) ? 'ip' : 'dns'; + if(type === 'ip'){ + hasIp = true + } + return { type, value: d } + }) }; + if (opts.profile && client.sslProvider.startsWith("letsencrypt") ){ orderPayload.profile = opts.profile; + if(hasIp){ + orderPayload.profile = "shortlived" + } } const order = await client.createOrder(orderPayload); const authorizations = await client.getAuthorizations(order); diff --git a/packages/core/basic/src/utils/util.domain.ts b/packages/core/basic/src/utils/util.domain.ts index 5e1584eeb..ed08f0d22 100644 --- a/packages/core/basic/src/utils/util.domain.ts +++ b/packages/core/basic/src/utils/util.domain.ts @@ -7,29 +7,29 @@ function match(targetDomains: string | string[], inDomains: string[]) { return false; } - if (typeof targetDomains === 'string') { + if (typeof targetDomains === "string") { targetDomains = [targetDomains]; } for (let targetDomain of targetDomains) { let matched = false; - if (targetDomain.startsWith('.')) { - targetDomain = '*' + targetDomain; + if (targetDomain.startsWith(".")) { + targetDomain = "*" + targetDomain; } for (let inDomain of inDomains) { - if (inDomain.startsWith('.')) { - inDomain = '*' + inDomain; + if (inDomain.startsWith(".")) { + inDomain = "*" + inDomain; } if (targetDomain === inDomain) { matched = true; break; } - if (!inDomain.startsWith('*.')) { + if (!inDomain.startsWith("*.")) { //不可能匹配 continue; } //子域名匹配通配符即可 - const firstDotIndex = targetDomain.indexOf('.'); + const firstDotIndex = targetDomain.indexOf("."); const targetDomainSuffix = targetDomain.substring(firstDotIndex + 1); if (targetDomainSuffix === inDomain.substring(2)) { matched = true; @@ -46,6 +46,32 @@ function match(targetDomains: string | string[], inDomains: string[]) { return true; } +function isIpv4(d: string) { + if (!d) { + return false; + } + const isIPv4Regex = /^(\d{1,3}\.){3}\d{1,3}$/; + return isIPv4Regex.test(d); +} + +function isIpv6(d: string) { + if (!d) { + return false; + } + const isIPv6Regex = /^([\da-f]{1,4}:){2,7}[\da-f]{1,4}$/i; + return isIPv6Regex.test(d); +} + +function isIp(d: string) { + if (!d) { + return false; + } + return isIpv4(d) || isIpv6(d); +} + export const domainUtils = { match, + isIpv4, + isIpv6, + isIp, }; diff --git a/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts b/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts index 74322522d..3b7effb8a 100644 --- a/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts +++ b/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts @@ -364,15 +364,13 @@ export class AcmeService { //兼容老版本 createCsr = acme.forge.createCsr; } - const [key, csr] = await createCsr( - { - commonName, - ...csrInfo, - altNames, - // emailAddress: email, - }, - privateKey - ); + const csrData: any = { + // commonName, + ...csrInfo, + altNames, + // emailAddress: email, + }; + const [key, csr] = await createCsr(csrData, privateKey); if (dnsProvider == null && domainsVerifyPlan == null) { throw new Error("dnsProvider 、 domainsVerifyPlan不能都为空"); @@ -417,7 +415,7 @@ export class AcmeService { } buildCommonNameByDomains(domains: string | string[]): { - commonName: string; + commonName?: string; altNames: string[] | undefined; } { if (typeof domains === "string") { @@ -426,14 +424,14 @@ export class AcmeService { if (domains.length === 0) { throw new Error("domain can not be empty"); } - const commonName = domains[0]; - let altNames: undefined | string[] = undefined; - if (domains.length > 1) { - altNames = _.slice(domains, 1); - } + // const commonName = domains[0]; + // let altNames: undefined | string[] = undefined; + // if (domains.length > 1) { + // altNames = _.slice(domains, 1); + // } return { - commonName, - altNames, + // commonName, + altNames: domains, }; } From 1d23dd2426bd1e4c4dfea0a9e561d665e045ba9d Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 13 Nov 2025 00:45:05 +0800 Subject: [PATCH 3/9] =?UTF-8?q?perf:=20=E6=94=AF=E6=8C=81=E8=85=BE?= =?UTF-8?q?=E8=AE=AF=E4=BA=91teo=20dns=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 5 +- packages/core/acme-client/src/client.js | 5 +- packages/core/acme-client/src/verify.js | 31 ++-- packages/core/acme-client/types/index.d.ts | 3 +- .../src/plugin/cert-plugin/acme.ts | 2 +- .../plugins/plugin-lib/src/tencent/access.ts | 4 + .../cname/service/cname-record-service.ts | 8 +- .../plugin-tencent/dns-provider/index.ts | 1 + .../dns-provider/teo-dns-provider.ts | 144 ++++++++++++++++++ 9 files changed, 187 insertions(+), 16 deletions(-) create mode 100644 packages/ui/certd-server/src/plugins/plugin-tencent/dns-provider/teo-dns-provider.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 217769ea5..091a6a6d8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,8 @@ "git.scanRepositories": [ "./packages/pro" ], - "editor.defaultFormatter": "dbaeumer.vscode-eslint" + "editor.defaultFormatter": "dbaeumer.vscode-eslint", + "[typescript]": { + "editor.defaultFormatter": "vscode.typescript-language-features" + } } \ No newline at end of file diff --git a/packages/core/acme-client/src/client.js b/packages/core/acme-client/src/client.js index 270261035..54a5ee339 100644 --- a/packages/core/acme-client/src/client.js +++ b/packages/core/acme-client/src/client.js @@ -7,7 +7,7 @@ import { createHash } from 'crypto'; import { getPemBodyAsB64u } from './crypto/index.js'; import HttpClient from './http.js'; import AcmeApi from './api.js'; -import verify from './verify.js'; +import {createChallengeFn} from './verify.js'; import * as util from './util.js'; import auto from './auto.js'; import { CancelError } from './error.js'; @@ -492,6 +492,9 @@ class AcmeClient { throw new Error('Unable to verify ACME challenge, URL not found'); } + const {challenges} = createChallengeFn({logger:this.opts.logger}); + + const verify = challenges if (typeof verify[challenge.type] === 'undefined') { throw new Error(`Unable to verify ACME challenge, unknown type: ${challenge.type}`); } diff --git a/packages/core/acme-client/src/verify.js b/packages/core/acme-client/src/verify.js index 0af93fd59..6c6920059 100644 --- a/packages/core/acme-client/src/verify.js +++ b/packages/core/acme-client/src/verify.js @@ -4,14 +4,22 @@ import dnsSdk from "dns" import https from 'https' -import {log} from './logger.js' +import {log as defaultLog} from './logger.js' import axios from './axios.js' import * as util from './util.js' import {isAlpnCertificateAuthorizationValid} from './crypto/index.js' const dns = dnsSdk.promises -/** + + +export function createChallengeFn(opts = {}){ + const logger = opts?.logger || {info:defaultLog,error:defaultLog,warn:defaultLog,debug:defaultLog} + + const log = function(...args){ + logger.info(...args) + } + /** * Verify ACME HTTP challenge * * https://datatracker.ietf.org/doc/html/rfc8555#section-8.3 @@ -112,7 +120,7 @@ async function walkDnsChallengeRecord(recordName, resolver = dns,deep = 0) { return records } -export async function walkTxtRecord(recordName,deep = 0) { + async function walkTxtRecord(recordName,deep = 0) { if(deep >5){ log(`walkTxtRecord too deep (#${deep}) , skip walk`) return [] @@ -207,12 +215,13 @@ async function verifyTlsAlpnChallenge(authz, challenge, keyAuthorization) { return true; } -/** - * Export API - */ + return { + challenges:{ + 'http-01': verifyHttpChallenge, + 'dns-01': verifyDnsChallenge, + 'tls-alpn-01': verifyTlsAlpnChallenge, + }, + walkTxtRecord, + } -export default { - 'http-01': verifyHttpChallenge, - 'dns-01': verifyDnsChallenge, - 'tls-alpn-01': verifyTlsAlpnChallenge, -}; +} \ No newline at end of file diff --git a/packages/core/acme-client/types/index.d.ts b/packages/core/acme-client/types/index.d.ts index fd33fb427..90b57a701 100644 --- a/packages/core/acme-client/types/index.d.ts +++ b/packages/core/acme-client/types/index.d.ts @@ -207,7 +207,8 @@ export const agents: any; export function setLogger(fn: (message: any, ...args: any[]) => void): void; -export function walkTxtRecord(record: any): Promise; +export function createChallengeFn(opts?: {logger?:any}): any; +// export function walkTxtRecord(record: any): Promise; export function getAuthoritativeDnsResolver(record:string): Promise; export const CancelError: typeof CancelError; diff --git a/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts b/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts index 3b7effb8a..4d84cde3e 100644 --- a/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts +++ b/packages/plugins/plugin-cert/src/plugin/cert-plugin/acme.ts @@ -337,7 +337,7 @@ export class AcmeService { domains = encodingDomains; /* Create CSR */ - const { commonName, altNames } = this.buildCommonNameByDomains(domains); + const { altNames } = this.buildCommonNameByDomains(domains); let privateKey = null; const privateKeyType = options.privateKeyType || "rsa_2048"; const privateKeyArr = privateKeyType.split("_"); diff --git a/packages/plugins/plugin-lib/src/tencent/access.ts b/packages/plugins/plugin-lib/src/tencent/access.ts index aaa1c150a..0b0fb41aa 100644 --- a/packages/plugins/plugin-lib/src/tencent/access.ts +++ b/packages/plugins/plugin-lib/src/tencent/access.ts @@ -64,4 +64,8 @@ export class TencentAccess extends BaseAccess { intlDomain() { return this.isIntl() ? "intl." : ""; } + + buildEndpoint(endpoint: string) { + return `${this.intlDomain()}${endpoint}`; + } } diff --git a/packages/ui/certd-server/src/modules/cname/service/cname-record-service.ts b/packages/ui/certd-server/src/modules/cname/service/cname-record-service.ts index ea028b9b9..ee4224bd3 100644 --- a/packages/ui/certd-server/src/modules/cname/service/cname-record-service.ts +++ b/packages/ui/certd-server/src/modules/cname/service/cname-record-service.ts @@ -13,7 +13,7 @@ import { CnameRecordEntity, CnameRecordStatusType } from "../entity/cname-record import { createDnsProvider, IDnsProvider } from "@certd/plugin-cert"; import { CnameProvider, CnameRecord } from "@certd/pipeline"; import { cache, http, isDev, logger, utils } from "@certd/basic"; -import { getAuthoritativeDnsResolver, walkTxtRecord } from "@certd/acme-client"; +import { getAuthoritativeDnsResolver, createChallengeFn } from "@certd/acme-client"; import { CnameProviderService } from "./cname-provider-service.js"; import { CnameProviderEntity } from "../entity/cname-provider.js"; import { CommonDnsProvider } from "./common-provider.js"; @@ -241,6 +241,8 @@ export class CnameRecordService extends BaseService { * @param id */ async verify(id: number) { + + const {walkTxtRecord} = createChallengeFn({logger}); const bean = await this.info(id); if (!bean) { throw new ValidateException(`CnameRecord:${id} 不存在`); @@ -416,6 +418,7 @@ export class CnameRecordService extends BaseService { async checkRepeatAcmeChallengeRecords(acmeRecordDomain: string, targetCnameDomain: string) { + let dnsResolver = null; try { dnsResolver = await getAuthoritativeDnsResolver(acmeRecordDomain); @@ -460,6 +463,9 @@ export class CnameRecordService extends BaseService { //如果权威服务器中查不到txt,无需继续检查 return; } + + const {walkTxtRecord} = createChallengeFn({logger}); + if (cnameRecords.length > 0) { // 从cname记录中获取txt记录 // 对比是否存在,如果不存在于cname中获取的txt中,说明本体有创建多余的txt记录 diff --git a/packages/ui/certd-server/src/plugins/plugin-tencent/dns-provider/index.ts b/packages/ui/certd-server/src/plugins/plugin-tencent/dns-provider/index.ts index 61eaff08e..658355b5b 100644 --- a/packages/ui/certd-server/src/plugins/plugin-tencent/dns-provider/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-tencent/dns-provider/index.ts @@ -1,2 +1,3 @@ import './dnspod-dns-provider.js'; import './tencent-dns-provider.js'; +import './teo-dns-provider.js'; diff --git a/packages/ui/certd-server/src/plugins/plugin-tencent/dns-provider/teo-dns-provider.ts b/packages/ui/certd-server/src/plugins/plugin-tencent/dns-provider/teo-dns-provider.ts new file mode 100644 index 000000000..96ede7187 --- /dev/null +++ b/packages/ui/certd-server/src/plugins/plugin-tencent/dns-provider/teo-dns-provider.ts @@ -0,0 +1,144 @@ +import { AbstractDnsProvider, CreateRecordOptions, IsDnsProvider, RemoveRecordOptions } from '@certd/plugin-cert'; +import { TencentAccess } from '@certd/plugin-lib'; + +@IsDnsProvider({ + name: 'tencent-eo', + title: '腾讯云EO DNS', + desc: '腾讯云EO DNS解析提供者', + accessType: 'tencent', + icon: 'svg:icon-tencentcloud', +}) +export class TencentEoDnsProvider extends AbstractDnsProvider { + access!: TencentAccess; + + client!: any; + + + async onInstance() { + this.access = this.ctx.access as TencentAccess + const clientConfig = { + credential: this.access, + region: '', + profile: { + httpProfile: { + endpoint: this.access.buildEndpoint("teo.tencentcloudapi.com"), + }, + }, + }; + const teosdk = await import('tencentcloud-sdk-nodejs/tencentcloud/services/teo/v20220901/index.js'); + const TeoClient = teosdk.v20220901.Client; + // 实例化要请求产品的client对象,clientProfile是可选的 + this.client = new TeoClient(clientConfig); + } + + + async getZoneId(domain: string) { + + const params = { + "Filters": [ + { + "Name": "zone-name", + "Values": [ + domain + ] + } + ] + }; + const res = await this.client.DescribeZones(params); + if (res.Zones && res.Zones.length > 0) { + return res.Zones[0].ZoneId; + } + throw new Error('未找到对应的ZoneId'); + } + + async createRecord(options: CreateRecordOptions): Promise { + const { fullRecord, value, type, domain } = options; + this.logger.info('添加域名解析:', fullRecord, value); + + const zoneId = await this.getZoneId(domain); + const params = { + "ZoneId": zoneId, + "Name": fullRecord, + "Type": type, + "Content": value + }; + + try { + const ret = await this.client.CreateDnsRecord(params); + this.logger.info('添加域名解析成功:', fullRecord, value, JSON.stringify(ret)); + /* + { + "RecordId": 162, + "RequestId": "ab4f1426-ea15-42ea-8183-dc1b44151166" + } + */ + return { + RecordId: ret.RecordId, + ZoneId: zoneId, + }; + } catch (e: any) { + if (e?.code === 'ResourceInUse.DuplicateName') { + this.logger.info('域名解析已存在,无需重复添加:', fullRecord, value); + return await this.findRecord({ + ...options, + zoneId, + }); + } + throw e; + } + } + + async findRecord(options: CreateRecordOptions & { zoneId: string }): Promise { + + const { zoneId } = options; + const params = { + "ZoneId": zoneId, + "Filters": [ + { + "Name": "name", + "Values": [ + options.fullRecord + ] + }, + { + "Name": "content", + "Values": [ + options.value + ] + }, + { + "Name": "type", + "Values": [ + options.type + ] + } + ] + }; + const ret = await this.client.DescribeRecordFilterList(params); + if (ret.DnsRecords && ret.DnsRecords.length > 0) { + this.logger.info('已存在解析记录:', ret.DnsRecords); + return ret.DnsRecords[0]; + } + return {}; + } + + async removeRecord(options: RemoveRecordOptions) { + const { fullRecord, value } = options.recordReq; + const record = options.recordRes; + if (!record) { + this.logger.info('解析记录recordId为空,不执行删除', fullRecord, value); + } + + const params = { + "ZoneId": record.ZoneId, + "RecordIds": [ + record.RecordId + ] + }; + + const ret = await this.client.DeleteDnsRecords(params); + this.logger.info('删除域名解析成功:', fullRecord, value); + return ret; + } +} +new TencentEoDnsProvider(); From d7c381e05d1d87496f59ea395025773c630ce7bd Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 13 Nov 2025 00:50:40 +0800 Subject: [PATCH 4/9] chore: 1 --- packages/core/acme-client/src/verify.js | 4 +++- packages/ui/certd-client/src/locales/langs/zh-CN/vip.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/core/acme-client/src/verify.js b/packages/core/acme-client/src/verify.js index 6c6920059..708f1d160 100644 --- a/packages/core/acme-client/src/verify.js +++ b/packages/core/acme-client/src/verify.js @@ -181,7 +181,9 @@ async function verifyDnsChallenge(authz, challenge, keyAuthorization, prefix = ' recordValues = [...new Set(recordValues)]; log(`DNS查询成功, 找到 ${recordValues.length} 条TXT记录:${recordValues}`); if (!recordValues.length || !recordValues.includes(keyAuthorization)) { - throw new Error(`没有找到需要的DNS TXT记录: ${recordName},期望:${keyAuthorization},结果:${recordValues}`); + const err = `没有找到需要的DNS TXT记录: ${recordName},期望:${keyAuthorization},结果:${recordValues}` + log(err); + throw new Error(err); } log(`关键授权匹配成功(${challenge.type}/${recordName}):${keyAuthorization},校验成功, ACME challenge verified`); diff --git a/packages/ui/certd-client/src/locales/langs/zh-CN/vip.ts b/packages/ui/certd-client/src/locales/langs/zh-CN/vip.ts index a7b12c3fa..ae61846fb 100644 --- a/packages/ui/certd-client/src/locales/langs/zh-CN/vip.ts +++ b/packages/ui/certd-client/src/locales/langs/zh-CN/vip.ts @@ -97,6 +97,6 @@ export default { already_comm: "已经是商业版了,不能降级为专业版", already_perpetual_plus: "您已经是永久专业版了,无法继续升级", confirm: "确认", - not_effective: "没有生效?", + not_effective: "VIP没有生效?", learn_more: "更多特权(加VIP群等)", }; From d56567c9def8af761031f949e8a19c253a20043c Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 13 Nov 2025 01:11:04 +0800 Subject: [PATCH 5/9] =?UTF-8?q?chore:=20teo=20dns=20=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/acme-client/src/client.js | 9 +++-- packages/core/acme-client/src/util.js | 36 +++++++++---------- packages/core/acme-client/src/verify.js | 3 +- .../dns-provider/teo-dns-provider.ts | 3 +- 4 files changed, 28 insertions(+), 23 deletions(-) diff --git a/packages/core/acme-client/src/client.js b/packages/core/acme-client/src/client.js index 54a5ee339..4313d99a2 100644 --- a/packages/core/acme-client/src/client.js +++ b/packages/core/acme-client/src/client.js @@ -492,7 +492,7 @@ class AcmeClient { throw new Error('Unable to verify ACME challenge, URL not found'); } - const {challenges} = createChallengeFn({logger:this.opts.logger}); + const {challenges} = createChallengeFn({logger:this.logger}); const verify = challenges if (typeof verify[challenge.type] === 'undefined') { @@ -510,7 +510,12 @@ class AcmeClient { }; this.log('Waiting for ACME challenge verification(等待ACME检查验证)'); - return util.retry(verifyFn, this.backoffOpts); + + + const log = (...args)=>{ + this.logger.info(...args) + } + return util.retry(verifyFn, this.backoffOpts,log); } /** diff --git a/packages/core/acme-client/src/util.js b/packages/core/acme-client/src/util.js index bc3738357..cdfde034d 100644 --- a/packages/core/acme-client/src/util.js +++ b/packages/core/acme-client/src/util.js @@ -48,7 +48,7 @@ class Backoff { * @returns {Promise} */ -async function retryPromise(fn, attempts, backoff) { +async function retryPromise(fn, attempts, backoff, logger = log) { let aborted = false; try { @@ -60,12 +60,12 @@ async function retryPromise(fn, attempts, backoff) { throw e; } - log(`Promise rejected: ${e.message}`); + logger(`Promise rejected: ${e.message}`); const duration = backoff.duration(); - log(`Promise rejected attempt #${backoff.attempts}, ${duration}ms 后重试: ${e.message}`); + logger(`Promise rejected attempt #${backoff.attempts}, ${duration}ms 后重试: ${e.message}`); await new Promise((resolve) => { setTimeout(resolve, duration); }); - return retryPromise(fn, attempts, backoff); + return retryPromise(fn, attempts, backoff, logger); } } @@ -80,9 +80,9 @@ async function retryPromise(fn, attempts, backoff) { * @returns {Promise} */ -function retry(fn, { attempts = 5, min = 5000, max = 30000 } = {}) { +function retry(fn, { attempts = 5, min = 5000, max = 30000 } = {}, logger = log) { const backoff = new Backoff({ min, max }); - return retryPromise(fn, attempts, backoff); + return retryPromise(fn, attempts, backoff, logger); } /** @@ -216,21 +216,21 @@ function formatResponseError(resp) { * @returns {Promise} Root domain name */ -async function resolveDomainBySoaRecord(recordName) { +async function resolveDomainBySoaRecord(recordName, logger = log) { try { await dns.resolveSoa(recordName); - log(`找到${recordName}的SOA记录`); + logger(`找到${recordName}的SOA记录`); return recordName; } catch (e) { - log(`找不到${recordName}的SOA记录,继续往主域名查找`); + logger(`找不到${recordName}的SOA记录,继续往主域名查找`); const parentRecordName = recordName.split('.').slice(1).join('.'); if (!parentRecordName.includes('.')) { throw new Error('SOA record查找失败'); } - return resolveDomainBySoaRecord(parentRecordName); + return resolveDomainBySoaRecord(parentRecordName,logger); } } @@ -241,18 +241,18 @@ async function resolveDomainBySoaRecord(recordName) { * @returns {Promise} DNS resolver */ -async function getAuthoritativeDnsResolver(recordName) { - log(`获取域名${recordName}的权威NS服务器: `); +async function getAuthoritativeDnsResolver(recordName, logger = log) { + logger(`获取域名${recordName}的权威NS服务器: `); const resolver = new dns.Resolver(); try { /* Resolve root domain by SOA */ - const domain = await resolveDomainBySoaRecord(recordName); + const domain = await resolveDomainBySoaRecord(recordNam,logger); /* Resolve authoritative NS addresses */ - log(`获取到权威NS服务器name: ${domain}`); + logger(`获取到权威NS服务器name: ${domain}`); const nsRecords = await dns.resolveNs(domain); - log(`域名权威NS服务器:${nsRecords}`); + logger(`域名权威NS服务器:${nsRecords}`); const nsAddrArray = await Promise.all(nsRecords.map(async (r) => dns.resolve4(r))); const nsAddresses = [].concat(...nsAddrArray).filter((a) => a); @@ -261,16 +261,16 @@ async function getAuthoritativeDnsResolver(recordName) { } /* Authoritative NS success */ - log(`Found ${nsAddresses.length} authoritative NS addresses for domain: ${domain}`); + logger(`Found ${nsAddresses.length} authoritative NS addresses for domain: ${domain}`); resolver.setServers(nsAddresses); } catch (e) { - log(`Authoritative NS lookup error(获取权威NS服务器地址失败): ${e.message}`); + logger(`Authoritative NS lookup error(获取权威NS服务器地址失败): ${e.message}`); } /* Return resolver */ const addresses = resolver.getServers(); - log(`DNS resolver addresses(域名的权威NS服务器地址): ${addresses.join(', ')}`); + logger(`DNS resolver addresses(域名的权威NS服务器地址): ${addresses.join(', ')}`); return resolver; } diff --git a/packages/core/acme-client/src/verify.js b/packages/core/acme-client/src/verify.js index 708f1d160..6d94d7394 100644 --- a/packages/core/acme-client/src/verify.js +++ b/packages/core/acme-client/src/verify.js @@ -144,7 +144,7 @@ async function walkDnsChallengeRecord(recordName, resolver = dns,deep = 0) { try{ /* Authoritative DNS resolver */ log(`从域名权威服务器获取TXT解析记录`); - const authoritativeResolver = await util.getAuthoritativeDnsResolver(recordName); + const authoritativeResolver = await util.getAuthoritativeDnsResolver(recordName,log); const res = await walkDnsChallengeRecord(recordName, authoritativeResolver,deep); if (res && res.length > 0) { for (const item of res) { @@ -182,7 +182,6 @@ async function verifyDnsChallenge(authz, challenge, keyAuthorization, prefix = ' log(`DNS查询成功, 找到 ${recordValues.length} 条TXT记录:${recordValues}`); if (!recordValues.length || !recordValues.includes(keyAuthorization)) { const err = `没有找到需要的DNS TXT记录: ${recordName},期望:${keyAuthorization},结果:${recordValues}` - log(err); throw new Error(err); } diff --git a/packages/ui/certd-server/src/plugins/plugin-tencent/dns-provider/teo-dns-provider.ts b/packages/ui/certd-server/src/plugins/plugin-tencent/dns-provider/teo-dns-provider.ts index 96ede7187..5554f52a4 100644 --- a/packages/ui/certd-server/src/plugins/plugin-tencent/dns-provider/teo-dns-provider.ts +++ b/packages/ui/certd-server/src/plugins/plugin-tencent/dns-provider/teo-dns-provider.ts @@ -60,7 +60,8 @@ export class TencentEoDnsProvider extends AbstractDnsProvider { "ZoneId": zoneId, "Name": fullRecord, "Type": type, - "Content": value + "Content": value, + "TTL": 60, }; try { From e3a5bcb907d2b27f11fa2f947f89db2d98734f91 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 13 Nov 2025 01:12:01 +0800 Subject: [PATCH 6/9] build: prepare to build --- packages/core/basic/build.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/basic/build.md b/packages/core/basic/build.md index 16e79880e..0b4a3bfd5 100644 --- a/packages/core/basic/build.md +++ b/packages/core/basic/build.md @@ -1 +1 @@ -00:42 +01:12 From 55d2a1f09b617bc73bd81a65796446c4602ed1b2 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 13 Nov 2025 01:15:01 +0800 Subject: [PATCH 7/9] v1.37.7 --- CHANGELOG.md | 12 +++++++++ lerna.json | 2 +- packages/core/acme-client/CHANGELOG.md | 7 ++++++ packages/core/acme-client/package.json | 4 +-- packages/core/basic/CHANGELOG.md | 6 +++++ packages/core/basic/package.json | 2 +- packages/core/pipeline/CHANGELOG.md | 4 +++ packages/core/pipeline/package.json | 6 ++--- packages/libs/lib-huawei/CHANGELOG.md | 4 +++ packages/libs/lib-huawei/package.json | 2 +- packages/libs/lib-iframe/CHANGELOG.md | 4 +++ packages/libs/lib-iframe/package.json | 2 +- packages/libs/lib-jdcloud/CHANGELOG.md | 4 +++ packages/libs/lib-jdcloud/package.json | 2 +- packages/libs/lib-k8s/CHANGELOG.md | 4 +++ packages/libs/lib-k8s/package.json | 4 +-- packages/libs/lib-server/CHANGELOG.md | 4 +++ packages/libs/lib-server/package.json | 12 ++++----- packages/libs/midway-flyway-js/CHANGELOG.md | 4 +++ packages/libs/midway-flyway-js/package.json | 2 +- packages/plugins/plugin-cert/CHANGELOG.md | 7 ++++++ packages/plugins/plugin-cert/package.json | 10 ++++---- packages/plugins/plugin-lib/CHANGELOG.md | 6 +++++ packages/plugins/plugin-lib/package.json | 6 ++--- packages/ui/certd-client/CHANGELOG.md | 7 ++++++ packages/ui/certd-client/package.json | 6 ++--- packages/ui/certd-server/CHANGELOG.md | 6 +++++ packages/ui/certd-server/package.json | 28 ++++++++++----------- 28 files changed, 123 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7543c2298..81a584d83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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.37.7](https://github.com/certd/certd/compare/v1.37.6...v1.37.7) (2025-11-12) + +### Bug Fixes + +* 修复点击立即触发运行报错的bug ([e1eef01](https://github.com/certd/certd/commit/e1eef013a856d26fe80a05d9ec6e505e2e31e5f9)) +* 账号绑定页面某些情况下打不开的bug ([44973eb](https://github.com/certd/certd/commit/44973ebd00e89c0fee8f3b91174157757ce0160f)) + +### Performance Improvements + +* 支持使用letencrypt测试环境申请ip证书 ([86ce00a](https://github.com/certd/certd/commit/86ce00adf92ff98fead87a3eaaa6631036708f47)) +* 支持腾讯云teo dns解析 ([1d23dd2](https://github.com/certd/certd/commit/1d23dd2426bd1e4c4dfea0a9e561d665e045ba9d)) + ## [1.37.6](https://github.com/certd/certd/compare/v1.37.5...v1.37.6) (2025-11-10) ### Bug Fixes diff --git a/lerna.json b/lerna.json index 0509bf4e1..280d22994 100644 --- a/lerna.json +++ b/lerna.json @@ -9,5 +9,5 @@ } }, "npmClient": "pnpm", - "version": "1.37.6" + "version": "1.37.7" } diff --git a/packages/core/acme-client/CHANGELOG.md b/packages/core/acme-client/CHANGELOG.md index 2b98e29d8..7070b20f9 100644 --- a/packages/core/acme-client/CHANGELOG.md +++ b/packages/core/acme-client/CHANGELOG.md @@ -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.37.7](https://github.com/publishlab/node-acme-client/compare/v1.37.6...v1.37.7) (2025-11-12) + +### Performance Improvements + +* 支持使用letencrypt测试环境申请ip证书 ([86ce00a](https://github.com/publishlab/node-acme-client/commit/86ce00adf92ff98fead87a3eaaa6631036708f47)) +* 支持腾讯云teo dns解析 ([1d23dd2](https://github.com/publishlab/node-acme-client/commit/1d23dd2426bd1e4c4dfea0a9e561d665e045ba9d)) + ## [1.37.6](https://github.com/publishlab/node-acme-client/compare/v1.37.5...v1.37.6) (2025-11-10) ### Performance Improvements diff --git a/packages/core/acme-client/package.json b/packages/core/acme-client/package.json index f4a789e61..d872a04a8 100644 --- a/packages/core/acme-client/package.json +++ b/packages/core/acme-client/package.json @@ -3,7 +3,7 @@ "description": "Simple and unopinionated ACME client", "private": false, "author": "nmorsman", - "version": "1.37.6", + "version": "1.37.7", "type": "module", "module": "scr/index.js", "main": "src/index.js", @@ -18,7 +18,7 @@ "types" ], "dependencies": { - "@certd/basic": "^1.37.6", + "@certd/basic": "^1.37.7", "@peculiar/x509": "^1.11.0", "asn1js": "^3.0.5", "axios": "^1.7.2", diff --git a/packages/core/basic/CHANGELOG.md b/packages/core/basic/CHANGELOG.md index 5a75b8f84..2f14e6454 100644 --- a/packages/core/basic/CHANGELOG.md +++ b/packages/core/basic/CHANGELOG.md @@ -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.37.7](https://github.com/certd/certd/compare/v1.37.6...v1.37.7) (2025-11-12) + +### Performance Improvements + +* 支持使用letencrypt测试环境申请ip证书 ([86ce00a](https://github.com/certd/certd/commit/86ce00adf92ff98fead87a3eaaa6631036708f47)) + ## [1.37.6](https://github.com/certd/certd/compare/v1.37.5...v1.37.6) (2025-11-10) **Note:** Version bump only for package @certd/basic diff --git a/packages/core/basic/package.json b/packages/core/basic/package.json index 9e3cf7e4b..2db8bf3b5 100644 --- a/packages/core/basic/package.json +++ b/packages/core/basic/package.json @@ -1,7 +1,7 @@ { "name": "@certd/basic", "private": false, - "version": "1.37.6", + "version": "1.37.7", "type": "module", "main": "./dist/index.js", "module": "./dist/index.js", diff --git a/packages/core/pipeline/CHANGELOG.md b/packages/core/pipeline/CHANGELOG.md index 42c1d47af..05ebe76ac 100644 --- a/packages/core/pipeline/CHANGELOG.md +++ b/packages/core/pipeline/CHANGELOG.md @@ -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.37.7](https://github.com/certd/certd/compare/v1.37.6...v1.37.7) (2025-11-12) + +**Note:** Version bump only for package @certd/pipeline + ## [1.37.6](https://github.com/certd/certd/compare/v1.37.5...v1.37.6) (2025-11-10) **Note:** Version bump only for package @certd/pipeline diff --git a/packages/core/pipeline/package.json b/packages/core/pipeline/package.json index f56d872b9..2b1d29bfc 100644 --- a/packages/core/pipeline/package.json +++ b/packages/core/pipeline/package.json @@ -1,7 +1,7 @@ { "name": "@certd/pipeline", "private": false, - "version": "1.37.6", + "version": "1.37.7", "type": "module", "main": "./dist/index.js", "module": "./dist/index.js", @@ -18,8 +18,8 @@ "compile": "tsc --skipLibCheck --watch" }, "dependencies": { - "@certd/basic": "^1.37.6", - "@certd/plus-core": "^1.37.6", + "@certd/basic": "^1.37.7", + "@certd/plus-core": "^1.37.7", "dayjs": "^1.11.7", "lodash-es": "^4.17.21", "reflect-metadata": "^0.1.13" diff --git a/packages/libs/lib-huawei/CHANGELOG.md b/packages/libs/lib-huawei/CHANGELOG.md index 90ffdb77c..8d5ec0493 100644 --- a/packages/libs/lib-huawei/CHANGELOG.md +++ b/packages/libs/lib-huawei/CHANGELOG.md @@ -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.37.7](https://github.com/certd/certd/compare/v1.37.6...v1.37.7) (2025-11-12) + +**Note:** Version bump only for package @certd/lib-huawei + ## [1.37.6](https://github.com/certd/certd/compare/v1.37.5...v1.37.6) (2025-11-10) **Note:** Version bump only for package @certd/lib-huawei diff --git a/packages/libs/lib-huawei/package.json b/packages/libs/lib-huawei/package.json index d8c68be67..ef2a8526d 100644 --- a/packages/libs/lib-huawei/package.json +++ b/packages/libs/lib-huawei/package.json @@ -1,7 +1,7 @@ { "name": "@certd/lib-huawei", "private": false, - "version": "1.37.6", + "version": "1.37.7", "main": "./dist/bundle.js", "module": "./dist/bundle.js", "types": "./dist/d/index.d.ts", diff --git a/packages/libs/lib-iframe/CHANGELOG.md b/packages/libs/lib-iframe/CHANGELOG.md index 062e872ef..bd34f0810 100644 --- a/packages/libs/lib-iframe/CHANGELOG.md +++ b/packages/libs/lib-iframe/CHANGELOG.md @@ -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.37.7](https://github.com/certd/certd/compare/v1.37.6...v1.37.7) (2025-11-12) + +**Note:** Version bump only for package @certd/lib-iframe + ## [1.37.6](https://github.com/certd/certd/compare/v1.37.5...v1.37.6) (2025-11-10) **Note:** Version bump only for package @certd/lib-iframe diff --git a/packages/libs/lib-iframe/package.json b/packages/libs/lib-iframe/package.json index 0104842ac..530100322 100644 --- a/packages/libs/lib-iframe/package.json +++ b/packages/libs/lib-iframe/package.json @@ -1,7 +1,7 @@ { "name": "@certd/lib-iframe", "private": false, - "version": "1.37.6", + "version": "1.37.7", "type": "module", "main": "./dist/index.js", "module": "./dist/index.js", diff --git a/packages/libs/lib-jdcloud/CHANGELOG.md b/packages/libs/lib-jdcloud/CHANGELOG.md index f07d2f0c9..b480f846a 100644 --- a/packages/libs/lib-jdcloud/CHANGELOG.md +++ b/packages/libs/lib-jdcloud/CHANGELOG.md @@ -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.37.7](https://github.com/certd/certd/compare/v1.37.6...v1.37.7) (2025-11-12) + +**Note:** Version bump only for package @certd/jdcloud + ## [1.37.6](https://github.com/certd/certd/compare/v1.37.5...v1.37.6) (2025-11-10) **Note:** Version bump only for package @certd/jdcloud diff --git a/packages/libs/lib-jdcloud/package.json b/packages/libs/lib-jdcloud/package.json index ab6bc99c5..00a0fc2c7 100644 --- a/packages/libs/lib-jdcloud/package.json +++ b/packages/libs/lib-jdcloud/package.json @@ -1,6 +1,6 @@ { "name": "@certd/jdcloud", - "version": "1.37.6", + "version": "1.37.7", "description": "jdcloud openApi sdk", "main": "./dist/bundle.js", "module": "./dist/bundle.js", diff --git a/packages/libs/lib-k8s/CHANGELOG.md b/packages/libs/lib-k8s/CHANGELOG.md index 7772d7124..734a0000b 100644 --- a/packages/libs/lib-k8s/CHANGELOG.md +++ b/packages/libs/lib-k8s/CHANGELOG.md @@ -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.37.7](https://github.com/certd/certd/compare/v1.37.6...v1.37.7) (2025-11-12) + +**Note:** Version bump only for package @certd/lib-k8s + ## [1.37.6](https://github.com/certd/certd/compare/v1.37.5...v1.37.6) (2025-11-10) **Note:** Version bump only for package @certd/lib-k8s diff --git a/packages/libs/lib-k8s/package.json b/packages/libs/lib-k8s/package.json index f28e428c1..1c2eb90df 100644 --- a/packages/libs/lib-k8s/package.json +++ b/packages/libs/lib-k8s/package.json @@ -1,7 +1,7 @@ { "name": "@certd/lib-k8s", "private": false, - "version": "1.37.6", + "version": "1.37.7", "type": "module", "main": "./dist/index.js", "module": "./dist/index.js", @@ -17,7 +17,7 @@ "pub": "npm publish" }, "dependencies": { - "@certd/basic": "^1.37.6", + "@certd/basic": "^1.37.7", "@kubernetes/client-node": "0.21.0" }, "devDependencies": { diff --git a/packages/libs/lib-server/CHANGELOG.md b/packages/libs/lib-server/CHANGELOG.md index 4d50fadea..e34317f8b 100644 --- a/packages/libs/lib-server/CHANGELOG.md +++ b/packages/libs/lib-server/CHANGELOG.md @@ -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.37.7](https://github.com/certd/certd/compare/v1.37.6...v1.37.7) (2025-11-12) + +**Note:** Version bump only for package @certd/lib-server + ## [1.37.6](https://github.com/certd/certd/compare/v1.37.5...v1.37.6) (2025-11-10) **Note:** Version bump only for package @certd/lib-server diff --git a/packages/libs/lib-server/package.json b/packages/libs/lib-server/package.json index 445e69669..191e68b6c 100644 --- a/packages/libs/lib-server/package.json +++ b/packages/libs/lib-server/package.json @@ -1,6 +1,6 @@ { "name": "@certd/lib-server", - "version": "1.37.6", + "version": "1.37.7", "description": "midway with flyway, sql upgrade way ", "private": false, "type": "module", @@ -28,11 +28,11 @@ ], "license": "AGPL", "dependencies": { - "@certd/acme-client": "^1.37.6", - "@certd/basic": "^1.37.6", - "@certd/pipeline": "^1.37.6", - "@certd/plugin-lib": "^1.37.6", - "@certd/plus-core": "^1.37.6", + "@certd/acme-client": "^1.37.7", + "@certd/basic": "^1.37.7", + "@certd/pipeline": "^1.37.7", + "@certd/plugin-lib": "^1.37.7", + "@certd/plus-core": "^1.37.7", "@midwayjs/cache": "3.14.0", "@midwayjs/core": "3.20.11", "@midwayjs/i18n": "3.20.13", diff --git a/packages/libs/midway-flyway-js/CHANGELOG.md b/packages/libs/midway-flyway-js/CHANGELOG.md index 3841fe1bb..7d53fc72a 100644 --- a/packages/libs/midway-flyway-js/CHANGELOG.md +++ b/packages/libs/midway-flyway-js/CHANGELOG.md @@ -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.37.7](https://github.com/certd/certd/compare/v1.37.6...v1.37.7) (2025-11-12) + +**Note:** Version bump only for package @certd/midway-flyway-js + ## [1.37.6](https://github.com/certd/certd/compare/v1.37.5...v1.37.6) (2025-11-10) **Note:** Version bump only for package @certd/midway-flyway-js diff --git a/packages/libs/midway-flyway-js/package.json b/packages/libs/midway-flyway-js/package.json index 1a578857a..99c127463 100644 --- a/packages/libs/midway-flyway-js/package.json +++ b/packages/libs/midway-flyway-js/package.json @@ -1,6 +1,6 @@ { "name": "@certd/midway-flyway-js", - "version": "1.37.6", + "version": "1.37.7", "description": "midway with flyway, sql upgrade way ", "private": false, "type": "module", diff --git a/packages/plugins/plugin-cert/CHANGELOG.md b/packages/plugins/plugin-cert/CHANGELOG.md index 164bb4364..4583c50f9 100644 --- a/packages/plugins/plugin-cert/CHANGELOG.md +++ b/packages/plugins/plugin-cert/CHANGELOG.md @@ -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.37.7](https://github.com/certd/certd/compare/v1.37.6...v1.37.7) (2025-11-12) + +### Performance Improvements + +* 支持使用letencrypt测试环境申请ip证书 ([86ce00a](https://github.com/certd/certd/commit/86ce00adf92ff98fead87a3eaaa6631036708f47)) +* 支持腾讯云teo dns解析 ([1d23dd2](https://github.com/certd/certd/commit/1d23dd2426bd1e4c4dfea0a9e561d665e045ba9d)) + ## [1.37.6](https://github.com/certd/certd/compare/v1.37.5...v1.37.6) (2025-11-10) ### Performance Improvements diff --git a/packages/plugins/plugin-cert/package.json b/packages/plugins/plugin-cert/package.json index 8ba0c0998..a5c418f13 100644 --- a/packages/plugins/plugin-cert/package.json +++ b/packages/plugins/plugin-cert/package.json @@ -1,7 +1,7 @@ { "name": "@certd/plugin-cert", "private": false, - "version": "1.37.6", + "version": "1.37.7", "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -17,10 +17,10 @@ "compile": "tsc --skipLibCheck --watch" }, "dependencies": { - "@certd/acme-client": "^1.37.6", - "@certd/basic": "^1.37.6", - "@certd/pipeline": "^1.37.6", - "@certd/plugin-lib": "^1.37.6", + "@certd/acme-client": "^1.37.7", + "@certd/basic": "^1.37.7", + "@certd/pipeline": "^1.37.7", + "@certd/plugin-lib": "^1.37.7", "@google-cloud/publicca": "^1.3.0", "dayjs": "^1.11.7", "jszip": "^3.10.1", diff --git a/packages/plugins/plugin-lib/CHANGELOG.md b/packages/plugins/plugin-lib/CHANGELOG.md index 7885b4f19..6254845cd 100644 --- a/packages/plugins/plugin-lib/CHANGELOG.md +++ b/packages/plugins/plugin-lib/CHANGELOG.md @@ -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.37.7](https://github.com/certd/certd/compare/v1.37.6...v1.37.7) (2025-11-12) + +### Performance Improvements + +* 支持腾讯云teo dns解析 ([1d23dd2](https://github.com/certd/certd/commit/1d23dd2426bd1e4c4dfea0a9e561d665e045ba9d)) + ## [1.37.6](https://github.com/certd/certd/compare/v1.37.5...v1.37.6) (2025-11-10) **Note:** Version bump only for package @certd/plugin-lib diff --git a/packages/plugins/plugin-lib/package.json b/packages/plugins/plugin-lib/package.json index 7a3b6fbfc..e81e927cc 100644 --- a/packages/plugins/plugin-lib/package.json +++ b/packages/plugins/plugin-lib/package.json @@ -1,7 +1,7 @@ { "name": "@certd/plugin-lib", "private": false, - "version": "1.37.6", + "version": "1.37.7", "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -22,8 +22,8 @@ "@alicloud/pop-core": "^1.7.10", "@alicloud/tea-util": "^1.4.10", "@aws-sdk/client-s3": "^3.787.0", - "@certd/basic": "^1.37.6", - "@certd/pipeline": "^1.37.6", + "@certd/basic": "^1.37.7", + "@certd/pipeline": "^1.37.7", "@kubernetes/client-node": "0.21.0", "ali-oss": "^6.22.0", "basic-ftp": "^5.0.5", diff --git a/packages/ui/certd-client/CHANGELOG.md b/packages/ui/certd-client/CHANGELOG.md index aba069b9a..c78fc38fc 100644 --- a/packages/ui/certd-client/CHANGELOG.md +++ b/packages/ui/certd-client/CHANGELOG.md @@ -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.37.7](https://github.com/certd/certd/compare/v1.37.6...v1.37.7) (2025-11-12) + +### Bug Fixes + +* 修复点击立即触发运行报错的bug ([e1eef01](https://github.com/certd/certd/commit/e1eef013a856d26fe80a05d9ec6e505e2e31e5f9)) +* 账号绑定页面某些情况下打不开的bug ([44973eb](https://github.com/certd/certd/commit/44973ebd00e89c0fee8f3b91174157757ce0160f)) + ## [1.37.6](https://github.com/certd/certd/compare/v1.37.5...v1.37.6) (2025-11-10) ### Bug Fixes diff --git a/packages/ui/certd-client/package.json b/packages/ui/certd-client/package.json index 4bfd95df4..9d7179d20 100644 --- a/packages/ui/certd-client/package.json +++ b/packages/ui/certd-client/package.json @@ -1,6 +1,6 @@ { "name": "@certd/ui-client", - "version": "1.37.6", + "version": "1.37.7", "private": true, "scripts": { "dev": "vite --open", @@ -106,8 +106,8 @@ "zod-defaults": "^0.1.3" }, "devDependencies": { - "@certd/lib-iframe": "^1.37.6", - "@certd/pipeline": "^1.37.6", + "@certd/lib-iframe": "^1.37.7", + "@certd/pipeline": "^1.37.7", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", "@types/chai": "^4.3.12", diff --git a/packages/ui/certd-server/CHANGELOG.md b/packages/ui/certd-server/CHANGELOG.md index 2691ea253..12ac74ad2 100644 --- a/packages/ui/certd-server/CHANGELOG.md +++ b/packages/ui/certd-server/CHANGELOG.md @@ -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.37.7](https://github.com/certd/certd/compare/v1.37.6...v1.37.7) (2025-11-12) + +### Performance Improvements + +* 支持腾讯云teo dns解析 ([1d23dd2](https://github.com/certd/certd/commit/1d23dd2426bd1e4c4dfea0a9e561d665e045ba9d)) + ## [1.37.6](https://github.com/certd/certd/compare/v1.37.5...v1.37.6) (2025-11-10) ### Performance Improvements diff --git a/packages/ui/certd-server/package.json b/packages/ui/certd-server/package.json index f0f32f52e..80b579fb0 100644 --- a/packages/ui/certd-server/package.json +++ b/packages/ui/certd-server/package.json @@ -1,6 +1,6 @@ { "name": "@certd/ui-server", - "version": "1.37.6", + "version": "1.37.7", "description": "fast-server base midway", "private": true, "type": "module", @@ -45,20 +45,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.37.6", - "@certd/basic": "^1.37.6", - "@certd/commercial-core": "^1.37.6", + "@certd/acme-client": "^1.37.7", + "@certd/basic": "^1.37.7", + "@certd/commercial-core": "^1.37.7", "@certd/cv4pve-api-javascript": "^8.4.2", - "@certd/jdcloud": "^1.37.6", - "@certd/lib-huawei": "^1.37.6", - "@certd/lib-k8s": "^1.37.6", - "@certd/lib-server": "^1.37.6", - "@certd/midway-flyway-js": "^1.37.6", - "@certd/pipeline": "^1.37.6", - "@certd/plugin-cert": "^1.37.6", - "@certd/plugin-lib": "^1.37.6", - "@certd/plugin-plus": "^1.37.6", - "@certd/plus-core": "^1.37.6", + "@certd/jdcloud": "^1.37.7", + "@certd/lib-huawei": "^1.37.7", + "@certd/lib-k8s": "^1.37.7", + "@certd/lib-server": "^1.37.7", + "@certd/midway-flyway-js": "^1.37.7", + "@certd/pipeline": "^1.37.7", + "@certd/plugin-cert": "^1.37.7", + "@certd/plugin-lib": "^1.37.7", + "@certd/plugin-plus": "^1.37.7", + "@certd/plus-core": "^1.37.7", "@huaweicloud/huaweicloud-sdk-cdn": "^3.1.120", "@huaweicloud/huaweicloud-sdk-core": "^3.1.120", "@koa/cors": "^5.0.0", From 2e4eb17a486fb81fc736a8f4b8785b176e6668fc Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 13 Nov 2025 01:16:45 +0800 Subject: [PATCH 8/9] build: trigger build image --- trigger/build.trigger | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trigger/build.trigger b/trigger/build.trigger index 98f9e3b66..84c7f63f3 100644 --- a/trigger/build.trigger +++ b/trigger/build.trigger @@ -1 +1 @@ -00:49 +01:16 From 730f614024325102d480e5ff12fc6b4bf1cba5b3 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 13 Nov 2025 01:17:09 +0800 Subject: [PATCH 9/9] build: publish --- docs/guide/changelogs/CHANGELOG.md | 12 ++++++++++++ docs/guide/plugins/dns-provider.md | 19 ++++++++++--------- packages/core/acme-client/package.json | 2 +- packages/core/basic/package.json | 2 +- packages/core/pipeline/package.json | 2 +- packages/libs/lib-huawei/package.json | 2 +- packages/libs/lib-iframe/package.json | 2 +- packages/libs/lib-jdcloud/package.json | 2 +- packages/libs/lib-k8s/package.json | 2 +- packages/libs/lib-server/package.json | 2 +- packages/libs/midway-flyway-js/package.json | 2 +- packages/plugins/plugin-cert/package.json | 2 +- packages/plugins/plugin-lib/package.json | 2 +- 13 files changed, 33 insertions(+), 20 deletions(-) diff --git a/docs/guide/changelogs/CHANGELOG.md b/docs/guide/changelogs/CHANGELOG.md index 7543c2298..81a584d83 100644 --- a/docs/guide/changelogs/CHANGELOG.md +++ b/docs/guide/changelogs/CHANGELOG.md @@ -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.37.7](https://github.com/certd/certd/compare/v1.37.6...v1.37.7) (2025-11-12) + +### Bug Fixes + +* 修复点击立即触发运行报错的bug ([e1eef01](https://github.com/certd/certd/commit/e1eef013a856d26fe80a05d9ec6e505e2e31e5f9)) +* 账号绑定页面某些情况下打不开的bug ([44973eb](https://github.com/certd/certd/commit/44973ebd00e89c0fee8f3b91174157757ce0160f)) + +### Performance Improvements + +* 支持使用letencrypt测试环境申请ip证书 ([86ce00a](https://github.com/certd/certd/commit/86ce00adf92ff98fead87a3eaaa6631036708f47)) +* 支持腾讯云teo dns解析 ([1d23dd2](https://github.com/certd/certd/commit/1d23dd2426bd1e4c4dfea0a9e561d665e045ba9d)) + ## [1.37.6](https://github.com/certd/certd/compare/v1.37.5...v1.37.6) (2025-11-10) ### Bug Fixes diff --git a/docs/guide/plugins/dns-provider.md b/docs/guide/plugins/dns-provider.md index 39a393d32..2d5a354ca 100644 --- a/docs/guide/plugins/dns-provider.md +++ b/docs/guide/plugins/dns-provider.md @@ -9,15 +9,16 @@ | 5.| **新网** | 新网域名解析 | | 6.| **新网(代理方式)** | 新网域名解析(代理方式) | | 7.| **腾讯云** | 腾讯云域名DNS解析提供者 | -| 8.| **华为云** | 华为云DNS解析提供商 | -| 9.| **西部数码** | west dns provider | -| 10.| **dns.la** | dns.la | -| 11.| **雨云** | 雨云DNS解析提供商 | -| 12.| **cloudflare** | cloudflare dns provider | -| 13.| **namesilo** | namesilo dns provider | -| 14.| **godaddy** | GoDaddy | -| 15.| **51dns** | 51DNS | -| 16.| **新网互联** | 新网互联 | +| 8.| **腾讯云EO DNS** | 腾讯云EO DNS解析提供者 | +| 9.| **华为云** | 华为云DNS解析提供商 | +| 10.| **西部数码** | west dns provider | +| 11.| **dns.la** | dns.la | +| 12.| **雨云** | 雨云DNS解析提供商 | +| 13.| **cloudflare** | cloudflare dns provider | +| 14.| **namesilo** | namesilo dns provider | +| 15.| **godaddy** | GoDaddy | +| 16.| **51dns** | 51DNS | +| 17.| **新网互联** | 新网互联 |