This commit is contained in:
xiaojunnuo
2026-02-01 02:10:55 +08:00
parent 17f40e2180
commit 8429148273
41 changed files with 687 additions and 136 deletions
+16
View File
@@ -3,6 +3,22 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.38.4](https://github.com/certd/certd/compare/v1.38.3...v1.38.4) (2026-01-31)
### Bug Fixes
* 修复阿里云esa超过免费配额之后无法部署证书的bug,改成删除最旧的那张证书 ([32de8d9](https://github.com/certd/certd/commit/32de8d9ccb08d26414adbdde950d7cd405dc344a))
### Performance Improvements
* 当ip证书天数太小时,自动调整更新天数,避免每次运行都重新申请ip证书 ([433e98b](https://github.com/certd/certd/commit/433e98b6450fa7d0491151f159e432bf3dfe4feb))
* 修复旧版本流水线数据发送通知标题为空的bug ([9bee0e4](https://github.com/certd/certd/commit/9bee0e460bfebe8db76742b80b2d52854392f4de))
* 验证码支持 Cloudflare Turnstile ,谨慎启用,国内被墙了 ([ca43c77](https://github.com/certd/certd/commit/ca43c775250154def63c4acd96d65dc95d1c0c2b))
* 优化证书未过期时的任务日志提示 ([ac85488](https://github.com/certd/certd/commit/ac85488245197694560aad7df9425ca215ef7ff7))
* 支持部署到阿里云GA ([1a0d3ee](https://github.com/certd/certd/commit/1a0d3eeb1b0b5ce08f05af84b6161e00c1fe1815))
* 支持部署到华为elb ([60c8ace](https://github.com/certd/certd/commit/60c8ace443e848155d3ce12e95b84766a4610d3a))
* 支持部署到AcePanel ([1661cae](https://github.com/certd/certd/commit/1661caed05e3413dc3e2b14ce62b75aa03ad90e0))
## [1.38.3](https://github.com/certd/certd/compare/v1.38.2...v1.38.3) (2026-01-28)
### Bug Fixes
@@ -0,0 +1,41 @@
name: acepanel
title: AcePanel授权
desc: ''
icon: svg:icon-lucky
input:
endpoint:
title: AcePanel管理地址
component:
placeholder: http://127.0.0.1:25475/entrance
helper: 请输入AcePanel管理地址,格式为http://127.0.0.1:25475/entrance, 要带安全入口,最后面不要加/
required: true
tokenId:
title: 访问令牌ID
component:
name: a-input-number
vModel: value
helper: AcePanel控制台->设置->用户->访问令牌->创建访问令牌
required: true
accessToken:
title: 访问令牌
component:
placeholder: AccessToken
helper: 创建访问令牌后复制该令牌填到这里
required: true
encrypt: true
skipSslVerify:
title: 忽略证书校验
value: true
component:
name: a-switch
vModel: checked
helper: 如果面板的url是https,且使用的是自签名证书,则需要开启此选项,其他情况可以关闭
testRequest:
title: 测试
component:
name: api-test
action: TestRequest
helper: 点击测试接口是否正常
pluginType: access
type: builtIn
scriptFilePath: /plugins/plugin-acepanel/access.js
@@ -0,0 +1,23 @@
addonType: captcha
name: cfTurnstile
title: Cloudflare Turnstile
desc: 谨慎使用,国内被墙了
showTest: false
input:
siteKey:
title: 站点密钥
component:
placeholder: SiteKey
helper: >-
[Cloudflare
Turnstile](https://www.cloudflare.com/zh-cn/application-services/products/turnstile/)
-> 添加小组件
required: true
secretKey:
title: 密钥
component:
placeholder: SecretKey
required: true
pluginType: addon
type: builtIn
scriptFilePath: /plugins/plugin-captcha/cf-turnstile/index.js
@@ -0,0 +1,73 @@
showRunStrategy: false
default:
strategy:
runStrategy: 1
name: AcePanelDeployToWebsite
title: AcePanel-部署到网站
desc: 上传证书并部署到指定网站
icon: svg:icon-lucky
group: panel
needPlus: true
input:
cert:
title: 域名证书
helper: 请选择前置任务输出的域名证书
component:
name: output-selector
from:
- ':cert:'
order: 0
certDomains:
title: 当前证书域名
component:
name: cert-domains-getter
mergeScript: |2-
return {
component:{
inputKey: ctx.compute(({form})=>{
return form.cert
}),
}
}
template: false
required: false
order: 0
accessId:
title: ACEPanel授权
component:
name: access-selector
type: acepanel
required: true
order: 0
websiteList:
title: 部署网站
component:
name: remote-select
vModel: value
mode: tags
type: plugin
action: onGetWebsiteList
search: false
pager: false
watches:
- certDomains
- accessId
required: true
mergeScript: |2-
return {
component:{
form: ctx.compute(({form})=>{
return form
})
},
}
helper: 选择需要部署证书的网站
order: 0
output: {}
pluginType: deploy
type: builtIn
scriptFilePath: /plugins/plugin-acepanel/plugins/plugin-deploy-to-website.js
@@ -0,0 +1,30 @@
showRunStrategy: false
default:
strategy:
runStrategy: 1
name: AcePanelPanelCert
title: AcePanel-面板证书
desc: 部署AcePanel面板证书
icon: svg:icon-lucky
group: panel
needPlus: true
input:
cert:
title: 域名证书
helper: 请选择前置任务输出的域名证书
component:
name: output-selector
from:
- ':cert:'
order: 0
accessId:
title: ACEPanel授权
component:
name: access-selector
type: acepanel
required: true
order: 0
output: {}
pluginType: deploy
type: builtIn
scriptFilePath: /plugins/plugin-acepanel/plugins/plugin-panel-cert.js
@@ -98,6 +98,15 @@ input:
helper: 请选择要部署证书的站点
order: 0
isFree:
title: 是否免费版
value: true
component:
name: a-switch
vModel: value
helper: 如果是免费站点,将检查证书数量限制,如果超限将删除最旧的那张证书
required: true
order: 0
output: {}
pluginType: deploy
type: builtIn
@@ -0,0 +1,158 @@
showRunStrategy: false
default:
strategy:
runStrategy: 1
name: AliyunDeployCertToGA
title: 阿里云-部署至GA
icon: svg:icon-aliyun
group: aliyun
desc: 部署证书到阿里云GA(全球加速),支持更新默认证书和扩展证书
needPlus: false
input:
cert:
title: 域名证书
helper: 请选择证书申请任务输出的域名证书
component:
name: output-selector
from:
- ':cert:'
- uploadCertToAliyun
required: true
order: 0
certDomains:
title: 当前证书域名
component:
name: cert-domains-getter
mergeScript: |2-
return {
component:{
inputKey: ctx.compute(({form})=>{
return form.cert
}),
}
}
template: false
required: false
order: 0
casEndpoint:
title: 证书接入点
helper: 不会选就保持默认即可
value: cas.aliyuncs.com
component:
name: a-select
options:
- value: cas.aliyuncs.com
label: 中国大陆
- value: cas.ap-southeast-1.aliyuncs.com
label: 新加坡
required: true
order: 0
accessId:
title: Access授权
helper: 阿里云授权AccessKeyId、AccessKeySecret
component:
name: access-selector
type: aliyun
required: true
order: 0
acceleratorId:
title: 全球加速实例
component:
name: remote-select
vModel: value
type: plugin
action: onGetAcceleratorList
search: false
pager: false
watches:
- certDomains
- accessId
- accessId
required: true
mergeScript: |2-
return {
component:{
form: ctx.compute(({form})=>{
return form
})
},
}
helper: 请选择要部署证书的全球加速实例
order: 0
listenerIds:
title: 监听
component:
name: remote-select
vModel: value
mode: tags
type: plugin
action: onGetListenerList
search: false
pager: false
watches:
- certDomains
- accessId
- accessId
- acceleratorId
required: true
mergeScript: |2-
return {
component:{
form: ctx.compute(({form})=>{
return form
})
},
}
helper: 请选择要部署证书的监听
order: 0
certType:
title: 证书类型
helper: 选择更新默认证书还是扩展证书
value: default
component:
name: a-select
options:
- value: default
label: 默认证书
- value: additional
label: 扩展证书
required: true
order: 0
additionalDomains:
title: 扩展证书域名
component:
name: remote-select
vModel: value
mode: tags
type: plugin
action: onGetAdditionalDomainList
search: false
pager: false
watches:
- certDomains
- accessId
- accessId
- acceleratorId
- listenerIds
- certType
required: true
mergeScript: |2-
return {
show: ctx.compute(({form})=>{
return form.certType === "additional";
})
}
helper: 将证书里的域名扩展绑定到监听器中
order: 0
output: {}
pluginType: deploy
type: builtIn
scriptFilePath: /plugins/plugin-aliyun/plugin/deploy-to-ga/index.js
@@ -3,7 +3,7 @@ default:
strategy:
runStrategy: 0
input:
renewDays: 18
renewDays: 15
forceUpdate: false
name: CertApply
title: 证书申请(JS版)
@@ -17,7 +17,9 @@ input:
name: domain-selector
vModel: value
mode: tags
placeholder: 请输入证书域名,比如:foo.com , *.foo.com , *.sub.foo.com , *.bar.com
placeholder: >-
请输入证书域名/IP,比如:foo.com , *.foo.com , *.sub.foo.com , *.bar.com ,
123.123.123.123
tokenSeparators:
- ','
- ' '
@@ -14,7 +14,9 @@ input:
name: domain-selector
vModel: value
mode: tags
placeholder: 请输入证书域名,比如:foo.com , *.foo.com , *.sub.foo.com , *.bar.com
placeholder: >-
请输入证书域名/IP,比如:foo.com , *.foo.com , *.sub.foo.com , *.bar.com ,
123.123.123.123
tokenSeparators:
- ','
- ' '
@@ -17,7 +17,9 @@ input:
name: domain-selector
vModel: value
mode: tags
placeholder: 请输入证书域名,比如:foo.com , *.foo.com , *.sub.foo.com , *.bar.com
placeholder: >-
请输入证书域名/IP,比如:foo.com , *.foo.com , *.sub.foo.com , *.bar.com ,
123.123.123.123
tokenSeparators:
- ','
- ' '
@@ -79,7 +79,9 @@ input:
name: domain-selector
vModel: value
mode: tags
placeholder: 请输入证书域名,比如:foo.com , *.foo.com , *.sub.foo.com , *.bar.com
placeholder: >-
请输入证书域名/IP,比如:foo.com , *.foo.com , *.sub.foo.com , *.bar.com ,
123.123.123.123
tokenSeparators:
- ','
- ' '
@@ -0,0 +1,104 @@
showRunStrategy: false
default:
strategy:
runStrategy: 1
name: HauweiDeployCertToELB
title: 华为云-部署证书至ELB负载均衡
icon: svg:icon-huawei
group: huawei
desc: ''
input:
cert:
title: 域名证书
helper: >-
请选择前置任务输出的域名证书
如果你选择使用ccm证书ID,则需要在[域名管理页面右上角开启SCM授权](https://console.huaweicloud.com/cdn/#/cdn/domain)
component:
name: output-selector
from:
- ':cert:'
required: true
order: 0
certDomains:
title: 当前证书域名
component:
name: cert-domains-getter
mergeScript: |2-
return {
component:{
inputKey: ctx.compute(({form})=>{
return form.cert
}),
}
}
template: false
required: false
order: 0
accessId:
title: Access授权
helper: 华为云授权AccessKeyId、AccessKeySecret
component:
name: access-selector
type: huawei
required: true
order: 0
projectId:
title: 项目ID
component:
name: remote-select
vModel: value
type: plugin
typeName: HauweiDeployCertToELB
action: onGetProjectList
search: false
pager: false
watches:
- certDomains
- accessId
required: true
mergeScript: |2-
return {
component:{
form: ctx.compute(({form})=>{
return form
})
},
}
helper: 请选择项目
order: 0
certIds:
title: ELB已有证书
component:
name: remote-select
vModel: value
mode: tags
type: plugin
typeName: HauweiDeployCertToELB
action: onGetCertList
search: true
pager: false
watches:
- certDomains
- accessId
required: true
mergeScript: |2-
return {
component:{
form: ctx.compute(({form})=>{
return form
})
},
}
helper: 请选择域名或输入域名
order: 0
output: {}
pluginType: deploy
type: builtIn
scriptFilePath: /plugins/plugin-huawei/plugins/deploy-to-elb/index.js
+14 -14
View File
@@ -1,6 +1,6 @@
{
"name": "@certd/ui-server",
"version": "1.38.3",
"version": "1.38.4",
"description": "fast-server base midway",
"private": true,
"type": "module",
@@ -48,20 +48,20 @@
"@aws-sdk/client-iam": "^3.964.0",
"@aws-sdk/client-route-53": "^3.964.0",
"@aws-sdk/client-s3": "^3.964.0",
"@certd/acme-client": "^1.38.3",
"@certd/basic": "^1.38.3",
"@certd/commercial-core": "^1.38.3",
"@certd/acme-client": "^1.38.4",
"@certd/basic": "^1.38.4",
"@certd/commercial-core": "^1.38.4",
"@certd/cv4pve-api-javascript": "^8.4.2",
"@certd/jdcloud": "^1.38.3",
"@certd/lib-huawei": "^1.38.3",
"@certd/lib-k8s": "^1.38.3",
"@certd/lib-server": "^1.38.3",
"@certd/midway-flyway-js": "^1.38.3",
"@certd/pipeline": "^1.38.3",
"@certd/plugin-cert": "^1.38.3",
"@certd/plugin-lib": "^1.38.3",
"@certd/plugin-plus": "^1.38.3",
"@certd/plus-core": "^1.38.3",
"@certd/jdcloud": "^1.38.4",
"@certd/lib-huawei": "^1.38.4",
"@certd/lib-k8s": "^1.38.4",
"@certd/lib-server": "^1.38.4",
"@certd/midway-flyway-js": "^1.38.4",
"@certd/pipeline": "^1.38.4",
"@certd/plugin-cert": "^1.38.4",
"@certd/plugin-lib": "^1.38.4",
"@certd/plugin-plus": "^1.38.4",
"@certd/plus-core": "^1.38.4",
"@google-cloud/publicca": "^1.3.0",
"@huaweicloud/huaweicloud-sdk-cdn": "^3.1.185",
"@huaweicloud/huaweicloud-sdk-core": "^3.1.185",